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

87 lines
4.7 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.
# Перенос 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 и контейнер
На хосте:
```bash
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):
```bash
# На хосте 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
```bash
rsync -av --progress /mnt/ssd-storage/nextcloud-101/ /mnt/nextcloud-hdd/nextcloud-101/
```
Проверить объём: `du -sh /mnt/nextcloud-hdd/nextcloud-101` (~73 GB).
### 4. Изменить конфиг контейнера 101
```bash
# Заменить 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
```bash
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`:
```bash
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 больше не нужен:
```bash
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.