<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://blog.unixstyle.ru/index.php?/feeds/atom.xml" rel="self" title="Обитель UNIX" type="application/atom+xml" />
    <link href="http://blog.unixstyle.ru/"                        rel="alternate"    title="Обитель UNIX" type="text/html" />
    <link href="http://blog.unixstyle.ru/rss.php?version=2.0"     rel="alternate"    title="Обитель UNIX" type="application/rss+xml" />
    <title type="html">Обитель UNIX</title>
    <subtitle type="html">Главная страница</subtitle>
    <icon>http://blog.unixstyle.ru/templates/default/img/s9y_banner_small.png</icon>
    <id>http://blog.unixstyle.ru/</id>
    <updated>2010-07-29T13:39:13Z</updated>
    <generator uri="http://www.s9y.org/" version="1.4.1">Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/88-svnsync-..html" rel="alternate" title="svnsync - как средство зеркалирования вашего репозитория." />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-07-29T13:39:13Z</published>
        <updated>2010-07-29T13:39:13Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=88</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/88-guid.html</id>
        <title type="html">svnsync - как средство зеркалирования вашего репозитория.</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                &#160;&#160;&#160;&#160;Согласитесь, статей описывающих настройку <font class="code">svnsync</font> миллион с хвостиком. Плодить энтропию не цель этой статьи. Руководства по первоначальной настройке приведены в конце заметки.<br /><br />

&#160;&#160;&#160;&#160;Сконцентрируем внимание на подходах связанных с необходимостью регулярного запуска <font class="code">svnsync sync</font> для поддержания нашего зеркала в актуальном состоянии. Здесь можно выделить два основных лагеря:<ul>
<li>первый: периодический запуск <font class="code">svnsync sync</font> из <font class="code">crond</font>;</li>
<li>второй: запуск <font class="code">svnsync</font> из <font class="code">post-commit hook(a)</font>.</li></ul>

&#160;&#160;&#160;&#160;Минус первого подхода заключается в том, что изменения попадают на зеркало с некоторой задержкой. В самом лучшем случае регулярность обновлений будет кратна одной минуте. Что в свою очередь создаст дополнительные нагрузки на жесткие диски и выброс дополнительного тепловой энергии в атмосферу. <br />
&#160;&#160;&#160;&#160;Минус большинства реализаций второго подхода синхронность запуска. <font class="code">post-commit hook</font> выполняется в рамках <font class="code">svn commit(а)</font>. Другими словами <font class="code">svn commit</font> вернет управление только по завершении выполнения всех операций в <font class="code">post-commit hook(e)</font>. Получается чем дольше будет работать <font class="code">post-commit hook</font>, тем дольше разработчик будет ждать выполнения <font class="code">svn commit(a)</font>. Соответственно теряются драгоценные человеко-минуты.<br /><br />

&#160;&#160;&#160;&#160;Асинхронность второго подхода - это очевидный ответ. Более того, все что потребуется для реализации есть в любом современном дистрибутиве: <font class="code">xinetd</font> и <font>nc</font>.<br /><br />

&#160;&#160;&#160;&#160;Подход предельно прост. В момент выполнения <font class="code">svn commit(a)</font> разработчиком, вызывается <font class="code">post-commit hook</font>, единственная задача которого отправить <font class="code">UDP</font> пакет на заданный порт зеркала <font class="code">SVN</font>. На зеркале <font class="code">SVN(a)</font> указанный порт прослушивает демон xinetd с зарегистрированным обработчиком <font class="code">svnsync sync</font>. Подход дает неоспоримый плюс - в момент <font class="code">commit(a)</font> время отработки <font class="code">post-commit hook(a)</font> минимальны. <br /><br />
&#160;&#160;&#160;&#160;Реализуем теорию на бумаге. Условимся, для UDP пакетов использовать порт <font class="code">8383</font>, адрес мастер сервера 1.2.3.4, адрес зеркалирующего сервера 5.6.7.8. В мастер репозитории вашего хранилища необходимо создать скрипт <font class="code">hooks/post-commit</font> следующего содержания:
<pre>
#!/bin/sh

host=<span style="color: blue;">5.6.7.8</span> # Адрес зеркалирующего сервера
port=8383

echo '1' | nc -w 1 -u $host $port
</pre>
И сделать его исполняемым
<pre>chmod +x hooks/post-commit</pre>
На зеркалирующем сервере создаем файл <font class="code">/etc/xinetd.d/svnsync</font> следующего содержания:
<pre>
service svnsync
{
        type                    = UNLISTED
        disable                 = no
        socket_type             = dgram
        port                    = 8383
        wait                    = yes
        user                    = <span style="color: blue;">nobody</span>
        passenv                 = PATH
        server                  = /usr/bin/svnsync
        server_args             = sync <span style="color: blue">file:///srv/svn</span>
        only_from               = 127.0.0.1 <span style="color: blue;">1.2.3.4</span>  # Адреса, с которых дозволено получать UDP пакеты
}
</pre>
Описание сервиса предполагает, что зеркало хранилища расположено в директории <font class="code">file:///srv/svn</font> и владельцем файлов является пользователь <font class="code">nobody</font>. Разумеется, не забываем перезапустить/запустить службу <font class="code">xinetd</font>. <br /><br />

