- Горячая замена Sata3 в Linux
- Добавление и удаление на ходу SATA/SCSI устройств
- Удаление устройства
- Добавление устройства
- Удаление устройства
- Добавление устройства
- Как заставить Linux распознавать новый диск SATA / dev / sda, в который я могу выполнить горячую замену без перезагрузки?
- Linux горячее подключение sata дисков
Горячая замена Sata3 в Linux
Ктонибудь этим занимался ? Вопрос возник по ходу работы с софт raid .
>Стандарт SATA не предусматривает горячую замену активного устройства
Внимание на слово «АКТИВНОГО». То есть сначала надо устройство отмонтировать командой umount, а потом отключать. Всего лишь
По поводу порядка отключения кабелей — скорее перестраховка для облегчения запуска контроллера.
Горячая замена работает, начиная с самого первого SATA
Нормально всё, только устройство освободи чтоб его система не юзала и можешь делать что в голову взбредет.
Получается, что мы отмонтируем устройство и вперед ?
На первый взляд всё ок , есть ли какие подводные камни?
Делал по этому мануалу на работающем сервере 3 раза: http://habrahabr.ru/blogs/linux/102387/
Проблем не было
Главное не забыть диск из рейда вытащить!
У меня контроллер IDE шный рак подхватывал без перезагрузки. Правда с горячим отключением были проблемы.
зачем отмонтировать? если он не в массиве, значит он не исползуется
Ну уменя прикол был вывел диск из массива (1 raid) и не обнулил супер блоки, в итоге получил два Raid 1. Soft radi удаление диска из массива
получилось что диск хоть и не в массиве но использовался
Источник
Добавление и удаление на ходу SATA/SCSI устройств
Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).
Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.
Удаление устройства
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Добавление устройства
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
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».
Источник
Удаление устройства
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Добавление устройства
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
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».
Источник
Как заставить Linux распознавать новый диск SATA / dev / sda, в который я могу выполнить горячую замену без перезагрузки?
Горячая замена вышедшего из строя диска SATA / dev / sda работала нормально, но когда я перешел на новый диск, он не был распознан:
Я попробовал пару вещей, чтобы сервер нашел новую / dev / sda, например, rescan-scsi-bus.sh, но они не сработали:
Я закончил тем, что перезагрузил сервер. / dev / sda был распознан, я установил программный RAID, и теперь все в порядке. Но в следующий раз, как я могу заставить Linux распознавать новый SATA-диск, на который у меня была горячая замена без перезагрузки?
Рассматриваемая операционная система RHEL5.3:
Жесткий диск представляет собой Seagate Barracuda ES.2 SATA 3.0-Gb / s 500-GB, модель ST3500320NS.
Вот вывод lscpi:
Обновление : возможно, в десятке случаев мы были вынуждены перезагрузить серверы, потому что «горячая замена» не «просто сработала». Спасибо за ответы, чтобы больше заглянуть в контроллер SATA. Я включил вывод lspci для проблемной системы выше (имя хоста: fs-2). Я все еще мог бы использовать некоторую помощь, чтобы понять, что именно не поддерживается аппаратно с точки зрения горячей замены для этой системы. Пожалуйста, дайте мне знать, какой другой вывод, кроме lspci, может быть полезен.
Хорошая новость заключается в том, что «горячая замена» сегодня «сработала» на одном из наших серверов (имя хоста: www-1), что очень редко для нас. Вот вывод lspci:
Если ваш контроллер SATA поддерживает горячую замену, он должен «просто работать (тм)».
Чтобы принудительно выполнить повторное сканирование на шине SCSI (каждый порт SATA отображается как шина SCSI) и найти новые диски, вы будете использовать:
На вышесказанном, это номер шины.
Когда диск в некоторых случаях выходит из строя, Linux не поймет, что вы фактически извлекли его из массива. Если у вас есть эта проблема (как я сделал сегодня утром), вы можете сделать следующее:
Например, в моем случае / dev / sda не удалось, и я не хотел перезагружать сервер, поэтому я сделал:
После того, как я это сделал, новый диск (который уже был физически добавлен) был сразу виден.
Если он не виден в данный момент, вы также можете сделать это для повторного сканирования:
То, что «- — -» является символами подстановки для канала, идентификатора и LUN соответственно, поэтому вы можете ограничить сканирование некоторым подмножеством, если хотите, указав вместо этого числа.
Прежде чем начать, вы также можете:
Который покажет вам путь с правильным номером хоста, чтобы проверить / proc / scsi / scsi на предмет исчезновения после удаления.
Как насчет этого (похоже, работает в Ubuntu):
Я не могу поверить, что никто еще не упомянул AHCI . Ваш контроллер SATA должен быть в режиме AHCI, чтобы включить горячую замену. Проверьте это, посмотрев на драйвер, который вы используете:
Посмотрите, как там написано «ачи».
Если это не так, просто включите его в BIOS. Кроме того, некоторые BIOS, особенно на серверах или в UEFI, имеют параметр «Горячая замена = включено / отключено» на диск, который также следует включить, если он существует.
Вот почему мне нужно было перезагрузить компьютер .
Я просто поменял местами мой / dev / sdc. Я использовал scsiadd -r 3 0 0, чтобы отключить старый диск перед тем, как вытащить его. Затем после установки нового диска новый диск не отображался как / dev / sdc, а как / dev / sdd. После перезагрузки диск снова появится как / dev / sdc.
Так что кажется, что hotswap работает Хорошо, может быть, просто / dev / sd * больше не то же самое.
Может ли это быть ответом на вашу проблему?
Мой DVD на моей машине Fedora 16 подключен к интерфейсу SATA. Он был заперт и не открывался и не закрывался. Запуск partprobe , как корень получил мой CDROM / DVD снова работает. Я считаю, что это поможет на другой машине, где у меня иногда возникают проблемы с горячей заменой. Благодарность!
Контроллер SAS Fusion-MPT является низкоуровневым RAID-контроллером. Если вы не используете его для RAID, он все равно может обеспечить бесполезный уровень препятствий / абстракций.
Возможно, вам придется подсунуть RAID-контроллер с помощью mpt-status или lsiutil, чтобы он действительно сканировал шину.
На http://hwraid.le-vert.net/wiki/LSIFusionMPT есть много документации, но я не могу сказать, что проверил ее.
В некоторых случаях горячая замена может потребоваться включить в BIOS материнской платы и / или контроллера SATA. Это полностью зависит от марки и модели обоих, но если у вас есть встроенные контроллеры SATA, которые должны поддерживать «горячую замену», то стоит пролистать BIOS материнской платы. Карты SATA могут иметь или не иметь свои собственные настройки BIOS, многие карты более низкого уровня не имеют, но карты серверного уровня обычно имеют.
Если я правильно помню, мне нужно было это с несколькими материнскими платами Gigabyte и, возможно, с некоторыми другими марками. Мне нужно было это для горячей замены лотка SATA для работы; при отключенной функции удаление диска не вызывало проблем, но новый диск не регистрировался до перезагрузки. Включение параметра сработало, как и ожидалось, диски, которые были помещены в лоток, были немедленно раскручены и доступны для ОС.
Я знаю, что этот вопрос старый, но у меня был некоторый успех, о котором я не видел нигде. Подобные проблемы возникли с Dell Precision 380 сегодня. В конце концов заставил его работать, выполнив некоторую комбинацию из следующего:
ВНИМАНИЕ: Это может нарушить работу других устройств ATA в системе. Если вы смонтировали файловые системы на этих устройствах, это может плохо закончиться. Моей ситуации было все равно, но твоя может.
Какие именно вышеперечисленные команды нужны и в каком порядке, мне пока неизвестно. Некоторые команды, возможно, придется повторить. Если бы мне пришлось угадывать, я бы сказал, сделать в порядке, показанном выше, а затем еще раз сканировать scsi_host в конце. Я сделал еще немало в своих исследованиях.
Первая команда (scsi_host scan) сообщает среднему слою SCSI сканировать все шины на наличие новых / измененных устройств. Вторая команда пытается сбросить цель SCSI (дисковое устройство). Последние два работают с драйвером для самого контроллера AHCI.
Я нашел эти предметы в основном путем подробного изучения и смелых экспериментов.
Вы можете сопоставить узлы scsi_device с маркой и моделью устройства (используя grep для печати имен файлов перед содержимым):
Первая цифра идентификатора устройства SCSI должна быть номером scsi_host. Затем вы можете сопоставить узлы scsi_host с узлами их устройств:
Я подозреваю, что у меня никогда не будет возможности доработать дальше, поэтому я хотел поделиться этой информацией в надежде сблизить других. Если я получу больше информации, я отредактирую этот ответ, чтобы отразить.
Источник
Linux горячее подключение sata дисков
В общем то в Windows подключить жесткий диск SATA не составляет труда. Подключили, обновили список оборудования и все готово, можно работать.
В Linux вроде бы все должно быть как то так-же просто. (так то так, да не так.) Как то мне понадобилось подключить на горячую дополнительный жесткий диск к Linux серверу на Ubuntu Server 12.04 для хранения бэкапов данных.
В смысле дополнительный диск для бекапов. Диск подключил, он зашуршал, в dmesg появились сообщения о том что жесткий диск был подключен. Да вот только через fdisk -l его не видно.
Первая мысль была перезагрузится, и диск должен появится сам.
Только сервер было останавливать не охота, ибо с начала нужно обойти 40 человек и сказать что бы они отключились от сервера, потом только перегружать, а потом снова обойти 40 человек и сказать что можно работать.
Да и останавливать контору из за нового диска не очень хотелось. Еще как вариант подключится вечером, перегрузить сервер удаленно и создать необходимые записи в fstab для автоподключения. Пятница, вечером как то работать вообще не охота.
Все оказалось немного проще. Для того что бы диск стал доступен нужно указать точный номер шины на котором находится диск, а вот
того номера я как раз таки и не знаю (Да и не точного я тоже не знаю ). Для тех кто знает номер шины на которой находится диск, то можно просто использовать команду:
Ну так вот, номер шины я не знал. И как оказалось и тут можно все автоматизировать при помощи обычного bash скрипта.
Итак, для того что бы на горячую подключить SATA диск к Linux системе достаточно использовать сделедующий скрипт:
После чего жесткий диск отлично откликается на fdisk -l. Ну а дальше создаем файловую систему, монтируем, копируем, и .т.д.
Ну а дельше, если Вам нужно на горячю отсоединить жесткий диск от Linux, необходимо его отмонтировать, можно просто использовать fdisk -l что бы узнать обозначение диска (например sdb или sda или sdc)
и выполнить команду:
где ### это например sdb или sda или sdc и так далее.
На этом все, можно отключать.
Не смотря на то что у меня удалось выполнить эту процедуру по подключению жесткого диска на горячую в Linux, на моем локальном компьютере (Ubuntu 13.04) это сделать не удалось.
Думаю что это зависит от контроллера который используется на материнской плате. dmesg сыпал ошибками и диск подключить не удалось. Однако проэксперементировав на нескольких серверах под управлением Debian и Ubuntu, диски нормально опеределялись.
Источник