Перейти к основному содержимому

Добавление внешнего хранилища к вашему серверу

Введение

Помимо системы мониторинга, которая следит за тем, чтобы разделы вашей системы не были слишком маленькими, YunoHost в настоящее время не занимается организацией ваших разделов и дисков.

Если вы используете ARM-процессор с SD-картой или сервер с небольшим SSD-накопителем, то по соображениям надёжности или из-за нехватки места вам может потребоваться добавить один или несколько накопителей к вашему серверу.

warning

Если на вашем сервере совсем не осталось места, вы можете ввести команду apt clean, чтобы попытаться освободить место таким образом, или выполнить следующие действия.

Ниже вы найдёте инструкции по правильному перемещению данных на жёсткий диск с минимальным влиянием на работу YunoHost. Эту операцию можно выполнить во время установки или позже, когда ваши потребности в хранилище возрастут или когда вы перестанете доверять своей SD-карте.

подсказка

Представленный здесь метод сначала смонтирует единственный раздел жесткого диска, а затем с помощью одной или нескольких подпапок этого диска создаст различные точки монтирования в дереве вашей системы. Этот метод предпочтительнее использования символических ссылок, поскольку последние могут конфликтовать с некоторыми приложениями, включая систему резервного копирования YunoHost. Вы также можете монтировать разделы, а не подпапки, но иногда сложно заранее оценить размер папки.

Предварительные требования

  • Запланируйте момент, когда будет удобно выключить сервер. Даже если шаги относительно просты, они могут показаться техническими и в любом случае требуют не торопиться.
  • Вам нужно знать, как подключиться к системе от имени root, обычно через SSH. (Примечание: войдя в систему как администратор, вы можете получить права root с помощью sudo su или sudo -i, что иногда удобнее, чем добавлять sudo к каждой команде)
  • Знайте основные команды cd, ls, mkdir, rm.
  • Подготовьте резервную копию на случай, если что-то пойдет не так
  • Подключите к серверу дополнительное хранилище (SSD, жесткий диск, USB-накопитель) через USB или SATA

1. Определите каталоги, которые необходимо переместить

Команда ncdu / позволяет просматривать размер папок на сервере.

Ниже приведено объяснение некоторых элементов, которые могут создавать дополнительную нагрузку, а также комментарии, которые помогут вам уменьшить их вес или принять решение об их перемещении.

ПутиСодержимоеСоветы
/homeПапки пользователя, доступные через SFTPМожно переместить на жёсткий диск
/home/yunohost.backupРезервные копии YunoHostВ зависимости от вашей стратегии резервного копирования, вы можете разместить эту папку на отдельном диске от ваших данных или баз данных.
/home/yunohost.appОбширный объём данных из приложений YunoHost (nextcloud, matrix...).Можно переместить на жёсткий диск
/home/yunohost.multimediaБольшие объёмы данных, используемые несколькими приложениямиМожно переместить на жёсткий диск
/var/lib/mysqlБаза данных, используемая приложениямиВ идеале оставьте на SSD для повышения производительности
/var/lib/postgresqlБаза данных, используемая приложениямиВ идеале оставьте на SSD для повышения производительности
/var/mailЭлектронная почта пользователейМожно переместить на жёсткий диск
/var/wwwПрограммы установленных веб-приложенийВ идеале оставьте на SSD для повышения производительности
/var/logЖурналы событий (просмотренные страницы, попытки подключения, аппаратные ошибки...).Этот каталог не должен занимать слишком много места; если он быстро увеличивается, это может быть ошибка зацикливания, которую следует устранить.
/optПрограммы и зависимости некоторых приложений YunoHost.В идеале оставьте на SSD для повышения производительности. Для приложений Node.js можно выполнить очистку неиспользуемых версий.
/bootЯдра и загрузочные файлыНе перемещайте, если не знаете, что делаете. Может случиться так, что хранится слишком много ядер, можно выполнить очистку.

2. Подключение и определение диска

Для начала подключите диск к системе. Затем вам необходимо определить имя, под которым система обозначила диск.

Для этого используйте команду:

lsblk

В результате может быть возвращено что-то вроде:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 47.7M 0 part /boot
└─mmcblk0p2 179:2 0 14.8G 0 part /

Здесь mmcblk0 соответствует SD-карте объемом 16 ГБ (видно, что разделы mmcblk0p1 и mmcblk0p2 соответствуют разделу /boot и системному разделу /. Подключенный жёсткий диск соответствует разделу sda объёмом около 1 ТБ и содержит один раздел sda1, который не смонтирован (нет точки монтирования, "MOUNTPOINT").

warning

В другой системе может оказаться, что ваша система установлена на sda, и ваш диск, например, называется sdb.

подсказка

Если размера диска недостаточно, чтобы его распознать, вы можете отключить диск, выполнить команду lsblk , затем снова подключить диск, выполнить команду lsblk и определить различия.

3. (Необязательно) Отформатируйте диск

Это действие необязательно, если ваш диск уже отформатирован в файловой системе, поддерживаемой Linux (то есть не NTFS или FAT32).

Давайте создадим раздел на диске:

fdisk /dev/YOUR_DISK

Затем последовательно введите n, p, 1, Enter, Enter, и w, чтобы создать новый раздел.

Убедитесь с помощью команды lsblk, что на диске имеется только один раздел.

Прежде чем вы сможете использовать диск, его необходимо отформатировать.

warning

Форматирование диска означает удаление всех данных на нём! Будьте внимательны и не ошибитесь с именем диска, иначе вы можете отформатировать не тот диск, который планировали! В приведённом ранее примере использовалось имя /dev/sda. Если ваш диск уже «чист», этот шаг можно пропустить.

Чтобы отформатировать :

mkfs.ext4 /dev/YOUR_DISK1
# then 'y' to validate

Замените YOUR_DISK1 на имя первого раздела на диске, например sda1.

подсказка

Этот шаг можно адаптировать, например, для создания тома RAID 1 (зеркалирование дисков) или шифрования папки.

4. Смонтируйте диск

В отличие от Windows, где доступ к дискам осуществляется с помощью букв (например, C:/), в Linux диски доступны через дерево файловой системы. «Монтирование» диска означает включение его в дерево файловой системы, делая его доступным для использования. Мы условно выберем для монтирования путь /mnt/hdd, но вы можете использовать другое имя (например, /mnt/disk и т. д.).

Начнем с создания каталога:

mkdir /mnt/hdd

Затем можно смонтировать диск вручную с помощью команды:

mount /dev/YOUR_DISK1 /mnt/hdd

(Здесь /dev/YOUR_DISK1 соответствует первому разделу на диске)

5. Смонтируйте папку /mnt/hdd поверх одной из папок, из которых вы хотите перенести данные

В данном случае мы исходим из того, что вы хотите перенести на жесткий диск данные приложений, расположенные в /home/yunohost.app, а также электронную почту.

5.1 Создание подпапок на диске

Для начала создадим папку на жёстком диске

mkdir -p /mnt/hdd/home/yunohost.app
mkdir -p /mnt/hdd/var/mail

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

Затем, в идеале, мы переводим в режим обслуживания те приложения, которые могут записывать данные.

Пример, для nextcloud:

sudo -u nextcloud /usr/bin/php /var/www/nextcloud/occ maintenance:mode --on

Пример для почты:

systemctl stop postfix
systemctl stop dovecot
warning

Если вы хотите перенести базы данных, такие как MariaDB (MySQL), обязательно остановите соответствующие службы; в противном случае данные почти наверняка будут повреждены.

5.3 Создание точек монтирования

Затем мы переименуем исходную папку и создадим пустую папку с тем же именем.

mv /home/yunohost.app /home/yunohost.app.bkp
mkdir /home/yunohost.app
mv /var/mail /var/mail.bkp
mkdir /var/mail

Затем мы можем использовать команду mount --bind, чтобы примонтировать папку с нашего жесткого диска к новому пустому месту в дереве каталогов.

mount --bind /mnt/hdd/home/yunohost.app /home/yunohost.app
mount --bind /mnt/hdd/var/mail /var/mail

5.4 Копирование данных

Затем мы копируем данные, сохраняя все свойства папок и файлов. Эта операция может занять некоторое время; ход процесса можно отслеживать в другом окне терминала, наблюдая за объёмом данных в точке монтирования с помощью команды df -h

cp -a /home/yunohost.app.bkp/. /home/yunohost.app/
cp -a /var/mail.bkp/. /var/mail/

После этого проверьте с помощью команды ls, что файлы на месте:

ls -la /home/yunohost.app/
ls -la /var/mail/

5.5 Выход из режима обслуживания

Здесь можно отключить режим обслуживания; приведённую ниже команду следует адаптировать в зависимости от того, какие службы были остановлены.

sudo -u nextcloud /usr/bin/php /var/www/nextcloud/occ maintenance:mode --off
systemctl start postfix
systemctl start dovecot

С этого момента ваши службы работают с данными, размещёнными на диске, поэтому самое время проверить, как это сказывается на производительности (особенно если вы используете USB 2.0).

6. Автомонтирование при загрузке

До сих пор мы монтировали диск и подпапки вручную. Однако необходимо настроить систему так, чтобы диск монтировался автоматически после загрузки.

Если тесты пройдут успешно, точки монтирования следует сохранить; в противном случае нужно поторопиться и сначала вернуться в режим обслуживания.

Для начала найдём UUID (универсальный идентификатор) нашего диска с помощью команды:

lsblk -f

Добавим в файл /etc/fstab, отвечающий за монтирование дисков при загрузке, новую строку. Для этого откроем файл с помощью nano:

nano /etc/fstab

Затем добавьте эти строки в конец файла:

UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" /mnt/hdd ext4 defaults,nofail 0 0
/mnt/hdd/home/yunohost.app /home/yunohost.app none defaults,bind 0 0
/mnt/hdd/var/mail /var/mail none defaults,bind 0 0

(эту строку необходимо адаптировать с учётом предыдущей информации и сделанного выбора)

Используйте Ctrl+X, затем y, чтобы сохранить.

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

7. Очистка старых данных

После того как новая конфигурация будет проверена, можно удалить старые данные с этапа 5.3:

rm -Rf /home/yunohost.app.bkp
rm -Rf /var/mail.bkp

🎉 Поздравляем!

Если вы дошли до этого этапа без каких-либо повреждений, то теперь у вас есть сервер, использующий один или несколько дисков для хранения данных.