Создание программного RAID и NFS

Создание программного RAID и раздача по NFS

Инструкция по объединению дисков в массив mdadm и настройке сетевого хранилища с автомонтированием systemd.

Часть 1: Подготовка дисков в гипервизоре

Если вы работаете в виртуальной среде (например, Proxmox, VMware, VirtualBox), добавьте два новых виртуальных диска к вашей виртуальной машине. Обязательно включите кэширование (Write back) и Advanced-опции при необходимости.

После добавления дисков и загрузки ОС, проверьте, как система их определила:

Copy

lsblk

Запомните имена новых устройств (в примерах ниже мы будем называть их /dev/sdX и /dev/sdY).

Часть 2: Сборка программного RAID 0

Мы создадим массив нулевого уровня (Stripe) с помощью утилиты mdadm. Параметры команды: --create — создать, -l 0 — уровень RAID 0, -n 2 — количество дисков.

Copy

mdadm --create /dev/md0 -l 0 -n 2 /dev/sdX /dev/sdY

Обязательно сохраните текущую конфигурацию массивов в системный файл, чтобы RAID собирался автоматически после перезагрузки:

Copy

mdadm --detail --scan --verbose >> /etc/mdadm.conf

Часть 3: Разметка и форматирование

Создадим на нашем новом RAID-устройстве (/dev/md0) современную таблицу разделов GPT и один большой раздел на всё доступное место с помощью утилиты fdisk:

Copy

fdisk /dev/md0
# Внутри fdisk введите последовательность:
# g (создать новую GPT)
# n (новый раздел)
# Enter (номер по умолчанию)
# Enter (первый сектор по умолчанию)
# Enter (последний сектор по умолчанию - на весь диск)
# w (записать изменения и выйти)

Теперь отформатируем созданный раздел (обычно он получает имя /dev/md0p1) в надежную файловую систему ext4:

Copy

mkfs.ext4 /dev/md0p1

Часть 4: Локальное монтирование RAID

Создайте директорию, куда будет смонтирован ваш дисковый массив (например, /raid):

Copy

mkdir /raid

Добавьте запись в файл /etc/fstab, чтобы диск монтировался автоматически при старте сервера:

Copy

vim /etc/fstab

# Добавьте следующую строку:
/dev/md0p1    /raid    ext4    defaults    0    0

Примените настройки fstab без перезагрузки и проверьте результат:

Copy

mount -av
df -h -T
touch /raid/a && ls /raid/a

Часть 5: Настройка сервера NFS

Теперь превратим наш сервер с RAID в сетевое хранилище. Установите необходимые пакеты (имя может отличаться в зависимости от дистрибутива, например nfs-server nfs-utils или nfs-kernel-server):

Copy

apt-get update && apt-get install -y nfs-server nfs-utils

Создадим папку специально для сетевой шары внутри нашего RAID-массива:

Copy

mkdir /raid/nfs

Настроим права доступа к шаре. Откройте файл экспорта /etc/exports и добавьте конфигурацию (rw: чтение и запись, sync: синхронный режим записи для надежности, no_root_squash: полный доступ для root клиента, subtree_check: проверка доступа к подкаталогам):

Copy

vim /etc/exports

# Формат: /путь IP_адрес_сети/маска(опции)
/raid/nfs вась айписник(rw,sync,no_root_squash,subtree_check)

Примените файл экспорта, добавьте службу в автозагрузку и перезапустите её:

Copy

exportfs -a
systemctl enable nfs-server && systemctl restart nfs-server

Часть 6: Настройка NFS-клиента (Автомонтирование)

Перейдите на клиентскую машину, которой нужно получить доступ к хранилищу. Установите клиентские пакеты и включите службу маппинга RPC:

Copy

apt-get install nfs-utils
systemctl enable rpcbind && systemctl restart rpcbind

Создайте точку монтирования на клиенте и выдайте ей максимальные права для избежания проблем с доступом на этапе настройки:

Copy

mkdir /mnt/nfs && chmod 777 /mnt/nfs

Вместо обычного монтирования мы настроим «умное» монтирование средствами systemd. Диск будет монтироваться только при попытке обратиться к папке, и не будет блокировать загрузку ОС в случае недоступности сервера.

Copy

vim /etc/fstab

# Формат: IP_сервера:/путь_до_шары /локальная_точка nfs опции 0 0
# Обратите внимание на ключи: _netdev (сетевой диск), x-systemd.automount (монтировать при обращении), noauto (не монтировать при старте системы жестко)

вась айписник:/raid/nfs /mnt/nfs nfs _netdev,x-systemd.automount,noauto 0 0

Примените настройки fstab, перезагрузите демоны systemd и запустите сервис автомонтирования (имя сервиса генерируется на основе пути: /mnt/nfs превращается в mnt-nfs.automount):

Copy

mount -av
systemctl daemon-reload
systemctl start mnt-nfs.automount

Часть 7: Проверка работы

Чтобы убедиться, что всё настроено верно, выполните простое действие на клиентской машине. В момент выполнения команды touch, systemd автоматически прозрачно примонтирует диск:

Copy

touch /mnt/nfs/a

Затем вернитесь на сервер и убедитесь, что файл физически появился на вашем RAID массиве:

Copy

ls /raid/nfs/

Если вы видите файл hello_world.txt — поздравляем, ваше сетевое хранилище работает идеально!