Перенос директории "DATA" Nextcloud на новый диск

1 У нас есть Nextcloud, ОС ubuntu 19.04 Nginx +PHP-FPM из предыдущей статьи по установке и новый диск который мы хотели бы добавить под данные пользователей.

Проверяем подключенные диски, разделы:

terminal

evgen@test:~$ sudo su
root@test:~# fdisk -l
Диск /dev/sda: 20 GiB, 21474836480 байт, 41943040 секторов
Disk model: Virtual disk
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xbad56226

Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 34179071 34177024 16,3G 83 Linux
/dev/sda2 34181118 41940991 7759874 3,7G 5 Расширенный
/dev/sda5 34181120 41940991 7759872 3,7G 82 Linux своп / Solaris

Диск /dev/sdb: 10 GiB, 10737418240 байт, 20971520 секторов
Disk model: Virtual disk
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
root@test:~#

/dev/sdb: 10 GiB - наш новый диск, разметим, отформатируем.

terminal

root@test:~# fdisk /dev/sdb

Добро пожаловать в fdisk (util-linux 2.33.1).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.
Устройство не содержит стандартной таблицы разделов.
Создана новая метка DOS с идентификатором 0x19f744f0.
Команда (m для справки): m
Справка:
DOS (MBR)
a переключение флага загрузки
b редактирование вложенной метки диска BSD
c переключение флага dos-совместимости
Общие
d удалить раздел
F показать свободное неразмеченное пространство
l список известных типов разделов
n добавление нового раздела
p вывести таблицу разделов
t изменение типа раздела
v проверка таблицы разделов
i вывести информацию о разделе
Разное
m вывод этого меню
u изменение единиц измерения экрана/содержимого
x дополнительная функциональность (только для экспертов)

Сценарий
I загрузить разметку из файла сценария sfdisk
O записать разметку в файл сценария sfdisk

Записать и выйти
w запись таблицы разделов на диск и выход
q выход без сохранения изменений

Создать новую метку
g создание новой пустой таблицы разделов GPT
G создание новой пустой таблицы разделов SGI (IRIX)
o создание новой пустой таблицы разделов DOS
s создание новой пустой таблицы разделов Sun

Если раздел 2 и болeе ТБ - создаем таблицу GPT

terminal
Команда (m для справки): g
Создана новая метка диска GPT (GUID: 7D8038B9-B07E-7345-A50E-770DF095C590).

Я оставляю mbr (DOS)
Создаем новый раздел:

terminal

Команда (m для справки): n
Тип раздела
p основной (0 первичный, 0 расширеный, 4 свободно)
e расширенный (контейнер для логических разделов)
Выберите (по умолчанию - p):
Выберите (по умолчанию - p): p
Номер раздела (1-4, по умолчанию 1): 1
Первый сектор (2048-20971519, по умолчанию 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, по умолчанию 20971519):
Создан новый раздел 1 с типом 'Linux' и размером 10 GiB.

Команда (m для справки):


Применяем изменения

terminal

Команда (m для справки): w
Таблица разделов была изменена.
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

root@test:~#

Теперь наша таблица разделов выглядит так.

terminal

root@test:~# fdisk -l
Диск /dev/sda: 20 GiB, 21474836480 байт, 41943040 секторов
Disk model: Virtual disk
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xbad56226
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 34179071 34177024 16,3G 83 Linux
/dev/sda2 34181118 41940991 7759874 3,7G 5 Расширенный
/dev/sda5 34181120 41940991 7759872 3,7G 82 Linux своп / Solaris

Диск /dev/sdb: 10 GiB, 10737418240 байт, 20971520 секторов
Disk model: Virtual disk
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x6e935d4b
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sdb1 2048 20971519 20969472 10G 83 Linux
root@test:~#

Отформатируем раздел, форматирование разделов в Linux выполняется следующей командой:

terminal

sudo mkfs.ext4 /dev/sdb1 (или вместо ext4 - ext2, ext3, reiserfs и т.д.)
root@test:~# mkfs.ext4 /dev/sdb1
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 2621184 4k blocks and 655360 inodes
Filesystem UUID: a47fb0a8-29bb-467f-a885-da8a1046acf6
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Сохранение таблицы inod'ов: done
Создание журнала (16384 блоков): готово
Writing superblocks and filesystem accounting information: готово

root@test:~#


Далее нам необходимо включить автомонтирование диска:
Создаем директорию для монтирования диска:
terminal
root@test:~# mkdir /mnt/nextcloud
root@test:~#

Здесь нам потребуется посмотреть UUID нашего раздела /dev/sdb1
terminal
root@test:~# blkid
/dev/sda1: UUID="c56a5d35-f6d5-45b1-8a5d-929e13f57c5b" TYPE="ext4" PARTUUID="bad56226-01"
/dev/sda5: UUID="727c7b73-7aaa-4ca3-aee6-d532016c503b" TYPE="swap" PARTUUID="bad56226-05"
/dev/sdb1: UUID="a47fb0a8-29bb-467f-a885-da8a1046acf6" TYPE="ext4" PARTUUID="6e935d4b-01"
root@test:~#

