Рейтинг:0

Что может помешать горячей замене жесткого диска в linux ahci?

флаг pk

Я рву на себе волосы по этому вопросу.

Я хотел добавить отсек для горячей замены на свой домашний сервер, чтобы легко добавлять и удалять жесткие диски, например, для простой ротации резервных копий за пределами площадки. Рассматриваемая материнская плата представляет собой материнскую плату Asrock J4105-ITX с четырьмя собственными портами SATA, которые разделены между ASM1062 и контроллером SATA процессора Intel. Оба работают нормально и используют ахси модуль ядра. В биосе есть опция горячей замены, но она не работает.

Если диск отключен (либо через эхо 1 > /sys/block/sdX/device/удалить или грубым извлечением диска), после повторного подключения новое устройство не будет распознано. Пробовал принудительно пересканировать(эхо "- - -" > /sys/class/scsi_host/host<n>/scan) но безрезультатно, порт SATA уже практически не работает до следующей перезагрузки. Я также безуспешно пробовал еще несколько экстремальных команд:

эхо 1 > /sys/класс/scsi_device/2:0:0:0/устройство/сброс
эхо 1 > /sys/devices/pci0000:00/0000:00:1f.2/повторное сканирование
эхо 1 > /sys/devices/pci0000:00/0000:00:1f.2/сброс

(взято из Как заставить Linux распознавать новый диск SATA /dev/sda, который я заменил без перезагрузки?)

«Хорошо, возможно, чипсет не поддерживает горячую замену или BIOS неисправен». Поэтому я заказал два контроллера PCIe SATA (один использует ASM1064, другой использует Marvell 88SE9215). Оба имеют одинаковую проблему, хотя другие покупатели утверждают, что горячая замена работает для них, поэтому я предполагаю, что проблема либо связана с программным обеспечением (моя установка? Я использую ОС Arch, которая постоянно обновляется).

Некоторая, надеюсь, полезная информация:

$ uname -a
Имя сервера Linux 5.14.14-arch1-1 #1 SMP PREEMPT Среда, 20 октября 2021 г., 21:35:18 +0000 x86_64 GNU/Linux

$ dmesg | grep ахси
[0.447450] ahci 0000:00:12.0: версия 3.0
[0.447842] ahci 0000:00:12.0: флаг SSS установлен, сканирование параллельной шины отключено
[ 0.457970] ahci 0000:00:12.0: AHCI 0001.0301 32 слота 2 порта 6 Гбит/с 0x3 импл режим SATA
[0.457981] ahci 0000:00:12.0: flags: 64bit ncq sntf stag pm clo only pmp pio slum part sxs deso sadm sds apst 
[0.458750] scsi host0: ahci
[0.459204] scsi host1: ahci
[ 0.469788] ahci 0000:01:00.0: AHCI 0001.0000 32 слота 4 порта 6 Гбит/с 0xf режим SATA
[0.469801] ahci 0000:01:00.0: flags: 64bit ncq sntf led only pmp fbs pio slum part sxs 
[0.470767] scsi host2: ahci
[0.471203] scsi host3: ahci
[0.471562] scsi host4: ahci
[0.471904] scsi host5: ahci
[0.472341] ahci 0000:04:00.0: установлен флаг SSS, сканирование параллельной шины отключено
[ 0.472376] ahci 0000:04:00.0: AHCI 0001.0200 32 слота 2 порта 6 Гбит/с 0x3 импл режим SATA
[0.472382] ahci 0000:04:00.0: flags: 64bit ncq sntf stag led clo pmp pio slum part ccc 
[0.472803] scsi host6: ahci
[0.473011] scsi host7: ahci

$ lspci-v
[...]
01:00.0 Контроллер SATA: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с (версия 11) (программа-если 01 [AHCI 1.0])
    Подсистема: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с
    Флаги: bus master, fast devsel, latency 0, IRQ 127
    Порты ввода/вывода на e050 [размер=8]
    Порты ввода/вывода на e040 [размер=4]
    Порты ввода/вывода на e030 [размер=8]
    Порты ввода/вывода на e020 [размер=4]
    Порты ввода-вывода на e000 [размер = 32]
    Память на уровне a1340000 (32-разрядная, без предварительной выборки) [размер = 2 КБ]
    Расширение ПЗУ на a1300000 [отключено] [размер = 256K]
    Возможности: [40] Управление питанием версии 3
    Возможности: [50] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Возможности: [70] Express Legacy Endpoint, MSI 00
    Возможности: [e0] SATA HBA v0.0
    Возможности: [100] Расширенные отчеты об ошибках
    Используемый драйвер ядра: ahci
[...]
Рейтинг:0
флаг pk

Наконец-то я нашел причину: мой powertop-тюнинг был слишком агрессивным!

Поскольку этот сервер работает круглосуточно и без выходных, а электричество здесь довольно дорогое, я добавил сервис systemd для автоматической настройки всех параметров powertop:

$ кошка /etc/systemd/system/powertop.service
[Ед. изм]
Description=Настройки Powertop

[Оказание услуг]
Тип = ваншот
RemainAfterExit=да
ExecStart=/usr/bin/powertop --auto-tune

[Установить]
WantedBy=многопользовательская.цель

Это то же самое, что открыть powertop tui и установить для всех параметров значение «Хорошо». Решающий бит - четыре строки о Runtime PM для порта ATAX:

   Хорошее время выполнения PM для порта ata3 устройства PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с
   Bad Runtime PM для порта ata4 устройства PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с
   Хорошее время выполнения PM для порта ata5 устройства PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с
>> Good Runtime PM для порта ata6 устройства PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-портовый контроллер SATA 6 Гбит/с
   Хорошее время работы PM для PCI-устройства Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1, 4-портовый контроллер SATA 6 Гбит/с

Они выполняют echo 'auto' > '/sys/bus/pci/devices/0000:01:00.0/ata4/power/control'; что, по-видимому, приводит к тому, что карта SATA никогда не распознает новые устройства на порту!

Только после установки мощность/управление к на (вариант «Плохо» согласно powertop) будет ли карта находить новые устройства после выполнения эхо 0 0 0 | sudo tee /sys/class/scsi_host/host*/scan

Единственное, чего мне не хватает, так это автоматического повторного сканирования, так как мой настольный ПК будет автоматически находить новые устройства без необходимости записи в hostX/сканировать, но я могу жить с этим на данный момент. Это был очень разочаровывающий опыт, поэтому я надеюсь, что это может помочь кому-то, столкнувшемуся с той же проблемой.

Ответить или комментировать

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