К основному содержимому

Хранилища в Proxmox VE: ZFS, LVM, Ceph и Directory

Proxmox VE · 19.04.2026 · 6 мин чтения
Иллюстрация к статье «Хранилища в Proxmox VE: ZFS, LVM, Ceph и Directory»

Proxmox VE поддерживает множество типов хранилищ — от локальных дисков до распределённых кластерных систем. Правильный выбор хранилища критичен для производительности и надёжности виртуальных машин.

Сравнение типов хранилищ

ТипСнапшоты VMLive MigrationПроизводительностьПрименение
ZFSДа (мгновенные)НетВысокаяОдиночный узел, RAID
LVM-ThinДаНетВысокаяОдиночный узел
DirectoryНет (qcow2)Да (с копированием)СредняяNFS, shared storage
Ceph/RBDДаДа (мгновенная)Зависит от кластераКластер Proxmox
NFSТолько qcow2ДаЗависит от сетиОбщее хранилище

ZFS: создание и управление пулом

ZFS — рекомендуемая файловая система для Proxmox. Встроенные снапшоты, дедупликация и проверка целостности данных.

# Показать доступные диски
lsblk -d -o NAME,SIZE,TYPE | grep disk

# Создать зеркальный пул (RAID-1) из двух дисков
zpool create -f   -o ashift=12   -O compression=lz4   -O atime=off   tank mirror /dev/sdb /dev/sdc

# Создать RAID-Z пул из трёх дисков
zpool create -f   -o ashift=12   -O compression=lz4   tank raidz /dev/sdb /dev/sdc /dev/sdd

# Статус пула
zpool status tank

# Производительность
zpool iostat -v tank 1

Добавление ZFS хранилища в Proxmox

># Через CLI
pvesm add zfspool tank-storage --pool tank --sparse 1

# Или веб-интерфейс:
# Datacenter → Storage → Add → ZFS

LVM-Thin: тонкая провизия

LVM-Thin позволяет создавать диски размером больше реального доступного пространства (тонкая провизия). Идеально для Dev/Test сред:

# Создать физический том и группу томов
pvcreate /dev/sdb
vgcreate data /dev/sdb

# Создать тонкий пул размером 100 ГБ
lvcreate -L 100G --thinpool data/vm-pool

# Добавить в Proxmox
pvesm add lvmthin local-thin --vgname data --thinpool vm-pool

Настройка Ceph в Proxmox

Ceph требует минимум 3 нод для обеспечения кворума. Рекомендуется выделенная сеть для Ceph-трафика (10 Гбит/с).
# На каждой ноде Proxmox
pveceph install --release squid

# Инициализировать Ceph на первой ноде
pveceph init --network 10.0.0.0/24

# Создать MON на всех нодах
pveceph createmon

# Добавить OSD (диск)
pveceph createosd /dev/sdc

# Создать пул
pveceph createpool vm-pool --size 3 --min_size 2

Оптимизация ZFS для SSD

># Отключить медленную синхронизацию для VM (не для продакшн баз данных!)
zfs set sync=disabled tank

# Включить ARC-кеш (рекомендуется 50% RAM)
echo "options zfs zfs_arc_max=4294967296" > /etc/modprobe.d/zfs.conf
# (4 ГБ = 4294967296 байт)

# Посмотреть статистику ARC
arc_summary
Не используйте ZFS с аппаратным RAID-контроллером в режиме RAID. ZFS должен видеть «голые» диски. При наличии RAID-контроллера переведите его в режим HBA/JBOD или используйте software RAID через ZFS.

Ошибки хранилищ и их причины

Три ошибки, с которыми чаще всего сталкиваются при работе с ZFS, LVM-Thin и Ceph.

