Comments 48
Как раз нужно. Спасибо!
Наткнулся на эту статью, спасибо.
Но хотел бы добавить некоторые особенности, с которыми столкнулся на Ubuntu 12.04.
Команда:
Приведу пример того, как это работает у меня.
Добавление(сканирование):
Остановка и удаление устройства:
scsi_stop — утилита из пакета scsitools, наличествует в дефолтных репозиториях.
Но хотел бы добавить некоторые особенности, с которыми столкнулся на Ubuntu 12.04.
Команда:
sudo echo 1 > /sys/block/sdb/device/delete
не работает, выдавая следующую ошибку: bash: /sys/block/sdb/device/delete: Permission denied
Приведу пример того, как это работает у меня.
Добавление(сканирование):
sudo sh -c "echo "'- - -'" > /sys/class/scsi_host/host0/scan"
Остановка и удаление устройства:
scsi_stop /dev/sdb # Останавливает шпиндель
sudo sh -c " echo 1 > /sys/block/sdb/device/delete" # Можно дергать
scsi_stop — утилита из пакета scsitools, наличествует в дефолтных репозиториях.
На счет безопасности сего действа…
На разъеме у самого диска, некоторые контакты вынесены вперед(идут лесенкой).
Есть мнение, что это сделано специально для этих целей.
Мол земля сначала, а потом все остальное.
На разъеме у самого диска, некоторые контакты вынесены вперед(идут лесенкой).
Есть мнение, что это сделано специально для этих целей.
Мол земля сначала, а потом все остальное.
Разумеется, не работает. Как бы должно быть очевидно, что перенаправление вывода sudo прав на выполненение команды не даёт.
echo 1 | sudo tee /sys/block/sdb/device/delete
насколько это безопасно?
UFO just landed and posted this here
С точки зрения железа — безопасно. (мы про удаление информации в ядре об устройстве). Хотплаг железа имеет определённые нюансы.
А вот с точки зрения файловой системы — если удалить устройство не отмонтировав его, это эквивалентно «дёрнуть на ходу». Так что сначала отмонтировать, сделать
А вот с точки зрения файловой системы — если удалить устройство не отмонтировав его, это эквивалентно «дёрнуть на ходу». Так что сначала отмонтировать, сделать
sync; sync
(он вроде делается при отмонтировании, но лучше перебдеть), и только потом отключать.Вот как-то я возился с внешним eSata хардом под фряху 7.0 и мечтал о чем-то таком, да ещё чтобы настроить поведение харда так, чтобы он шпиндель не останавливал при бездействви, но это поведение как оказалось регулируется только софтинкой под винду и только по USB :(
Но тогда об этом только мечталось…
Кстати, кроме отладки скриптов udev ещё полезно при прогоне вхвост и в гриву всяческих soft-RAID-ов без физического передергивания хардов.
Но тогда об этом только мечталось…
Кстати, кроме отладки скриптов udev ещё полезно при прогоне вхвост и в гриву всяческих soft-RAID-ов без физического передергивания хардов.
То есть, если таким образом удалить из системы устройство, его можно спокойно отключать (не учитывая пока проблемы остановки шпинлеля)? И это применимо к стандартным sata устройствам, а не только esata?
Разумеется. Не забыв отмонтировать предварительно.
SATA отключается в таком порядке: сначала шина данных, потом питание. Включается в обратном: питание, подождать раскрутки шпинделя, шина данных.
Разумеется, питание нужно втыкать правильной стороной (воткнуть криво не получится, а вот кинуть напряжение «не туда» воткнув угол верх ногами — запросто). Так что перед втыканием всегда контрольный взгляд на разъём на винте и на питании.
Я так давно (и часто) меняю винты — скорость по SATA в три раза выше, чем по USB-SATA.
SATA отключается в таком порядке: сначала шина данных, потом питание. Включается в обратном: питание, подождать раскрутки шпинделя, шина данных.
Разумеется, питание нужно втыкать правильной стороной (воткнуть криво не получится, а вот кинуть напряжение «не туда» воткнув угол верх ногами — запросто). Так что перед втыканием всегда контрольный взгляд на разъём на винте и на питании.
Я так давно (и часто) меняю винты — скорость по SATA в три раза выше, чем по USB-SATA.
Стандарт SATA не предусматривает горячую замену активного устройства (используемого Операционной Системой) (вплоть до SATA Revision 3.x), дополнительно подключенные диски отключать нужно постепенно — питание, шлейф, а подключать в обратном порядке — шлейф, питание.
на это нам как бе намекают контакты одинаковой длинны во всех sata-разъемах
на это нам как бе намекают контакты одинаковой длинны во всех sata-разъемах
Мы под хотсвапом подразумеваем разные вещи. Для меня «не hotswap», это когда компьютер начинает виснуть после подтыкания PATA к тупому контроллеру. А hotswap, это когда с нужными предосторожностями можно отключить устройство и подключить обратно без перезагрузки.
… А так даже флешки без ритуала дёргать чревато.
… А так даже флешки без ритуала дёргать чревато.
PATA — сначала выдергиваем питание, потом шлейф.
SATA — сначала выдергиваем шлейф, потом питание.
Работает как в виндовс, так и в линукс. В случае с РАТА — на некоторых машинах/виндах возможны зависания, но чаще все проходит нормально.
SATA — сначала выдергиваем шлейф, потом питание.
Работает как в виндовс, так и в линукс. В случае с РАТА — на некоторых машинах/виндах возможны зависания, но чаще все проходит нормально.
Вот именно про эти зависания я и говорю. Особый ужас в случае slave/master'ов…
почему с SATA наоборот?
к сожалению обоснованного пруфа предоставить не могу. сам где то на железячных сайтах несколько лет назад прочитал в какой то статье, а потом 3 года очень часто проверял на практике на тысячах разных компов.
На винде если у PATA винта выдернуть сначала шлейф — почти всегда BSOD или зависание системы, потому всегда сначала винт удалял в устройствах, потом вырубал питание и только после этого шлейф.
С сата наоборот — если сначала втыкнуть шлейф то начинаются тупняки(видно сказывается то что винда думает что это хотплуг устройство, а без питания не получает ответов от контроллера), потому сначала втыкаем питание ждем раскрутки шпинделя и тыкаем шлейф.
То есть все дело в типах устройств и в работе дров/контроллеров
На винде если у PATA винта выдернуть сначала шлейф — почти всегда BSOD или зависание системы, потому всегда сначала винт удалял в устройствах, потом вырубал питание и только после этого шлейф.
С сата наоборот — если сначала втыкнуть шлейф то начинаются тупняки(видно сказывается то что винда думает что это хотплуг устройство, а без питания не получает ответов от контроллера), потому сначала втыкаем питание ждем раскрутки шпинделя и тыкаем шлейф.
То есть все дело в типах устройств и в работе дров/контроллеров
вообще говоря, здравый смысл подсказывает, что питание нужно подавать последним, а отключать первым всегда и при любых условиях для всех типов устройств. почему здесь это может быть не так, мне не вполне понятно.
Вообще-то здравый смысл говорит, что от разрыва цепи данных никому сильно не плохеет, а при разрыве цепи питания по цепям данных может идти любая ахинея (в смысле напряжения/полярности). Не смотря на то, что SATA-power планировался с рассчётом на хотплаг, никто не может гарантировать, что произойдёт при подаче «только 12 вольт и земли» на винт. Так что сначала питание, потом завершение переходных процессов (зарядка кондёров, установление тока в индуктивностях, ток RST по шинам процессоров и т.д.), и только после этого данные.
можно сильно уменьшить вероятность бсода, если вырубить предварительно винт в «диспетчере устройств»
и при подключении PATA-винтов винда может его некоторое время «не видеть» пока не обновишь вручную список устройств.
и при подключении PATA-винтов винда может его некоторое время «не видеть» пока не обновишь вручную список устройств.
UFO just landed and posted this here
Спасибо, очень хорошее руководство. Но я вдобавок всё же всегда обесточиваю винчестер заранее через hdparm, а потом только убиваю ввод/вывод и отключаю его.
Подробнее расскажите. У вас получается отключить устройство в ядре при выключенном шпинделе?
Я не понимаю зачем отключать шпиндель, ведь при отключении питания головки по инерции переходят в безопасную зону у шпинделя, и это безопасно и предусмотрено разработчиками жестких дисков. Поправьте меня если я не прав, мне будет интересно.
С точки зрения парковки головок — да. Достаточно отключить питание и дать шпиделю остановиться перед любыми перемещениями, и в смысле механики всё ок.
Остановка шпинделя желательна для того, чтобы в момент размыкания цепи питания там был маленький ток (и маленькая индуктивность). Когда шпиндель кушает электричество, ток больше, а значит, при наличии хоть какой-то индуктивности, и больше напряжение в момент разрыва цепи (индукциональная инерция, кажется называется, но могу название попутать). Чем выше скачок напряжения, тем выше вероятность, что кто-то его не выдержит.
Остановка шпинделя желательна для того, чтобы в момент размыкания цепи питания там был маленький ток (и маленькая индуктивность). Когда шпиндель кушает электричество, ток больше, а значит, при наличии хоть какой-то индуктивности, и больше напряжение в момент разрыва цепи (индукциональная инерция, кажется называется, но могу название попутать). Чем выше скачок напряжения, тем выше вероятность, что кто-то его не выдержит.
UFO just landed and posted this here
И опять консоль…
Как это принято у сообществ конкурирующих ситсем, влезу со своими 5 рублями.
в FreeBSD это делается красивей:
для SATA устройств
# смотрим нужное канал/устройство которое необходимо заменить
atacontrol list
# для добавления устойства «отцепляем канал»
atacontrol detach ataN
# «цепляем» канал с нашим устройством
atacontrol attach ataN
# если у устройства пропадало питание, то detach/attach делать не нужно
atacontrol reinit ataN
для SATA/SCSI устройств подключенных через CAM — аналогично, используется другая утилита
# ищем наше устройство
camcontrol devlist
# для добавления нового (соответственно удаления старого) усройства
camcontrol stop daN
camcontrol eject daN
camcontrol rescan all (или нужную шину увиденную в camcontrol devlist)
camcontrol inquiry daN
camcontrol start daN
# с «плохим» устройством делаем ужасные вещи, сбрасываем шину
camcontrol reset daN
удачи (:
в FreeBSD это делается красивей:
для SATA устройств
# смотрим нужное канал/устройство которое необходимо заменить
atacontrol list
# для добавления устойства «отцепляем канал»
atacontrol detach ataN
# «цепляем» канал с нашим устройством
atacontrol attach ataN
# если у устройства пропадало питание, то detach/attach делать не нужно
atacontrol reinit ataN
для SATA/SCSI устройств подключенных через CAM — аналогично, используется другая утилита
# ищем наше устройство
camcontrol devlist
# для добавления нового (соответственно удаления старого) усройства
camcontrol stop daN
camcontrol eject daN
camcontrol rescan all (или нужную шину увиденную в camcontrol devlist)
camcontrol inquiry daN
camcontrol start daN
# с «плохим» устройством делаем ужасные вещи, сбрасываем шину
camcontrol reset daN
удачи (:
UFO just landed and posted this here
Меня этот метод не раз спасал, когда выбивало винт из RAID, smartctl отваливался с «Input/output error», а в ДЦ надо было отправить запрос на замену с серийником битого винта.
Удаление/добавление — и некоторое время можно опрашивать «плохой» винт через smartctl.
Удаление/добавление — и некоторое время можно опрашивать «плохой» винт через smartctl.
Если SATA диски подключены через AHCI работает:
eject /dev/sdX
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.перед:
echo 1 >/sys/block/sdX/device/delete
можно сделать вот так:
hdparm -S1 /dev/sdX
и диск остановится через 5сек
Sign up to leave a comment.
Добавление и удаление на ходу SATA/SCSI устройств