From fad9d476c09f5456ee224bcbfba7447bd032e143 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 17 Aug 2026 13:51:49 +0600 Subject: [PATCH] [2026-08-17] eagle: family/how-to/truenas-sata-ports-and-zfs-pools.md --- .../truenas-sata-ports-and-zfs-pools.md | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/family/how-to/truenas-sata-ports-and-zfs-pools.md b/family/how-to/truenas-sata-ports-and-zfs-pools.md index 9881b059..3280a53a 100644 --- a/family/how-to/truenas-sata-ports-and-zfs-pools.md +++ b/family/how-to/truenas-sata-ports-and-zfs-pools.md @@ -16,24 +16,27 @@ **ASUS P8H77-V LE**, чипсет Intel H77. 6 SATA портов на Intel контроллере (порт от ASMedia отсутствует). -### Распределение портов (текущее состояние — после перетыкания 2026-08-17) +### Распределение портов (актуально на конец 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 2TB (WD20EFAX, второй, был на карте ata9) | WD-WXJ2A31CUNNT | -| ata3 (SATA3G_1) | SATA 2 | 3 Gb/s | синий | **sdc** — WD 4TB (WD40EZAZ) | WD-WX22D51JJFZ7 | +| 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 | синий | *занято диском* | — | +| ata5 (SATA3G_3) | SATA 2 | 3 Gb/s | синий | *(свободен/не иден-тиф.)* | — | | ata6 (SATA3G_4) | SATA 2 | 3 Gb/s | синий | **sde** — Seagate 4TB (ST4000DM004) | WFN66CM2 | -| *(карта ASM1166)* | — | — | — | **НЕ В СЛОТЕ** (lspci не видит) | — | +| *(карта ASM1166)* | — | — | — | **НЕ В СЛОТЕ** (вытащена) | — | -**⚠️ Состояние на 2026-08-17 после перетыкания:** -- **Карта ASMedia ASM1166 физически вытащена из слота** (нет в `lspci`); `/sys/class/ata_port/` содержит только ata1–ata6 (материнка Intel H77). WD 2TB #2 перенесён с карты (ata9) на материнку ata2. -- **HGST 12TB и IronWolf 12TB сейчас НЕ подключены/НЕ линкуются** — их нет ни в `lsscsi`, ни в `/dev/disk/by-id`. Не были бы они и на карте (карты нет). HGST мы заводили на карте, значит при её извлечении он отключился. -- Несмотря на перетыкание пулы **здоровы** (см. раздел про пулы ниже) — подтверждено, что ZFS не зависит от порта. +**⚠️ Фактическое положение на конец сессии (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 (см. блок решения выше). -> ⚠️ В отличие от изначального плана, диски сейчас не по плану — проверять актуальное распределение по `by-id`/модели, а не по буквам. Типичные буквы при стабильном подключении: sda=WD2TB#1, sdb=WD2TB#2, sdc=WD4TB, sdd=Kingston, sde=Seagate4TB. +> ⚠️ Буквы (`sda`/`sdb`) **shift-аются при перетыкании** и сейчас разъехались: `sdb` = WD4TB (не WD2TB#2!), `sdc` = IronWolf. **Всегда сверять по by-id/модели, не полагаться на буквы.** + +> ⚠️ ⚡ **СРОЧНО:** пул `RED_2TB` после этого перетыкания НЕ заимпортирован (см. блок «КРИТИЧНО» в разделе пулов). Все члены на месте — нужен Import Pool. ## Плата расширения SATA в PCIe (установлена ~2026-07-30) @@ -102,8 +105,7 @@ lspci -k | grep -i sata ## Важно про ZFS и перетыкание - ZFS не привязана к букве диска или SATA порту. TrueNAS распознаёт пул по GUID на дисках. -- Можно перетыкать диски в любые порты — TrueNAS поднимет пул автоматически (подтверждено 2026-08-17). -- Если пул не поднялся автоматически: WebUI → Storage → Import Pool. +- **Перетыкание НЕ всегда поднимает пул автоматически** (2026-08-17: RED_2TB не заимпортировался сам после перетыкания, см. «КРИТИЧНО» ниже). Если пул не виден в `zpool list` — нужен ручной Import (WebUI Storage → Import Pool или `zpool import ` под root). Данные при этом целы, пока все члены `ONLINE`. - Проверка пула после перетыкания: `/sbin/zpool status ` — убедиться что все члены `ONLINE`, ошибки `0 0 0`. ## Пулы TrueNAS (проверено 2026-08-17) @@ -112,10 +114,27 @@ lspci -k | grep -i sata | Пул | Размер | Члены (по /dev со стабильным подключением) | Топология | Монтирование | |-----|--------|-----------|-----------|--------------| -| **RED_2TB** | 5.44T (4.60T занято) | mirror: `sdc2` (WD4TB) + `sde2` (Seagate4TB); отдельно `sda2` (WD2TB) | 1 диск (sda2) + mirror-1 (2 диска) | `/mnt` | +| **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`).