Документация:<br />
1. Краткое и емкое <a href="http://svn.apache.org/repos/asf/subversion/trunk/notes/svnsync.txt" target="_blank">руководство</a> о настройке зеркалирования с использованием svnsync; <br />2. Русскоязычное <a href="http://linux.opennet.ru/base/dev/svnsync.txt.html" target="_blank">руководство</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/87-uptime.html" rel="alternate" title="uptime" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-07-22T12:35:16Z</published>
        <updated>2010-07-22T12:35:16Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=87</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/87-guid.html</id>
        <title type="html">uptime</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Небольшие жизненные зарисовки. 
<pre>$ uptime
 16:34:47 up 1039 days,  6:06,  1 user,  load average: 1.48, 1.37, 1.29
$ uname -rs
Linux 2.6.20-19.35.bbel4
$</pre> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/85-vs.html" rel="alternate" title="Сравнение дисковой производительности: файловой системы в файле vs файловой системы на дисковом накопителе" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-05-13T08:24:22Z</published>
        <updated>2010-05-17T17:25:38Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=85</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/85-guid.html</id>
        <title type="html">Сравнение дисковой производительности: файловой системы в файле vs файловой системы на дисковом накопителе</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                &#160;&#160;&#160;&#160;Сравнение дисковой производительности файловой системы, расположенной в файле, изначально обречено на проигрыш по сравнению с производительностью файловой системы, расположенной на обычном накопителе. Вызвано это в первую очередь необходимостью двойного выделения блоков для размещения данных. Напомним, что файловый образ располагается на файловой системе. Соответственно рост файловой системы в файловом образе вызывает выделение блоков как в файле (дисковом образе), так и в файловой системе, на которой он расположен. <br /><br />
&#160;&#160;&#160;&#160;Однако такое сравнение имеет место быть, т.к. использование дисковых образов очень удобно для размещения разделов для виртуальных машин XEN или KVM. Выделение места на обычном диске в случае частых изменений, как правило, чревато сильной фрагментацией последнего. Рассмотрим на примере. Сначала нам потребовалось 3<sub>и</sub> виртуальные машины с объемами диска: 8GB, 16GB, 24GB. Ответственный инженер создал 3-и раздела на физическом диске в 100GB следующую таблицу
<pre>
/dev/sdx1 - 8GB
/dev/sdx2 - 16GB
/dev/sdx3 - 24GB
free 52Gb
</pre>
&#160;&#160;&#160;&#160;Спустя месяц у нас появилась еще одна виртуальная машина с разделом в 24 GB, а второй раздел был удален вместе с занимаемой виртуальной машиной
<pre>
/dev/sdx1 - 8GB
/dev/sdx2 - free
/dev/sdx3 - 24GB
/dev/sdx4 - 24GB
free 44GB
</pre>
&#160;&#160;&#160;&#160;Таким образом мы пришли к ситуации, что между разделами 1 и 3-и есть 16GB свободного пространства, которое отделено от основной свободной области. И в общем случае не может быть использовано. <br /><br />

&#160;&#160;&#160;&#160;Вариантом решения может послужить создание LVM разделов поверх существующих физических. В этом случае спустя какое-то время мы приходим к ситуации, что у нас разрозненные по размеру физические разделы объединены в логические. Петрушка получается отменная. <br /><br />

&#160;&#160;&#160;&#160;Однако и в этой ситуация есть красивое решение. Изначально диск разбить на равного размера разделы. Например, 16GB. Объединяя через LVM нужно количество разделов в виртуальной машине, получаем требуемую дисковую область. Более продвинутый вариант, комбинированная разбивка. Например, 8GB...8GB, 16GB...16GB, 32GB...32GB, 64GB...<br /><br />

&#160;&#160;&#160;&#160;Теперь спускаемся на землю к нашим баранам. Альтернативным решением всех этих проблем кроется в создании образа файловой системы в файле, хранящемся на обычном разделе. Прежде чем использовать это решение давайте разберем какие минусы оно нам готовит по сравнение с очевидным большим плюсом (удобство использования).<br /><br />

&#160;&#160;&#160;&#160;В сравнении будет принимать, полюбившаяся всем, платформа SuperMicro SYS-1025W: 2x 2.83 GHz Quad Core Xeon (E5440), 32GB ECC RAM, 3Ware/LSI 9690SA-8I (512MB Memory, BBU). Из 8<sub>ми</sub> накопителей SEAGATE ST9146802SS собран программный RAID10 c far размещением блоков:
<pre>cat /proc/mdstat
...
md3 : active raid10 sdh3[7] sdg3[6] sdf3[5] sde3[4] sdd3[3] sdc3[2] sdb3[1] sda3[0]
      3950592 blocks 256K chunks 2 far-copies [8/8] [UUUUUUUU]
</pre>
<br />
&#160;&#160;&#160;&#160;Для /dev/md3 используется файловая система ext3 с stride равным 64. Дисковый образ создан командой
<pre>dd if=/dev/zero of=128GB.img bs=1GB count=128</pre>
Файловая система в нём создана обычным вызовом <font class="code">mkfs.ext3</font>. Тестирование производится 5<sub>и</sub> кратным прогоном <font class="code">bonnie++ -x 5 -b</font>. <br /><br />

&#160;&#160;&#160;&#160;CSV файлы для <a href="http://blog.unixstyle.ru/uploads/data/raw-20100512.csv" target="_blank">обычной файловой системы</a> и <a href="http://blog.unixstyle.ru/uploads/data/dd-20100512.csv" target="_blank">дискового образа</a>. Сводная таблица
<pre>
+---------------------+-----------+---------+-----------+-------+
|                     | put_block | rewrite | get_block | seeks |
+---------------------+-----------+---------+-----------+-------+
| дисковый накопитель |    209176 |  111778 |    389820 |   772 |
+---------------------+-----------+---------+-----------+-------+
|      дисковый образ |    124299 |  100490 |    391176 |    72 |
+---------------------+-----------+---------+-----------+-------+
</pre><br />

&#160;&#160;&#160;&#160;После серого повествования немного рассуждений и выводов. Файловая система в дисковом образе почти в половину уступила файловой системе на дисковом накопителе в блочной записи. В данном виде теста bonnie++ активно выделяет блоки, а данный вид активности удваивается для дискового образа. Что полностью доказывает наши предположения в начале статьи. В rewrite оба претендента держатся на равных. Выделение блоков не требуется, а операции read(2)/write(2)/lseek(2) проходят достаточно прозрачно. В тесте get_block дисковый образ немного превзошел оппонента, сложно предположить как это получилось. Возможно, погрешность тестирования. В тесте seeks безоговорочная победа файловой системы на накопителе. Она практически растоптала оппонента вырвавшись вперед более чем на порядок.
<br /><br />
&#160;&#160;&#160;&#160;Т.к. дисковый образ показал неплохую производительность на блочном чтении, его использование я бы порекомендовал для хранилищ больших файлов с превалирующим чтением и не критичным к времени записи операциям. Однозначно его использование противопоказано для баз данных и систем с активным доступом к случайным данным. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/84-XEN-Debian-Lenny-domU.html" rel="alternate" title="XEN: Debian Lenny в domU" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-05-12T07:49:00Z</published>
        <updated>2010-05-13T09:37:58Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=84</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/84-guid.html</id>
        <title type="html">XEN: Debian Lenny в domU</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                При загрузке Debian Lenny в домене domU возникает ошибка
<pre>
Loading, please wait...
<span style="color: red;">FATAL</span>: Error inserting fan (/lib/modules/2.6.26-2-686-bigmem/kernel/drivers/acpi
/fan.ko): No such device
<span style="color: yellow;">WARNING</span>: Error inserting processor (/lib/modules/2.6.26-2-686-bigmem/kernel/driv
ers/acpi/processor.ko): No such device
<span style="color: red;">FATAL</span>: Error inserting thermal (/lib/modules/2.6.26-2-686-bigmem/kernel/drivers/acpi/thermal.ko): Unknown symbol in module, or unknown parameter (see dmesg)
kinit: name_to_dev_t(/dev/xvda5) = xvda5(202,5)
</pre>
<br />
В виртуальном окружении управление охлаждением и датчиками температуры не требуется. Избавляемся от их инициализации выполнением набора команд:
<pre>
install -m 0755 /dev/null /etc/initramfs-tools/hooks/thermal
install -m 0755 /dev/null /etc/initramfs-tools/scripts/init-premount/thermal
update-initramfs -u
</pre>
<br />
В очередную загрузку ядро порадует нас приятным глазу набором информационных сообщений
<pre>
Loading, please wait...
kinit: name_to_dev_t(/dev/xvda5) = xvda5(202,5)
kinit: trying to resume from /dev/xvda5
kinit: No resume image, doing normal boot...
INIT: version 2.86 booting
</pre> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/83-Zyxel-AAM1212-53-SNMP-MIBS.html" rel="alternate" title="Zyxel AAM1212-53 и SNMP MIBS" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-05-05T11:50:13Z</published>
        <updated>2010-05-05T11:50:13Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=83</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/83-guid.html</id>
        <title type="html">Zyxel AAM1212-53 и SNMP MIBS</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Опрашивая модуль Zyxel AAM1212-53 snmpwalk(ом), можно получить много-много букв не говорящих ровным счетом ни о чем:
<pre>
...
SNMPv2-SMI::transmission.94.1.1.2.1.4.1 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.2 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.3 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.4 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.5 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.6 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.7 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.8 = INTEGER: 298
SNMPv2-SMI::transmission.94.1.1.2.1.4.9 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.10 = INTEGER: 310
SNMPv2-SMI::transmission.94.1.1.2.1.4.11 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.4.12 = INTEGER: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.1 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.2 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.3 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.4 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.5 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.6 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.7 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.8 = Gauge32: 180
SNMPv2-SMI::transmission.94.1.1.2.1.5.9 = Gauge32: 0
SNMPv2-SMI::transmission.94.1.1.2.1.5.10 = Gauge32: 161
</pre>

Разумеется, для расшифровки требуется набор MIB файлов:
<ul>
<li><a href="http://dl1.web.zyxel.ru/001/AAM1212-53/firmware/AAM1212-53_3.53(ABP.0)C0.zip" target="_blank">Основной набор MIB файлов</a>;</li>
<li><a href="http://www.oidview.com/mibs/0/PerfHist-TC-MIB.html" target="_blank">PerfHist-TC-MIB</a> (зависимость).</li>
</ul>
И <a href="http://www.net-snmp.org/wiki/index.php/TUT:Using_and_loading_MIBS" target="_blank">инструкция</a> по подключению дополнительных MIB-файлов к набору программного обеспечения net-snmp.<br /><br />
После размещения MIB-файлов в $HOME/.snmp/mibs отклик от модуля Zyxel AAM1212-53 приобретает следующий вид:
<pre>
> snmpwalk -m +ADSL-LINE-MIB  -c public -v 2c 192.168.0.57
....
ADSL-LINE-MIB::adslAturCurrOutputPwr.1 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.2 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.3 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.4 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.5 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.6 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.7 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.8 = INTEGER: 122 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.9 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.10 = INTEGER: 123 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.11 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrOutputPwr.12 = INTEGER: 0 tenth dBm
ADSL-LINE-MIB::adslAturCurrAttainableRate.1 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.2 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.3 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.4 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.5 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.6 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.7 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.8 = Gauge32: 1419000 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.9 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.10 = Gauge32: 1057000 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.11 = Gauge32: 0 bps
ADSL-LINE-MIB::adslAturCurrAttainableRate.12 = Gauge32: 0 bps
...
>
</pre>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/82-perl-CPAN.html" rel="alternate" title="Удаление perl модулей установленных из CPAN" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-03-17T16:16:16Z</published>
        <updated>2010-03-17T16:16:16Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=82</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=82</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/82-guid.html</id>
        <title type="html">Удаление perl модулей установленных из CPAN</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Элегантное <a href="https://bugs.launchpad.net/ubuntu/+source/libxml-sax-expat-perl/+bug/365383/comments/4" target="_blank">решение</a> удаления модулей perl, установленных из CPAN в ручную.  
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/81-SEVERE-Error-This-user-does-not-have-privilege-to-run-this-software.html" rel="alternate" title="SEVERE: Error: This user does not have privilege to run this software" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-03-02T09:49:15Z</published>
        <updated>2010-03-03T23:05:37Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=81</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=81</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/81-guid.html</id>
        <title type="html">SEVERE: Error: This user does not have privilege to run this software</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Установка <a href="http://www.oracle.com/us/products/servers-storage/storage/disk-storage/031603.htm" target="_blank">Sun StorageTek Common Array Manager Software</a> прервалась сообщением
<pre>SEVERE: Error: This user does not have privilege to run this software.</pre>
Штудирование показало, что для корректной установки, необходимо установить пакет ksh
<pre>yum install ksh</pre> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/80-1-8.1.html" rel="alternate" title="1С:Предприятие 8.1 &quot;Ошибка формата потока&quot;" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-02-01T09:45:27Z</published>
        <updated>2010-02-01T09:45:27Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=80</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=80</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/3-1" label="1С:Предприятие" term="1С:Предприятие" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/80-guid.html</id>
        <title type="html">1С:Предприятие 8.1 &quot;Ошибка формата потока&quot;</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                &#160;&#160;&#160;&#160;Всегда идивляли разработчики всеми силами пытающиеся зарыть системные сообщения в осмысленные пользовательские каламбуры. При этом средств для нормальной диагностики техническим персоналом практически не остается.<br /><br />

&#160;&#160;&#160;&#160;В частности 1C:Предприятие приятно удивляет своих владельцев сообщением "Ошибка формата потока". Напрашивается законный вопрос: какого потока? и какого формата? В ходе попыток найти объяснимый ответ на эти два вопроса рождаются <a href="http://www.gilev.ru/1c/81/restore/stream.html" rel="nofollow" target="_blank">шаманские</a> рецепты. <br /><br />

&#160;&#160;&#160;&#160;Мне остается пополнить капилку одним рецептом. Оказывается в клиент-серверном варианте сообщение "Ошибка формата потока" может возникнуть у клиента, когда одно из приложений из набора 1С:Предприятия, выполняющихся на сервере, не имеет достаточно дискового пространства в разделе <font class="code">/tmp</font> для размещения временных файлов. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/79-1C-8.1-Linux-CentOS.html" rel="alternate" title="Сервер 1C:Предприятие 8.1 и Linux-сервер CentOS" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-01-28T06:07:00Z</published>
        <updated>2010-02-01T10:10:26Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=79</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=79</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/3-1" label="1С:Предприятие" term="1С:Предприятие" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/79-guid.html</id>
        <title type="html">Сервер 1C:Предприятие 8.1 и Linux-сервер CentOS</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                &#160;&#160;&#160;&#160;От одной мысли об этой гремучей связке пробегают по спине мурашки. Тем не менее она начинает встречаться и судя по форумам набирает потихоньку обороты. Периодически всплывают заказы на внедрение/оптимизацию работы 1C или сопряженной с ней базы данных PostgreSQL.<br /><br />


&#160;&#160;&#160;&#160;Описанию процесса внедрения 1C:Предприятия на Linux-сервере посвящена статья &laquo;<a href="http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup/" ref="nofollow" target="_blank">Установка Сервера 1С:Предприятия 8.1 на Linux-сервер (со скриншотами)</a>&raquo;, которая достаточно полно раскрывает основные вехи установки. Мы позволим себе заострить внимание на внедрении 1C:Предприятия на базе CentOS 5.4 (32 bit). 32<sub>х</sub> битная операционная система выбрана из-за отсутствия поддержки 64 бит компанией Aladdin в драйверах <font class="code">HASP</font>.<br /><br />


&#160;&#160;&#160;&#160;Первый момент - установка службы <font class="code">samba</font>. Четкого описания необходимости этой службы для работы 1C:Предприятия не удалось найти. Одно из предположений - задействование сервиса <font class="code">WINS</font> для преобразования имен. Рекомендуем завести отдельный DNS сервер и в нем прописать соответствие или довольствоваться файлом <font class="code">hosts</font>. Мы продолжим рассмотрение на примере имени сервера <font class="code">srv1c.local</font>, который корректно преобразуется в <font class="code">IP</font>-адрес сервера.<br /><br />

