Нет повести печальнее на свете (Gentoo epic 0.9.0)
Наш сегодняшний рассказ я посвящу тем невообразимым проблемам, возникающим по вине необузданного технического прогресса и неизменной криворукости разработчиков hardware, понятия не имеющих, что существует целый мир OpenSource. Их невообразимые проприетарные драйвера ,может быть, и работают, но исключительно на generic системах. Как читатель с легкостью догадается, у меня случай как раз нетипичный по определению.
Итак, нам дана некая x86_64 плата на nForce3 250, в распоряжение которой входит контроллер sil3114, якобы обладающий достаточными умственными способностями, чтобы обеспечить работу RAID5, что, собственно, я от него и желаю всячески. Ан нет - эта умная СБИС нифига не умеет подобного, кроме одного случая использования опять же проприетарной тулзы под винду. Ой! - воскликните Вы, и будете совершенно правы в вашем недоумении. Еще больше Вас удивит та особенность всех подобных "fakeraid" чипов, что видны соответствующие страйпы/мирроры тоже будут только под win32/win64(k8). Весь POSIX-совместимый мир видит их исключительно как все те же /dev/sd??, не надеясь на ум и способности chip in question. То есть нам опять предлагают ходить по протоптанной дорожке за проприетарной радостью?
Ну уж нет, никакого желания пользоваться тем, что эти умельцы собрали для невесть какого ядра, тем более, у нас все должно и так работать: есть и libata и sata_sil...
Отступление: о RAID-контроллерах вообще.
Что желает трудовой народ от подобного устройства? Собственно, аппаратного XOR-процессора, кэша и возможности видеть массивы как физические устройства. Недоделанные кавалеры пытаются большую часть работы скинуть на свою даму - CPU. Подобная небрежность дорого стоит: без доступа к биосу контроллера работать с массивами-устройствами нельзя никаким образом. А хотите с биосом креативные беседы иметь - добро пожаловать в support/download-отдел производителя нашего недотыкомки.
И вот я собираю хорошее ядро (2.6.11, кстати), в котором все необходимые драйвера намертво вкомпилированны и libata (sata -> scsi layer), и sata_sil и sata_nv (опционально sata_promise), которое, работая как часы, отлично видит все диски, раздает им места на SCSI-шине (виртуально, конечно, но кто считает). После этого с гордостью я заступаю на должность рулевого mdadm'а. (Скурив к этому моменту не один мануал.) Размечаю диски, завожу md. И тут обнаруживаю одну очень занятную деталь, внимательно рассматривая /proc/mdstat. А именно, мне сообщают, что resync speed после героических 30MBps падает до 900Kbps, а после и до 6Kbps.
WTF??? - недоумеваю я. Диагностика проблемы, как обычно, заключается в чтении dmesg|less, что немедленно и проводится. И обнаруживаю я там таймауты по sata-шине, идущие один за другим, как табун. Что уже является симптомом "что то не то" или "дерьмо случилось".
Дальнейшая игра по перестановке портов, добавлении контроллеров и проведении других шаманских мероприятий доводит до результата. Но очень уже неприятного результата. Если взять ровно один винт из трех и попросить, например, линейно его читать, то проблем никаких нет. А вот если параллельно запустить такое же линейное чтение (ага, все просто, как $ dd if=/dev/sd? of=/dev/null bs=2048 count=10M), то мы имеем просто букет таймаутов, падших ангелов из dd [D - uninterruptible sleep (usually IO)] и полное фиаско впридачу. И так в любой комбинации портов, к которым подключены диски (хоть раздельно на SATA150TX2, Sil3114, Nv). Не спасало ничего, кроме... [И здесь надо громко крикнуть, как в ретроспективах предыдущих серий карекано:
Shikashi!!!]
Виновника я нашел дней через пять. Уже не знаю, где точно я нашел указание на подобное, но нашел. Линчевали мы
APIC (Advanced Programmable Interrupt Controller). Да, конечно, if you just have a uniprocessor, there are useful things for it, too. И много fun, всенепременно. Из ядра его выкосить практически невозможно, нужно передать тучу параметров ядру, в т.ч. отключить nwi_watchdog, иначе ядро паникует. Но после отключения все заработало так, как должно было сделать сразу. Откуда сие чудо появилось? Да все из недр той же Intel, мною до безобразия уже ненавидимой, и не так давно (первые рецидивы на Pentium Pro).
Отсюда вывод:
не все технологии одинаково полезны. Особенно, если их автор назвается Intel.
UPD: а музы все еще существуют. Да?
Current Music: Santana (En Aranjuez Con Tu Amor)