Linux подключить диск на горячую

unixforum.org

На компе стоит Mageia 5 (второй системой стоит винда семёрка).
Нужно, при работающей системе, подключать sata диски. В bios горячее подключение включено. Включён ACHI.
Т.к. подубитых HDD в наличии нету, испытания провожу на оптическом приводе.
Под виндой всё четко работает, отключается и подключается с характерным, для винды, звуковым сигналом подключения и отключения устройства.
Под Mageia 5 привод подхватывается только первый раз. Если его отключить и снова включить, то привод очень долго жужжит, пытаясь инициализироваться и ничего не происходит.

dmesg | tail до подключения привода

dmesg | tail [ 4072.900877] ata7: hard resetting link [ 4073.207302] ata7: SATA link down (SStatus 0 SControl 300) [ 4073.207309] ata7: limiting SATA link speed to 1.5 Gbps [ 4078.197775] ata7: hard resetting link [ 4078.504197] ata7: SATA link down (SStatus 0 SControl 310) [ 4078.504203] ata7.00: disabled [ 4078.506184] ata7: EH complete [ 4078.506187] sr 6:0:0:0: rejecting I/O to offline device [ 4078.506189] sr 6:0:0:0: killing request [ 4078.506192] ata7.00: detaching (SCSI 6:0:0:0)

dmesg | tail после первого подключения

dmesg | tail [ 20.119736] ata7: SError: < DevExch >[ 20.119739] ata7: hard resetting link [ 20.891522] ata7: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 20.894641] ata7.00: ATAPI: CD-W540E, 1.0B, max UDMA/33 [ 20.898561] ata7.00: configured for UDMA/33 [ 21.056200] ata7: EH complete [ 21.381697] scsi 6:0:0:0: CD-ROM TEAC CD-W540E 1.0B PQ: 0 ANSI: 5 [ 21.625026] sr 6:0:0:0: [sr0] scsi3-mmc drive: 48x/48x writer cd/rw xa/form2 cdda tray [ 21.625027] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 21.625092] sr 6:0:0:0: Attached scsi CD-ROM sr0

dmesg | tail после отключения привода и второго включения

dmesg | tail [22622.447949] ata7: EH complete [22622.920048] ata7.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [22622.920050] ata7.00: irq_stat 0x40000001 [22622.920053] ata7.00: cmd a0/00:00:00:00:00/00:00:00:00:00/a0 tag 29 Test Unit Ready 00 00 00 00 00 00res 80/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x3 (HSM violation) [22622.920054] ata7.00: status: < Busy >[22622.920056] ata7: hard resetting link [22623.684598] ata7: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [22623.690913] ata7.00: configured for UDMA/33 [22623.770430] ata7: EH complete

Читайте также:  Linux клиент l2tp ipsec

Судя по строке «ata7.00: status: < Busy >» устройство после отключения не удаляется автоматом. И при повторном запуске, видимо, пытается новое устройство наложить на старое. Отсюда и проблема в подключении.
Пробовал команду echo 1 > /sys/block/sr0/device/delete не помогло.

Источник

Добавление нового диска в Linux систему на горячую.

Добавление жесткого диска
При необходимости добавить жесткий диск в Linux систему, например в Centos «на горячую», т.е. без выключения и перезагрузки сервера, необходимо сделать следующее:
Нужно послать команду ядру системы перечитать устройства:

Где «Х» — номер шины, совпадает с номером SATA порта на материнской плате. Если не известен номер порта, то можно указывать по очереди от 0 до, как правило 4. Ничего страшного не произойдет.
Количество хостов (шин), можно посмотреть командой:

Находим нужный нам раздел и запоминаем его UUID. Затем открываем файл /etc/fstab, и добавляем в конец следующую строчку (не забываем, что последняя строка в файле должна быть всегда пустой!):

Где «/backup» — место, куда монтируем, «ext4 » — тип файловой систему монтируемого диска.
Примонтировать диск можно еще и так командой mount (но не рекомендуется так делать!):

где «ntfs » — тип файловой систему монтируемого диска
Если у Вас Centos 7, то для монтирования NTFS системы предварительно необходимо выполнить команды:

Удаление жесткого диска
Если возникает необходимость удалить жесткий диск из системы «на горячую», не выключая сервер,, то достаточно послать команду:

Где «Х» — это буква устройства, sda, sdb, etc).
Данная команда является низкоуровневой и она не проверяет кеш и статус примонтированности. Более правильно будет предварительно отмонтировать устройство командой

Источник

Добавление и удаление на ходу SATA/SCSI устройств

Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).

Читайте также:  Pycharm for linux debian

Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.

Удаление устройства

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

(x — буква устройства, sda, sdb, etc).

Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.

К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.

Добавление устройства

Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.

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

X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.

Обратите внимание, host’ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).

Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).

Если мы говорим про SCSI, то вместо «- — -» можно указать точный номер устройства/шины/LUN’а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».

Читайте также:  Pro tools on linux

Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в «/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete».

Источник

Удаление устройства

Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.

К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.

Добавление устройства

Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.

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

X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.

Обратите внимание, host’ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).

Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).

Если мы говорим про SCSI, то вместо “- — -” можно указать точный номер устройства/шины/LUN’а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».

Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в “/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete”.

Источник

Оцените статью
Adblock
detector