LINUX.ORG.RU
решено ФорумAdmin

Proxmox ZFS свободное место

 , ,


1

1

Гипервизор Proxmox. Добавил контроллер Adaptec и диски 6Тб х 3. Создал через веб-консоль ZFS raidz, как аналог RAID5.

Веб-консоль показывает: Size: 17.99Tb Free: 17.99Tb

Пробую создать диск для гостевой виртуальной машины на 10Tb, выдаёт ошибку:

failed to update VM 101: zfs error: cannot create ‘SixTb-RAID/vm-101-disk-1’: out of space (500)

Экспериментально вывел, что можно создать диск не более 8070Gb.

Где-то встречал в документации, что на каждые 7Tb места, требуется 10Tb кэша. Не понимаю, что это такое, но почти совпадает с моими значениями.

Подскажите, пожалуйста, так и должно быть?

6Tb ~= 5.5TiB В RaidZ ёмкость одного диска используется для хранения информации о чётности, получается примерно 11 TiB, плюс дополнительные расходы zfs, разные в зависимости от размера блока (имеется ввиду параметры volblocksize для zvol и recordsize для dataset). https://docs.google.com/spreadsheets/d/1tf4qx1aMJp8Lo_R6gpT689wTjHv6CGVElrPqT...

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)

В твоём случае, при размере сектора 4KiB и дефолтном для Proxmox volblocksize=8KiB получается, что под метаданные (чётность + выравнивание) съедается 100% от объёма хранимых данных. Таким образом, при общем объёме дисков 16.4 TiB, у тебя остаётся 8.2 TiB полезного места. Сделаешь volblocksize=16k, и полезный объём уже будет 11 TiB.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

В твоём случае, при размере сектора 4KiB и дефолтном для Proxmox volblocksize=8KiB получается, что под метаданные (чётность + выравнивание) съедается 100% от объёма хранимых данных.

Привет! Можешь про это подробнее рассказать? Что тут с выравниванием происходит?

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 2)
Ответ на: комментарий от Harliff

ZFS выделяет место кусками, кратными p+1 секторов (где p - уровень избыточности, 1 для raidz1, 2 для raidz2), добавляя пустые сектора, если это требуется.

RaidZ1 пишет как минимум 1 сектор чётности на блок, и как минимум 1 сектор чётности на страйп.

Таким образом, для блока в 1 сектор пишется ещё один сектор чётности.

Если размер блока равен 2 секторам, в случае с raidz1 запись такого блока займёт 4 сектора (2 сектора данных, 1 сектор чётности и 1 пустой сектор).

Для блока в 3 сектора оверхед будет таким же, потому что придётся записать ещё 1 сектор чётности - иначе выход 1 из 3 дисков из строя повредит данные (итого 2 сектора данных, 1 сектор чётности, 1 сектор данных, 1 пустой сектор, 1 сектор чётности).

Запись блока в 4 сектора выглядит так: 2 сектора данных, 1 сектор чётности, 2 сектора данных, 1 сектор чётности.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)