Хранилище на Linux: от разметки диска до сетевого доступа

Команда df -h внезапно показывает 100% заполнения корневого раздела, а службы начинают падать с ошибками записи — типичный сигнал того, что хранилище на Linux-сервере спроектировано без запаса и без разделения данных. Подобная ситуация почти всегда означает, что логи, пользовательские файлы и система лежат в одном разделе, и переполнение любого из этих потоков останавливает всю машину целиком.

Грамотно организованное хранилище решает сразу несколько задач: изолирует данные от системы, позволяет расширять дисковое пространство без переустановки, объединяет несколько накопителей и даёт отказоустойчивость. Linux предоставляет для этого зрелый инструментарий — от классической разметки до LVM, программного RAID и современных файловых систем вроде Btrfs и ZFS. Ниже разберём каждый уровень по порядку.

Разметка диска и файловые системы

Любое хранилище начинается с разметки. Для дисков размером более 2 ТБ используется таблица разделов GPT, для старых систем и маленьких дисков допустима MBR. Посмотреть текущую разметку можно командой lsblk или fdisk -l. Создание разделов выполняется через fdisk, gdisk или более дружелюбный parted.

Выбор файловой системы зависит от сценария. Универсальный вариант — ext4: стабильная, журналируемая, подходит для большинства серверов и домашних машин. XFS хорошо работает с большими файлами и параллельной записью, но не умеет уменьшаться. Btrfs и ZFS предлагают снапшоты, контрольные суммы и встроенный RAID, однако требуют более внимательного администрирования.

mkfs.ext4 /dev/sdb1

mkdir -p /mnt/storage

mount /dev/sdb1 /mnt/storage

Чтобы раздел монтировался автоматически после перезагрузки, добавьте запись в /etc/fstab, указывая UUID раздела (его показывает команда blkid), а не имя устройства — имена вроде /dev/sdb могут меняться между загрузками.

⚠️ Внимание: команда mkfs безвозвратно уничтожает данные на указанном разделе. Перед форматированием трижды проверьте имя устройства через lsblk — ошибка в одной букве сотрёт не тот диск.

LVM: гибкое управление томами

LVM (Logical Volume Manager) добавляет слой абстракции между физическими дисками и файловыми системами. Вместо жёсткой привязки к разделам вы оперируете тремя сущностями: физическими томами (PV), группами томов (VG) и логическими томами (LV). Благодаря этому том можно расширить на лету, добавив в группу новый диск.

Базовая настройка выглядит так:

pvcreate /dev/sdb /dev/sdc

vgcreate vg_storage /dev/sdb /dev/sdc

lvcreate -L 500G -n lv_data vg_storage

mkfs.ext4 /dev/vg_storage/lv_data

Когда место закончится, достаточно выполнить lvextend -L +200G /dev/vg_storage/lv_data и затем resize2fs для ext4 — раздел вырастет без размонтирования. Именно поэтому LVM считается стандартом де-факто для серверных хранилищ на Linux.

Программный RAID через mdadm

Если требуется отказоустойчивость, несколько дисков объединяют в RAID с помощью утилиты mdadm. Наиболее распространённые уровни:

  • 🪞 RAID 1 — зеркало из двух дисков: данные дублируются, массив переживает отказ одного накопителя;
  • RAID 0 — чередование для скорости, без защиты: выход из строя любого диска уничтожает все данные;
  • 🛡️ RAID 5 — распределённая чётность, минимум три диска, переживает отказ одного;
  • 🔒 RAID 6 — двойная чётность, минимум четыре диска, переживает отказ двух;
  • 📦 RAID 10 — зеркала поверх чередования: скорость плюс надёжность, минимум четыре диска.

Создание зеркала из двух дисков:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

mkfs.ext4 /dev/md0

Конфигурацию массива нужно сохранить в /etc/mdadm/mdadm.conf (путь может отличаться в зависимости от дистрибутива), иначе после перезагрузки массив не соберётся автоматически. Состояние массива проверяется командой cat /proc/mdstat.

⚠️ Внимание: RAID — это не резервная копия. Массив защищает только от физического отказа диска, но не от случайного удаления файлов, шифровальщика или сбоя файловой системы. Бэкапы на отдельное устройство обязательны в любом случае.
📊 Какой уровень RAID вы используете (или планируете) для домашнего хранилища?
RAID 1 — простое зеркало
RAID 5/6 — баланс ёмкости и защиты
RAID 10 — скорость и надёжность
Не использую RAID, только бэкапы

Сравнение подходов к организации хранилища

Чтобы выбрать подходящий вариант, полезно видеть различия в одном месте:

