En utilisant java, comment obtenez-vous la quantité d'espace libre sur un système de fichiers zfs solaris?
Question
En utilisant java, comment obtenez-vous la quantité d'espace libre sur un système de fichiers zfs solaris?
I ai X4140 SunFire avec disque dur intégré monté en tant que /. Il a également un JBOD connecté avec 7.6TB d'espace disque, configuré comme un système de fichiers ZFS et monté en tant que / app.
J'utilise java.io.File.getUsableSpace ou java.io.File.getFreeSpace pour obtenir la quantité d'espace libre sur le système de fichiers. Le / (le bord) HDD FS fonctionne correctement.
On / app (la partition zfs) File.getFreeSpace, File.getUsableSpace et File.getTotalSpace tout retour 0 (zéro). Quelqu'un sait-il pourquoi? Est-ce que le travail de java.io.File.getUsableSpace sur ZFS, et si oui, comment?
Le tableau suivant montre le système de fichiers sur la machine zfs en question:
/ 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 -
La solution
Je ne sais pas pourquoi, mais vous pouvez être jeter un oeil à libzfs , que enveloppements commande zfs dans une belle API java
Autres conseils
La commande df -kp retourne l'espace libre, mais la manière la plus universelle est d'utiliser
Apache Commons IO FileSystemUtils.freeSpaceKb ( "/ volume");
il utilise df ainsi que dir pour Windows
Qu'est-ce que le rapport de commande « df »? Est-ce pas non plus de rapports d'espace libre sur zfs correctement?