zpool 上に ext4 fs を作成する必要があります。以下に示すように、使用可能なスペースをすべて (またはほぼすべて) 使用したいと考えていました。
# 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 に丸められます。次に試したのは、使用可能なサイズをバイト、M バイト、GBytes、ブロック、または実際のサイズを正確に示し、「zfs create -V」で使用できる任意の値で取得することです。そのための「zfs get」オプションがないことに驚きました。ドキュメントによると、「-H」オプションは「スクリプトで解析しやすい形式で出力を表示する」はずです。ヘッダーを省略し、フィールドを区切るためにタブを使用していますが、フォーマットが適切ではありません。サイズは引き続き TBytes で表示され、+/- 10G の精度で丸められます。小さな問題ですが、現在のロケールを使用してフォーマットされます (私の場合、小数点「.」が「,」に置き換えられます)。KBytes では整数になります。
この場合、何もマウントされていないため、「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残っていると確信できます。これはとても不器用今のところはこれで我慢できますが、今後は複数のドライブに対して同じことを繰り返さなければなりません。
「利用可能なスペースをすべて使用して」作成するより良い方法はありますか?固定サイズ音量?