&#160;&#160;&#160;&#160;Вторым этапом является установка приложений, обслуживающих защитный ключ. Для их установки необходимо скачать архивы <font class="code">HDD_RPM_RedHat_i386.tar.gz</font> и <font class="code">hasplm_linux_8.30.tgz</font> с сайта <a href="ftp://ftp.aladdin.com/pub/hasp/hl/linux/" target="_blank">ftp.aladdin.com</a>. Распакуем и установим пакеты:
<pre>
tar xf HDD_RPM_RedHat_i386.tar.gz
tar xzf hasplm_linux_8.30.tgz
rpm -ivh hasplm-redhat-8.30-1.i386.rpm HDD_RPM_RedHat_i386/aksusbd-redhat-1.8.1-2.i386.rpm
</pre>
&#160;&#160;&#160;&#160;Хочу обратить внимание, что архив <font class="code">HDD_RPM_RedHat_i386.tar.gz</font> является обычным архивом без gzip сжатия. Запустим службы
<pre>
service hasplm start
service aksusbd start
chkconfig hasplm on
chkconfig aksusbd on
</pre>
<br />

&#160;&#160;&#160;&#160;Базовым костяком необходимых пакетов для 1C:Предприятия являются <font class="code">1C_Enterprise-common</font> и <font class="code">1C_Enterprise-server</font>. Официальная зона скачивания находится по адресу <a href="http://users.v8.1c.ru/" rel="nofollow" target="_blank">users.v8.1c.ru</a>. Неофициальная - <a href="http://forum.ruboard.ru/showthread.php?t=10844" rel="nofollow" target="_blank">forum.ruboard.ru</a>. <br />
&#160;&#160;&#160;&#160;Пакеты <font class="code">1C_Enterprise-common</font> и <font class="code">1C_Enterprise-server</font> включают в себя поддержку русского языка. Пакеты содержащие в своем имени <font class="code">nls</font> (Native Language Support) предоставляют поддержку дополнительных языков Болгарского, Украинского, Польского и других.  Мы ограничимся установкой базового набора
<pre>
rpm -ivh 1C_Enterprise-common-8.1.14-72.i386.rpm 1C_Enterprise-server-8.1.14-72.i386.rpm
</pre>
<br />
&#160;&#160;&#160;&#160;До момента установки 1C:Предприятия и базы данных PostgreSQL многие рекомендуют установить системную локаль в ru_RU.utf8. Мы этого делать не рекомендуем. Более красивым решением является установка локали для конкретных приложений без изменения системных настроек. Каждое из приложений: 1C:Предприятие и PostgreSQL,&mdash; запускаются с предварительным сбросом привилегий вызовом <font class="code">su</font>, что позволяет прописать экспорт переменной через пользовательский <font class="code">.bash_profile</font>.<br /><br />
&#160;&#160;&#160;&#160;Для 1C:Предприятия при установке регистрируется отдельный пользователь <font class="code">usr1cv81</font> с домашней директорией <font class="code">/home/usr1cv81</font>. В ней 1C:Предприятие хранит все настройки. Пропишем локаль для 1C:Предприятия
<pre>
cat <<'EOF' >> /home/usr1cv81/.bash_profile

LANG="ru_RU.utf-8"

export LANG
EOF
</pre>
<br />
&#160;&#160;&#160;&#160;Если до этого 1C:Предприятие запускалось, то файлы конфигурации были созданы с использованием системной локали. Необходимо удалить старые файлы конфигурации и пересоздать их сызнова
<pre>
service srv1cv81 stop >/dev/null 2>&1
mv /home/usr1cv81/.1cv81 /home/usr1cv81/bkp.1cv81
</pre>
&#160;&#160;&#160;&#160;Запустим службы 1C:Предприятия
<pre>
service srv1cv81 start
chkconfig srv1cv81 on
</pre>
&#160;&#160;&#160;&#160;Из пакетов для PostgreSQL потребуется установить <font class="code">postgresql-libs</font>, <font class="code">postgresql</font>, <font class="code">postgresql-server</font> и <font class="code">postgresql-contrib</font>. Сборку PostgreSQL необходимо брать исключительно от поставщика 1C. Мы использовали PostgreSQL 8.2.4 с модификациями из <a href="http://v8.1c.ru/overview/postgres_patches_notes.htm" rel="nofollow" target="_blank">материалов для сборки версии СУБД PostgreSQL</a>. Для желающих можем разместить собственную сборку и <font class="code">SRPM</font>.
<br /><br />
&#160;&#160;&#160;&#160;<b>Перед</b> выполнением команды <font class="code">service postgresql initdb</font> необходимо выполнить
<pre>
cat <<'EOF' >> /var/lib/pgsql/.bash_profile

