У меня есть пул из 28 2TB-дисков (56T) в 4 массивах по 7 дисков. Поскольку это raidz1 (~ RAID5), я бы ожидал, что для контроля четности в каждом массиве будет использоваться 1 диск, поэтому итоговый объем должен быть 2 ТБ * 4 * (7-1) = 48 ТБ, верно?
Итак, что я вижу в своей системе:
$ zpool list volume
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
volume 50.5T 308K 50.5T 0% 1.00x ONLINE -
$ zfs list volume
NAME USED AVAIL REFER MOUNTPOINT
volume 2.00T 40.3T 75.8K /volume
$ df -h /volume
Filesystem Size Used Available Capacity Mounted on
volume 42T 75K 40T 1% /volume
Итак, вместо 48 зубьев всего 42 зуба. Где пропавшие 6 ТБ? А откуда цифра 50,5Т?
Диск емкостью 2 ТБ - это не 2 ТиБи - это всего 2 * 10 ^ 12/2 ^ 30 ~ 1862 ГиБи.
4 массива по 6 эффективных дисков в каждом будут 24 * 1862 = 44703 ГиБи, или 43,6 ТиБи реальной полезной памяти.
Я считаю, что это связано с некоторыми дополнительными накладными расходами, которые вы не учитываете - IIRC RAIDZ также выполняет снимки и очистку, которые занимают дополнительное место.
Чтобы прояснить несоответствие вывода между командами:
В zpool
команда считает диски, которые используются для резервирования, как пространство, в то время как zfs
команда не работает; таким образом, число 50,5 ТБ - это ваш необработанный размер диска, а 42T - это после удаления 4 дисков для резервирования.
Производители жестких дисков измеряют размер диска в Base 10. Компьютеры измеряют байты в Base 2.
Должно быть сказано 42 TiB, чтобы уточнить использование в СИ префикса тера-.