Proxmox — диски не визначаються: швидкий чекліст для HBA, BIOS і кабелів

Було корисно?

Немає нічого веселіше для вихідних, ніж завантажити вузол Proxmox і виявити, що ваші блискучі нові диски зникли ніби привид. Інсталятор нічого не показує. lsblk — пустеля. ZFS-пули зникають. Присягаєтеся, що диски були учора.

Це польовий чекліст для людей у виробництві: інженерів збереження даних, SRE та нещасливих on-call, які отримали у спадок «просте» розширення дискового простору. Ми швидко обшукаємо домен відмов: BIOS/UEFI, прошивка та режим HBA, PCIe, дивні речі з кабелями/бекплейнами/експандерами, драйвери Linux та підводні камені, які роблять диски «присутніми», але невидимими.

Швидкий план діагностики (робіть у цій послідовності)

0) Визначте, що означає «не визначається»

  • Не в BIOS/UEFI: апаратні проблеми, живлення, кабелі, бекплейн, перелічення HBA/PCIe.
  • У BIOS, але не в Linux: драйвер ядра/модуль, особливості IOMMU, зламана прошивка, помилки PCIe AER.
  • В Linux, але не в інтерфейсі Proxmox: неправильний екран, існуючі розділи, multipath маскування, ZFS тримає пристрої, права або це під /dev/disk/by-id, але не очевидно.

1) Почніть з істини ядра

Запустіть ці три команди і поки що не імпровізуйте:

  1. dmesg -T | tail -n 200 (шукайте PCIe, SAS, SATA, NVMe, скидання ланцюга)
  2. lsblk -e7 -o NAME,TYPE,SIZE,MODEL,SERIAL,TRAN,HCTL (дивіться, що створило ядро)
  3. lspci -nn | egrep -i 'sas|raid|sata|nvme|scsi' (підтвердіть наявність контролера)

Рішення: Якщо контролера немає у lspci, перестаньте звинувачувати Proxmox. Це BIOS/усадження в слоті/розподіл ліній PCIe або карта померла.

2) Якщо контролер є — перевірте драйвер і зв’язок

  • lspci -k -s <slot> → перевірте «Kernel driver in use».
  • journalctl -k -b | egrep -i 'mpt3sas|megaraid|ahci|nvme|reset|timeout|aer' → знайдіть курця-пристрій.

Рішення: Модуль не прив’язаний? Завантажте модуль або виправте прошивку/налаштування BIOS. Скидання лінку/таймаути? підозрюйте кабелі/бекплейн/експандер/живлення.

3) Проскануйте знову перед перезавантаженням

Перескануйте SCSI/NVMe. Якщо диски з’являються після рескану — ви щось дізналися: гарячий підключення, тренування лінку або таймінг завантаження.

4) Якщо диски є, але «відсутні» в UI Proxmox

Перейдіть у CLI і використовуйте стабільні ідентифікатори. UI не бреше; він просто не ваш командир інциденту.

Рішення: Якщо вони існують у /dev/disk/by-id, але не в пулі — це історія ZFS/імпорту/розбиття на розділи, а не виявлення.

Практична модель: де диски можуть зникати

Виявлення дисків — це ланцюг. Якщо порвете будь-яке ланка — ви будете дивитися на порожній список.

Рівень 1: живлення та фізичне підключення

Диск потребує живлення, правильного роз’єму і бекплейну, який не виконує «інтерпретативний танець». «Повертається в оберт» — не те саме, що «встановлено лінк даних». SAS особливо любить підживлювати диск, навіть коли лінк помер через погану лінію.

Рівень 2: інтерпозер/бекплейн/експандер

SAS-бекплейни можуть містити експандери, мультиплексори та «корисну» логіку. Одна маргінальна лінія може відключити диск або, ще гірше, змусити його флапати під навантаженням. SATA за SAS-експандером працює — поки не перестане, залежно від експандера, прошивки диска та кабелів.

Рівень 3: прошивка та режим HBA/контролера

HBA можуть працювати як справжні HBA (IT-режим) або притворятися RAID-контролерами (IR/RAID). Proxmox + ZFS хоче нудного passthrough. RAID-персональність може сховати диски за віртуальними томами, блокувати SMART і ускладнювати відновлення помилок.

Рівень 4: перелічення PCIe та бюджет ліній

Сам контролер — PCIe-пристрій. Якщо материнська плата його не перелічує, Linux теж не зможе. Налаштування bifurcation, дротовка слоту і спільне використання ліній з M.2/U.2 можуть тихо зробити слот «фізично x16», але електрично x4 — або x0, якщо розсердити богів ліній.

Рівень 5: драйвери ядра Linux + створення вузлів пристроїв

Навіть коли апарат в порядку, ядро може не прив’язати правильний драйвер або udev може не створити вузли так, як ви очікуєте. Multipath може навмисно приховувати окремі шляхи. Старий initramfs може пропустити модулі. Диски можуть існувати, але під іншими іменами.

Рівень 6: презентація збереження в Proxmox

Proxmox VE — це Debian під UI. Якщо Debian не бачить — Proxmox не побачить. Якщо Debian бачить, але UI не показує там, де ви дивитесь — це проблема робочого процесу, а не апаратури.

