pengembangan-web-mp.com

du vs df perbedaan

Saya memiliki server file tempat df melaporkan 94% dari/penuh. Tetapi menurut du, jauh lebih sedikit digunakan:

# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             270G  240G   17G  94% /
# du -hxs /
124G    /

Saya membaca bahwa file yang terbuka tetapi dihapus bisa bertanggung jawab untuk itu tetapi reboot tidak memperbaikinya.

Ini adalah Linux, ext3.

salam

33
Andreas Kuntzagk

Ok, menemukannya.

Saya memiliki cadangan lama di/mnt/Backup di sistem file yang sama dan kemudian drive eksternal dipasang di tempat itu. Jadi du tidak melihat file. Jadi membersihkan ini memberi saya ruang disk saya kembali.

Mungkin terjadi seperti ini: drive eksternal pernah dilepas saat skrip cadangan harian berjalan.

32
Andreas Kuntzagk

Saya tidak berpikir Anda akan menemukan penjelasan yang lebih menyeluruh kemudian tautan ini untuk semua alasan itu bisa dimatikan. Beberapa hal penting yang mungkin membantu:

  • Apa penggunaan inode Anda, jika hampir 100% yang dapat mengacaukan segalanya:

    df -i

  • Berapa ukuran blok Anda? Banyak file kecil dan ukuran blok yang besar bisa sedikit miring.

    Sudo tune2fs -l/dev/sda1 | grep 'Ukuran blok'

  • File yang dihapus, Anda mengatakan Anda menyelidiki ini, tetapi untuk mendapatkan ruang total Anda dapat menggunakan pipa berikut ini (saya lebih suka mencari bukan hanya karena hanya sulit untuk menguraikan):

    Sudo find/proc/*/fd -printf "% l\t% s\n" | grep dihapus | cut -f2 | (tr '\ n' +; echo 0) | bc

Namun, itu hampir 2x. Jalankan fsck di partisi saat tidak di-mount agar aman.

18
Kyle Brandt

Sepertinya ada kasus file yang dihapus sementara proses masih membuatnya terbuka. Putus ini terjadi karena perintah du total ruang file yang ada di sistem file, sementara df menunjukkan blok yang tersedia di sistem file. Blok-blok file yang terbuka dan dihapus tidak dibebaskan sampai file itu ditutup.

Anda dapat menemukan proses apa yang membuka tetapi menghapus file dengan memeriksa/proc

find /proc/*/fd -ls | grep deleted
11
TCampbell

Alasan yang paling mungkin dalam kasus Anda adalah bahwa Anda memiliki banyak file yang sangat kecil (lebih kecil dari ukuran blokir Anda di drive). Dalam hal ini df akan melaporkan jumlah semua blok yang digunakan, sedangkan du akan melaporkan jumlah sebenarnya ukuran file.

8
wolfgangsz

Saya setuju itu

lsof +L 1 /home | grep -i deleted

adalah tempat yang baik untuk memulai, dalam kasus saya, saya perhatikan bahwa saya memiliki banyak skrip Perl yang sedang berjalan, dan menjaga banyak file tetap hidup, meskipun mereka seharusnya dihapus.

Saya membunuh fungsi Perl, dan ini membuat du dan df hampir identik, case ditutup.

7
Sverre

Secara default, ketika Anda memformat sistem file dengan EXT3, 5% drive dicadangkan untuk root. df memperhitungkan cadangan ini ketika melaporkan apa yang tersedia, sementara du menunjukkan apa yang sebenarnya sedang digunakan.

Anda dapat melihat blok yang dipesan dengan menjalankan:

tune2fs -l/dev/sda | grep -i cadangan

dan Anda akan mendapatkan sesuatu seperti:

Reserved block count:     412825
Reserved GDT blocks:      1022
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Jika Anda ingin menyesuaikannya dengan persentase yang lebih rendah, Anda dapat melakukannya dengan sesuatu seperti

tune2fs -m 1/dev/sda

Anda dapat menguranginya menjadi 0, namun karena ini adalah filesystem root Anda, saya akan berhati-hati melakukannya. Jika filesystem benar-benar terisi, hal itu membuat tugas perawatan yang diperlukan untuk membersihkannya menjadi sulit.

1
Alex

Apakah mungkin bahwa du tidak menambah ukuran direktori juga? Namun, sepertinya perbedaan yang BESAR, itu tidak dapat bertanggung jawab untuk semua itu.

0
Brian Knoblauch