Сегодняшняя заметка будет интересна в основном узкому кругу системных администраторов. Я расскажу о своём недавнем опыте подключение RAID контроллера Promise SuperTrack SX6000 в Ubuntu Linux Server.
Для начала немного предыстории. В нашем ЦОД (центр обработки данных) был сервер под управлением Windows Server 2003 и в качестве аппаратного RAID контроллера на нём используется тот самый Promise SuperTrack SX6000. Система была установлена на отдельный жёсткий диск подключенный непосредственно к контроллеру материнской платы и вот в один прекрасный день этот самый диск с системой благополучно умер нарисовав в MHDD более 20000 бэд-блоков. Было принято решение заменить диск и по случаю перевести сервер под управление ОС Ubuntu Server 9.10 которая кстати говоря вышла на той неделе.
Отсюда и начинается наша история. Во время инсталляции ОС сразу стало понятно, что из коробки она контроллер и том массива не увидит. Поэтому параллельно полез в гугль искать информацию по этому поводу.
Официальный сайт Promise порадовал драйверами 6-ти летней давности под ядро 2.2 и 2.4. Но таки нашёл статью как установить Fedora 7 на аналогичный контроллер. Благо у меня задача была проще — надо было просто смонтировать дисковый том с информацией в линуксе.
Первое что пришлось сделать это перезагрузится и войти в BIOS самого контроллера. Делается это просто, после проверки BIOS материнской платы идёт проверка BIOS контроллера во время которой он проверяет целостность RAID массива, а после выдаёт приглашение войти в BIOS нажав Ctrl+F.
В самом BIOS необходимо перейти в настройки RAID контроллера (Controller Configuration) нажав клавишу 5. Затем выбрать в опции OS Selection пункт Other OS. В принципе там есть и пункт Linux, но как советуют в FAQ i2o который мы будет далее использовать для доступа к тому, надо поставить именно Other OS. К тому же установив пункт Linux в этой опции при монтировании на консоль валили ошибки ввода-вывода, поэтому я не стал экспериментировать, а сделал как мудрые люди написали.
Далее грузим ОС. И загружаем 2 модуля i2o:
$ sudo insmod i2o_block.ko
$ sudo insmod i2o_proc.ko
мне правда пришлось указывать полный путь к файлам модулей
$ sudo insmod /lib/modules/2.6.31-14-generic-pae/kernel/drivers/message/i2o/i2o_block.ko
$ sudo insmod /lib/modules/2.6.31-14-generic-pae/kernel/drivers/message/i2o/i2o_proc.ko
Далее создаём файлы устройств в каталоге /dev
Подпишись на наш канал в Telegram или VK - первым узнавай о бесплатных вебинарах и курсах, а так же скидках на платное обучение.
$ sudo mkdir /dev/i2o
$ sudo mknod /dev/i2o/hda b 80 0
$ sudo mknod /dev/i2o/hda1 b 80 1
$ sudo mknod /dev/i2o/hda2 b 80 2
…
и т.д. в зависимости от того, сколько разделов у вас там было, у меня было всего 2.
В принципе уже можно проверить как всё работает. Во первых в каталоге /proc/i2o будет создано куча файлов. Во вторых можно просто попытаться смонтировать раздел во временную папку:
$ sudo mkdir /mnt/tmp
$ sudo mount -t ntfs-3g /dev/i2o/hda1 /mnt/tmp
Если всё в порядке, то в каталоге /mnt/tmp увидим содержимое раздела. Что собственно у меня и произошло!
Далее прописываем загрузку модулей при старте системы. Для этого открываем на редактирование файл /etc/modules:
$ sudo nano /etc/modules
Добавляем в файл следующие строчки:
i2o_block
i2o_proc
Сохраняем. Затем прописываем в /etc/fstab строчки для монтирования файловых систем:
$ sudo nano /etc/fstab
и прописываем туда что-то вроде:
/dev/i2o/hda1 /mnt/tmp ntfs-3g defaults,locale=ru_RU.UTF-8 0 0
Сохраняем и перезагружаемся. У меня всё сразу заработало. Если есть необходимость переделить разделы можно воспользоваться для этого parted либо более консервативным fdisk как ими пользоваться читайте мануалы.
Ссылки по теме, которые мне очень помогли:
http://www.linuxquestions.org/questions/linux-hardware-18/fedora-core-7-directly-on-to-supertrak-sx6000-raid-577581/ — описание процесса установки Fedora Core 7 на аналогичный контроллер (на английском)
http://i2o.shadowconnect.com/ — сайт драйверов i2o — с хорошим FAQ и перечнем поддерживаемых контроллеров.