Парафраз ідеї від John Allspaw: надійність походить від вміння реагувати на відмову, а не від імітації її відсутності.

Жарт №1: «RAID-режим зробить ZFS щасливим» — як сказати «я поставив кермо на тостер; тепер це автомобіль».

Цікаві факти та історія, що справді допомагає в усуненні неполадок

  • SCSI-сканування старе… і все ще тут. Сучасні SAS і навіть деякі SATA-стеки й досі покладаються на SCSI host scans, тому рескани можуть «знайти» диски без перезавантаження.
  • LSI SAS HBA стали де-факто стандартом у домашніх лабораторіях і підприємствах. Лінія Broadcom/Avago/LSI важлива, бо іменування драйверів (mpt2sas/mpt3sas) і інструменти для прошивки йдуть з нею.
  • IT-режим став популярним, бо файлові системи стали розумнішими. ZFS та подібні системи хочуть прямого доступу до дисків. RAID-контролери були створені для епохи, коли контролер відповідав за цілісність.
  • SFF-8087 і SFF-8643 виглядають як «просто кабелі», але це сигнальні системи. Частково втиснутий mini-SAS може живити диски й усе ж мати проблеми з лініями даних. Це не магія; це диференціальні пари і допуски.
  • PCIe-слоти іноді брешуть маркетингу. «x16 слот» часто означає «x16 конектор». Електрично він може бути x8 або x4 залежно від CPU і маршрутизації плати.
  • UEFI змінив поведінку option ROM. Деякі карти зберігання залежать від option ROM для екрану переліку під час завантаження; налаштування UEFI можуть приховати ті екрани, не змінюючи того, що бачить Linux.
  • NVMe приніс свій власний шлях виявлення. NVMe-пристрої не є «SCSI-дисками» і не показуватимуться у інструментах SAS HBA; вони використовують підсистему NVMe і тренування PCIe лінку.
  • SMART-прохідність не гарантована. На RAID-контролерах SMART-дані можуть бути заблоковані або вимагати фірмових інструментів, що змінює спосіб перевірки «диск існує».

Практичні завдання (команди + сенс + рішення)

Це ті завдання, які я дійсно виконую, коли вузол каже «немає дисків». Кожне включає те, на що дивитися, і рішення, яке приймаєте.

Завдання 1: Підтвердіть, що контролер перелічено в PCIe

cr0x@server:~$ lspci -nn | egrep -i 'sas|raid|sata|scsi|nvme'
03:00.0 Serial Attached SCSI controller [0107]: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 [1000:0097] (rev 02)
01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller [144d:a808]

Що це означає: Материнська плата бачить HBA/NVMe контролер. Якщо цього немає, Linux ніколи не побачить диски за ним.

Рішення: Відсутній пристрій → пересадіть карту, змініть слот, перевірте налаштування PCIe в BIOS, відключіть конфліктні пристрої, перевірте живлення для riser-ів.

Завдання 2: Перевірте прив’язку драйвера в ядрі

cr0x@server:~$ lspci -k -s 03:00.0
03:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)
	Subsystem: Broadcom / LSI SAS9300-8i
	Kernel driver in use: mpt3sas
	Kernel modules: mpt3sas

Що це означає: Правильний драйвер приєднаний. Якщо «Kernel driver in use» порожнє — у вас проблема з драйвером/прошивкою/чорною списком.

Рішення: Драйвер не прив’язаний → перевірте modprobe, журнали ядра, Secure Boot, сумісність прошивки та чи ви використовуєте нестандартне ядро постачальника.

Завдання 3: Подивіться, які диски створило ядро (не довіряйте UI)

cr0x@server:~$ lsblk -e7 -o NAME,TYPE,SIZE,MODEL,SERIAL,TRAN,HCTL
NAME    TYPE  SIZE MODEL              SERIAL        TRAN HCTL
sda     disk  3.6T ST4000NM0035-1V4    ZC123ABC      sas  3:0:0:0
sdb     disk  3.6T ST4000NM0035-1V4    ZC123DEF      sas  3:0:1:0
nvme0n1 disk  1.8T Samsung SSD 990 PRO S6Z1NZ0R12345 nvme -

Що це означає: Якщо воно в lsblk, ядро його бачить. TRAN підкаже, чи це sas, sata, nvme.

Рішення: Якщо диски відсутні → спускайтесь вниз по стеку: dmesg, кабелі, експандер, живлення. Диски є, але Proxmox «відсутні» → ймовірно UI/робочий процес, multipath або імпорт ZFS.

Завдання 4: Перевірте журнали ядра на скидання/таймаути лінків

cr0x@server:~$ journalctl -k -b | egrep -i 'mpt3sas|megaraid|ahci|nvme|reset|timeout|aer|link down' | tail -n 60
Dec 26 10:12:01 server kernel: mpt3sas_cm0: log_info(0x31120101): originator(PL), code(0x12), sub_code(0x0101)
Dec 26 10:12:01 server kernel: sd 3:0:1:0: rejecting I/O to offline device
Dec 26 10:12:03 server kernel: pcieport 0000:00:1c.0: AER: Corrected error received: 0000:03:00.0
Dec 26 10:12:03 server kernel: nvme nvme0: I/O 42 QID 5 timeout, aborting

Що це означає: «offline device», «timeout», «link down», AER-спам = проблеми з цілісністю сигналу, живленням або несправним диском/контролером.

Рішення: Таймаути на кількох дисках → кабель/бекплейн/експандер/HBA. Таймаут на одному диску → цей диск або його слот.

Завдання 5: Перелічіть контролери збереження, які бачить ядро

cr0x@server:~$ lsscsi -H
[0]    ata_piix
[2]    mpt3sas
[3]    nvme

Що це означає: Підтверджує хост-адаптери. Якщо драйвер HBA завантажено, він з’являється як host.

Рішення: HBA відсутній тут, але є в lspci → драйвер не завантажився або не ініціалізувався.

Завдання 6: Перевірте SCSI-хости і перескануйте пристрої

cr0x@server:~$ ls -l /sys/class/scsi_host/
total 0
lrwxrwxrwx 1 root root 0 Dec 26 10:10 host0 -> ../../devices/pci0000:00/0000:00:17.0/ata1/host0/scsi_host/host0
lrwxrwxrwx 1 root root 0 Dec 26 10:10 host2 -> ../../devices/pci0000:00/0000:03:00.0/host2/scsi_host/host2
cr0x@server:~$ for h in /sys/class/scsi_host/host*/scan; do echo "- - -" > "$h"; done

Що це означає: Примусово сканує всі SCSI-хости. Якщо диски з’являться після цього — виявлення пов’язане з таймінгом/гарячим підключенням/поведінкою експандера.

Рішення: Якщо рескани послідовно «фіксують» проблему — перевірте налаштування BIOS для hotplug, розподіленого spin-up, прошивку експандера та прошивку HBA.

Завдання 7: Перевірте виявлення SATA/AHCI (вбудовані порти)

cr0x@server:~$ dmesg -T | egrep -i 'ahci|ata[0-9]|SATA link' | tail -n 40
[Thu Dec 26 10:10:12 2025] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 6 ports 6 Gbps 0x3f impl SATA mode
[Thu Dec 26 10:10:13 2025] ata1: SATA link down (SStatus 0 SControl 300)
[Thu Dec 26 10:10:13 2025] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)

Що це означає: «link down» на порту з диском означає проблеми з кабелем/портом, вимкнення в BIOS або живленням.

Рішення: Якщо порти по всій дошці «link down», перевірте режим SATA в BIOS (AHCI) і чи не вимикає плата SATA, коли заповнено M.2.

Завдання 8: Перелічіть NVMe-пристрої і стан контролера

cr0x@server:~$ nvme list
Node             SN               Model                          Namespace Usage                      Format           FW Rev
---------------- ---------------- -------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1      S6Z1NZ0R12345    Samsung SSD 990 PRO 2TB        1         1.80  TB / 2.00  TB        512   B +  0 B   5B2QJXD7

Що це означає: NVMe присутнє як окрема підсистема. Якщо nvme list порожній, але lspci показує контролер — можливо проблема з драйвером, PCIe ASPM або тренуванням лінку.

Рішення: Порожній список → перевірте journalctl -k на помилки NVMe, налаштування BIOS щодо швидкості PCIe Gen і bifurcation слотів (для мульти-NVMe адаптерів).

Завдання 9: Підтвердіть стабільні ідентифікатори дисків (що слід використовувати для ZFS)

cr0x@server:~$ ls -l /dev/disk/by-id/ | egrep -i 'wwn|nvme|scsi' | head
lrwxrwxrwx 1 root root  9 Dec 26 10:15 nvme-Samsung_SSD_990_PRO_2TB_S6Z1NZ0R12345 -> ../../nvme0n1
lrwxrwxrwx 1 root root  9 Dec 26 10:15 scsi-35000c500a1b2c3d4 -> ../../sda
lrwxrwxrwx 1 root root  9 Dec 26 10:15 scsi-35000c500a1b2c3e5 -> ../../sdb
lrwxrwxrwx 1 root root  9 Dec 26 10:15 wwn-0x5000c500a1b2c3d4 -> ../../sda

Що це означає: Ці ID переживуть перезавантаження та перейменування пристроїв (sda стає sdb після змін апаратури).

Рішення: Якщо ваші скрипти пулу/імпорту використовують /dev/sdX, припиніть. Перейдіть на by-id/by-wwn перед наступним вікном обслуговування, щоб вас не з’їли проблеми зі зміною імен.

Завдання 10: Перевірте видимість SMART (каже, чи ви справді бачите диск)

cr0x@server:~$ smartctl -a /dev/sda | head -n 20
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.8.12-4-pve] (local build)
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Exos 7E8
Device Model:     ST4000NM0035-1V4
Serial Number:    ZC123ABC
LU WWN Device Id: 5 000c50 0a1b2c3d4
Firmware Version: SN03
User Capacity:    4,000,787,030,016 bytes [4.00 TB]

Що це означає: Якщо SMART працює — ймовірно ви маєте справжній passthrough. Якщо SMART не працює за RAID-контролером — можливо потрібні інші типи пристроїв або фірмові утиліти.

Рішення: SMART заблоковано + ви хочете ZFS → перевірте HBA IT-режим або справжній HBA, а не RAID-персональність.

Завдання 11: Визначте, чи multipath ховає ваші диски

cr0x@server:~$ multipath -ll
mpatha (3600508b400105e210000900000490000) dm-0 IBM,2810XIV
size=1.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 3:0:0:0 sda 8:0  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 4:0:0:0 sdb 8:16 active ready running

Що це означає: Multipath може представляти диски як /dev/dm-*, а сирі /dev/sdX — лише шляхи.

Рішення: Якщо це локальні диски — multipath це неправильна конфігурація. Вимкніть його або занесіть у чорний список локальні HBA, інакше Proxmox/ZFS можуть бачити «дивні» пристрої.

Завдання 12: Визначте, чи ви на RAID-контролері з віртуальними дисками

cr0x@server:~$ lspci -nn | egrep -i 'megaraid|raid'
04:00.0 RAID bus controller [0104]: Broadcom / LSI MegaRAID SAS-3 3108 [1000:005d] (rev 02)
cr0x@server:~$ lsblk -o NAME,TYPE,SIZE,MODEL
NAME  TYPE  SIZE MODEL
sda   disk  7.3T LSI MR9361-8i

Що це означає: Якщо модель схожа на контролер і ви бачите лише один «диск», перед вами віртуальний диск, а не фізичні диски.

Рішення: Для ZFS: або переключіться на HBA / прошийте контролер в IT-режим, або прийміть, що ZFS не зможе коректно керувати окремими фізичними дисками.

Завдання 13: Перевірте, чи BIOS не вимкнув слот або не перемапив лінії

cr0x@server:~$ dmidecode -t baseboard | egrep -i 'Manufacturer|Product|Version'
Manufacturer: Supermicro
Product Name: X11SPH-NCTF
Version: 1.02
cr0x@server:~$ lspci -vv -s 03:00.0 | egrep -i 'LnkCap|LnkSta'
LnkCap: Port #0, Speed 8GT/s, Width x8
LnkSta: Speed 2.5GT/s (downgraded), Width x8

Що це означає: Лінк знижено до 2.5GT/s — це ознака проблем з цілісністю сигналу, помилкового покоління слоту або поганого riser/кабелю.

Рішення: Зниження лінків з помилками → спробуйте примусово Gen3/Gen4 в BIOS, змініть слот, замініть riser, перевірте посадку.

Завдання 14: Proxmox-специфічно: підтвердіть ядро та модулі

cr0x@server:~$ uname -r
6.8.12-4-pve
cr0x@server:~$ modinfo mpt3sas | egrep -i 'filename|version|firmware'
filename:       /lib/modules/6.8.12-4-pve/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
version:        44.100.00.00
firmware:       mpt3sas_fw.bin

Що це означає: Підтверджує, що ви використовуєте ядро Proxmox і модуль існує. Невідповідність між ядром/initramfs може вдарити після оновлень.

Рішення: Якщо модуль відсутній або ядро неправильне — виправте пакети і згенеруйте initramfs перед тим, як ганятися за апаратними примарами.

HBA, BIOS/UEFI та PCIe: звичне місце пригод

Режим HBA: IT проти IR/RAID (і чому Proxmox це важливо)

Якщо ви використовуєте ZFS (а багато Proxmox-майданчиків саме так), ви хочете, щоб HBA презентував кожний фізичний диск безпосередньо в Linux. Це IT-режим у термінах LSI/Broadcom. RAID-режим (IR) — інша філософія: контролер абстрагує диски у логічні томи. Ця абстракція ламає кілька речей, на які ви покладаєтесь у сучасних операціях:

  • Точні SMART/стан для кожного диска (часто блокуються або дивні).
  • Передбачувані ідентифікатори дисків (WWN можуть бути приховані або замінені).
  • Чітке відображення помилок (таймаути можуть стати «контролер каже ні»).
  • Здатність ZFS керувати надлишковістю і self-heal при повній видимості.

Також: RAID-контролери зазвичай мають write cache, BBU і політики, які корисні — доки не стануть шкідливими. ZFS вже реалізує свою історію консистентності. Вам не потрібно двох капітанів на одному кораблі — буде морська хвороба.

Налаштування UEFI, що приховано впливають на виявлення

BIOS/UEFI може приховати або пошкодити ваші диски без гучних повідомлень про помилки. Найпоширеніші налаштування для аудиту, коли диски зникають:

  • Режим SATA: AHCI проти RAID. На серверах RAID-режим може маршрутизувати порти через шар типу Intel RST, який Linux може не обробляти як ви очікуєте.
  • Налаштування PCIe слота: примусова швидкість Gen проти Auto; bifurcation x16 → x4x4x4x4 для мульти-NVMe адаптерів.
  • Політика option ROM: UEFI-only проти Legacy. Це головним чином впливає на видимість під час завантаження і екрани управління, але помилкові налаштування можуть приховати те, що ви чекаєте побачити до завантаження.
  • IOMMU/VT-d/AMD-Vi: Зазвичай не ламають виявлення дисків, але можуть змінити поведінку пристроїв при passthrough.
  • Вимкнення вбудованого збереження: Деякі плати вимикають SATA-порти при заповненні M.2 слотів або діляться лініями з PCIe слотами.

