Горячая замена неисправного диска SATA / dev / sda работала нормально, но когда я перешел на замену на новом диске, он не был распознан:
[root@fs-2 ~]# tail -18 /var/log/messages
May 5 16:54:35 fs-2 kernel: ata1: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0xe frozen
May 5 16:54:35 fs-2 kernel: ata1: SError: { PHYRdyChg CommWake }
May 5 16:54:40 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:45 fs-2 kernel: ata1: device not ready (errno=-16), forcing hardreset
May 5 16:54:45 fs-2 kernel: ata1: soft resetting link
May 5 16:54:50 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:54:55 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:54:55 fs-2 kernel: ata1: soft resetting link
May 5 16:55:00 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:05 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:05 fs-2 kernel: ata1: soft resetting link
May 5 16:55:10 fs-2 kernel: ata1: link is slow to respond, please be patient (ready=0)
May 5 16:55:40 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:40 fs-2 kernel: ata1: limiting SATA link speed to 1.5 Gbps
May 5 16:55:40 fs-2 kernel: ata1: soft resetting link
May 5 16:55:45 fs-2 kernel: ata1: SRST failed (errno=-16)
May 5 16:55:45 fs-2 kernel: ata1: reset failed, giving up
May 5 16:55:45 fs-2 kernel: ata1: EH complete
Я попробовал несколько вещей, чтобы сервер нашел новый / dev / sda, например rescan-scsi-bus.sh но они не работали:
[root@fs-2 ~]# echo "---" > /sys/class/scsi_host/host0/scan
-bash: echo: write error: Invalid argument
[root@fs-2 ~]#
[root@fs-2 ~]# /root/rescan-scsi-bus.sh -l
[snip]
0 new device(s) found.
0 device(s) removed.
[root@fs-2 ~]#
[root@fs-2 ~]# ls /dev/sda
ls: /dev/sda: No such file or directory
В итоге я перезагрузил сервер. / dev / sda был распознан, я исправил программный RAID, и теперь все в порядке. Но в следующий раз как заставить Linux распознавать новый диск SATA, который я заменил в горячем режиме, без перезагрузки?
Рассматриваемая операционная система - RHEL5.3:
[root@fs-2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Жесткий диск - Seagate Barracuda ES.2 SATA 3,0 Гбит / с, 500 ГБ, модель ST3500320NS.
Вот результат lscpi:
[root@fs-2 ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0a.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0d.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0e.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
Обновить: Возможно, в десятке случаев мы были вынуждены перезагружать серверы, потому что горячая замена «просто не сработала». Спасибо за ответы, чтобы подробнее узнать о контроллере SATA. Я включил вывод lspci для проблемной системы выше (имя хоста: fs-2). Мне все еще нужна помощь в понимании того, что именно не поддерживается аппаратно с точки зрения горячей замены для этой системы. Пожалуйста, дайте мне знать, какие еще выходные данные, помимо lspci, могут быть полезны.
Хорошей новостью является то, что горячая замена «только что заработала» сегодня на одном из наших серверов (имя хоста: www-1), что для нас очень редко. Вот результат lspci:
[root@www-1 ~]# lspci
00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:01.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation MCP55 SMBus (rev a3)
00:02.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:02.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:04.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:05.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:05.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a3)
00:06.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a3)
00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:19.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02)
04:00.0 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
04:00.1 PCI bridge: NEC Corporation uPD720400 PCI Express - PCI/PCI-X Bridge (rev 06)
09:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 04)
Если ваш контроллер SATA поддерживает горячую замену, он должен «просто работать (tm)».
Чтобы принудительно выполнить повторное сканирование шины SCSI (каждый порт SATA отображается как шина SCSI) и найти новые диски, вы будете использовать:
echo "0 0 0" >/sys/class/scsi_host/host<n>/scan
О вышесказанном <п> это номер автобуса.
echo "- - -" >/sys/class/scsi_host/host<n>/scan
^ ^
\_\_______ note spaces between the dashes.
Когда в некоторых обстоятельствах диск выходит из строя, Linux не осознает, что вы фактически вытащили его из массива. Если у вас возникла такая проблема (как у меня сегодня утром), вы можете сделать следующее:
echo 1 > /sys/block/<devnode>/device/delete
например, в моем случае / dev / sda не удалось, и я не хотел перезагружать сервер, поэтому я сделал:
echo 1 > /sys/block/sda/device/delete
После того, как я это сделал, новый диск (который фактически уже был добавлен физически) был сразу виден.
Если он не виден на этом этапе, вы также можете сделать это, чтобы принудительно выполнить повторное сканирование:
echo "- - -" > /sys/class/scsi_host/host<n>/scan
Это «- - -» - это символы подстановки для канала, идентификатора и LUN соответственно, поэтому вы можете ограничить сканирование некоторым подмножеством, если хотите, указав вместо этого числа.
Перед тем как начать, вы также можете:
readlink /sys/block/<devnode>
Это покажет вам путь с правильным номером хоста для проверки / proc / scsi / scsi на исчезновение после удаления.
Как насчет этого (похоже, работает в Ubuntu):
sudo partprobe
Я не могу поверить, что никто еще не упомянул AHCI ... ваш контроллер SATA должен быть в режиме AHCI, чтобы включить горячую замену. Проверьте это, посмотрев на драйвер, который вы используете:
root@peter:~ # find /sys -name sdk
/sys/devices/pci0000:00/0000:00:11.0/ata5/host4/target4:0:0/4:0:0:0/block /sdk
/sys/block/sdk
/sys/class/block/sdk
root@peter:~ # readlink /sys/devices/pci0000:00/0000:00:11.0/driver
../../../bus/pci/drivers/ahci
root@peter:~ # lspci -k | less
[... big long output... search for ahci or your pci address, or use the awk below ...]
root@peter:~ # lspci -k | awk '$1 == "00:11.0" {x=1}; x && /in use/ {print $0; exit}'
Kernel driver in use: ahci
Посмотрите, как там написано "ахчи".
Если это не так, просто включите его в своем BIOS. Кроме того, в некоторых BIOS, особенно на серверах или UEFI, есть параметр «Горячая замена = включен / отключен» для каждого диска, который также следует включить, если он существует.
Вот почему мне потребовалось перезагрузить компьютер ...
Я только что произвел горячую замену / dev / sdc. Я использовал scsiadd -r 3 0 0, чтобы выключить старый диск перед его извлечением. Затем после установки нового диска новый диск отображается не как / dev / sdc, а как / dev / sdd. После перезагрузки диск снова появится как / dev / sdc.
Таким образом, похоже, что горячая замена работает Хорошо, может быть, просто / dev / sd * больше не тот.
Может ли это быть ответом на вашу проблему?
Мой DVD на моей машине с Fedora 16 подключен к интерфейсу SATA. Она была заперта и не открывалась и не закрывалась. Бег Partprobe как root снова заработал мой cdrom / DVD. Я считаю, что это поможет на другой машине, где у меня периодически возникают проблемы с горячей заменой. Спасибо!
Для работы hotplug у вас должен быть загружен модуль acpiphp.
[root@example ~]# modprobe acpiphp
очевидно, если вы хотите, чтобы это работало при загрузке, вам нужно будет настроить его для загрузки во время загрузки - один из способов - создать / отредактировать /etc/rc.modules (который вызывается rc.sysinit) и добавить строку:
modprobe acpiphp
помните, если вы создаете этот файл, чтобы выполнить команду chmod + x, как он называется таким образом.
Контроллер Fusion-MPT SAS, который у вас есть, является RAID-контроллером низкого уровня. Если вы не используете его для RAID, он может по-прежнему предоставлять бесполезный уровень препятствий / абстракции.
Возможно, вам придется ткнуть RAID-контроллер с помощью mpt-status или lsiutil, чтобы заставить его сканировать шину.
http://hwraid.le-vert.net/wiki/LSIFusionMPT есть много документации, но я не могу сказать, что проверил ее.
В некоторых случаях может потребоваться включить горячую замену в BIOS материнской платы и / или контроллера SATA. Это полностью зависит от марки и модели обоих, но если у вас есть встроенные контроллеры SATA, которые должен поддержка горячей замены то стоит прошерстить BIOS материнской платы. Карты SATA могут иметь или не иметь собственные настройки BIOS, многие карты более низкого уровня не имеют, но карты серверного уровня обычно имеют.
Если я правильно помню, мне это нужно было с рядом материнских плат Gigabyte и, возможно, с некоторыми другими производителями. Мне это было нужно для работы лотка SATA с возможностью горячей замены; с отключенной функцией удаление диска не вызывало проблем, но новый диск не регистрировался до перезагрузки. Включение параметра сработало, как и ожидалось, диски, помещенные в лоток, сразу же раскрутились и стали доступны для ОС.
Я знаю, что это старый вопрос, но у меня был некоторый успех, о котором я не видел больше нигде. Была похожая проблема с Dell Precision 380 сегодня. В конце концов он заработал, выполнив комбинацию следующих действий:
echo "- - -" > /sys/class/scsi_host/host2/scan
echo 1 > /sys/class/scsi_device/2:0:0:0/device/reset
echo 1 > /sys/devices/pci0000:00/0000:00:1f.2/rescan
echo 1 > /sys/devices/pci0000:00/0000:00:1f.2/reset
ПРЕДУПРЕЖДЕНИЕ: Это также может нарушить работу других устройств ATA в системе. Если вы смонтировали файловые системы на этих устройствах, это, скорее всего, плохо кончится. Моя ситуация не волновала, а твоя могла.
Мне неизвестно, какие именно из вышеперечисленных команд и в каком порядке необходимы. Некоторые команды, возможно, придется повторить. Если бы мне пришлось угадывать, я бы сказал, сделайте в указанном выше порядке, а затем еще раз сканирование scsi_host в конце. Я сделал еще немало в своих исследованиях.
Первая команда (scsi_host scan) указывает промежуточному уровню SCSI сканировать все шины на предмет новых / измененных устройств. Вторая команда пытается сбросить цель SCSI (дисковое устройство). Последние два работают с драйвером самого контроллера AHCI.
Я нашел эти предметы в основном путем детального изучения и смелых экспериментов.
Вы можете сопоставить узлы scsi_device с маркой и моделью устройства (используя grep для вывода имен файлов перед содержимым):
grep . /sys/class/scsi_device/*/device/model
Первой цифрой идентификатора устройства SCSI должен быть номер scsi_host. Затем вы можете сопоставить узлы scsi_host с узлами их устройств с помощью:
ls -l /sys/class/scsi_host
Я подозреваю, что у меня никогда не будет возможности уточнить детали, поэтому я хотел поделиться этой информацией в надежде сблизить других. Если я получу больше информации, я отредактирую этот ответ, чтобы отразить.
Надеюсь это поможет.
Только что взял новую систему с горячей заменой. У меня были диски в двух из трех слотов, но ни один из них не был обнаружен с помощью какой-либо техники, которую я смог найти. Решением стало следующее: введите настройки -> Дополнительно -> Конфигурация SATA -> SATA Enable = Enabled. Раньше это было Авто.