Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.
Прежде чем приступить к установке компонентов сервера, учитывая что мы создаем файловый сервер, необходимо продумать структуру дисков и папок где будут храниться данные. В моем случае все данные будут храниться на внешних носителях, так как конфигурация компьютера имеет весьма скромные возможности расширения – можно добавить только один М.2 диск. То есть о создании внутреннего массива говорить не приходится. Все диски будут подключены по USB 3.0. Для запланированной нагрузки этого будет вполне достаточно.
В моем распоряжении имеется два внешних диска Western digital по 1 Tb каждый. Очень хочется иметь на сервере 2 терабайта дискового пространства, но если вы планируете хранить на них что-то важное, стоит подумать над созданием RAID - массива. Из двух имеющихся в наличии дисков ничего отказоустойчивого кроме массива RAID 1 (зеркало) собрать не представляется возможным. Тут нужно понимать, что при создании зеркального массива вы "теряете" половину суммарной емкости ваших накопителей. В моем случае - из двух дисков по 1 TB получится массив объемом 1 Tb. Но за надежность нужно платить. Итак будем собирать программный RAID 1 из двух USB дисков. В определенном смысле - извращение, но оно показало себя вполне работоспособным. Все написанное ниже касается как дисков подключенных через USB так и через любой другой интерфейс без каких либо различий.
Прежде чем перейти к созданию массива, и помня о том, что данная серия статей рассчитана на людей мало знакомых с Linux, поделюсь своими практическими знаниями в области работы с носителями информации в этой операционной системе, в частности в Debian.
В Linux все носители информации обозначаются как /dev/sda (b/c/d/ и т.д.), а созданные на них разделы обозначаются прибавлением цифры обозначающие номер раздела. Так на диске sda могут присутствовать разделы sda1, sda2 т.д.
Следует отметить, что буквы, обозначающие один и тот же диск могут меняться в зависимости от точки физического подключения. Так, например, если поменять местами диски, подключенные SATA или USB разъемам, то названия дисков могут измениться. Что вносит некоторую неопределенность. Избежать этой неопределенности позволяет наличие у каждого носителя информации уникального идентификатора – UUID.
3.1. Просмотр информации о подключенных носителях
Для просмотра структуры подключенных носителей существует ряд команд. Наиболее часто используемые это: fdisk -l, lsblk и blkid. Они различаются набором выводимой информации.
Общаемся с сервером по прежнему через PuTTY с помощью командной строки.
lsblk
Вывод этой команды дает представление о физических носителях, имеющихся на них разделах, их размере и точках монтирования (об этом чуть позже):
Мы видим диск sda с тремя разделами, созданными при установке Debian :
sda1 – загрузочный раздел;
sda2 – основной раздел с системой и пользовательскими папками;
sda3 – раздел с файлом подкачки;
И дискb sdb и sdc размером 931,5 Gb каждый без созданных на них разделов
fdisk -l
Показывает список разделов подключенных носителей с их параметрами: стартовым сектором, конечным сектором, количеством секторов, размером раздела и типом раздела:
blkid
Дает расширенную информацию о разделах носителей включая их метки томов, размер кластера тип файловой системы, и что в дальнейшем понадобится - UUID раздела:
На выводе команды видно, что что диск sda2, имеет файловую систему ext4 и UUID = c58deaf6-603b-4af8-8a47-693f8bee39cb.
В отличии от Windows, при подключении к Debian диск не становится доступным для чтения и записи автоматически. Для этого его нужно смонтировать.
Обычно носители монтируются в каталоги /media или /mnt. В зависимости от выбранного каталога, в нем необходимо предварительно создать папку, в которую непосредственно будет смонтировано содержимое подключаемого носителя – точку монтирования.
Диск может быть смонтирован как по имени устройства ( в нашем случае /dev/sda2) так и по UUID (c58deaf6-603b-4af8-8a47-693f8bee39cb).
Монтирование может быть временным и постоянным. При временном монтировании диск перестанет быть доступным после перезагрузки компьютера, при постоянном – подключится автоматически.
Вернемся к созданию массива RAID 1 из двух дисков объемом по 1 Tb каждый, на котором мы создадим файловую систему, структуру каталогов и смонтируем.
3.2. Построение программного массива с помощью утилиты mdadm
3.2.1. Установка mdadm
Утилита mdadm устанавливается командой:
sudo apt install mdadm -y
3.2.2. Подготовка носителей
Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.
Вернемся к команде lsblk
lsblk
Снова смотрим на имеющиеся в системе устройства и принимаем решение, что из дисков sdb и sdc мы будем строить массив RAID 1.
Сначала необходимо проверить не использовались ли данные диски ранее в массивах и в случае использования занулить суперблоки на дисках, которые мы будем использовать для построения массивов.
Суперблок - это начальная точка файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы. Суперблок содержит информацию, необходимую для монтирования и управления работой файловой системы.
Пробуем занулить суперблоки дисков sdb и sdc:
mdadm --zero-superblock --force /dev/sd{b,c}
Если мы получили ответ:
mdadm: Unrecognised md component device - /dev/sdb
mdadm: Unrecognised md component device - /dev/sdc
это значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.
Далее удаляем старые метаданные и подписи на дисках:
wipefs --all --force /dev/sd{b,c}
3.2.3. Сборка массива
Для сборки избыточного массива применяем следующую команду:
mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где:
- /dev/md0 — устройство RAID, которое появится после сборки;
- -l 1 — уровень RAID (зеркало);
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Мы должны увидеть что-то на подобие:
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 976630464K
Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:
Continue creating array? y
Мы увидим что-то на подобие:
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Вводим команду:
lsblk
Вывод команды показывает, что у дисков sdb и sdc появился раздел md0:
Создание файла mdadm.conf
В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:
mkdir /etc/mdadm
Возможно каталог уже создан и выйдет ошибка. Не обращаем внимание и продолжаем:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Посмотрим результат:
nano /etc/mdadm/mdadm.conf
Файл содержит информацию о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков:
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=Pluto:0 UUID=c298bcf7:bedd7e89:bac88a74:f2e4b304
Чтобы проверить состояние сборки массива:
sudo cat /proc/mdstat
На сборку массива, в зависимости от уровня RAID, размера дисков и их количества может уйти от нескольких часов до суток. В моем случае RAID 1 из двух дисков объемом 1 Tb собирался около двух часов. Это не означает что в течении этого времени массивом невозможно пользоваться. Можно. Просто операции чтения/записи будут выполняться медленней чем на собранном массиве. А его использование замедлит скорость сборки. Я предпочел не нагружать массив и не перезагружать сервер до того момента пока статус массива не будет "CLEAN".
Несколько ускорить сборку можно установив максимальную скорость командой:
echo 300000 > /proc/sys/dev/raid/speed_limit_min
Полную информацию о созданном массиве можно посмотреть командой:
mdadm -D /dev/md0
Теперь заходим в webmin, нажимаем "Refresh modules" и в разделе "Hardware" находим строчку "Linux RAID". Кликнув по ней видим текущий статус массива его структуру и прочую информацию и настройки.
Возможна ситуация, когда вдруг вместо /dev/md0 вы обнаружите /dev/md127. Это баг mdadm. После очередной перезагрузки у меня массив изменил имя на md127. Этот глюк обсуждают на форумах и есть схемы как его пофиксить. На мой взгляд, в моей задаче, имя массива ни на что не влияет. Если бы он был прописан в fstab как /dev/md0, то он бы не смонтировался. Но так как монтировали мы его через UUID, то все работает абсолютно нормально. Более того, у меня была ситуация, когда md127 переименовался обратно в md0 после того как я переткул один из дисков другой порт. Так что, на мой взгляд, можно забить на этот баг.
Более подробную информацию о работе с массивами с помощью mdadm можно найти в интернете - там есть множество подробных статей и видеороликов.
Единственное, что добавлю: не стоит бояться использования программных массивов. Есть неправильное мнение, что в случае использования массива при необходимости его переноса на другое железо будем много проблем. На самом деле вся информация о массиве хранится в суперблоках дисков и при подключении к другому компьютеру достаточно установить mdadm и выполнить команду:
mdadm --assemble --scan
После этого массив определится системой без проблем. Останется только смонтировать его.
Другая ситуация - если вы захотите использовать массив созданный в Linux в Windows - не получится. Массив RAID 1 определится в Windows как два отдельных диска с одинаковым содержимым (что в общем то не критично), а другие виды массивов прочитать в Windows не удастся..
3.2.4. Создание файловой системы и монтирование дисков
Дальнейшие действия с массивом, пусть он состоит хоть из 50 дисков, ничем не отличаются от действий с одиночным диском. Поэтому, для универсальности я буду называть его просто "диск /dev/md0"
Создаем файловую систему.
mkfs.ext4 /dev/md0
В качестве файловой системы я выбрал родную для Linux ext4. Можно указать ntfs, xfs если на то имеются какие-то особые соображения.
Для монтирования диска /dev/md0 необходимо узнать его UUID. Посмотрим его с помощью команды blkid:
blkid
Итак, мы видим, что наш диск /dev/md0 имеет UUID = dd83dcfb-5fea-45d4-ab79-7db6722c3cfa.
Обычно носители монтируются в каталоги /media или /mnt. В зависимости от выбранного каталога, в нем необходимо предварительно создать папку, в которую непосредственно будет смонтировано содержимое подключаемого носителя – точку монтирования.
Диск может быть смонтирован как по имени устройства ( в нашем случае /dev/md0) так и по UUID (dd83dcfb-5fea-45d4-ab79-7db6722c3cfa).
Смонтируем наш диск /dev/md0
Создаем точку монтирования - каталог «raid_md0» в папке /mnt в которую мы смонтируем наш диск, делаем пользователя root из группы root его владельцем и открываем доступ для всех:
mkdir /mnt/raid_md0
chown -R root:root /mnt/raid_md0
chmod -R 777 /mnt/raid_md0
Для постоянного монтирования вносятся записи в файл /etc/fstab:
nano /etc/fstab
В конец файла добавляем:
UUID=dd83dcfb-5fea-45d4-ab79-7db6722c3cfa /mnt/raid_md0 ext4 defaults,auto,x-systemd.automount,x-systemd.device-timeout=20 0 0
И сохраняем (Ctrl +O).
Добавленная нами строка смонтирует диск с UUID=d83dcfb-5fea-45d4-ab79-7db6722c3cfa имеющий файловую систему ext4 в каталог mnt/raid_md0. При этом в случае его отсутствия в момент загрузки Debian не будет бесконечно ждать его подключения, а продолжит загрузку. А при подключении диска к уже запущенной системе – он будет смонтирован автоматически. Это особенно актуально для съемных носителей.
После внесения правок в fstab перезапустить службы!!!:
systemctl daemon-reload && systemctl restart local-fs.target
И проверяем.
df -h /mnt/raid_md0
Вывод команды показывает, что это наш массив размером 916 Gb.
Если df -h /mnt/raid_md0 покажет что-то вроде этого:
Это означает, что диск не смонтировался и нам показан диск на котором находится папка /mnt.
В этом случае перезагрузите компьютер. Однако, рекомендую дождаться пока статус массива не станет clean.
Для несъемного жесткого диска, строка fstab выглядела бы проще:
UUID=dcfb-5fea-45d4-ab79-7db6722c3cfa /mnt/raid_md0 ext4 defaults,noauto 0 0
Eсли бы нам нужно было временно смонтировать флешку (например определившуюся как /dev/sdd) в папку /mnt/flash можно было бы воспользоваться командой временного монтирования mount без внесения записей в fstab:
mount -t ntfs /dev/sdd /mnt/flash
Размонтировать смонтированный ранее носитель или папку можно двумя способами:
указать в команде имя устройства / папки:
umount /dev/sdd
или указать точку монтирования:
umount /mnt/flash
3.2.5. Создание структуры каталогов
Далее необходимо продумать, как лучше организовать структуру папок?
У меня есть множество фотографий и видео, большая коллекция кинофильмов, подборка полезного софта и любимых игр, множество сканов документов, которые бывают нужны в самый неожиданный момент. А еще есть желание настроить резервное копирование чего-то из вышеперечисленного в облако Яндекса, чтобы в случае прямого попадания в мой сервер вражеского снаряда было откуда восстановиться. А еще с Яндекс-диска довольно удобно слушать музыку.
Учитывая то, что служба Яндекс диска подключается к одной конкретной папке – нам нужна папка «Yandex». Поразмыслив, я нарисовал следующую структуру для каталогов:
- Documents
- Kino
- Soft_and_Games
- Yandex
- Foto_and_Video
- Music
Создаю задуманную структуру:
mkdir /mnt/raid_md0/Documents
mkdir /mnt/raid_md0/Kino
mkdir /mnt/raid_md0/Soft_and_Games
mkdir /mnt/raid_md0/Yandex
mkdir /mnt/raid_md0/Yandex/Foto_and_Video
mkdir /mnt/raid_md0/Yandex/Music
Запускаем mc и смотрим:
Все получилось.
Для тестирования устанавливаемых компонентов я сразу положил в каждую папку примеры типичного для нее содержимого.
В Linux, аналогичным образом можно смонтировать не только носитель, но и любую папку уже смонтированного носителя. Этим мы воспользуемся когда будем настраивать доступ по протоколу webdav.
Часть 1: Предыстоия и настоящее.
Часть 2: Подготовка среды. Установка и первоначальная настройка Debian 12
Часть 3: Носители информации. RAID. Создание файловой структуры.
Часть 4: Установка компонентов WEB-сервера. Let’s Encrypt.
Часть 5: Samba и Webdav
Часть 6: Home Assistant Supervised
Часть 7: NEXTCLOUD - персональное облако.
Часть 8: Медиа-сервер. MiniDLNA/PLEX
Часть 9: Torrent-клиент. Transmission/Deluge
Часть 10: Яндекс-Диск
Часть 11: Переезд на новое железо.