Спільне використання ліній PCIe: сучасне «чому мій слот перестав працювати?»

Материнські плати — це регулювальники трафіку. Вставте NVMe у один M.2 слот, і ваш HBA може впасти з x8 до x4, або сусідній слот може вимкнутися. Це не «поганий дизайн». Це економіка і фізика: у CPU обмежена кількість ліній, і виробники плат мультиплексують їх так, що треба читати дрібним шрифтом.

Якщо ви бачите контролер присутнім, але нестабільним (AER помилки, link down/up), питання ліній або цілісності сигналу дуже актуальне. Riser-и особливо люблять бути «майже робочими».

Жарт №2: PCIe riser, який «працює, якщо не чіпати шасі» — це не компонент, а спосіб життя.

Кабелі, бекплейни, експандери та «все посаджено» брехні

Конектори Mini-SAS: чому часткові відмови — часті

SAS-кабелі несуть кілька ліній. Один SFF-8643 може нести чотири SAS-лінії; бекплейн може відображати лінії на окремі відсіки. Якщо одна лінія зламана, ви не завжди втрачаєте всі диски. Ви втрачаєте «деякі відсіки», часто в шаблоні, що виглядає як програмна проблема.

Практичне правило: якщо диски відсутні за повторюваним шаблоном (наприклад, відсіки 1–4 працюють, 5–8 мертві) — підозрюйте конкретний mini-SAS кабель або порт. Не витрачайте годину в udev на проблему, що живе в міді.

Бекплейни з експандерами: добре, коли працюють

Експандери дозволяють підключати багато дисків до меншої кількості портів HBA. Вони також додають шар, який може мати баги прошивки, проблеми переговору та чутливість до SATA-дисків позаду SAS-експандера. Симптоми включають:

  • Диски з’являються після завантаження, але зникають під навантаженням.
  • Переривчасті повідомлення «device offlined».
  • Тільки деякі моделі дисків поводяться некоректно.

Коли таке стається, ви не «налаштовуєте Linux». Ви перевіряєте прошивку експандера, міняєте кабелі, ізолюєте підключення, підключаючи менше відсіків, і тестуєте на відомій хорошій моделі диска.

Живлення та запуск у оберт

Особливо в щільних шасі, живлення може бути тихим вбивцею. Диски можуть стартувати, але «просідати» під час тренування лінку або коли кілька дисків запускаються одночасно. Деякі HBA і бекплейни підтримують staggered spin-up. Деякі ні. Деякі підтримують і приходять неправильно налаштованими.

Ознака — кілька дисків падають одночасно під час завантаження або під час scrub, а потім з’являються пізніше. Це не «річ Proxmox». Це живлення або сигнал.

Прості фізичні перевірки, що перемагають кмітливість

  • Пересадіть обидва кінці mini-SAS кабелів. Не «натискайте ніжно». Від’єднайте, огляньте, підключіть щільно.
  • Поміняйте кабелі між відомо справними і підозрілими портами, щоб побачити, чи проблема слідує за кабелем.
  • Перемістіть диск в інший відсік. Якщо диск працює в іншому місці — відсік/бекплейн/лінія підозріла.
  • Якщо можливо, тимчасово підключіть один диск безпосередньо до порту HBA (обійдіть експандер/бекплейн), щоб ізолювати рівні.

Рівень Linux/Proxmox: драйвери, udev, multipath і вузли пристроїв

Наявність драйвера — це не здоров’я драйвера

Побачити mpt3sas завантаженим — не означає, що контролер ініціалізувався коректно. Несумісність прошивки може давати часткову функціональність: контролер перелічується, але цілі не не відображаються; або цілі є, але постійно помиляються.

Журнали ядра важливіші за списки модулів. Якщо ви бачите повторні скидання, «firmware fault» або застряглі черги — ставтеся до цього як до реального інциденту: зберіть логи, стабілізуйте апарат і розгляньте оновлення прошивки.

Multipath: корисно до певного моменту

Multipath призначений для SAN і двошляхового збереження. На вузлі Proxmox з локальними SAS-дисками зазвичай він випадковий і шкідливий. Він може маскувати очікувані пристрої або створювати device-mapper вузли, які Proxmox/ZFS використовуватимуть непослідовно, якщо ви не налаштовані свідомо.

Якщо ви явно не використовуєте multipath для шаред збереження — зазвичай краще вимкнути його або налаштувати, щоб ігнорувати локальні диски.

Іменування пристроїв: /dev/sdX — пастка

Linux призначає /dev/sdX імена в порядку виявлення. Додайте контролер, переставте кабелі або змініть налаштування BIOS — порядок зміниться. Так можна імпортувати неправильні диски, стерти не той пристрій або побудувати пул на невірних членах.

Використовуйте /dev/disk/by-id або WWN. Зробіть це політикою. Ваш майбутній себе тихо подякує.

Коли Proxmox «не показує диски», але Linux показує

