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

Воздействие дискового кеша на результат linux df

У меня проблема с тем, что результат df ненадежен. Я использую файловую систему xfs на sles 11 sp3.
По сути, существует большая разница (несколько ГБ) между свободным размером до и после очистки дискового кеша. Кто-нибудь знает, почему diskcache использует дополнительное хранилище.
Например:

VideoEdge:/ # df
Filesystem     1K-blocks      Used Available Use% Mounted on
...
/dev/sdb2      870942208 824794856  46147352  95% /mediadb
/dev/sdc1      975746564 924536548  51210016  95% /mediadb1
/dev/sdd1      975746564 153177500 822569064  16% /mediadb2

VideoEdge:/ # echo 3 > /proc/sys/vm/drop_caches 

VideoEdge:/ # df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      870942208 822225756  48716452  95% /mediadb
/dev/sdc1      975746564 923374888  52371676  95% /mediadb1
/dev/sdd1      975746564 148323524 827423040  16% /mediadb2
VideoEdge:/ # df

Как видно из вышеизложенного, после очистки дискового пространства остается больше свободного места.

Мы используем df, чтобы оценить, сколько места можно использовать, и пытаемся удалить старые данные, когда df сообщает, что stporage заполнен на 95%. Поскольку дисковый кеш занимает непредсказуемое дисковое пространство, это вызывает проблемы.

Кто-нибудь знает, почему дисковый кеш будет временно использовать хранилище? Есть ли способ подсчитать, сколько занимает дисковый кеш или максимум, который может занять дисковый кеш?

Мы не хотим очищать кеш диска, который время от времени может сказываться на производительности.

VideoEdge:/ # df
Filesystem     1K-blocks      Used Available Use% Mounted on
rootfs           8259484   5592116   2247724  72% /
udev             2021220       228   2020992   1% /dev
tmpfs            2021220       144   2021076   1% /dev/shm
/dev/sda1        8259484   5592116   2247724  72% /
/dev/sda3      463282160  75389072 387893088  17% /var
/dev/sdb1      104804356     32928 104771428   1% /var/opt/americandynamics/venvr/clipexport
/dev/sdb2      870942208 821370196  49572012  95% /mediadb
/dev/sdc1      975746564 923423496  52323068  95% /mediadb1
/dev/sdd1      975746564 148299180 827447384  16% /mediadb2

/dev/sdb2 on /mediadb type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdc1 on /mediadb1 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdd1 on /mediadb2 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)

Посмотри пожалуйста:

Почему мои файловые системы XFS внезапно занимают больше места и заполняются разреженными файлами?

Это результат функций динамического предварительного выделения в XFS. По сути, это файловые буферы, которые объединяют записи для предотвращения фрагментации файлов. Есть несколько обходных путей.

  • du --apparent-size может быть полезным.
  • Параметры монтирования для файловой системы XFS, как подробно описано в связанный вопрос.

В обоих случаях ваша файловая система находится на опасно заполненном уровне (95% +). Небольшой объем буферного пространства не имеет значения, учитывая, что вы должны использовать его намного ниже 80%. Вы также можете использовать df результаты, потому что это то, что действительно используется в любой момент времени.