Добавить в корзинуПозвонить
Найти в Дзене

RAID и NFS от А до Я

В современном мире ИТ-инфраструктуры данные — это новая нефть. Но хранить их на одном жестком диске так же опасно, как хранить сейф с бриллиантами в палатке на пляже. Диски имеют привычку выходить из строя, а внезапная потеря курсовой, базы данных или фотографий кота может обернуться катастрофой. Здесь на сцену выходят два технологических китa: RAID (массив из нескольких дисков) и NFS (сетевая файловая система). В этой статье мы пройдем полный путь: от «голого металла» (пары дополнительных дисков) до полноценного сетевого хранилища, доступного клиентам по сети. Мы создадим RAID 0 (полосатый массив) для производительности, подключим его к системе, а затем «расшорим» через NFS для нашего клиента. Дисклеймер: RAID 0 не обеспечивает отказоустойчивости — если один диск умрет, данные умрут с ним. Но для лабораторной работы или временного хранилища он идеален. Предположим, у нас есть сервер под управлением Linux (например, Ubuntu/Debian). Мы подключили к нему два дополнительных виртуальных ил
Оглавление

Введение: Зачем всё это нужно?

В современном мире ИТ-инфраструктуры данные — это новая нефть. Но хранить их на одном жестком диске так же опасно, как хранить сейф с бриллиантами в палатке на пляже. Диски имеют привычку выходить из строя, а внезапная потеря курсовой, базы данных или фотографий кота может обернуться катастрофой.

Здесь на сцену выходят два технологических китa: RAID (массив из нескольких дисков) и NFS (сетевая файловая система). В этой статье мы пройдем полный путь: от «голого металла» (пары дополнительных дисков) до полноценного сетевого хранилища, доступного клиентам по сети.

Мы создадим RAID 0 (полосатый массив) для производительности, подключим его к системе, а затем «расшорим» через NFS для нашего клиента.

Дисклеймер: RAID 0 не обеспечивает отказоустойчивости — если один диск умрет, данные умрут с ним. Но для лабораторной работы или временного хранилища он идеален.

Часть 1. RAID — сердце нашего хранилища

Шаг 1. Подготовка сервера (HQ-SRV)

Предположим, у нас есть сервер под управлением Linux (например, Ubuntu/Debian). Мы подключили к нему два дополнительных виртуальных или физических жестких диска объемом по 1 ГБ.

В операционной системе они пока не видны как «единое целое», но система их уже обнаружила как отдельные устройства. Первым делом нам понадобится инструмент для управления RAID-массивами — mdadm.

Немного воды: mdadm — это как дирижер для ваших дисков. Он говорит им: «Вы теперь не просто два куска кремния, а единый оркестр — RAID-массив».

Выполняем установку:

apt-get update && apt-get install -y mdadm

После нажатия Enter система скачает список пакетов и установит утилиту. Без нее дальнейшие шаги невозможны.

Шаг 2. Осмотр и подготовка носителей

Прежде чем что-то создавать, нужно убедиться, под какими именами в системе отображаются наши новые диски. Для этого используем утилиту lsblk (List Block Devices). Она показывает древовидную структуру всех дисков и разделов.

Команда для разведки:

lsblk

Результат на экране:
Мы увидим что-то похожее на:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk

В нашем случае диски называются sdb и sdc. Запомните эти имена — они будут главными героями.

Шаг 3. Зануление суперблоков (Священный обряд очистки)

Диски могли быть использованы раньше: там могла быть файловая система, таблица разделов или «суперблок» от старого RAID-массива. mdadm очень не любит, когда на дисках есть "мусор". Чтобы избежать ошибок, мы принудительно стираем служебную информацию.

Аналогия: Вы купили подержанный автомобиль. Прежде чем ставить свой двигатель, вы снимаете старую магнитолу предыдущего владельца.

Выполняем зануление:

mdadm --zero-superblock --force /dev/sdb /dev/sdc

Ключ --force нужен, чтобы утилита не сомневалась и стерла всё, даже если на диске ничего нет.

