From 66fce11c13694caf2419801eda8632fc736ec347 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 3 Jul 2026 22:56:39 +0600 Subject: [PATCH] [2026-07-03] eagle: family/how-to/htpc-system.md family/how-to/openmediavault-rpi5.md --- family/how-to/htpc-system.md | 8 ++--- family/how-to/openmediavault-rpi5.md | 46 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/family/how-to/htpc-system.md b/family/how-to/htpc-system.md index c82ed8dd..a13a275b 100644 --- a/family/how-to/htpc-system.md +++ b/family/how-to/htpc-system.md @@ -428,23 +428,23 @@ XwaylandEisNoPrompt=true **⚠️ htpc-sleep-guard уничтожен** — сервис слетел при манипуляциях с rsync (systemd-inhibit процесс был убит). `rsync-active` файл остался, но без сервиса он не блокирует сон. Для долгих операций использовать `systemd-inhibit` напрямую. -После переноса HDD с Kraken на HTPC (2026-07-03, сессия отката rsync отменена пользователем): +После переноса HDD с Kraken на HTPC, а затем переноса Toshiba обратно на Kraken: | Диск | Модель | Размер | Интерфейс | Статус | |------|--------|--------|-----------|--------| | **sda** | WDC WD60EFRX-68L0BN1 (WD Red) | **5.5T** | SATA | Смонтирован как Data (btrfs) | | **sdb** | Seagate ST12000NT001-3LX101 | **10.9T** | SATA | Смонтирован как storage (ext4, `/run/media/system/storage`) | -| **sdc** | TOSHIBA MQ01UBB200 | **1.8T** | USB | Смонтирован как Backup (ext4, `/run/media/bazzite/Backup`, fstab) | | **nvme0n1** | Samsung SSD 970 EVO | **465.8G** | NVMe | Системный | -> **2026-07-03:** Toshiba 1.8TB перенесён обратно на Kraken (через USB, теперь sdc отключён). Seagate 12TB (sdb) остаётся на HTPC. +> **2026-07-03:** Toshiba 1.8TB (sdc, USB) перенесён обратно на Kraken. На HTPC остались: Seagate 12TB (storage) + WD Red 6TB (Data) + NVMe. **История:** - 2026-07-03: 12TB Seagate и 1.8TB Toshiba отключены от Kraken и подключены к HTPC. - Seagate не определился до ребута HTPC — после `sudo reboot` появился как sdb. - Seagate: Gnome Disks примонтировал автоматом как storage (ext4, `/run/media/system/storage`). - Toshiba: отформатирован в ext4 (Python-скрипт через echo + sudo -S на HTPC). UUID: `6194539b-03e0-4f33-986b-4da09834e82f`. Примонтирован в `/run/media/bazzite/Backup`, прописан в `/etc/fstab`. -- **Toshiba перенесён обратно на Kraken** — данные скопированы со storage (Seagate) без timemachine. На HTPC остался только Seagate 12TB (storage). +- **Toshiba перенесён обратно на Kraken** — данные со storage (Seagate) скопированы на Toshiba без timemachine. На Kraken создан симлинк для обратной совместимости. Toshiba отключён от HTPC. +- Строка fstab на HTPC для Backup-диска (`UUID=6194539b... /run/media/bazzite/Backup ext4 ...`) остаётся в `/etc/fstab` — без диска mount -a будет падать с ошибкой, но не критично. Удалить при случае. ### Перенос: storage (Seagate 12TB) → Backup (Toshiba 1.8TB) — 2026-07-03 diff --git a/family/how-to/openmediavault-rpi5.md b/family/how-to/openmediavault-rpi5.md index fac59330..d0aaa077 100644 --- a/family/how-to/openmediavault-rpi5.md +++ b/family/how-to/openmediavault-rpi5.md @@ -171,6 +171,52 @@ sudo update-initramfs -u -k all < /dev/null > ⚠️ Не монтировать вручную через fstab — OMV должен управлять монтированием сам +### CLI-альтернатива: регистрация диска в OMV через config.xml + +Если Web UI недоступен, можно зарегистрировать диск через прямой редактор config.xml и deploy: + +```bash +# 1. Добавить mntent в /etc/openmediavault/config.xml через Python +sudo python3 -c " +import xml.etree.ElementTree as ET, uuid +tree = ET.parse('/etc/openmediavault/config.xml') +fstab = tree.find('.//fstab') +if fstab is None: + fstab = ET.SubElement(tree.find('system'), 'fstab') +mntent = ET.SubElement(fstab, 'mntent') +ET.SubElement(mntent, 'uuid').text = str(uuid.uuid4()) +ET.SubElement(mntent, 'fsname').text = '/dev/disk/by-uuid/' +ET.SubElement(mntent, 'dir').text = '/srv/dev-disk-by-uuid-' +ET.SubElement(mntent, 'type').text = 'ext4' +ET.SubElement(mntent, 'opts').text = 'defaults,nofail,user_xattr,usrquota,grpquota,acl' +ET.SubElement(mntent, 'freq').text = '0' +ET.SubElement(mntent, 'passno').text = '2' +ET.SubElement(mntent, 'hidden').text = '0' +ET.SubElement(mntent, 'usagewarnthreshold').text = '85' +ET.SubElement(mntent, 'comment').text = '' +tree.write('/etc/openmediavault/config.xml', encoding='utf-8', xml_declaration=True) +print('OK') +" + +# 2. Применить через salt +sudo omv-salt deploy run fstab + +# 3. Диск автоматически примонтируется +``` + +### Сохранение обратной совместимости при замене диска + +Если старый HDD заменяется на новый с другим UUID, а все сервисы привязаны к старому UUID в путях (`/srv/dev-disk-by-uuid-/...`), можно создать симлинк: + +```bash +# Удалить старую папку от OMV (там только bind-mount точки, не реальные данные) +sudo rm -rf /srv/dev-disk-by-uuid-<СТАРЫЙ_UUID> +# Создать симлинк на новый диск +sudo ln -s /srv/dev-disk-by-uuid-<НОВЫЙ_UUID> /srv/dev-disk-by-uuid-<СТАРЫЙ_UUID> +``` + +Это позволяет избежать правок во всех docker-compose, smb.conf, fstab и скриптах. + --- ## Шаг 7 — omv-extras + Docker