LANG="ru_RU.utf-8"
export LANG
EOF
</pre>
&#160;&#160;&#160;&#160;После этого выполняем <font class="code">service postgresql initdb</font>. Вносим минимальные изменения в <font class="code">/var/lib/pgsql/data/postgresql.conf</font>
<pre>
default_with_oids = on
stats_row_level = off
</pre>
&#160;&#160;&#160;&#160;Описанных изменений достаточно для корректной работы связки 1C:Предприятие и сервера PostgreSQL. Для оптимальной работы требуется более тщательная настройка. Запускаем сервер PostgreSQL
<pre>
service postgresql start
chkconfig postgresql on
</pre>
&#160;&#160;&#160;&#160;Изменяем пароль пользователю <font class="postgres">postgres</font>
<pre>
cat <<'EOF' | psql -U postgres
ALTER ROLE postgres PASSWORD '<span style="color:blue">ваш пароль</span>';
EOF
</pre>
&#160;&#160;&#160;&#160;В качестве альтернативного варианта последнему пункту можно предложить создать отдельного пользователя с правами суперпользователя
<pre>
cat <<'EOF' | psql -U postgres
CREATE ROLE '<span style="color:blue;">usr1c</span>' WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN PASSWORD '<span style="color:blue">ваш пароль</span>';
EOF
</pre>
&#160;&#160;&#160;&#160;На этом описание UNIX части закачивается и повествование переходит к настройке оснастки 1C. Этот этап в полном объеме изложен в параграфе "Создание сервера предприятия" статьи &laquo;<a href="http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup/" rel="nofollow" target="_blank">Установка Сервера 1С:Предприятия 8.1 на Linux-сервер (со скриншотами)</a>&raquo;.<br /><br />
Сегодня, 29 января, обнаружил еще одно руководство &laquo;<a target="_blank" href="http://sergiy.kyrylkov.name/blog/2008/03/1-81-red-hat-enterprise-linux-5-centos.html" rel="nofollow">Установка 1С:Предприятия 8.1 на Red Hat Enterprise Linux 5 (RHEL 5, CentOS 5)</a>&raquo;. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/78-How-iostat-calculates-utilization.html" rel="alternate" title="How iostat calculates utilization" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-01-27T08:08:09Z</published>
        <updated>2010-01-31T09:47:26Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=78</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=78</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/78-guid.html</id>
        <title type="html">How iostat calculates utilization</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Ответ на этот вопрос можно найти в статье <a href="http://bhavin.directi.com/iostat-and-disk-utilization-monitoring-nirvana/">iostat and disk utilization monitoring nirvana</a>. Вычисление параметра <font class="code">%util iostat</font> производит по формуле:
<pre>
( (r/s + w/s) * svctm / 1000 ms ) * 100
</pre>
Говоря обывательским языком, суммарное количество записей и чтений инициированных за секунду (1000 ms) умноженное на среднее время обслуживания запроса. Именование колонок соответствует формату команды <font class="code">iostat -x</font>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/77-core-dump-CentOS.html" rel="alternate" title="Специфика получения core dump в CentOS" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-01-13T13:39:20Z</published>
        <updated>2010-01-27T08:20:10Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=77</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/77-guid.html</id>
        <title type="html">Специфика получения core dump в CentOS</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                В обычной ситуации достаточно указать в <font class="code">/etc/sysctl.conf</font> параметры
<pre>
kernel.core_uses_pid = 1
kernel.core_pattern = /var/tmp/core.%p.%e.%s
fs.suid_dumpable = 1
</pre>
Выполнить
<pre>
sysctl -p;
ulimit -c unlimited
</pre>
Перезапустить интересуйщий нас процесс командой service и убидиться в том, что параметры успешно применились командой
<pre>
cat /proc/`pgrep <span style="color: blue;">process_name</span>`/limits
</pre>

Как показала практика описанного набора действий бывает не всегда достаточно. В частности, если SysV скрипт использует функцию <font class="code">daemon()</font>, описанную в <font class="code">/etc/rc.d/init.d/functions</font>, то заданный ранее явно лимит переопределяется следющей строкой
<pre>
        corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}"
</pre>
Полагаясь на ее описание, необходимо для сервисов, использующих для запуска функцию <font class="code">daemon()</font>, дополнительно определять в их SysV конфигурационном файле, обычно расположенном в <font class="code">/etc/sysconfig</font>, директивку 
<pre>
DAEMON_COREFILE_LIMIT=unlimited
</pre>
Например, одним из сервисов, использующий подход с <font class="code">daemon()</font>, является httpd. Согласно его init-скрипту конфигурационный файл расположен в <font class="code">/etc/sysconfig/httpd</font>. Результирующий набор команд будет выглядеть
<pre>cat &lt;&lt;EOF &gt;&gt; /etc/sysconfig/httpd
DAEMON_COREFILE_LIMIT=unlimited
EOF
service httpd restart
</pre>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/76-HOWTO-PXE-Setup.html" rel="alternate" title="HOWTO PXE Setup" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2010-01-12T13:58:25Z</published>
        <updated>2010-01-12T13:58:25Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=76</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=76</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/76-guid.html</id>
        <title type="html">HOWTO PXE Setup</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Исчерпывающее <a href="http://wiki.centos.org/HowTos/PXE/PXE_Setup" target="_blank" rel="nofollow">руководство</a> о установке CentOS с использованием встроенного в сетевую карту PXE загрузчика. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/47-rpmdb-rpm-verify-fix-mtime-differences.html" rel="alternate" title="Восстановление даты модификации файла из rpmdb / rpm verify fix mtime differences" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2009-12-28T22:27:00Z</published>
        <updated>2009-12-29T10:55:43Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=47</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=47</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/47-guid.html</id>
        <title type="html">Восстановление даты модификации файла из rpmdb / rpm verify fix mtime differences</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Восстановить дату последней модификации файла из базы rpmdb позволяет команда:
