Я собираюсь полностью перефразировать этот вопрос, поскольку несколько месяцев спустя он все еще остается нерешенным.
У меня есть коробка FreeNAS 0.7.2, основанная на FreeBSD 7.3-RELEASE-p1, работающая с ZFS с 4-мя дисками SATA по 1 ТБ в RAIDz1.
Похоже, что после создания и удаления разреженного файла размером 1 ТБ я потерял 1 ТБ полезного пространства. Это случилось несколько месяцев назад.
В этой таблице представлена текущая ситуация.
command actual expected ok/not ok
du -c 1.47TB used 1.47TB used ok
zfs list used 2.48TB used 1.47TB not ok
avail 206GB avail 1.2TB not ok
zpool list size 3.64TB size 3.64TB ok
used 3.31TB used 1.95TB not ok
avail 334GB avail 1.69TB not ok
Windows right Disk size 2.67TB Disk size 2.67TB ok
click disk, Used 2.47TB Used 1.47 not ok
properties free 206GB free 1.2TB not ok
Windows select total file size total file size
all files, 1.48TB 1.48TB ok
right click,
properties
Задавайте любые вопросы, которые вам нравятся, я могу получить ракушку на коробке откуда угодно.
Очень признателен за любые советы или мысли. Том
Решение в конечном итоге пришло через список рассылки zfs-обсуждения - эта почта.
Похоже, что вывод zfs list -t snapshot
изменился в какой-то момент, и был скрытый снимок, занимающий дополнительное пространство:
There was a change where snapshots are no longer shown by default.
This can be configured back to the old behaviour setting the zpool
"listsnapshots" property to "on"
Otherwise, you need to use the "-t snapshot" list.
But, a much better method of tracking this down is to use:
zfs list -o space
That will show the accounting for all dataset objects.
-- richard
Подумал, что стоит опубликовать это здесь и пометить как ответ, даже после этого времени.
listsnapshots
это свойство, которое только контролирует, будет ли вывод по умолчанию zfs list
показывать снимки или нет. Он не «включает и не отключает моментальные снимки».
Чтобы перечислить все, включая снимки, используйте эту команду:
zfs list -t all
Чтобы вывести только снимки, используйте эту команду:
zfs list -t snapshot
редактировать: вы могли столкнуться с эта ошибка ZFS. Чтобы убедиться, что эта ошибка является причиной, попробуйте еще раз с неразреженным файлом. Ошибка должна возникать только для больших разреженных файлов, например, созданных mkfile
или скопировав из /dev/zero
.
Эта ошибка была исправлена в Solaris, но, возможно, она все еще существует в используемой вами версии FreeBSD.
Между ВЕ существует дельта-файл. Использовать beadm list
чтобы проверить, есть ли у вас БЭ. Когда вы удаляете предыдущий BE, он должен объединить / зафиксировать дельта-данные на диске и освободить это скрытое пространство. Вы можете увидеть пробел обратно только после того, как уничтожите целый набор суб-BE, помеченных как одна и та же дата.
На моей машине обновление статистики использования диска обычно занимает около 15 секунд. Может, тебе просто не хватило терпения.