
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?