LINUX.ORG.RU

ZFS пул теряет USB диск при каждой перезагрузке

 ,


0

1

ось: Debian v7 wheezy
драйвер: ums_cypress
загрузка ядра происходит с ext3 с помощью grub4dos система находится как раз на проблемном ZFS пуле, пока стартует на одном диске, раз второй отваливается каждый раз

аналогичный конфиг (тот же диск) через свой обычный порт работает нормально, но через USB происходит такой тупняк


в initrd добавлены соответствующие дрова:
cat /etc/initramfs-tools/modules
содержимое:
http://pastebin.com/s5gf9w22

при загрузке в busybox USB устройство видно и можно приатачить в пул

впечатление, что пул импортируется раньше загрузки драйвера USB устройства, хотя визуально судя по выводу на консоль, сначала появляется инфа о добавленном устройстве с упоминанием модели HDD и только потом происходит долгодуманье (3-5 секунд), наверно переключение корня файловой системы и потом стартуют сервисы (зелененькие [OK])

впечатление, что пул импортируется раньше загрузки драйвера USB устройства

Так и есть. USB устройства инициализируются позднее SATA/ATA устройств, подключенных к дисковому контроллеру.

Читай про параметры ядра, которые выставляют время ожидания инициализации USB устройств ядром, что-то вроде usbseek.

Может как-то по другому называться, в общем, укажи параметр ожидания в 2-3 секунды, может больше.

Удачи.

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

USB устройства инициализируются позднее SATA/ATA устройств, подключенных к дисковому контроллеру.

Как ты сделал такой вывод? Пальцем в небо?

$ cat /sys/block/sda/device/vendor 
ALCATEL 
$ cat /sys/block/sda/device/model 
Mass Storage    


GSM modem с флешкой (типа драйвера там)

$ cat /sys/block/sdb/device/vendor 
WD      
$ cat /sys/block/sdb/device/model 
My Passport 0820


$ lsusb  |grep Western
Bus 003 Device 002: ID 1058:0820 Western Digital Technologies, Inc. My Passport Ultra (WDBMWV, WDBZFP)

$ cat /sys/block/sd{c,d,e,f}/device/vendor 
COMPAQ  
COMPAQ  
COMPAQ  
COMPAQ  

SCSI диски

anonymous ()
Ответ на: комментарий от anonymous

Как ты сделал такой вывод?

Из опыта. Посмотри, к примеру systemrescuecd, там добавляется соответствующая опция к параметрам ядра после переноса LiveCD на USB накопитель. Без этой опции на некоторых конфигурациях ядро не успевает инициализировать USB флеш накопитель до момента, когда init сценарий в initramfs ищёт носитель со squashfs образом корневой файловой системы.

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

наверно:

rootdelay= n

Wait n seconds before trying to mount the root filesystem. This can be useful if the root filesystem is on a USB or Firewire device, as those disk devices take a bit longer to be discovered by the kernel.

http://www.linuxdevcenter.com/pub/a/linux/excerpts/9780596100797/kernel-boot-...

только мне то надо не монтирование корневой системы отложить, а импорт пула, не уверен эти команды рядом находятся?

anonymous ()
Ответ на: комментарий от anonymous

добавил:

1)cat /etc/initramfs-tools/scripts/init-top/usb_storage

modprobe ums_cypress
перестроил initrd

2) параметр ядра:
live-media-timeout=15

не знаю, что именно повлияло, но пул стал загружаться нормальный с обоими дисками online в т.ч. один из которых USB

sanyock ★★ ()
Последнее исправление: sanyock (всего исправлений: 2)
Ответ на: комментарий от sanyock

но выяснилась другая неприятность:

если USB устройство сглючит, перестает реагировать на команды ввода вывода, они подвисают и подвешивают ZFS, после чего помогает только reset

наверно, придется отказаться от USB диска для зеркала системного раздела

sanyock ★★ ()
Ответ на: комментарий от kostik87

И что в этих командах? Фигня какая-то.

Серьезно? Ты к IT вообще имеешь отношение? Показано, что sda и sdb усб-устройства, а sdc/d/e/f диски. Но да, по твоему опыту, сначала диски потом УСБ. Поздравляю тебя в двойном сливе.

anonymous ()
Ответ на: комментарий от anonymous

Да пофиг что там показано. Раз на раз может не прийтись, что usb диски раньше определятся.

Ты сам пишешь, что параметр live-media-timeout тебе помог. Предположу, что этот параметр указывает сценарию в initramfs прождать указанное количество секунд, а потом выполняться. Как следствие в любом случае за это время USB устройства успели до конца проинициализироваться.

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

то другой анонимус был с параметром

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

anonymous ()
Ответ на: комментарий от kostik87

Ты сам пишешь, что параметр live-media-timeout тебе помог.

это я пишу,
и еще случайно написал под анонимом:

наверно:
rootdelay= n
Wait n seconds before trying to mount the root filesystem. This can be useful if the root filesystem is on a USB or Firewire device, as those disk devices take a bit longer to be discovered by the kernel.
http://www.linuxdevcenter.com/pub/a/linux/excerpts/9780596100797/kernel-boot-...
только мне то надо не монтирование корневой системы отложить, а импорт пула, не уверен эти команды рядом находятся?



остальное пишет другой аноним

sanyock ★★ ()
Последнее исправление: sanyock (всего исправлений: 1)
Ответ на: комментарий от sanyock

а нельзя ли еще в случае подвисания USB устройства, подать в ядро какую-нибудь команду, чтобы ядро его выплюнуло и не ждало timeout неизвестно как долго
даже передергивание не помогло в прошлый раз
хотел какое-то время перекантоваться с USB диском, у меня порты закончились и слотов нет подходящих под контроллеры

sanyock ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.