Archive for RAID

Установка Debian Squeeze на Dell 1950

// Декабрь 18th, 2014 // No Comments » // Debian, Dell, grub, md, RAID

В процессе установки вылезло сразу две проблемы:
1) это сетевой адаптер «Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet», по логике маинтейнеров драйвера не попадают в дистрибутив из-за закрытого кода, и действительно зачем серверу нужна сеть
2) сочетание встроенного рейд-контроллера и использование софтрейда md вызывает глюк — не устанавливается GRUB, т.е. после перезагрузки получаем большой кирпич.

Для начала скачиваем последний netinstall, но т.к. он уже в архиве — ищем его здесь >> и нарезаем на cd-r диск.

Первая проблема решается легко, идем на страничку http://wiki.debian.org/Firmware, находим ссылку на нужный файл, для Сквизи это будет firmware.tar.gz, скачиваем и распаковываем в корень(!) флешки. Тогда при инсталляции драйвер подгрузится автоматически.

Флешку подключаем к серверу, всталяем диск и начинаем установку. Нужно выбрать режим «Expert install». И выполняем все по пунктам, как при обычной инсталляции.

После выполнения пункта установки загрузчика GRUB нужно не завершить установку, а выбрать «Start shell».

Теперь решаем проблему установки GRUB. Суть проблемы: то ли скрипт кривой, то ли факт наличие флешки сбивает скрипт и на жесткий диск он так и не попадает, поэтому сделаем все ручками.
Должна быть примерно такая картина:

# df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 15.7G 120.0K 15.7G 0% /dev
/dev/md0 938.0M 155.4M 734.9M 17% /target
/dev/md3 9.2G 148.9M 8.6G 2% /target/home
/dev/md2 3.7G 71.8M 3.4G 2% /target/tmp
/dev/md1 3.7G 286.1M 3.2G 8% /target/usr
/dev/md4 253.9G 356.4M 240.7G 0% /target/var
tmpfs 15.7G 120.0K 15.7G 0% /target/dev
/dev/md0 938.0M 155.4M 734.9M 17% /dev/.static/dev
/dev/sr0 168.0M 168.0M 0 100% /cdrom

если нет — тогда нужно руками смонтировать недостающее:

for d in dev proc sys; do mount --bind /$d /target/$d; done

! Обязательно должна быть строка:

tmpfs 15.7G 120.0K 15.7G 0% /target/dev

если нет, тогда еще раз смонтировать:

umount /target/dev/ && mount --bind /dev/ /target/dev/

Запускаем chroot в уже установленную систему и запускаем там шелл, мне приятнее работать в bash:

chroot /target /bin/bash

Теперь приглашение сменится на [root@debian] #, проверяем, видно ли диски:

# ls -a /dev | grep sd
sda
sda4
sdb
sdb1
...
sdb9
sdc
sdc1
...
sdc9

Осталось только установить GRUB, есть два варианта:

grub-install /dev/sdb
grub-install /dev/sdc
update-grub

или

dpkg-reconfigure grub-pc

и в графическом меню отметить нужные диски.

Проверить установлен ли GRUB можно командой (предварительно нужно установить утилиту file, обычным способом apt-get install file):

# file -s /dev/sdb
/dev/sdb: x86 boot sector; partition 1: ID=0xfd, active, starthead 32, startsector 2048, 1951744 sectors; partition 2: ID=0x5, starthead 190, startsector 1955838, 583981058 sectors, code offset 0x63

Дальше нужно вернутся в шелл установщика и вернутся в сам установщик и окончить процесс, для этого достаточно два раза выполнить exit.

Корректная замена SATA дисков на горячую в linux

// Июль 31st, 2013 // 2 комментария » // harware, linux, RAID, recovery

Как оказалось SATA диски не такие уж и HotSwap и требуются некоторые действия, что бы все корретно заработало.
Для начала нужно отмонтировать или вывести из рейд массива диск.

Как извлечь диск из рейда md можно узнать здесь.

После этого сбросить весь кэш контроллера, т.е. провести синхронизацию данных на диске до актуальной:

sync

Извлечь устройство командой:

echo 1 >/sys/block/sdX/device/delete

где sdX — имя диска, например sda, sdb, sdc…
или по номеру контроллера:

echo 1 > /sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete

Теперь можно физически извлечь диск и заменить на новый.
Новый диск автоматически не появится, для этого нужно сделать сброс контроллера, после переинициализации найдется новый диск:

echo "- - -" >/sys/class/scsi_host/hostX/scan

где Х номер шины, можно узнать из dmesg место где стоял старый диск (host’ы нумеруются с 0, а не с 1, а в dmesg ata устройства нумеруются с 1). Если расположение диска неизвестно — можно сделать для всех хост-контроллеров, ничего страшного не произойдет, данные не потеряются, файловая система не поломается, возможен только небольшой лаг в доступе к активным дискам.

Linux: Установка загрузчика GRUB на программный RAID

// Январь 23rd, 2013 // 1 Comment » // boot-loader, grub, linux, md, RAID, recovery

Имеем два диска собранные в зеркало, через dm:
/dev/sda1 + /dev/sdb1 => /dev/md0
/dev/sda5 + /dev/sdb5 => /dev/md1

Проверяем есть ли активный раздел:

# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0xfd, starthead 32, startsector 2048, 1169408 sectors; partition 2: ID=0x5, starthead 12, startsector 1173502, 76949506 sectors
# file -s /dev/sdb
/dev/sdb: x86 boot sector; partition 1: ID=0xfd, active, starthead 32, startsector 2048, 1169408 sectors; partition 2: ID=0x5, starthead 12, startsector 1173502, 76949506 sectors, code offset 0x63

как видно, на диске sda не указан активный раздел и не установлен загрузчик.
Что бы указать раздел активным, например первый:

# fdisk /dev/sda
...
Command (m for help): m
Command action
   a   toggle a bootable flag
...
   w   write table to disk and exit

Command (m for help): a
Partition number (1-9): 1

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

Установка GRUB2:
В Debian и прочих Ubuntu достаточно ввести:

# dpkg-reconfigure grub-pc

два раза нажать OK и выбрать звездочками оба диска и еще раз ОК
или:

# grub-install /dev/sda
# grub-install /dev/sdb

если еще выполнить:

# update-grub

изменится меню (конфигурационный файл), появится возможность выбора диска для загрузки ОС.

Старый GRUB:

# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)

Результат работы будет такой:

   grub> root (hd1,0)
   root (hd1,0)
    Filesystem type is ext2fs, partition type 0xfd
   grub> setup (hd1)
   setup (hd1)
    Checking if "/boot/grub/stage1" exists... no
    Checking if "/grub/stage1" exists... yes
    Checking if "/grub/stage2" exists... yes
    Checking if "/grub/e2fs_stage1_5" exists... yes
    Running "embed /grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded.
   succeeded
    Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
   Done.
   grub> quit
   quit

Проверим результат:

# file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0xfd, active, starthead 32, startsector 2048, 1169408 sectors; partition 2: ID=0x5, starthead 12, startsector 1173502, 76949506 sectors, code offset 0x63
# file -s /dev/sdb
/dev/sdb: x86 boot sector; partition 1: ID=0xfd, active, starthead 32, startsector 2048, 1169408 sectors; partition 2: ID=0x5, starthead 12, startsector 1173502, 76949506 sectors, code offset 0x63

Замена сбойного диска в программном RAID-массиве

// Январь 23rd, 2013 // 12 комментариев » // linux, md, RAID, recovery

Изначально имеем два диска /dev/sda и /dev/sdb, собранные в RAID1, по типу:
/dev/sda1 + /dev/sdb1 => /dev/md0
/dev/sda5 + /dev/sdb5 => /dev/md1

Диск /dev/sda вышел из стоя:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[0]
      1950708 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sdb1[0]
      584692 blocks super 1.2 [2/1] [U_]

—-

Нужно извлечь сбойный sda из массива, для этого помечаем его сбойным для всех массивов:
(далее…)