cannot import 'tank': no such pool available
state: DEGRADED - one or more devices could not be used because the label is missing
rados_connect failed - error -13 (Permission denied)
  • cannot import 'tank': после переустановки системы или переноса дисков на другой сервер потерян кэш пулов. Импортируйте пул вручную: zpool import tank, при необходимости с флагом -f.
  • DEGRADED ... label is missing: один из дисков зеркала или RAID-Z отключился или вышел из строя. Определите неисправный диск через zpool status -v tank и замените его: zpool replace tank старый-диск новый-диск.
  • rados_connect failed - Permission denied: ключ аутентификации Ceph на ноде не совпадает с ключом кластера. Пересоздайте keyring для пула через pveceph createpool или скопируйте актуальный ключ из /etc/pve/priv/ceph.client.admin.keyring.

Когда эти хранилища не подходят

У каждого типа хранилища есть условия, при которых он не оправдывает ожиданий.

  • ZFS на одиночном диске без RAID и без ECC-памяти — контрольные суммы защищают от повреждения данных на диске, но без зеркала отказ единственного диска всё равно останавливает VM, а без ECC ошибки памяти могут исказить данные до записи на диск.
  • LVM-Thin в кластере без общего хранилища — тонкие пулы локальны для ноды, поэтому живая миграция VM с диском на LVM-Thin без Ceph или NFS невозможна без флага --with-local-disks и остановки на время копирования.
  • Ceph на кластере из двух нод или сети 1 Гбит/с — Ceph рассчитан минимум на три ноды для кворума OSD и требует высокой пропускной способности; на меньшем масштабе задержки записи будут выше, чем у локального ZFS.

Проверка результата

# Здоровье пула и ошибки чтения/записи/контрольных сумм
zpool status -v tank

# Хранилище подключено в Proxmox и видно свободное место
pvesm status

# Тестовая запись и проверка целостности данных
dd if=/dev/urandom of=/tank/testfile bs=1M count=100
zpool scrub tank
zpool status tank

Если статус пула ONLINE, счётчики READ/WRITE/CKSUM нулевые, а scrub завершается без ошибок — хранилище исправно. Про перенос данных между нодами на уровне ZFS — в статье ZFS-репликация в Proxmox VE.

Частые вопросы

Можно ли позже перенести диск VM с LVM-Thin на ZFS без полного пересоздания виртуальной машины?

Да, перенести диск VM с одного типа хранилища на другой в Proxmox можно без пересоздания самой виртуальной машины — через перемещение диска (Move Disk) в веб-интерфейсе или команду qm, которая копирует данные на новый storage и переключает на него конфигурацию. Сама VM на время копирования может оставаться выключенной или работать, в зависимости от режима переноса.

Что произойдёт с данными на пуле ZFS, если из зеркала физически вынуть один диск во время работы?

Зеркало ZFS рассчитано именно на отказ одного диска: пул перейдёт в состояние DEGRADED, но продолжит отдавать данные со второго диска без остановки виртуальных машин. После замены неисправного диска новый нужно ввести в пул командой замены, и ZFS автоматически восстановит избыточность, пересчитав контрольные суммы на основе уцелевшей копии.

Нужно ли вручную увеличивать ARC-кеш, если сервер обслуживает не только Proxmox, но и другие службы?

Долю RAM под ARC-кеш стоит пересматривать именно при совместном использовании сервера для нескольких ролей: фиксированное значение, рассчитанное только под Proxmox, может забрать слишком много памяти у других служб. Безопаснее выставить ограничение ARC с запасом под остальные нагрузки, а не оставлять настройку по умолчанию без пересчёта под реальный профиль сервера.

Как понять, какой тип хранилища выбрать, если на сервере всего один SSD без возможности зеркала?

Для единственного SSD без возможности зеркала чаще выбирают LVM-Thin или простой ZFS-пул без избыточности — оба варианта дают высокую производительность и тонкую провизию, но не защищают от отказа самого диска. В такой ситуации регулярные внешние бэкапы важнее выбора конкретной файловой системы, поскольку единственный диск остаётся единой точкой отказа при любом варианте.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке