TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
BashTex | Linux

15 Sep, 15:07

Open in Telegram Share Report

du vs df: почему Linux показывает разный размер диска

Иногда ситуация выглядит странно:

df -h /

показывает, что занято 80 GB.

А:

du -sh /

находит только 55 GB.

Кажется, что Linux «потерял» 25 GB. На самом деле du и df измеряют разные вещи.

▪️Что считает df
df смотрит на файловую систему и её блоки:

df -h /

Он показывает, сколько места файловая система считает занятым и свободным.

▪️Что считает du
du обходит дерево каталогов и суммирует пространство, связанное с найденными файлами:

du -xhd1 / 2>/dev/null

-x здесь важен: он не позволяет уйти на другие файловые системы.

▪️Одна из главных причин расхождения
Процесс может держать открытым файл, который уже удалили.

Например:

rm /var/log/app.log

Имя файла исчезло из каталога, но процесс всё ещё держит его открытым.
Для du такого файла уже не существует.
А файловая система продолжает считать его блоки занятыми.
Проверить:

lsof +L1

Можно увидеть что-то вроде:

app 1234 ... /var/log/app.log (deleted)

Пока процесс не закроет этот дескриптор, место может не освободиться.

▪️Есть и другие причины
Например, du без -x может пересекать mount points и давать неожиданный результат.
Или часть пространства файловой системы зарезервирована и не доступна обычным пользователям.

Посмотреть файловую систему подробнее:

findmnt /
df -h /
df -i /

▪️Практический сценарий
На сервере внезапно заканчивается место:

df -h /

Показывает:

/dev/sda2 100G 95G 5G 95% /

Но:

du -xsh /

показывает только 70G.

Первое, что стоит проверить:

lsof +L1

Если там огромный (deleted) лог, причина найдена.

▪️Важный нюанс
df отвечает примерно на вопрос:

«Сколько блоков файловой системы сейчас занято?»

А du:

«Сколько места занимают доступные мне файлы в этом дереве?»

Поэтому при расхождении df и du не стоит сразу запускать rm -rf по большим каталогам.

Сначала нужно понять, куда именно делось пространство.

BashTex 📱 #bash #systemd

470 0 26 6
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot