Utilización de Java, ¿cómo se obtiene la cantidad de espacio libre en un sistema de archivos ZFS de Solaris?
Pregunta
El uso de java, ¿cómo se obtiene la cantidad de espacio libre en un sistema de archivos ZFS de Solaris?
Tengo un X4140 SunFire con disco duro incorporado montada como /. También tiene un JBOD conectado con 7.6TB de espacio de disco duro, configurado como un sistema de archivos ZFS y montada como / aplicación.
Yo uso java.io.File.getUsableSpace o java.io.File.getFreeSpace para obtener la cantidad de espacio libre en el sistema de archivos. On / (el de a bordo) HDD FS funciona correctamente.
On / app (la partición ZFS) File.getFreeSpace, File.getUsableSpace y File.getTotalSpace todo devuelven 0 (cero). ¿Alguien sabe por qué? Cómo funciona el java.io.File.getUsableSpace en ZFS, y si es así, ¿cómo?
A continuación se muestra el sistema de archivos ZFS en la máquina en cuestión:
/ usr / sbin / zfs list
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 -
Solución
No sé por qué, pero es posible que echar un vistazo a libzfs , que envolturas de comandos de ZFS en un bonito API java
Otros consejos
El comando df-KP devuelve el espacio libre, pero la forma más universal es utilizar
Apache Commons IO FileSystemUtils.freeSpaceKb ( "/ volumen");
se utiliza df, así como dir para Windows
¿Qué significa el "DF" informe de mando? Es que también no informar de espacio libre en ZFS correctamente?