Wie kann man für den Befehl „zfs create -V“ problemlos den gesamten verfügbaren Speicherplatz freigeben?

Wie kann man für den Befehl „zfs create -V“ problemlos den gesamten verfügbaren Speicherplatz freigeben?

Ich muss ein ext4-FS über einen Zpool erstellen. Ich wollte den gesamten (oder fast den gesamten) verfügbaren Speicherplatz nutzen, wie unten gezeigt.

# 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   -

Mein Problem ist, dass „1,75 T“ nicht als Datenträgergröße akzeptiert wird. (Aber es wird als Größe angezeigt.) Der Wert wird auf 0,01 T gerundet, was 10 G entspricht. Als Nächstes habe ich versucht, die verfügbare Größe in Bytes, MBytes oder GBytes oder Blöcken oder praktisch allem zu erhalten, was mir die genaue Größe angibt und mit „zfs create -V“ verwendet werden kann. Ich war überrascht, als ich sah, dass es dafür keine Option „zfs get“ gibt. Laut den Dokumenten sollte die Option „-H“ „Ausgaben in einer Form anzeigen, die von Skripten leichter analysiert werden kann“. Sie hat die Kopfzeilen weggelassen und Tabulatoren verwendet, um die Felder zu trennen, aber die Formatierung ist schlecht. Die Größe wird immer noch in TBytes angezeigt und mit einer Genauigkeit von +/- 10 G gerundet. Kleineres Problem, aber es wird mit dem aktuellen Gebietsschema formatiert (in meinem Fall wird der Dezimalpunkt „.“ durch "," ersetzt). Es wäre eine Ganzzahl in KBytes.

Bitte beachten Sie, dass der Befehl „df“ in diesem speziellen Fall nicht verwendet werden kann, da nichts gemountet ist. Ich könnte Folgendes tun, um freie Blöcke in KBytes anzuzeigen:

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

Dies würde jedoch zu einem falschen Ergebnis führen. Wie Sie sehen, ist es jetzt als ZFS-Dateisystem gemountet und der Datensatz verwendet bereits 1 % des verfügbaren Speicherplatzes. Dies sagt mir nicht die genaue Größe, die zum Erstellen eines neuen Ext4-Volumes verfügbar ist. (Die Option -V ist obligatorisch – wenn Sie sie nicht angeben, kann ext4.mkfs es nicht formatieren.)

Natürlich kann ich jederzeit einen Versuch machen, etwa so:

# 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

An diesem Punkt kann ich sicher sein, dass höchstens 1 GB Speicherplatz ungenutzt bleibt. Das istsehr ungeschickt. Damit kann ich leben, aber ich muss bei einer Reihe zukünftiger Laufwerke dasselbe tun.

Gibt es eine bessere Möglichkeit, „den gesamten verfügbaren Platz zu nutzen“ für die Erstellung einesfeste GrößeVolumen?

verwandte Informationen