Top.Mail.Ru
Ответы

Конфигурирование файлового хранилища (и немного про администрирование)

Всем привет! Решил поделиться опытом настройки небольшого хранилища на базе Linux (дистрибутив не важен, но был похож на Альт/Дебиан). Заодно поднял NFS, чтобы расшарить папку для клиентов в локальной сети. В процессе всплыло много нюансов, о которых стоит знать новичкам. Расскажу по шагам, добавляя свои комментарии и дополнительные команды, которые могут пригодиться в реальной работе.

Часть 1. RAID5 из трёх дисков

Допустим, у нас есть сервер с тремя дополнительными дисками по 1 ГБ (в реальности, конечно, побольше, но для теста сойдёт). Сначала смотрим, какие диски есть в системе:

bash

123

123
lsblk
# или
fdisk -l

В моём случае это были sdb, sdc, sdd. Можно также проверить их размер и убедиться, что они чистые.

Установка mdadm и создание RAID

Если пакет mdadm не установлен, ставим:

bash

1

1
apt update && apt install mdadm -y   # для Debian/Ubuntu/Альт

Создаём RAID5:

bash!

1

1
mdadm --create --verbose /dev/md0 -l 0 -n 2 /dev/sd{b,c,}

Здесь важно понимать:

  • -l 0 — уровень RAID 5 (чередование с чётностью, полезная ёмкость = (n-1) * размер диска).

  • -n 2 — количество дисков в массиве.

  • /dev/md0 — имя создаваемого устройства.

После создания можно посмотреть прогресс синхронизации (rebuild):

bash

1

1
cat /proc/mdstat

Или детальную информацию:

bash

1

1
mdadm --detail /dev/md0

Проверим, что массив виден в системе:

bash

1

1
lsblk

Сохраняем конфигурацию RAID

В некоторых дистрибутивах (особенно в Альте) есть особенность: при перезагрузке массив может потерять имя, если не прописать его в конфиг. Чтобы этого избежать, создаём файл /etc/mdadm.conf:

bash!

12

12
echo "DEVICE partitions" > /etc/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm.conf

Можно также просто перенаправить вывод:

bash

1

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

После этого обновляем initramfs, чтобы массив собирался при загрузке:

bash

12

12
update-initramfs -u   # для Debian/Ubuntu
# или dracut -f для RedHat-подобных

Теперь массив будет собираться с правильным именем.

Часть 2. Разметка и файловая система

RAID-массив готов, но на нём нет разделов. Создадим таблицу разделов и один раздел под данные. Я использую fdisk, но можно и parted.

bash!

1

1
fdisk /dev/md0

Внутри fdisk:

  • g — создаём новую GPT-таблицу (рекомендуется для дисков >2 ТБ, но и для маленьких тоже ок).

  • n — новый раздел, принимаем все умолчания (весь диск).

  • w — записываем изменения.

После этого в lsblk появится раздел /dev/md0p1. Теперь форматируем его в ext4:

bash!

1

1
mkfs.ext4 /dev/md0p1

Можно добавить метку тома для удобства:

bash

1

1
e2label /dev/md0p1 RAID5_DATA

Часть 3. Монтирование при загрузке

Создаём точку монтирования:

bash!

1

1
mkdir /raid

Добавляем запись в /etc/fstab. Используем UUID раздела, чтобы избежать проблем с изменением имён. Узнаём UUID:

bash

1

1
blkid /dev/md0p1

Или для ext4: lsblk -f. В fstab пишем что-то вроде:

text

1

1
UUID=ваш_uuid   /raid   ext4   defaults   0 0

Если хотим использовать имя устройства, то:

text!

1

1
/dev/md0p1   /raid   ext4   defaults   0 0

Проверяем монтирование:

bash!

12

12
mount -a
lsblk

В выводе должно быть видно, что /dev/md0p1 примонтирован в /raid5. Теперь массив доступен.

Часть 4. Настройка NFS-сервера

Захотелось расшарить папку /raid5/nfs для клиентов в подсети 192.168.10.64/28 (это, кстати, диапазон из 16 адресов, маска 255.255.255.240). На клиентах будет автоматически монтироваться в /mnt/nfs.

Устанавливаем NFS-сервер:

bash

12

12
apt install nfs-server -y   # в Альте пакет может называться nfs-utils
systemctl enable --now nfs-server

Создаём папку для шары и даём на неё права (для простоты 777, но в production лучше настроить более тонко):

bash!

12

12
mkdir /raid/nfs
chmod 777 /raid/nfs

Настройка exports

Редактируем /etc/exports. Можно очистить файл и добавить:

text!

1

1
/raid/nfs   192.168.10.64/28(rw,no_root_squash,no_subtree_check)

Пояснения по опциям:

  • rw — чтение и запись.

  • no_root_squash — не принижать привилегии root с клиента (иногда нужно для администрирования).

  • no_subtree_check — отключает проверку поддеревьев, повышает производительность.

После редактирования применяем изменения:

bash!!

12

12
exportfs -ra
systemctl restart nfs-server

Можно проверить доступные шары с сервера:

bash

1

1
showmount -e localhost

Часть 5. Настройка клиента (КЛИЕНТА Alt)

На клиентской машине (предположим, IP в той же подсети) устанавливаем NFS-клиент:

bash!

1

1
apt-get install nfs-server -y   # для Debian/Ubuntu/Альт

Создаём точку монтирования:

bash!

1

1
mkdir /mnt/nfs

Пробуем примонтировать вручную:

bash

1

1
mount -t nfs 192.168.10.2:/raid/nfs /mnt/nfs

Где 192.168.10.2 — IP сервера. Если всё ок, то в /mnt/nfs будут видны файлы.

Автомонтирование через fstab на клиенте

Добавляем в /etc/fstab:

text!

1

1
192.168.10.2:/raid/nfs   /mnt/nfs   nfs   auto   0 0

Или с указанием версии NFS (например, nfs4):

text

1

1
192.168.10.2:/raid/nfs   /mnt/nfs   nfs4   auto   0 0

В некоторых системах (Альт) может потребоваться запуск службы rpc-statd:

bash!

1

1
systemctl enable --now rpc-statd

После этого проверяем:

bash!

12

12
mount -a
mount | grep nfs

Немного о подводных камнях и дополнительных командах

  1. RAID и производительность. RAID5 даёт неплохую скорость чтения, но запись медленнее из-за расчёта чётности. Можно настроить кэширование или использовать RAID10, если важна скорость.

  2. Мониторинг RAID. Следите за состоянием массива: mdadm --monitor --scan можно добавить в cron.

  3. Исправление ошибок. Если диск вылетел, его можно заменить: mdadm /dev/md0 --fail /dev/sdb --remove /dev/sdb, потом добавить новый.

  4. LVM поверх RAID. Часто делают так: на RAID создают физический том LVM, потом группу и логические тома. Это добавляет гибкости с разделами.

  5. NFS и безопасность. На production лучше использовать опции sec=krb5 (Kerberos) или ограничивать доступ по IP и использовать файрвол.

  6. Диагностика NFS: rpcinfo -p, showmount -e, nfsstat.

  7. Если не монтируется: проверьте, запущен ли rpcbind (rpc-statd) на сервере и клиенте.

В итоге получилась рабочая конфигурация, которую легко масштабировать. Для себя я ещё добавил запись в crontab для регулярной проверки RAID и отправки уведомлений. Надеюсь, кому-то этот опыт пригодится. Если есть вопросы — задавайте в комментариях!

По дате
По рейтингу
Аватар пользователя
Профи
1нед

Для начала определись с типом доступа, лучше всего поднять обычную Samba для Windows или NFS для Linux. Обязательно настрой квоты на дисковое пространство, чтобы один пользователь не забил всё хранилище, и не забудь про регулярные бэкапы на отдельный накопитель.

Аватар пользователя
Мастер
1нед

Для начала определись с типом доступа, будет ли это обычная SMB шара для винды или NFS для линукса. Обязательно сразу настрой права доступа через группы пользователей, чтобы потом не мучиться с правами на каждую папку отдельно. И не забудь поднять RAID для надежности и настроить бэкапы по расписанию.

Аватар пользователя
Мастер
1нед

Для надежного файлового хранилища лучше всего поднять RAID-массив, чтобы данные не пропали при поломке одного диска. Обязательно разграничь права доступа через группы пользователей и настрой регулярное резервное копирование на внешний носитель или в облако. Не забудь включить логирование, чтобы всегда видеть, кто и когда удалил или изменил важные файлы.

Аватар пользователя
Профи
1нед

Для начала определись с типом доступа, лучше всего поднять обычную Samba для винды или NFS для линукса. Обязательно сразу настрой права доступа по группам и не забудь про регулярные бэкапы, иначе в один момент можешь потерять все данные.

Аватар пользователя
Ученик
2нед

Для начала определись с типом доступа, будет это SMB для винды или NFS для линукса. Обязательно настрой квоты на дисковое пространство и разграничь права доступа по группам пользователей, чтобы никто лишнего не удалил. Не забудь про регулярный бэкап, без него любое хранилище — это лотерея.

Аватар пользователя
Мыслитель
2нед

Для начала определись с типом файловой системы, для винды лучше брать NTFS, а под линукс ставь ext4 или btrfs. Обязательно настрой права доступа через группы пользователей и не забудь про регулярный бэкап на отдельный диск. Если дисков много, лучше сразу собирать программный RAID для надежности.



Видео по теме