Поширені реалії:

  • Диски мають старі розділи і UI Proxmox фільтрує те, що вважає «доступним».
  • ZFS вже використовує диски (вони належать імпортованому пулу або застарілому пулу). ZFS не ділиться ввічливо.
  • Ви дивитесь не в той вигляд: диски вузла проти визначень сховища проти вигляду datacenter.
  • Multipath або device-mapper представляє інші імена, ніж ви очікуєте.

Кут ZFS: чому «RAID-режим» вам не друг

Proxmox постачається з пріоритетною підтримкою ZFS. ZFS передбачає, що воно відповідає за надлишковість, контрольні суми та лікування. Апаратний RAID припускає, що воно відповідає за надлишковість і відновлення помилок. Коли ви укладаєте їх разом, отримуєте систему, де кожен шар приймає рішення без повної інформації.

Що «працює», але все ще неправильно

  • Створення одного великого RAID0/RAID10 тому і розміщення ZFS зверху: ZFS втрачає видимість по дисках і не може ізолювати несправні члени.
  • Використання кешування контролера з ZFS sync-записами: ви можете випадково обдурити ZFS щодо надійності, якщо політика кеша небезпечна.
  • Припущення, що контролер чесно показуватиме помилки дисків: він може ремапити, ретраїти або маскувати, поки не зможе.

Що варто робити натомість

  • Використовуйте HBA (або прошийте контролер в IT-режим) і презентуйте сирі диски ZFS.
  • Використовуйте стабільні ID при створенні пулів.
  • Віддавайте перевагу нудним, перевіреним комбінаціям прошивок. Cutting-edge добре для лабораторій, але не для квору кластера.

Поширені помилки: симптом → корінь проблеми → виправлення

1) Симптом: HBA немає в lspci

Корінь: Карта не посаджена, слот мертвий, спільне використання ліній відключило слот, riser зламався або BIOS вимкнув слот.

Виправлення: Пересадіть, спробуйте інший слот, зніміть riser, перевірте «PCIe slot enable» у BIOS, перевірте спільне використання ліній з M.2/U.2, оновіть BIOS, якщо він дуже старий.

2) Симптом: HBA в lspci, але немає дисків в lsblk

Корінь: Драйвер не прив’язаний, несумісність прошивки, HBA в режимі, що вимагає вендорного стека, або зламаний кабель/бекплейн, що перешкоджає виявленню цілей.

Виправлення: Перевірте lspci -k, journalctl -k, перескануйте SCSI-хости, поміняйте кабелі, перевірте прошивку HBA і режим (IT для ZFS).

3) Симптом: Деякі відсіки відсутні в шаблоні

Корінь: Одна SAS-лінія/кабель/порт мертві; відображення бекплейну збігається з відсутнім набором.

Виправлення: Поміняйте mini-SAS кабель; підключіть до іншого порту HBA; пересадіть конектор; перевірте зігнуті контакти/пошкодження.

4) Симптом: Диски з’являються після рескану, але зникають після перезавантаження

Корінь: Таймінг hotplug, дивні поведінки експандера, неправильний staggered spin-up, маргінальне живлення при завантаженні.

Виправлення: Оновіть прошивку HBA/бекплейна/експандера, увімкніть staggered spin-up якщо підтримується, перевірте PSU і розподіл живлення, проаналізуйте журнали завантаження на предмет скидань.

5) Симптом: NVMe не визначається, але працює в іншій машині

Корінь: Слот вимкнуто через налаштування bifurcation, PCIe Gen виставлений занадто високий/низький, спільне використання ліній з SATA або адаптер потребує bifurcation.

Виправлення: Встановіть правильну bifurcation, поставте швидкість PCIe в Auto/Gen3/Gen4 відповідно, перемістіть у слот, підключений до CPU, оновіть BIOS.

6) Симптом: GUI Proxmox не показує диски, але lsblk показує

Корінь: Існуючі розділи/LVM-метадані, ZFS вже тримає їх, multipath представлення або ви дивитесь у неправильному місці UI.

Виправлення: Використайте CLI, щоб підтвердити by-id, перевірте zpool status/zpool import, multipath -ll, стирайте сигнатури лише коли впевнені.

7) Симптом: SMART видає «cannot open device» за контролером

Корінь: RAID-контролер абстрагує; passthrough SMART вимагає спеціального типу пристрою або не підтримується.

Виправлення: Використовуйте HBA/IT-режим для ZFS; інакше використовуйте вендорні інструменти і прийміть обмеження.

8) Симптом: Диски флапають під навантаженням, ZFS бачить помилки контрольних сум

Корінь: Кабель/бекплейн/експандер — цілісність сигналу або недостатнє живлення; інколи один диск «отруює» шину.

Виправлення: Спершу замініть кабелі, ізолюйте шляхом видалення дисків, перевірте dmesg на скидання, перевірте PSU і стан бекплейна.

Чеклісти / покроковий план

