Как легко выделить все доступное пространство для команды «zfs create -V»?

Как легко выделить все доступное пространство для команды «zfs create -V»?

Мне нужно создать ext4 fs поверх zpool. Я хотел использовать все (или почти все) доступное пространство, как показано ниже.

# zpool list
NAME      SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
nat2012  1,81T   124K  1,81T        -         -     0%     0%  1.00x    ONLINE  -
# zfs list
NAME      USED  AVAIL     REFER  MOUNTPOINT
nat2012   105K  1,76T       24K  none
# zfs create -V 1.75T nat2012/backup
bad volume size '1.75T': invalid numeric suffix '.75T'
# zfs get avail nat2012
NAME     PROPERTY   VALUE  SOURCE
nat2012  available  1,76T  -
# zfs get -H avail nat2012
nat2012 available   1,76T   -

Моя проблема в том, что "1.75T" не принимается как размер тома. (Но отображается как размер.) Его значение округляется до 0.01T, что составляет 10G. Следующее, что я попробовал, это получить доступный размер в байтах, Мбайтах или ГБайтах или блоках, или практически в чем угодно, что сообщает мне точный размер и может быть использовано с "zfs create -V". Я был удивлен, когда увидел, что для этого нет опции "zfs get". Согласно документации, опция "-H" должна "отображать вывод в форме, более легко анализируемой скриптами". Она опускает заголовки и использует табуляции для разделения полей, но форматирование плохое. Размер по-прежнему отображается в ТБайтах и ​​округляется с точностью +/- 10G. Меньшая проблема, но он отформатирован с использованием текущей локали (в моем случае десятичная точка "." заменена на ","). Это будет целое число в КБайтах.

Обратите внимание, что команда "df" не может быть использована в этом конкретном случае, поскольку ничего не смонтировано. Я мог бы сделать это, чтобы отобразить свободные блоки в килобайтах:

# mkdir -p /nat2012
# zfs set mountpoint=/nat2012 nat2012
# df -k | grep nat2012
nat2012        1885339520        128 1885339392   1% /nat2012

Но это даст ложный результат. Как видите, теперь он смонтирован как файловая система zfs, и набор данных уже использует 1% доступного пространства. Это не говорит мне точный размер, который доступен для создания нового тома ext4. (Опция -V обязательна — если вы ее не укажете, то ext4.mkfs не сможет его отформатировать.)

Конечно, я всегда могу провести эксперимент, например, такой:

# zfs create -V 1760G nat2012/backup
cannot create 'nat2012/backup': out of space
# zfs create -V 1755G nat2012/backup
cannot create 'nat2012/backup': out of space
# zfs create -V 1750G nat2012/backup
cannot create 'nat2012/backup': out of space
# zfs create -V 1740G nat2012/backup
# zfs destroy nat2012/backup
# zfs create -V 1745G nat2012/backup
cannot create 'nat2012/backup': out of space
# zfs create -V 1744G nat2012/backup
cannot create 'nat2012/backup': out of space
# zfs create -V 1743G nat2012/backup

На данный момент я могу быть уверен, что неиспользованным осталось максимум 1G. Этоочень неуклюжий. Я могу с этим жить, но мне придется делать то же самое для нескольких поездок в будущем.

Есть ли лучший способ «использовать все доступное пространство» для созданияисправленный размеробъем?

Связанный контент