<pre>touch -m --date="`rpm -q --qf '%{FILEMTIMES:date}' -f <span style="color: blue;">&lt;filename&gt;</span>`" <span style="color: blue;">&lt;filename&gt;</span></pre>
<br />
Например, рассмотрим ситуацию
<pre># rpm -V postgresql-server
.......T  c /var/lib/pgsql/.bash_profile
#
</pre>
У файла поменялась дата модификации в связи с внесением в него временных изменений. Восстановим дату модификации на хранимую в rpmdb
<pre># touch -m --date="`rpm -q --qf '%{FILEMTIMES:date}' -f <span style="color: blue;">/var/lib/pgsql/.bash_profile</span>`" <span style="color: blue;">/var/lib/pgsql/.bash_profile</span>
</pre>
Проверим, что изменения имели место быть
<pre># rpm -V postgresql-server
#</pre>
Проверка прошла успешно. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/52-Machine-Check-Exception-MCE.html" rel="alternate" title="Machine Check Exception (MCE)" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2009-12-21T09:12:00Z</published>
        <updated>2009-12-29T10:59:11Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=52</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=52</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/52-guid.html</id>
        <title type="html">Machine Check Exception (MCE)</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Основная часть заметки была написана в 4<sub>ом</sub> часу утра 31 марта 2009 непосредственно в момент описываемых событий.<br /><br />
О том, что такое <acronym title="Machine Check Exception">MCE</acronym> и чем его закусывают мне довелось впервые столкнуться ночью 31 марта 2009. Знамение пришло в виде нескольких неисправимых ошибок на системной консоли следующего содержания (<a href="http://blog.unixstyle.ru/uploads/screenshots/MCE-2009033101.png" target="_blank">снимок экрана</a>)
<pre>
HARDWARE ERROR
CPU 5: Machine Check Exception:                     5 Bank 0: b200004000000800
RIP !INEXACT! 10:&lt;ffffffff8006ad64&gt; {default_idle+0x29/0x50}
TSC 1d24d355f8839d
This is not a sotware problem!
Run through mcelog --acsii to decode and contact your hardare vendor
</pre>

Полагаясь на диагностику операционной системы, а именно сообщение о том, что проблема связана с железом я погрузился в поиски. Как <a rel="nofollow" href="http://www.advancedclustering.com/faq/im-getting-mce-machine-check-exception-errors-what-does-this-mean/print.html" target="_blank">оказалось</a> существуют 2<sub>а</sub> подмножества ошибок:<ul>
<li>исправимых (warning error);</li>
<li>неисправимых (nonrecoverable, fatal exception).</li>
</ul>
Первые ограничиваются сообщениями на системную консоль и в системный журнал. Вторые, с которыми мне и довелось столкнуться, имеют более жестокий характер и останавливают работу всей системы. Согласно данным приведенным в <a rel="nofollow" href="http://www.halobates.de/supp-mce.pdf" target="_blank">презентации</a>, в момент сбоя запись на диск запрещена. Соответственно ошибка не оставит о себе следа в случае отсутствия доступа к системной консоли на момент сбоя.
<br /><br />
Привлек внимание факт, что сбой произошел в &laquo;Bank 0&raquo;. Согласно <a rel="nofollow" href="http://www.halobates.de/supp-mce.pdf" target="_blank">презентации</a> Bank с нулевого по третий соответствуют процессорам.
<pre>
Banks
 0-3 CPU internal (DC, IC, BU, LS)
 4 Northbridge: only really interesting one
</pre>
С другой стороны аналогичные сообщения возникают из-за внутренней несовместимости оборудования. <a rel="nofollow" href="http://www.linuxquestions.org/questions/linux-hardware-18/howto-supermicro-x7db8-mce-hardware-errors-adaptec-scsi-card-587027/" target="_blank">Например</a>, материнская плата SuperMicro X7DB8+ и дисковый контроллер Adaptec не уживаются вместе.<br /><br />

Днем 31 марта 2009 рассматриваемый сервер был выведен из эксплуатации и начались процедуры тестирования. Неоценимую помощь оказал дистрибутив breakin, который позволил нагрузить систему и воспроизвести сбой. Причина была в недостатке охлаждения. При продолжительной работе в пиковых нагрузках система не справлялась с отводом тепла, что вызывало перегрев процессоров. Проблема скрывалась в аппаратной платформе <a href="http://www.supermicro.com/products/system/1U/1025/SYS-1025W-UR.cfm" target="_blank">SuperMicro SYS-1025W</a>, в которую необходимо устанавливать процессоры с меньшим тепловыделением и дополнительные вентиляторы для охлаждения. После этого случая вся используемая нами линейка SYS-1025W была модернизирована описанным способом. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.unixstyle.ru/index.php?/archives/1-HP-ProLiant-Series-ProLiant-Support-Pack.html" rel="alternate" title="HP ProLiant Series / Установка компонентов ProLiant Support Pack" />
        <author>
            <name>Artyom Nosov / Артем Носов </name>
                    </author>
    
        <published>2009-12-20T17:12:00Z</published>
        <updated>2009-12-29T10:59:49Z</updated>
        <wfw:comment>http://blog.unixstyle.ru/wfwcomment.php?cid=1</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.unixstyle.ru/rss.php?version=atom1.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    
            <category scheme="http://blog.unixstyle.ru/index.php?/categories/1-UNIX" label="UNIX®" term="UNIX®" />
    
        <id>http://blog.unixstyle.ru/index.php?/archives/1-guid.html</id>
        <title type="html">HP ProLiant Series / Установка компонентов ProLiant Support Pack</title>
        <content type="xhtml" xml:base="http://blog.unixstyle.ru/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Заметка первоначально была начата 08 июля 2007 года, но, к сожалению, так и не получила завершения. Позволю себе опубликовать ее в незаконченном виде, возможно, кто-то подчерпнет для себя полезную информацию. <br /><br />
