Можно ли смешивать зоны с включенным и отключенным DNSSEC в BIND?

На самом деле место освобождается файловой системой, но размер файла лишь временно уменьшается до 0 до следующей записи процессом, который все еще имеет открытый файл. В этот момент размер увеличивается до предыдущего размера плюс вновь записанные данные, но теперь у вас есть разреженный файл, где начало файла заполнено условными нулями, которые не занимают места на диске.

Вы можете увидеть этот эффект с помощью простого теста. Создайте большой файл, который медленно обновляется каждые 10 секунд:

$ { dd count=1k if=/dev/zero; while sleep 10;do echo hi; done; } >/tmp/big &
  [2] 1050
$ pid=$!

Проверьте его размер и используемое дисковое пространство:

$ ls -ls /tmp/big
  516 -rw-r--r-- 1 meuh users 524516 Aug 15 15:58 /tmp/big
$ du -a /tmp/big
  516     /tmp/big
$ df /tmp
  Filesystem     1K-blocks  Used Available Use% Mounted on
  tmpfs            1966228  2924   1963304   1% /tmp

Файл имеет размер 524516 байт, 516 блоков, а файловая система использовала 2924 блока. Теперь используйте команду >, чтобы усечь файл, и сразу же проверьте размер:

$ > /proc/$pid/fd/1; ls -ls /tmp/big
  0 -rw-r--r-- 1 meuh users 0 Aug 15 15:59 /tmp/big

Он равен нулю. Через 10 секунд проверьте снова:

$ ls -ls /tmp/big
  4 -rw-r--r-- 1 meuh users 524534 Aug 15 15:59 /tmp/big
$ df /tmp
  Filesystem     1K-blocks  Used Available Use% Mounted on
  tmpfs            1966228  2416   1963812   1% /tmp

Как видите, место на диске освободилось (с 2924 до 2416 использованных), но размер файла остался прежним, плюс немного, но количество блоков, которые он занимает (4, первое число ls -ls), невелико, отсюда и разреженность. lsof -p $pid также показывает смещение, а не размер.

2
21.07.2015, 20:13
0 ответов

Теги

Похожие вопросы