Files
obsidian-vault/family/how-to/truenas-sata-ports-and-zfs-pools.md
T

148 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TrueNAS — SATA порты и пулы
> Обновлено: 2026-08-17
## ✅ РЕШЕНО: HGST 12TB завёлся — проблема была в 3.3V PWDIS, НЕ в карте
**2026-08-17.** HGST **линуется и полностью работает** теперь. Ключевое изменение — **отключена/обезврежена 3.3V линия (PWDIS-контакт №3 на SATA-разъёме питания)**. Диск:
- определяется как `/dev/sde`, `HGST HUH721212ALE600`, серийник `8CKD08RE`, **10.9T**, секторов `23437770752` (штатная ёмкость 12TB по SFF-8447)
- **подключён на карте ASMedia (ata7 = 0000:02:00.0, host7)** — той самой, где раньше НЕ линковался!
- **разметка сохранена без переразметки**: `sde1`=200M, `sde2`=10.9TB (та GPT, что была и через USB)
**Вывод:** причина молчания была **100% в 3.3V Power Disable (PWDIS)** — enterprise-диск с поддержкой PWDIS не раскручивается, когда обычный БП подаёт 3.3V на пин №3 SATA-питания. Снятие 3.3V-контакта устранило проблему. **Карта ASM1166 и порт материнки при этом работали и раньше.** Переразметка для решения НЕ требуется.
## Материнская плата
**ASUS P8H77-V LE**, чипсет Intel H77.
6 SATA портов на Intel контроллере (порт от ASMedia отсутствует).
### Распределение портов (актуально на конец 2026-08-17, после финального перетыкания)
| Порт (ata) | Тип | Скорость | Цвет | Диск | by-id |
|------------|-----|----------|------|------|-------|
| ata1 (SATA6G_1) | SATA 3 | 6 Gb/s | серый | **sda** — WD 2TB (WD20EFAX) | WD-WXH2A31D5HDJ |
| ata2 (SATA6G_2) | SATA 3 | 6 Gb/s | серый | **sdb** — WD 4TB (WD40EZAZ) | WD-WX22D51JJFZ7 |
| ata3 (SATA3G_1) | SATA 2 | 3 Gb/s | синий | **sdc** — ⭐ **IronWolf 12TB (ST12000NT001)** | WV700FQ5 |
| ata4 (SATA3G_2) | SATA 2 | 3 Gb/s | синий | **sdd** — Kingston 120GB SSD (boot) | 50026B77844E881C |
| ata5 (SATA3G_3) | SATA 2 | 3 Gb/s | синий | *(свободен/не иден-тиф.)* | — |
| ata6 (SATA3G_4) | SATA 2 | 3 Gb/s | синий | **sde** — Seagate 4TB (ST4000DM004) | WFN66CM2 |
| *(карта ASM1166)* | — | — | — | **НЕ В СЛОТЕ** (вытащена) | — |
**⚠️ Фактическое положение на конец сессии (2026-08-17):**
- **Карта ASMedia ASM1166 вытащена** — `lspci` показывает только Intel H77 (`00:1f.2`) и не относящийся к делу PCIe-to-PCI bridge ASM1083. WD 2TB#2 перенесён с карты на материнку.
- **⭐ IronWolf 12TB теперь ПОДКЛЮЧЁН и ЛИНКУЕТСЯ** — `sdc` = `ST12000NT001-3LX101`, 10.9T, by-id `WV700FQ5`. Он не в пуле (новый диск).
- **WD 2TB #2 (`WD-WXJ2A31CUNNT`) исчез из системы** — раньше был `sdb` (перенесён с карты), после финального перетыкания не виден. Уточнить где он.
- **HGST 12TB (`HUH721212ALE600`) по-прежнему НЕ виден** — ни в `lsscsi`, ни в by-id. Питание: если он подключён обычным SATA-кабелем — молчит из-за **PWDIS (3.3V на пине 3)**, для него нужен Molex→SATA или снятый пин 3 (см. блок решения выше).
> ⚠️ Буквы (`sda`/`sdb`) **shift-аются при перетыкании** и сейчас разъехались: `sdb` = WD4TB (не WD2TB#2!), `sdc` = IronWolf. **Всегда сверять по by-id/модели, не полагаться на буквы.**
> ⚠️ ⚡ **СРОЧНО:** пул `RED_2TB` после этого перетыкания НЕ заимпортирован (см. блок «КРИТИЧНО» в разделе пулов). Все члены на месте — нужен Import Pool.
## Плата расширения SATA в PCIe (установлена ~2026-07-30)
**PCIe карта:** ASMedia ASM1166 (PCI ID `1b21:1166`, rev 02), на шине `02:00.0` (под PCIe bridge `0000:00:1c.0`).
Контроллер виден ядру (драйвер `ahci` активен), подсистема: ZyDAS Technology Corp.
**Состояние (диагностика 2026-07-31):**
- Контроллер создал **32 ата-порта** (`ata7``ata38` на 0000:02:00.0). ⚠️ Это НЕ типичные 6 портов чистой ASM1166 — вероятно плата с расширенным числом портов / мультиплексированием. Уточнить физическое число разъёмов.
- **На НИ ОДНОМ порту карты нет ни одного подключённого/живого диска**: у всех 32 портов в sysfs только `ata_port host link power uevent`, отсутствуют `target*` и блок-устройства.
- `lsscsi` показывает диски только на Intel-хостах 0,1,2,3,5. Хосты карты (7–38) без дисков.
- В `/dev/disk/by-id` только 5 дисков — все на материнке.
**Целевой диск:** HGST 12TB (Ultrastar) — для него и покупалась PCIe SATA-карта. В плане значился как «по USB определяется как sde, USB-карман не нужен, вставить по SATA».
**✅ Заключение после решающего теста (карта исправна, дело в HGST):**
- **Карта 100% исправна.** При подключении заведомо рабочего WD 2TB (второго WD20EFAX, `WD-WXJ2A31CUNNT`) в порт карты она **определилась** — появился `host9``target9:0:0` с блок-устройством `/dev/sde`. Значит слот/порты/кабель AHCI работают, питания хватает.
- У карты **нет отдельного разъёма питания** (питается от PCIe-слота). Диск питается от БП напрямую.
- Проверены физические порты карты **1 и 6** — оба без линка для HGST.
**✅ Дополнительный тест HGST через USB (2026-08-01) — диск полностью исправен:**
- HGST 12TB подключён через **USB-мост JMicron** (`152d:0578`, "USB to ATA/ATAPI Bridge") на xHCI-порт (`usb3/3-1`).
- Ядро определило его как **/dev/sdf**, модель **HGST HUH721212ALE600**, **полная ёмкость 10.9 TB** (23 437 770 752 сектора × 512 B — точно размер 12TB-драйва).
- Диск размечен: `sdf1` = 200M, `sdf2` = 10.9TB.
- Через USB диск заводится, читается на всю ёмкость и виден целиком.
**➡️ Уточнённый диагноз:** проблема **именно в паре HGST SATA-интерфейс ↔ SATA-карта ASMedia**, а не в самом диске. Диск работоспособен. Две вероятные причины не-линка по SATA в карте: (1) питание с SATA-разъёма БП до диска в карте не доходит (в USB-боксе питание даёт мост/свой блок, потому и работает), либо (2) enterprise-диск (4Kn/особый PHY) не поднимает линк на ASM1166. USB-мост — рабочий способ диагностики, но ненадёжен как постоянное решение для ZFS.
## ✅ Решение HGST 12TB (2026-08-17) — корень найден, диск работает
> ⚠️ **Актуальный статус на 2026-08-17 вечер:** хоть HGST и завёлся (см. ниже КАК), в финальном перетыкании **карта ASM1166 вытащена из слота, HGST и IronWolf сейчас НЕ подключены** (подробнее в таблице портов выше). Этот блок фиксирует **как была решена причина не-линка** — пригодится, когда диск вернётся в систему.
Проблема не-линка HGST по SATA **решена: это 3.3V PWDIS на SATA-питании.** Разметка не трогалась — sde1=200M, sde2=10.9TB остались как были. Когда диск снова будет подключён — добавить в пул TrueNAS по by-id/GUID (ZFS к порту не привязана). После добавления — удалить этот блок.
**Что было/что стало:**
- Было: HGST не давал `target*` ни на одном порту карты ASM1166 (USB-мост работал, потому что питание подавал мост, не затрагивая PWDIS).
- Стало: после отключения 3.3V-контакта HGST линкуется на той же карте (ata7/02:00.0) — карта и материнка исправны, дело было в питании.
- **Переразметка для решения не нужна** — проблема на уровне PHY/питания, а не данных.
> ⚠️ Если такой же enterprise-диск (HGST/WD Ultrastar/Seagate Exos c PWDIS) снова «молчит» по SATA — первым делом проверить 3.3V-пин №3 питания: Molex→SATA адаптер (без 3.3V) или изоляция пина №3 решают.
> ⚠️ NB: буквы дисков (`sda`/`sdb`/...) **shift-аются при перетыкивании** — сейчас на материнке: [0]=WD2TB, [2]=WD4TB, [3]=Kingston boot, [5]=Seagate4TB, IronWolf на [1]. Не полагаться на буквы, проверять по `by-id`/модели.
> Когда диск заведётся и добавится в пул — **обновить таблицу портов выше** и удалить этот блок «Следующие шаги».
## Диагностические команды (полезно для будущих проверок)
```bash
# какие диски видит система и где
lsscsi -H; lsscsi -g
# какие порты создала карта и живы ли (target = есть диск)
ls /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/ata*
# для каждого порта карты — есть ли подключённое устройство (target*):
for a in /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/ata*/host*; do
tgt=$(ls -d "$a"/target* 2>/dev/null); [ -n "$tgt" ] && echo "$a: $tgt"
done
# контроллеры
lspci -k | grep -i sata
```
## Подключение дисков (исходный план)
- **HGST 12TB (sde, USB)** — при подключении по SATA: в серый порт **SATA6G_2 (ata2)**. Диск enterprise, 6Gb/s. Ему не нужен USB-карман.
- **Seagate IronWolf** — в синий порт **SATA3G_3 (ata5)**. HDD не упирается в 3Gb/s (~300MB/s пропускная), смысла в 6Gb/s нет.
- **Kingston SSD (boot)** — оставить в синем порту SATA3G_2 (ata4). Вся активность только при загрузке, система работает из RAM.
- **WD 2TB** — серый SATA6G_1 (ata1), занят.
## Важно про ZFS и перетыкание
- ZFS не привязана к букве диска или SATA порту. TrueNAS распознаёт пул по GUID на дисках.
- **Перетыкание НЕ всегда поднимает пул автоматически** (2026-08-17: RED_2TB не заимпортировался сам после перетыкания, см. «КРИТИЧНО» ниже). Если пул не виден в `zpool list` — нужен ручной Import (WebUI Storage → Import Pool или `zpool import <pool>` под root). Данные при этом целы, пока все члены `ONLINE`.
- Проверка пула после перетыкания: `/sbin/zpool status <pool>` — убедиться что все члены `ONLINE`, ошибки `0 0 0`.
## Пулы TrueNAS (проверено 2026-08-17)
Имена пулов, топология и члены — проверять статус через `/sbin/zpool` (см. ниже про PATH).
| Пул | Размер | Члены (по /dev со стабильным подключением) | Топология | Монтирование |
|-----|--------|-----------|-----------|--------------|
| **RED_2TB** | 5.44T (4.60T занято) | mirror: `sdb2`/`sdc2` (WD4TB) + `sde2` (Seagate4TB); отдельно `sda2` (WD2TB) | 1 диск (sda2) + mirror-1 (2 диска) | `/mnt`**⚠️ ПОТРЕБУЕТСЯ IMPORT, см. ниже** |
| **boot-pool** | 111G (7.65G занято) | `sdd3` (Kingston 120GB boot SSD) | 1 диск | — |
- RED_2TB: HEALTH **ONLINE**, нераспределённый свободный диск (данные не реплицируются на sda2 — он отдельный, а не парный). Если redun-dancy важна — учесть, что sda2 без зеркала.
### ⚠️ КРИТИЧНО (2026-08-17, после финального перетыкания): RED_2TB НЕ заимпортирован
После перетыкания дисков на материнке пул **RED_2TB НЕ поднялся автоматически**: `/sbin/zpool list` показывает только `boot-pool`, а `/sbin/zpool status RED_2TB``cannot open 'RED_2TB': no such pool`.
**Это НЕ потеря данных.** Все члены пула физически на месте и видны системе (проверено 2026-08-17):
- `sda2` = WD2TB#1 (ata1)
- `sdb2` = WD4TB (ata2) — буква сменилась с `sdc` на `sdb`
- `sde2` = Seagate4TB (ata6)
Пул просто не заимпортировался, вероятно из-за смены букв устройств. **Что нужно сделать (порядок):**
1. TrueNAS WebUI → **Storage → Import Pool** → выбрать `RED_2TB`, импортировать.
- Альтернатива под root: `/sbin/zpool import RED_2TB` (truenas_admin НЕ может — `sudo` требует пароль; `zpool import` даёт `cannot discover pools: permission denied` без root).
2. После импорта проверить: `/sbin/zpool status RED_2TB` → все члены `ONLINE`, `READ WRITE CKSUM` = `0 0 0`.
> ⚠️ Урок: перетыкание дисков НЕ всегда триггерит авто-импорт, даже когда все члены на месте и ZFS работает по GUID. Буквы могут смениться (`sdc`→`sdb`), и пул ждёт ручного Import. Не паниковать — данные целы, пока все члены `ONLINE` в `lsblk`/by-id.
- Идёт регулярный scrub (запускается ночью воскресенья).
- **`zpool` не в PATH для zsh truenas_admin** — вызывать через абсолютный путь `/sbin/zpool` или `/usr/sbin/zpool` (иначе `command not found`).
## Запрещено
- **Boot pool (Kingston 120GB SSD)** — нельзя использовать для Docker, файлов, app data. TrueNAS обновления могут пересоздать boot pool. Размер 120GB мал для логов/образов.
## SATA кабель
Любой стандартный SATA кабель подходит. Разницы между кабелями для SATA 2 и SATA 3 нет.