Добавляем наш диск в fstab (так выглядит до внесения изменений)
terminal
root@test:~# nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=c56a5d35-f6d5-45b1-8a5d-929e13f57c5b / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=727c7b73-7aaa-4ca3-aee6-d532016c503b none swap sw 0 0

В конeц файла по аналогии добавляем наш диск:
terminal
#data nextcloud
UUID=a47fb0a8-29bb-467f-a885-da8a1046acf6 /mnt/nextcloud ext4 defaults 0 0

defaults - Использовать настройки по умолчанию. Эквивалентно: rw,suid,dev,exec,auto,nouser,async.
В итоге получаем такой вид файла:

terminal
UUID=c56a5d35-f6d5-45b1-8a5d-929e13f57c5b / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=727c7b73-7aaa-4ca3-aee6-d532016c503b none swap sw 0 0
#data nextcloud
UUID=a47fb0a8-29bb-467f-a885-da8a1046acf6 /mnt/nextcloud ext4 defaults 0 0

После перезагрузки диск будет смонтирован в директорию /mnt/nextcloud/

Пока перезагружаться не будем и примонтируeм раздел "вручную".

terminal
root@test:~# mount /dev/sdb1 /mnt/nextcloud/
root@test:~#

Eсли Nextcloud еще не установлен, то задача сильно упрощается -при установке Nextcloud указываем директорию для данных "/mnt/nextcloud/data"
Если же у вас Nextcloud уже развернут, как в моем случае, то необходимо перенести данные в новую директорию и сменить ее в конфигурации сервера (config/config.php)
Самый простой способ это сделать символическую ссылку:
Смотрим где сейчас наша директория:
terminal
root@test:~# cat /var/www/html/nextcloud/config/config.php | grep datadirectory
'datadirectory' => '/home/evgen/next/data',
root@test:~#

Переместил директорию "data" с файлами в новую директорию /mnt/nextcloud/
Сменим владельца
terminal
root@test:/mnt/nextcloud# chown -R www-data:www-data data/

Создаем символическую ссылку
terminal
root@test:~# ln -s /mnt/nextcloud/data /home/evgen/next/

Проверяем, что получилось
terminal
root@test:/home/evgen/next# ls -l
итого 0
lrwxrwxrwx 1 root root 19 сен 20 20:13 data -> /mnt/nextcloud/data
root@test:/home/evgen/next# cd data
root@test:/home/evgen/next/data# ls -l
итого 248
drwxr-xr-x 9 www-data www-data 4096 авг 19 17:44 appdata_oczz9ah689bp
drwxr-xr-x 4 www-data www-data 4096 авг 19 16:44 evgenad
drwxr-xr-x 2 www-data www-data 4096 авг 18 19:36 files_external
-rw-r--r-- 1 www-data www-data 0 авг 18 19:35 index.html
drwx------ 2 www-data www-data 4096 сен 20 17:11 lost+found
-rw-r----- 1 www-data www-data 235927 сен 20 11:17 nextcloud.log
root@test:/home/evgen/next/data#

Переходим в Nextcloud, загружаем пару файлов, проверяем, все в порядке, старые файлы на месте.

И рассмотрим теперь второй способ, если вы вдруг при установке Nextcloud оставили путь для директории пользовательских данных по умолчанию в каталоге "/var/www/..." В целях так же и безопасности переносим на наш новый диск.

1 Переводим сервер в режим обслуживания:

terminal
root@test:/home/evgen# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --on
Maintenance mode enabled
root@test:/home/evgen#

2 Копируем файлы из старой директории в новую:
terminal
root@test:~# cp -R /home/evgen/next/data /mnt/nextcloud/

3 Сменим владельца директории
terminal
root@test:~# chown -R www-data:www-data /mnt/nextcloud/data

4 Меняем путь к директории в конфиге (config/config.php)
terminal
root@test:~# nano /var/www/html/nextcloud/config/config.php
'datadirectory' => '/mnt/nextcloud/data',

Выключаем режим обслуживания.
terminal
root@test:# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --off
Maintenance mode disabled
root@test:#

Так же после 3-его пункта рекомендуется сделать бэкап БД на случай если что то пойдет не так.
terminal
root@test:~# mysqldump -u root -p --opt nextcloud > dump.sql
Enter password:
root@test:~#

Проверяем в веб интерфейсе, у меня на тестовом сервере были только стандартные файлы и пара картинок, все файлы на месте. Возможно потребуется пересканировать файлы
sudo -u www-data php /var/www/nextcloud/occ files:scan -p /mnt/nextcloud/data

One Reply to “Перенос директории "DATA" Nextcloud на новый диск”

  1. 7on:

    Спасибо, а как добавить диск в zfs?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *