Di luar ruang disk, apa sumbernya?

17
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G  220G     0 100% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G  220G     0 100% /var/lib/ureadahead/debugfs

sementara panik mencari jawaban setelah berapa lama usia penggunaannya menurun

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G  9.3G  200G   5% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G  9.3G  200G   5% /var/lib/ureadahead/debugfs

Saya belum menghapus apa pun sejauh ini dan dan sekarang saya menulis ini kembali

/dev/sda1             220G   12G  197G   6% /

Apa yang terjadi?? Bagaimana saya bisa menyelidiki penyebab dan mengatur hal-hal sehingga tidak terjadi lagi saya mencegah hal ini terjadi lagi

Selama penggunaan pijat saya menemukan bahwa ukuran folder / var konstan pada 1,8 gigs tetapi saya tidak dapat memeriksa semua folder

sunting naik ke

/dev/sda1             220G   18G  192G   9% /

* Perbarui 2 * Ini akan naik lagi

ubuntu /: df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             220G   43G  167G  21% /
none                  1.9G  168K  1.9G   1% /dev
none                  1.9G     0  1.9G   0% /dev/shm
none                  1.9G   52K  1.9G   1% /var/run
none                  1.9G     0  1.9G   0% /var/lock
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  220G   43G  167G  21% /var/lib/ureadahead/debugfs

Dan memeriksa perintah saya diberikan

ubuntu /: du -h --max-depth=1 /
31M     /boot
4.0K    /selinux
8.0K    /srv
7.4M    /bin
du: cannot access `/proc/9993/task/9993/fd/4': No such file or directory
du: cannot access `/proc/9993/task/9993/fdinfo/4': No such file or directory
du: cannot access `/proc/9993/fd/4': No such file or directory
du: cannot access `/proc/9993/fdinfo/4': No such file or directory
0       /proc
12K     /tmp
2.4G    /var
0       /sys
100K    /root
4.0K    /media
575M    /usr
4.0K    /opt
16K     /lost+found
4.5M    /home
270M    /lib
168K    /dev
4.0K    /mnt
6.7M    /sbin
6.1M    /etc
4.0K    /cdrom
3.3G    /

perhatikan 3.3G untuk /

Moak
sumber

Jawaban:

16

Saya pikir Anda memiliki sesuatu yang menulis ke file yang telah dihapus dari drive tetapi belum ditutup oleh aplikasi / server, sehingga ruang tetap dialokasikan pada disk tetapi tidak dapat dilihat dukarena file tersebut dihapus dari sistem file. The lsofdaftar Program proses yang memiliki file terbuka. Jika Anda memiliki lebih banyak filesystem yang di-mount dan jumlahnya tidak terlalu berfluktuasi, maka saya akan menyarankan agar Anda memiliki filesystem yang dipasang di atas direktori yang tidak kosong (walaupun Anda dapat mencoba umount /var/lib/ureadahead/debugfsdan memastikan direktori itu kosong dan tidak ada banyak sampah yang ditulis ke direktori bersembunyi di bawah mountpoint itu).

Jika ini masalahnya, maka Anda harus dengan mudah menemukannya sudo lsof | grep deleted. lsoftermasuk (deleted)dalam kolom terakhir jika file telah dihapus saat proses masih terbuka. Kolom pertama adalah nama perintah, kolom kedua adalah PID. Anda bisa mendapatkan tampilan yang lebih detail pada perintah yang digunakan psmisalnya ps auxww | grep PID, atau ps auxwwf | less -Suntuk melihat daftar proses dalam mode "forest" sehingga Anda dapat melihat proses dari mana PID itu berasal. Setelah Anda melacak proses yang menahan file raksasa terbuka, Anda dapat menghentikannya untuk membebaskan ruang drive, lalu mencari cara memperbaikinya untuk menutup file dengan benar. Penyebab umum dari hal ini adalah skrip logrotate yang mengubah nama / menghapus file log tetapi tidak memberi tahu aplikasi yang telah melakukannya (baik melalui sinyal yang sesuai dengankill atau dengan me-restart aplikasi), sehingga aplikasi terus membuka file log lama.

DerfK
sumber
Terima kasih. Saya berlari lsof | grep deleteddan melihat file log 33GB! Membunuh proses dan ruang disk kembali.
ekawas
Terima kasih! Selama ini saya menghapus beberapa database mongodb tetapi mongodb tidak merilisnya. Saya baru saja me-restart mongodb dan sekarang saya memiliki lebih dari 35GB. \ o /
iurisilvio
7

Lari

du -h --max-depth=1 /

Dan itu harus memberikan gambaran yang lebih jelas. Jika itu datang dan pergi itu terdengar seperti file temp sedang dibuat dan kemudian tidak dihapus setelah selesai, sampai proses mana pun yang menyebabkannya crash. OS apa yang dijalankan server ini dan apakah menjalankan sesuatu yang khusus?

anthonysomerset
sumber
itu ubuntu menjalankan LAMP dan tidak lebih
Moak
5

Sepertinya masalahnya /var/lib/ureadahead/debugfs. Tampaknya ini adalah masalah yang diketahui, berikut adalah tautan ke ubuntuforums dengan informasi lebih lanjut http://ubuntuguide.net/howto-fix-ureadahead-problem-after-upgrading-to-ubuntu-10-04 . Tl; dr tampaknya memperbarui dan memutakhirkan sudo mv /etc/init.d/ureadahead.conf /etc/init.d/ureadahead.conf.disabled,, lalu reboot. Tentu saja, saya berasumsi Anda menjalankan 10,04.

slillibri
sumber
Ya saya sedang renungan Lucid Lynx 10.04, terima kasih
Moak
Setelah membaca ini sepertinya bukan ide yang baik untuk hanya menghapus fitur itu. Apakah ada cara untuk membatasi ukuran pertumbuhannya?
Moak
Setelah sedikit lebih mencari, saya menemukan ini somewhereville.com/?p=1370 , yang referensi yang dikenal dan tetap bug di mountall sini bugs.launchpad.net/ubuntu/+source/mountall/+bug/736512 .
slillibri
3

Dugaan saya adalah file log; Saya memiliki begitu banyak PHP 5.3 "usang" peringatan di log Apache saya pada server dev yang saya tidak benar-benar memperhatikan bahwa itu mengunyah semua ruang 8GB pada partisi var saya (sebagai bilah sisi masalah: Anda harus selalu letakkan / var di partisi terpisah yang kehabisan ruang partisi root Anda dapat menyebabkan masalah ketidakstabilan sistem).

gravyface
sumber
3

Jika ruang dikonsumsi sangat cepat (tidak dalam usia), itu mungkin hanya alokasi file.

Penyebabnya bisa berupa pertukaran besar atau file sementara untuk beberapa aplikasi, yang dikosongkan setelah prosesnya.

Lakukan du --max-length=1ketika ruang banyak dikonsumsi.

Jika Anda merasa folder root Anda mengambil terlalu banyak (3,3 GB) coba ll-a / dan posting hasilnya.

AbiusX
sumber
1
sebenarnya root adalah jumlah dari folder-folder itu
Moak
1

Sepertinya /var/lib/ureadahead/debugfsmungkin ikan hering merah. Inilah sebabnya ...

Meskipun /var/lib/ureadahead/debugfsmemang ada di /etc/mtab, itu tidak ditemukan di /proc/mounts:

$ mount | grep debug
none on /sys/kernel/debug type debugfs (rw)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)

$ cat /proc/mounts | grep debug
none /sys/kernel/debug debugfs rw,relatime 0 0

The dfperintah tampaknya melaporkan hal yang sama untuk /var/lib/ureadahead/debugfsdan/

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   1681128   8115792  18% /
none                    830388       120    830268   1% /dev
none                    880752         0    880752   0% /dev/shm
none                    880752        60    880692   1% /var/run
none                    880752         0    880752   0% /var/lock
none                    880752         0    880752   0% /lib/init/rw
none                  10321208   1681128   8115792  18% /var/lib/ureadahead/debugfs
/dev/sdb             153899044    192068 145889352   1% /mnt

Membuat file 1GB di /tmp:

$ dd if=/dev/zero of=/tmp/carypjunk.out bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 52.7234 s, 20.4 MB/s

Menunjukkan ukuran yang dilaporkan di kedua tempat:

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   2730216   7066704  28% /
none                    830388       120    830268   1% /dev
none                    880752         0    880752   0% /dev/shm
none                    880752        60    880692   1% /var/run
none                    880752         0    880752   0% /var/lock
none                    880752         0    880752   0% /lib/init/rw
none                  10321208   2730216   7066704  28% /var/lib/ureadahead/debugfs
/dev/sdb             153899044    192068 145889352   1% /mnt

Jadi, sepertinya /var/lib/ureadahead/debugfsperangkat adalah herring merah karena hanya mencerminkan statistik dari /. Jika Anda kehabisan ruang, itu karena sesuatu yang mengisi sistem root Anda. Saya akan memeriksa / var / log Anda terlebih dahulu.

caryp
sumber
Ah, benar sekali. Saya melewatkan korelasinya! Sayang sekali aku menghentikan instansinya jadi aku tidak bisa menyelidiki apa yang tumbuh terlalu cepat.
Aaron Gibralter
0

Masalahnya diprakarsai oleh tugas cron mengeksekusi perintah php CLI setiap menit. Kode PHP tampaknya terjebak dalam semacam loop kegilaan dari kesalahan yang ditangkap dan sejumlah besar data debug tumbuh pada kecepatan prosesor.

Karena kode php yang dieksekusi membutuhkan waktu lebih dari satu menit, itu tidak mempertimbangkan pekerjaan yang dilakukan, itu terus mengeksekusi lagi dan lagi meningkatkan kecepatan pertumbuhan data (sementara?).

Tugas yang sama telah berjalan selama hampir satu bulan tanpa masalah, jadi itu tidak ada dalam pikiran saya sebagai penyebabnya.

Yang aneh adalah bahwa script php menetapkan waktu eksekusi maks secara manual

Saya memeriksa petunjuk php.ini

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpect$
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60

Dikatakan bahwa nilai-nilai hardcoded ke tak terbatas untuk CLI! O_o

Moak
sumber