Шаг 4. Творение: создаем RAID 0 (Striping)

Теперь самое интересное — дадим команду создать массив.

  • --create — команда создания.
  • --verbose — показывать подробный лог (люблю смотреть, что происходит внутри).
  • /dev/md0 — имя нашего будущего RAID-устройства (как файл устройства).
  • -l 0 — уровень 0 (RAID 0). Данные разбиваются на блоки и записываются на оба диска по очереди. Быстро, но не надежно.
  • -n 2 — количество активных дисков в массиве.

Магия одной строки:

mdadm --create --verbose /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc

Система на секунду задумается и выдаст радостное сообщение о создании массива. Заметим, что в некоторых версиях Linux имя диска sdс пишется как sdc (латиница). Будьте внимательны!

Шаг 5. Проверка и сохранение конфигурации

Мы создали массив "в полете", но если перезагрузить сервер, операционная система забудет о нем. Чтобы этого не случилось, нужно сохранить конфигурацию в файл /etc/mdadm.conf.

Сканируем и сохраняем:

mdadm --detail --scan --verbose | tee -a /etc/mdadm.conf

Разберем: mdadm --detail --scan собирает информацию о существующих массивах, tee -a выводит это на экран и одновременно дописывает (-a = append) в конец файла /etc/mdadm.conf.

Шаг 6. Создание файловой системы (Форматирование)

RAID-массив есть, но он похож на чистый холст. Чтобы хранить файлы, нужна файловая система. Мы используем стандартную для Linux — ext4 (Fourth Extended Filesystem).

Форматируем:

mkfs.ext4 /dev/md0

Утилита сообщит, что создана журналируемая файловая система, и покажет ее UUID (уникальный идентификатор). Запоминать его не обязательно, но красиво.

Шаг 7. Автоматическое монтирование в папку /raid

Мы не хотим каждый раз вручную вводить mount /dev/md0. Пусть система делает это сама при загрузке. Для этого отредактируем файл /etc/fstab (File Systems Table).

Открываем редактор:

vim /etc/fstab

(Если vim не установлен, можно использовать nano)

Добавляем строку:

/dev/md0 /raid ext4 defaults 0 0

Где:

  • /dev/md0 — что монтировать.
  • /raid — куда монтировать (точка монтирования).
  • ext4 — тип файловой системы.
  • defaults — стандартные параметры (чтение, запись, синхронизация).
  • 0 0 — отключение дампа и проверки целостности при загрузке (для RAID это нормально).

Шаг 8. Последние штрихи (Создание папки и проверка)

Создаем папку /raid, ведь её еще не существует:

mkdir /raid

Теперь даем команду примонтировать всё, что прописано в fstab (без перезагрузки):

mount -av

Флаг -a означает "все", -v — подробный вывод. Мы должны увидеть, как /dev/md0 красиво прикрепился к /raid.

Финишная проверка:

df -h

Утилита df (Disk Free) покажет все смонтированные диски. Мы увидим строчку /dev/md0 с объемом около 2 ГБ (так как два диска по 1 ГБ в RAID 0 дают ~2 ГБ полезного пространства).

Поздравляю! RAID готов. Теперь это просто папка /raid на сервере.

Часть 2. NFS — Делаем RAID доступным по сети

Теперь наша задача — открыть доступ к папке /raid для клиента под названием HQ-CLI по сети.

Шаг 1. Превращаем HQ-SRV в NFS-сервер

Сначала установим необходимые пакеты на сервере.

Установка:

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

nfs-server — это сам сервер. nfs-utils — набор вспомогательных утилит.

Шаг 2. Создание целевой папки и прав доступа

Внутри нашего RAID создадим директорию nfs, которую и будоткрывать миру.

mkdir /raid/nfs
chmod 777 /raid/nfs

chmod 777 — дает право на чтение, запись и выполнение всем (владельцу, группе и остальным). Это удобно для тестов, но в боевой среде стоит настроить права тоньше.

Шаг 3. Настройка экспорта (файл /etc/exports)