РешениеОтказоустойчивостьРасширениеСложность
Одиночный диск + ext4НетТолько заменой дискаМинимальная
LVMНетГибкое, на летуСредняя
LVM поверх RAID (mdadm)ДаГибкоеВыше средней
Btrfs / ZFSДа (встроенный RAID)Гибкое, со снапшотамиВыше средней

Для домашнего медиасервера часто достаточно одиночного диска с регулярными бэкапами. Для рабочих данных разумный минимум — RAID 1 или RAID 5 плюс LVM сверху: так вы получаете и защиту от отказа диска, и возможность расширения.

Сетевой доступ: NFS и Samba

Хранилище редко живёт изолированно — обычно к нему нужен доступ по сети. Два основных протокола:

  • 🐧 NFS — родной протокол для Linux и Unix-систем, быстрый, простой в настройке, удобен для монтирования каталогов между серверами;
  • 🪟 Samba (SMB) — протокол, понятный Windows-машинам; выбирайте его, если к хранилищу подключаются компьютеры с Windows или смарт-телевизоры;
  • 🔐 SFTP/SSH — для разовой защищённой передачи файлов без настройки постоянного сервиса.

Минимальная настройка NFS-экспорта: установите пакет nfs-kernel-server, добавьте строку вида /mnt/storage 192.168.1.0/24(rw,sync,no_subtree_check) в файл /etc/exports и примените изменения командой exportfs -ra. Для Samba конфигурация описывается в /etc/samba/smb.conf, а пользователи добавляются через smbpasswd -a имя.

Почему NFS быстрее Samba в Linux-окружении

NFS работает с родной для Linux моделью прав (UID/GID) и не тратит ресурсы на трансляцию разрешений в формат Windows. Samba же эмулирует семантику SMB, что добавляет накладные расходы. В смешанной сети с Windows-клиентами Samba всё равно неизбежна — NFS там поддерживается ограниченно.

Мониторинг состояния дисков

Диски редко умирают внезапно — чаще они неделями сигнализируют о проблемах через S.M.A.R.T.. Установите пакет smartmontools и периодически проверяйте состояние:

smartctl -a /dev/sda

Обращайте внимание на атрибуты вроде Reallocated Sector Count и Current Pending Sector Count — рост этих значений указывает на деградацию поверхности диска. Демон smartd умеет отправлять уведомления при обнаружении проблем. Дополнительно настройте мониторинг свободного места: даже простая проверка df -h в cron с отправкой письма при заполнении выше заданного порога спасёт от внезапной остановки сервисов.

☑️ Базовая проверка здоровья хранилища

Выполнено: 0 / 5
⚠️ Внимание: рост числа переназначенных секторов — признак физической деградации диска. Не ждите полного отказа: как только значение начало стабильно расти, планируйте замену накопителя и сверьте актуальность резервных копий.

Резервное копирование

Последний и самый важный слой — бэкапы. Классическое правило 3-2-1: три копии данных, на двух разных носителях, одна — вне основной площадки. Для Linux существует несколько проверенных инструментов: rsync для инкрементного копирования, rsnapshot и BorgBackup для версионных архивов с дедупликацией, restic — для шифрованных бэкапов в облачные хранилища.

Простейший вариант с rsync:

rsync -avh --delete /mnt/storage/ /mnt/backup/storage/

Ключ --delete зеркалирует удаления — используйте его осознанно, иначе случайно удалённый файл исчезнет и из копии. Автоматизируйте запуск через cron или systemd-таймер и обязательно хотя бы раз проверьте восстановление: бэкап, из которого никто не пробовал восстановиться, нельзя считать рабочим.

Часто задаваемые вопросы

Какую файловую систему выбрать для домашнего хранилища?

Для большинства сценариев оптимален ext4 — он стабилен и не требует специальных знаний. Если нужны снапшоты и встроенная проверка целостности, посмотрите на Btrfs, но будьте готовы разбираться в его особенностях.

Можно ли расширить раздел без потери данных?

Да, если используется LVM: команды lvextend и resize2fs расширяют том и файловую систему ext4 на лету. Обычный раздел тоже можно увеличить через parted и resize2fs, если за ним есть свободное место, но перед операцией обязательно сделайте резервную копию.

Заменит ли RAID резервное копирование?

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

Что выбрать для доступа с Windows-компьютеров — NFS или Samba?

Samba. Windows нативно работает с протоколом SMB, а поддержка NFS там ограничена и зависит от редакции системы. NFS оставьте для связки между Linux-машинами.

Как узнать, что диск скоро выйдет из строя?

Установите smartmontools и проверяйте вывод smartctl -a /dev/sdX. Тревожные признаки — растущие значения переназначенных и нестабильных секторов, ошибки чтения. Точного прогноза S.M.A.R.T. не даёт, поэтому бэкапы должны быть актуальны всегда, а не только при появлении предупреждений.