До основного вмісту

Сховища в 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, яка копіює дані на нове сховище і перемикає на нього конфігурацію. Сама VM на час копіювання може залишатися вимкненою або працювати, залежно від режиму перенесення.

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

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

Чи варто вручну збільшувати ARC-кеш, якщо сервер обслуговує не лише Proxmox, а й інші служби?

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

Як зрозуміти, який тип сховища обрати, якщо на сервері лише один SSD без можливості дзеркала?

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

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці