Назад | Перейти на главную страницу

Неожиданно отсутствует свободное место в файловой системе ZFS

Я собираюсь полностью перефразировать этот вопрос, поскольку несколько месяцев спустя он все еще остается нерешенным.

У меня есть коробка 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 секунд. Может, тебе просто не хватило терпения.