ZFS (Zettabyte File System) — это мощная и надёжная файловая система, которая часто используется в Proxmox VE для создания отказоустойчивых хранилищ. Она объединяет в себе функции файловой системы и менеджера логических томов, обеспечивая высокую степень защиты данных, удобное управление и дополнительные возможности, такие как моментальные снимки и клонирование. Эта статья поможет вам, начинающему пользователю, разобраться в основах ZFS в Proxmox.

Содержание:

Основные режимы работы ZFS

Выбор правильного режима (vdev) для вашего ZFS-пула — это ключевой шаг. Он определяет, как будут храниться данные, а также уровень отказоустойчивости и доступный объём.

  • RAIDZ (RAID-5): Этот режим аналогичен классическому RAID-5. Он использует один диск для хранения информации о чётности, что позволяет пережить потерю одного диска в пуле. Это эффективное решение для использования дискового пространства, но производительность записи может быть ниже, чем у RAIDZ2. Требует минимум три диска.
  • RAIDZ2 (RAID-6): Этот режим использует два диска для хранения информации о чётности. Он даёт более высокий уровень защиты, позволяя пережить потерю двух дисков одновременно. Это отличный выбор для критически важных данных и больших пулов. Требует минимум четыре диска.
  • Mirror (RAID-1): Это зеркалирование данных. Все данные записываются на два диска одновременно. Этот режим обеспечивает максимальную скорость чтения и высокую отказоустойчивость, так как вы можете потерять до половины дисков в пуле (если они находятся в разных зеркальных парах). Требует минимум два диска.

Диагностика пула ZFS

Регулярная проверка состояния ZFS-пула — залог его долгой и надёжной работы. Основной инструмент для этого — команда zpool.

Чтобы проверить статус вашего пула, используйте:

zpool status

Вывод этой команды покажет, в каком состоянии находится каждый диск и сам пул. Если всё в порядке, вы увидите state: ONLINE. Если диск вышел из строя, его состояние будет DEGRADED или FAULTED.

Для проверки целостности данных и автоматического исправления ошибок запустите скруббинг:

zpool scrub your_pool_name

Эта операция читает все данные на дисках и проверяет их контрольные суммы. Она может занять много времени, но её следует выполнять регулярно, например, раз в месяц.


Замена неисправного диска

Когда zpool status покажет, что один из дисков неисправен, его нужно заменить.

  1. Определите неисправный диск:
    Сначала найдите имя диска (например, sdb, sdc) в выводе zpool status.
  2. Отметьте диск как неисправный:
    zpool detach your_pool_name /dev/sdX
    Здесь your_pool_name — имя вашего пула, а /dev/sdX — имя неисправного диска. Эта команда удалит диск из пула.
  3. Физически замените диск.
    Выключите сервер, извлеките неисправный диск и вставьте новый.
  4. Добавьте новый диск в пул:
    После включения сервера новый диск, скорее всего, получит имя, похожее на старое. Убедитесь в этом с помощью lsblk. Затем добавьте его в пул:
    zpool attach your_pool_name /dev/sdX /dev/sdY
    Здесь /dev/sdX — имя существующего диска (исправного), а /dev/sdY — имя нового.

Если вы просто хотите заменить диск на новый, без предварительного удаления, используйте команду zpool replace:

zpool replace your_pool_name /dev/old_disk /dev/new_disk

Эта команда автоматически начнёт процесс resilver (восстановления данных) на новом диске.


Удаление диска из пула

Если вы хотите уменьшить количество дисков в пуле, это возможно, но с ограничениями.

  • В режиме mirror, вы можете просто удалить один из дисков из зеркальной пары:
    zpool detach your_pool_name /dev/sdX
    Это превратит зеркальную пару в один диск, что снизит отказоустойчивость.
  • Для режимов RAIDZ и RAIDZ2 удаление диска невозможно без полного уничтожения пула. Это связано с тем, что данные распределены по всем дискам, и простое удаление нарушит целостность.

Используя эти простые команды и следуя рекомендациям по диагностике, вы сможете эффективно управлять ZFS-хранилищем в Proxmox и обеспечить высокую надёжность ваших данных.