Чекліст A: «Інсталятор не бачить жодних дисків»

  1. Зайдіть у BIOS/UEFI і підтвердіть, що контролер увімкнений і видимий.
  2. Підтвердіть, що режим SATA — AHCI (хіба ви явно не потребуєте RAID для завантажувального тому).
  3. Для HBA: перевірте, що він у IT-режимі або це справжній HBA (не MegaRAID віртуальні томи), якщо хочете ZFS.
  4. Перемістіть HBA в інший PCIe слот (віддавайте перевагу слотам, приєднаним до CPU).
  5. Завантажте rescue-середовище і запустіть lspci і dmesg. Якщо там його немає — це апаратна проблема.
  6. Поміняйте mini-SAS кабелі і пересадіть роз’єми на обох кінцях.
  7. Якщо використовуєте бекплейн з експандером: спробуйте direct-attach з одним диском.

Чекліст B: «Деякі диски відсутні за HBA»

  1. Запустіть lsblk і визначте, які відсіки відсутні; шукайте шаблони.
  2. Перевірте журнали на скидання лінків і offline-пристрої.
  3. Перескануйте SCSI-хости; подивіться, чи з’являться відсутні диски.
  4. Поміняйте кабель, що подає підозрілий набір відсіків.
  5. Підключіть кабель до іншого порту HBA; перевірте, чи набір перемістився.
  6. Перемістіть один відсутній диск у відомо робочий відсік; якщо він з’являється — відсік/лінія погана.
  7. Оновіть прошивку HBA, якщо у вас відома проблемна версія.

Чекліст C: «Диски виявлені в Linux, але непридатні в Proxmox»

  1. Підтвердіть стабільні ID у /dev/disk/by-id.
  2. Перевірте, чи ZFS бачить пул, який можна імпортувати: zpool import.
  3. Перевірте наявність сигнатур: wipefs -n /dev/sdX (параметр -n — безпечний; залишайте його).
  4. Перевірте multipath: multipath -ll.
  5. Визначте свій намір: імпорт існуючих даних чи стирання і переназначення.
  6. Якщо стираєте — робіть це свідомо і документуйте, які WWN ви стерли.

Чекліст D: «NVMe не відображається»

  1. Підтвердіть контролер в lspci.
  2. Перевірте nvme list і журнали ядра на таймаути.
  3. Перегляньте статус PCIe лінку (LnkSta) на предмет зниження швидкості.
  4. Встановіть правильну bifurcation для мульти-NVMe адаптерів.
  5. Перемістіть NVMe в інший слот і перевірте знову.

Три корпоративні міні-історії з полігонів

Міні-історія 1: Інцидент від неправильної припущення

Команда розгортала новий кластер Proxmox для внутрішнього CI. План збереження був «просто»: вісім SAS-дисків на вузол, дзеркала ZFS, готово. Закупівля привезла сервери з «SAS RAID контролером» замість замовленого HBA. Ніхто не панікував, бо в назві контролера теж було «SAS», а BIOS показував величезний логічний диск.

Вони встановили Proxmox на той логічний том і побудували ZFS-пули поверх того, що видавав контролер. Це працювало кілька тижнів — і так народжується погане припущення, що стає «архітектурним рішенням». Потім один диск почав виходити з ладу. Контролер ремапив і ретраїв так, що ZFS цього не бачив, і вузол почав зависати під час scrub-ів. Журнали були повні таймаутів, але нічого чітко не відповідало фізичному відсіку.

Під час вікна обслуговування хтось витягнув «зламаний» диск за даними контролерного UI. Не той. Контролер змінив внутрішню нумерацію після ремапу, а таблиця відповідностей застаріла. Тепер логічний том деградував і ZFS розлютився, і кластер втратив частину ємності в пікове навантаження.

Виправлення було негарним: заміна RAID-контролера на справжній HBA, перебудова вузла та впровадження політики: ZFS отримує сирі диски, ідентифіковані WWN, а відповідність відсіків перевіряється по LED та серійним номерам перед фізичним втручанням. Припущення «SAS = HBA» було коренем, і воно коштувало їм вихідних.

Міні-історія 2: Оптимізація, що відбилася боком

Інша команда мала проблеми з продуктивністю під час resilver-ів ZFS. Хтось запропонував «оптимізувати кабелювання», використавши один експандерний бекплейн, щоб зменшити кількість портів HBA і зберегти порядок. Менше кабелів, менше точок відмов — правда?

Насправді експандер додав тонку поведінку: під час інтенсивного I/O кілька SATA SSD (використовувалися як спеціальні vdev) періодично відвалювалися на кілька секунд, потім поверталися. HBA і ядро логували скидання лінків, і ZFS позначав пристрої як faulted або degraded в залежності від таймінгу. Симптом виглядав як «ZFS нестабільний», бо падіння були транзієнтними.

Команда намагалася налаштувати таймаути і глибину черги, бо інженери люблять ручки, а експандер виглядав «enterprise». Тюнінг зменшив явні помилки, але не вирішив корінну проблему. Під реальним інцидентом — перезавантаження вузла плюс відновлення VM — пристрої знову флапали й пул відмовився імпортуватися без ручного втручання.

Вони відкочували «оптимізацію». Пряме підключення SSD, експандер залишили для масивних HDD, де затримка менш критична, і стандартизували моделі дисків за експандером. Продуктивність і сон покращилися. Іноді менше кабелів — це просто менше підказок, коли щось ламається.

Міні-історія 3: Нудна, але правильна практика, що врятувала день

Одна команда мала звичку, що виглядала педантично: кожний диск реєстрували за WWN і місцем у відсіку під час інсталяції. Вели просту таблицю: серійник шасі, номер відсіку, серійник диска, WWN і планований член vdev ZFS. Кабелі маркували по портах HBA і роз’ємах бекплейна. Ніхто цього не любив, але це була політика.

Через рік вузол почав повідомляти періодичні помилки контрольних сум під час scrub-ів. Журнали вказували на хиткий лінк, а не на несправний диск, але топологія пулу включала 12 дисків і експандер. В старому світі це перетворилося б у «витягайте диски, поки помилки не зникнуть». Так створюють нові інциденти.

Натомість вони зіставили вражений WWN з відсіком. Помилки були завжди на дисках у відсіках 9–12. Це співпало з одним mini-SAS кабелем, що живив ту частину бекплейна. Вони поміняли кабель під коротке вікно обслуговування, прогнали scrub і помилки зникли.

Без драм. Без здогадок. Нудна практика інвентаризації перетворила потенційно складний інцидент у 20-хвилинний ремонт з ясною причиною. Надійність часто — це просто облік з переконаністю.

FAQ

1) Інсталятор Proxmox не показує диски. Це завжди проблема драйвера HBA?

Ні. Якщо lspci не показує контролер — це BIOS/PCIe/апарат. Якщо контролер показано, але немає дисків — можлива проблема з драйвером/прошивкою/кабелями.

2) Я бачу диски в BIOS, але не в Linux. Як це можливо?

BIOS може показувати RAID-логічні томи або підсумок контролера, не відкриваючи цілі для Linux. Або Linux не має потрібного модуля, або контролер не ініціалізується під час завантаження (перевірте journalctl -k).

3) Чи потрібен мені IT-режим для Proxmox?

Якщо ви використовуєте ZFS і хочете адекватні операції — так. Якщо наполягаєте на апаратному RAID, можете його використовувати, але це інша модель операцій з іншим набором інструментів.

4) Чому диски показуються як /dev/dm-0 замість /dev/sda?

Зазвичай це multipath або device-mapper стек (LVM, dm-crypt). Для локальних дисків, які не призначені для multipath, виправте конфігурацію multipath або вимкніть його.

5) Мої диски з’являються, але GUI Proxmox не показує їх як доступні. Це означає, що вони зламані?

Часто вони мають існуючі сигнатури (старі ZFS/LVM/RAID метадані) або вже є частиною імпортованого пулу. Перевірте lsblk, wipefs -n та zpool import перед будь-якими руйнівними діями.

6) Чи може поганий SAS-кабель дійсно спричинити зникнення лише одного диска?

Так. Mini-SAS несе кілька ліній; залежно від відображення бекплейна, проблема з лінією може ізолювати один відсік або підмножину. Шаблони допомагають.

7) NVMe не визначається: яка найпоширеніша помилка в BIOS?

Неправильні налаштування bifurcation при використанні мульти-NVMe адаптерів або спільне використання ліній, що вимикає слот, коли заповнений інший M.2/U.2.

8) Чи слід примусово встановлювати швидкість PCIe Gen, щоб виправити проблеми лінку?

Іноді примусовий нижчий Gen стабілізує ненадійні лінки (корисно для діагностики), але справжнє виправлення зазвичай — це посадка, riser, кабелі або вибір слота на платі.

9) Як вирішити, що замінити: диск чи кабель/бекплейн?

Якщо кілька дисків показують помилки на одному HBA-порту/сегменті бекплейна — підозрюйте кабель/бекплейн. Якщо один диск «пливе» за диском по відсіках — це диск.

10) Чи безпечно перескановувати SCSI-хости на продуктивному вузлі?

Загалом так, але робіть це з урахуванням контексту. Рескан може спричинити події виявлення пристроїв і шум у логах. Уникайте під час чутливих операцій зі збереженням, якщо ви вже в деградації.

Висновок: практичні наступні кроки

Якщо Proxmox не бачить дисків — перестаньте гадати і проходьте ланцюг: перелічення PCIe → прив’язка драйвера → стабільність лінку → виявлення цілей → стабільні ID → споживання Proxmox/ZFS. Найшвидші перемоги зазвичай фізичні: посадка, розподіл ліній і кабелі. Найдорожчі відмови походять від неправильного режиму контролера і халатного іменування пристроїв.

  1. Запустіть швидкий план діагностики і класифікуйте домен відмов за 10 хвилин.
  2. Зберіть докази: lspci -k, lsblk та журнали ядра навколо часу виявлення.
  3. Уніфікуйте: HBA/IT-режим для ZFS, іменування by-id та карта відсіку→WWN.
  4. Виправляйте корінь, а не симптом: замініть підозрілі кабелі/riser-и, виправте bifurcation у BIOS, оновлюйте прошивку обдумано.
  5. Після відновлення виконайте один scrub/resilver і перегляньте журнали. Якщо ви не перевірили — ви не виправили, ви просто перестали бачити проблему.
← Попередня
MySQL чи PostgreSQL на VPS з 4 ГБ ОЗП: що налаштувати насамперед для вебсайтів
Наступна →
Як ШІ перепише графічний конвеєр: кадр, що наполовину згенерований

Залишити коментар