SATA hotplug

09.05.2007 20:59:19

В процессе перевода машины жены с FreeBSD на Debian (о чём будет отдельная заметка) потребовалось, естественно, отбэкапить все данные, поскольку с файловой системой UFS2 Linux дружит не очень. На чтение ещё дружит более-менее, но не более того. По сети перетащить всё не представилось возможным в связи с проблемами FreeBSD (о чём будет в отдельной заметке :)), поэтому решил опробовать SATA hotplug, который в ядре 2.6.18 (а оно аккурат вошло в etch) как раз должен работать в полную силу.

Вытащил винчестер из lapsang и потащил в сторону сервера. Информация по поддержке hotplug в драйвере ata_piix (а именно он используется в моём сервере для чипсета ICH7, возможно, есть настройки BIOS, чтобы включить AHCI, но пока такой нужды нет) в сети гуляет очень противоречивая, а на странице разработчиков вообще прямо сказано, что поддержки нет. Однако кто-то как-то с этим работать умудрялся, поэтому было принято решение разведать обстановку боем, подключить винчестер к работающему серверу.

Интересный, кстати, момент: когда я собирал сервер я подключал винчестеры в машину, пока она крутила memtest (тоже своеобразный hotplug) и удивился поведению самих винчестеров. С IDE-шными всё было просто, подключил питание — винчестер завёлся. А тут подключил питание а винт молчком. Удивлению не было предела. Потом подключил кабель SATA и винт тут же поднялся. То были Hitachi. А вот Seagate 7200.9, который стоит в lapsang, завёлся сразу после подключения питания. Интересное дело, однако.

Кое-как подключил SATA кабель в последний свободный слот на материнской плате (неудобно). Глянул dmesg. Тишина. Сделал

echo 0 0 0 > /sys/class/scsi_host/host2/scan

и система увидела винчестер! BSD-шные разделы тоже определились на раз, ядро, повторюсь, стандартное для Debian etch:

ata2: soft resetting port
ata2.00: ATA-7, max UDMA/133, 312581808 sectors: LBA48 NCQ (depth 0/32)
ata2.00: configured for UDMA/133
ata2.01: configured for UDMA/133
ata2: EH complete
SCSI device sdc: 781422768 512-byte hdwr sectors (400088 MB)
sdc: Write Protect is off
sdc: Mode Sense: 00 3a 00 00
SCSI device sdc: drive cache: write back
  Vendor: ATA       Model: ST3160812AS       Rev: 3.AA
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sde: 312581808 512-byte hdwr sectors (160042 MB)
sde: Write Protect is off
sde: Mode Sense: 00 3a 00 00
SCSI device sde: drive cache: write back
SCSI device sde: 312581808 512-byte hdwr sectors (160042 MB)
sde: Write Protect is off
sde: Mode Sense: 00 3a 00 00
SCSI device sde: drive cache: write back
 sde: sde1
 sde1: 
sd 2:0:0:0: Attached scsi disk sde

Давно работающий sdc, при этом, тоже «определился», что дало повод понервничать за его работоспособность в RAID, но никаких проблем, ядро работает разумно.

Монтирование BSD-шных разделов требует параметра с указанием типа UFS, для FreeBSD 6.x (а также, скорее всего, для 5.x, неуверен насчёт 4.x, хотя это уже не так и актуально) это UFS2:

mount -t ufs -o ro,ufstype=ufs2 /dev/sde5 1/

Скопировав всё и отмонтировав разделы делаем:

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

В логе видим что-то вроде

ata2.00: disabled

И всё, можно спокойно выдёргивать винчестер!

Таким образом, SATA hotplug в Debian etch вполне работоспособен, а я теперь знаю, что всегда смогу очень легко расширить свой RAID без каких-либо перерывов в работе системы.

Много комментариев (2) к заметке “SATA hotplug”

  1. elf:

    Команда
    echo 0 0 0 > /sys/class/scsi_host/host2/scan
    выглядит крайне по-шамански. Не подскажете, где почитать подробнее об этом? В частности, не очень понятно, какой именно host надо запускать на пересканирование. У меня их там 6. sata — 4 штуки (хотя физических разъемов вроде только 2).

  2. Роман:

    Ссылка, которая мне помогла, есть в тексте. Хост определяется через /sys, надо смотреть в районе /sys/class/scsi_host/host$?/device/target*, приблизительно должно быть понятно. Даже если и не понятно, ничего страшного нет в запуске сканирования не того устройства (во всяком случае, SATA на моём чипсете 🙂 (туда же, кстати, может USB отображаться, как с ним не знаю)).

Закомментировать

Вам бы, по-хорошему, зарегистрироваться сначала надобно, прежде чем комментарии оставлять. Но, в порядке исключения, можете попробовать с OpenID проскочить, вдруг.