Wie erhalten Sie mit Java die Menge an freiem Speicherplatz auf einem Solaris -ZFS -Dateisystem?
Frage
Wie erhalten Sie mit Java die Menge an freiem Speicherplatz auf einem Solaris -ZFS -Dateisystem?
Ich habe einen Sunfire X4140 mit eingebauten Festplatten als /. Es verfügt außerdem über einen verbundenen JBOD mit 7,6 TB HDD -Speicherplatz, als ZFS -Dateisystem konfiguriert und als /App montiert.
Ich verwende java.io.file.getusablespace oder java.io.file.getFreespace, um die Menge an freiem Speicherplatz im Dateisystem zu erhalten. ON / (das On-Bord) HDD fs es funktioniert korrekt.
On /App (die ZFS -Partition) Datei.getFreeSespace, File.getUsableSpace und Datei.GetTotalSpace Alle Rückgabe 0 (Null). Weiß jemand warum? Funktioniert Java.io.file.getUsableSpace auf ZFS, und wenn ja, wie?
Das Folgende zeigt das ZFS -Dateisystem auf der betreffenden Maschine:
/usr/sbin/ZFS -Liste
NAME USED AVAIL REFER MOUNTPOINT
internal 196K 98.4G 1K none
internal/logs 18K 98.4G 18K /logs
j4200-1 442G 7.57T 2.44K none
j4200-1/app 442G 7.57T 153M /app
j4200-1/app@first 442G - 442G -
Lösung
Ich weiß nicht warum, aber Sie können sich ansehen libzfs, das wickelt den ZFS -Befehl in einer schönen Java -API ein
Andere Tipps
Der Befehl df -KP gibt den freien Speicherplatz zurück, aber der universellste Weg ist die Verwendung
Apache Commons io DateiSystemStemutils.FreespaceKB ("/Volumen");
Es verwendet DF sowie DIR für Windows
Was berichtet der Befehl "df"? Melden Sie das auch nicht richtig freien Speicherplatz auf ZFS?