Исходные данные:<ul>
<li>HP ProLiant DL360 G5 (дисковый контролер HP SmartArray P400i)</li>
<li>HP ProLiant DL320 G5 (дисковый контролер HP SmartArray E200)</li>
<li>HP ProLiant DL320s (дисковый контролер HP SmartArray P400)</li>
<li>HP ProLiant DL380 G4 (дисковый контролер HP Smart Array 6i)</li>
<li>Red Hat Enterprise Linux AS 4 (Update 4)</li>
</ul>
Задача: реализация возможности просмотра/изменения в online параметров и статуса аппаратного дискового массива/контроллера<br />

Для настройки массивов компания HP предлагает 4-е прикладных набора:<ul>
<li><b>ORCA</b> - A simple ROM-based configuration utility</li>
<li><b>ACU</b> - Array Configuration Utility</li>
<li><b>ACU CLI</b> - Array Configuration Utility Command Line Interface</li>
<li><b>CPQONLIN</b> - A menu-based configuration utility specifically for servers using Novell NetWare</li>
</ul>
Детальная сравнительная таблица возможностей доступна в <a href="http://h18004.www1.hp.com/products/servers/proliantstorage/arraycontrollers/documentation.html">Руководстве Пользователя</a> к выбранному дисковому контролеру. Мы же бегло пробежимся по их возможностям, а точнее по ограничениям. <br /><br />


Доступ к <b>ORCA</b> возможен только на начальной стадии загрузки сервера (during POST). Разумеется, в production environments это не оправданный простой сервиса. К тому же сам интерфейс достаточно ограничен в возможностях (ряд возможностей в нём просто отсутствует). Соответственно его ниша сильно ограничена первоначальной настройкой системы. <br />

<b>CPQONLIN</b> существует для Novell NetWare. В связи с отсутствием в ближайшем окружении систем с NetWare можно судить лишь по описанию. По возможностям повторяет своих собратьев <b>ACU</b> и <b>ACU CLI</b>.<br />
Основное внимание будет сконцентрировано в эпсилон окрестности <b>ACU</b> и <b>ACU CLI</b>. Обе охватывают весь функционал дисковых контроллеров на заданной платформе Red Hat Enterprise Linux.<br /><br />

<b>HP ACU CLI</b> распространяется как отдельно в виде <i>RPM</i>-пакета, так и в составе ProLiant Support Pack (архив, содержащий в себе актуальные на момент его выхода пакеты различных сетевых, локальных служб и описания к ним). Оба варианта доступны через раздел сайта <a href="http://welcome.hp.com/country/us/en/support.html">HP Support &amp; Drivers</a>.<br /><br />

Для рассмотрения был взял актуальный на момент написания <i>RPM</i>-пакет <a href="http://h18000.www1.hp.com/support/files/server/us/download/27053.html">hpacucli-7.80-6.linux.rpm</a>. Для его работы потребовался дополнительный пакет <font color="blue">compat-libstdc++-296</font>, входящий в репозиторий дистрибутива. Его установка была произведена командой:
<pre>yum -y install compat-libstdc++-296 &amp;&amp; rpm -Uvh /path/to/hpacucli-7.80-6.linux.rpm</pre>

Первой командой, которую мы настоятельно рекомендуем выполнить <i>hpacucli help</i> и <i>hpacucli shorthand</i>. Последняя отобразит список принятых сокращений. А обе они поведают о всех своим возможностях. Легко заметить простоту синтаксиса:
<pre> &lt;target&gt; &lt;command&gt; [parameter=value]</pre>

Рассмотрим наиболее повседневные операции с ориентиром на последующее использование в командных скриптах. Первоначально потребуется определить расположение контроллера(ов), чтобы в последующих командах обращаться к вполне определенному устройству. Выполним команду:
<pre>[root@savecore ~]# <span style="color: blue">hpacucli ctrl all show status</span>

<span style="color: gray;">Smart Array 6i</span> in <span style="color: grey">Slot 0</span>
   Controller Status: OK
   Cache Status: OK
   Battery Status: OK

[root@savecore ~]# </pre>

Контроллер <i>HP Smart Array 6i</i> расположен в слоте с номером 0. Запрос информации непосредственно о данном контроллере производится явным заданием параметра <i>slot=0</i>:
<pre>
[root@savecore ~]# <span style="color: blue;">hpacucli ctrl slot=0 show detail</span>

Smart Array 6i in Slot 0
   Bus Interface: PCI
   Slot: 0
   Cache Serial Number: P75B20C9SS017I
   RAID 6 (ADG) Status: Disabled
   Controller Status: OK
   Chassis Slot: 
   Hardware Revision: Rev B
   Firmware Version: 2.36
   Rebuild Priority: Low
   Expand Priority: Low
   Surface Scan Delay: 15 sec
   Cache Board Present: True
   Cache Status: OK
   Accelerator Ratio: 50% Read / 50% Write
   Total Cache Size: 192 MB
   Battery Pack Count: 1
   Battery Status: OK
   SATA NCQ Supported: False

[root@savecore ~]# 
</pre>
Поддерживаемые схемы адресации:
<pre>      [controller all|slot=#|wwn=#|chassisname="AAA"|serialnumber=#|chassisserialnumber=#|ctrlpath=#:# </pre> 
            </div>
        </content>
        
    </entry>

</feed>