Главный конфигурационный файл NFS — /etc/exports. Здесь мы говорим: "Кому и что я разрешаю".

Открываем файл:

vim /etc/exports

Добавляем строку магии:

/raid/nfs 192.168.200.0/24(rw,no_root_squash)

Разберем по косточкам:

  • /raid/nfs — каталог, который мы отдаем.
  • 192.168.200.0/24 — клиентская сеть (у вас может быть другая, например, 192.168.100.0/24). Только компьютеры из этой сети смогут подключиться.
  • rw — разрешены операции чтения (Read) и записи (Write).
  • no_root_squash — важный параметр. Обычно NFS "принижает" права пользователя root с клиента, чтобы он не натворил бед. no_root_squash отключает это ограничение — root на клиенте будет root и на сервере. Для административного удобства — самое то.

Шаг 4. Активация экспорта и запуск сервера

Мы описали правила, но NFS-сервер об этом еще не знает. Говорим ему перечитать конфиги:

exportfs -arv
  • -a — экспортировать (или переэкспортировать) всё.
  • -r — перечитать все экспорты и синхронизировать с /etc/exports.
  • -v — показать, что получилось.

Теперь запускаем сервер и добавляем в автозагрузку (чтобы после перезагрузки расшаренная папка снова работала):

systemctl enable --now nfs-server

На этом работа сервера закончена. Переходим к клиенту.

Часть 3. Настройка клиента (HQ-CLI)

Клиент — это отдельная машина в сети, которая будет подключаться к нашему /raid/nfs.

Шаг 1. Установка NFS-клиента

На HQ-CLI выполняем:

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

Шаг 2. Создание локальной точки монтирования

В Linux любую внешнюю папку нужно куда-то «примонтировать», как будто она своя локальная папка.

mkdir /mnt/nfs
chmod 777 /mnt/nfs

Шаг 3. Настройка автомонтирования через /etc/fstab на клиенте

Чтобы папка с сервера автоматически подключалась при загрузке клиента, снова идем в fstab, но уже на HQ-CLI.

vim /etc/fstab

Добавляем строку:

192.168.100.2:/raid/nfs /mnt/nfs nfs defaults 0 0
  • 192.168.100.2 — IP-адрес нашего сервера (HQ-SRV). Внимание: в вашем задании ранее фигурировала сеть 192.168.200.0, а здесь 192.168.100.2. Уточните IP вашего сервера!
  • /raid/nfs — путь к расшаренной папке на сервере.
  • /mnt/nfs — куда монтируем на клиенте.
  • nfs — тип файловой системы.

Шаг 4. Монтируем и проверяем

Выполняем команду монтирования (без перезагрузки):

mount -av

Мы должны увидеть подключение.

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

df -h

В списке появится запись с IP-адресом сервера и размером, соответствующим нашему RAID-массиву.

Тест на запись:
Попробуем создать файл на клиенте в папке /mnt/nfs. Если всё настроено верно, файл появится на сервере в /raid/nfs.

touch /mnt/nfs/test.txt

Шаг 5. Финальный тест (Перезагрузка)

Самое надежное доказательство — перезагрузка клиента.

reboot

После старта заходим на HQ-CLI и проверяем:

df -h | grep nfs

Папка /mnt/nfs должна быть на месте и содержать все файлы.

Заключение. Что мы сделали?

  1. Собрали программный RAID 0 из двух дисков по 1 ГБ (устройство /dev/md0).
  2. Отформатировали его в ext4 и настроили автомонтирование в папку /raid через fstab.
  3. Подняли NFS-сервер на машине HQ-SRV и расшарили папку /raid/nfs.
  4. Настроили клиента HQ-CLI для автоматического получения этой папки в /mnt/nfs.

Поздравляю! Вы построили сетевое хранилище, которое переживает перезагрузки и готово к интенсивной работе. Конечно, RAID 0 — это не про безопасность данных (скорее про скорость), но полученные навыки — фундамент для понимания более сложных уровней (RAID 1, 5, 10) и сетевых протоколов в мире Linux.