Используя java, как вы получаете объем свободного места в файловой системе solaris zfs?
Вопрос
Используя java, как вы получаете объем свободного места в файловой системе solaris zfs?
У меня есть SunFire x4140 со встроенным жестким диском, установленным как / .Он также имеет подключенный JBOD с 7,6 ТБ места на жестком диске, сконфигурированный как файловая система ZFS и смонтированный как / app.
Я использую java.io.File.getUsableSpace или java.io.File.getFreeSpace, чтобы получить объем свободного места в файловой системе.На / (встроенном) жестком диске FS он работает корректно.
В /app (разделе zfs) File.getFreeSpace, File.getUsableSpace и File.getTotalSpace возвращают 0 (ноль).Кто-нибудь знает почему?Работает ли java.io.File.getUsableSpace в ZFS, и если да, то как?
Ниже показана файловая система zfs на рассматриваемом компьютере:
список /usr/sbin/zfs
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 -
Решение
Я не знаю почему, но вы можете взглянуть на libzfs, который оборачивает команду zfs в красивый Java API
Другие советы
Команда df -kP возвращает свободное пространство, но наиболее универсальным способом является использование
Ввод-вывод Apache Commons FileSystemUtils.freeSpaceKb("/объем");
он использует df, а также dir для Windows
Что сообщает команда «df»?Это тоже неправильно сообщает о свободном пространстве на zfs?