Files
homelab-docs/homelab/docs/migrate-nextcloud-to-hdd.md
Andrey 3c00fbf67b Update storage docs and sync homelab scripts
Align homelab docs repo with local homelab changes, including updated storage layout and the Steam games presence checker script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 00:00:47 +03:00

4.7 KiB
Raw Blame History

Перенос Nextcloud с SSD на HDD (освобождение SSD 1.9 TB)

Цель

Перенести все данные Nextcloud (БД, приложение, файлы пользователей, ~73 GB) с SSD (sdb 1.9 TB) на HDD (sdd 6.8 TB) и отмонтировать SSD для использования в других проектах.

Текущая схема

  • mp0: /mnt/ssd-storage/nextcloud-101/mnt/nextcloud-data (SSD, ~73 GB)
  • mp1: /mnt/nextcloud-hdd/mnt/nextcloud-extra (HDD, игры в корне)

После переноса:

  • mp0: /mnt/nextcloud-hdd/nextcloud-101/mnt/nextcloud-data (на HDD)
  • mp1: /mnt/nextcloud-hdd/mnt/nextcloud-extra (как сейчас)
  • Внешнее хранилище «Игры» будет указывать на /mnt/nextcloud-extra/games (подпапка), чтобы в списке не было каталога nextcloud-101.

Шаги

1. Остановить Nextcloud и контейнер

На хосте:

ssh root@192.168.1.150
pct exec 101 -- bash -c 'cd /opt/nextcloud && docker compose down'
pct stop 101

2. На хосте: подготовить структуру на HDD

Создать папку games и перенести в неё все текущие папки из корня HDD (игры + common):

# На хосте 192.168.1.150
mkdir -p /mnt/nextcloud-hdd/games
cd /mnt/nextcloud-hdd
for d in */ ; do
  [ "$d" = "games/" ] && continue
  mv "$d" games/
done

Проверка: в корне HDD остаются только games/, в нём — все 154 папки.

3. Копировать nextcloud-101 с SSD на HDD

rsync -av --progress /mnt/ssd-storage/nextcloud-101/ /mnt/nextcloud-hdd/nextcloud-101/

Проверить объём: du -sh /mnt/nextcloud-hdd/nextcloud-101 (~73 GB).

4. Изменить конфиг контейнера 101

# Заменить mp0 в /etc/pve/lxc/101.conf
# Было:  mp0: /mnt/ssd-storage/nextcloud-101,mp=/mnt/nextcloud-data
# Стало: mp0: /mnt/nextcloud-hdd/nextcloud-101,mp=/mnt/nextcloud-data
sed -i 's|mp0: /mnt/ssd-storage/nextcloud-101,mp=/mnt/nextcloud-data|mp0: /mnt/nextcloud-hdd/nextcloud-101,mp=/mnt/nextcloud-data|' /etc/pve/lxc/101.conf

5. Запустить контейнер и Nextcloud

pct start 101
# Подождать загрузки, затем:
pct exec 101 -- bash -c 'cd /opt/nextcloud && docker compose up -d'

6. Обновить путь внешнего хранилища «Игры»

Сейчас хранилище указывает на /mnt/nextcloud-extra. Нужно изменить на /mnt/nextcloud-extra/games, чтобы в «Игры» отображались только игры, без папки nextcloud-101:

pct exec 101 -- docker exec nextcloud-nextcloud-1 php occ files_external:config 1 datadir /mnt/nextcloud-extra/games
pct exec 101 -- docker exec nextcloud-nextcloud-1 php occ files_external:scan 1

7. Проверить работу

  • Открыть Nextcloud в браузере, зайти в «Игры» — должны быть все папки игр.
  • Проверить «Мои файлы» и приложение.

8. Отмонтировать SSD и убрать из fstab

Когда всё проверено и SSD больше не нужен:

umount /mnt/ssd-storage
# Удалить или закомментировать строку с /mnt/ssd-storage в /etc/fstab
sed -i.bak '/\/mnt\/ssd-storage/d' /etc/fstab

После этого SSD можно физически отключить или использовать под другие разделы.


Сократить SSD до 200 GB (альтернатива)

Если SSD нужно оставить в сервере, но выделить под Nextcloud только 200 GB, а остальное под другие проекты:

  • Текущее использование на SSD ~73 GB — в 200 GB поместится.
  • Нужно: уменьшить раздел sdb1 и файловую систему до 200 GB (опасно, только с резервной копией), затем создать второй раздел на свободном месте. Либо сделать полный бэкап, переразбить диск (например, sdb1=200G, sdb2=остальное), отформатировать, восстановить данные. Это сложнее и рискованнее, чем перенос на HDD.

Рекомендация: перенос на HDD проще и освобождает весь SSD.