xvda1 100% penuh, Apa itu? bagaimana cara memperbaiki?

41

Saya menjalankan contoh Linux pada EC2 (saya memiliki MongoDB dan node.js diinstal) dan saya mendapatkan kesalahan ini:

Cannot write: No space left on device

Saya pikir saya sudah melacaknya ke file ini, di sini adalah output df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1             1032088   1032088         0 100% /

Masalahnya adalah, saya tidak tahu apa file ini dan saya juga tidak tahu apakah file ini bahkan masalahnya.

Jadi pertanyaan saya adalah: Bagaimana cara saya memperbaiki kesalahan "Tidak ada ruang tersisa di perangkat"?

Chris Biscardi
sumber

Jawaban:

67

File itu, /adalah direktori root Anda. Jika itu satu-satunya sistem file yang Anda lihat df, maka itu segalanya. Anda memiliki sistem file 1GB dan 100% penuh. Anda dapat mulai mencari tahu bagaimana ini digunakan seperti ini:

sudo du -x / | sort -n | tail -40

Anda kemudian dapat mengganti /dengan jalur yang menghabiskan sebagian besar ruang. (Mereka akan berada di akhir, terima kasih kepada sort. Perintah mungkin perlu waktu.)

David Schwartz
sumber
19
Untuk mendapatkan output dalam format yang dapat dibaca manusia, Anda dapat menggunakan sudo du -x -h / | sort -h | tail -40(dari jawaban ini ).
mkobit
Bagi mereka yang menggunakan mikro AWS AMI, ini bisa memakan waktu sekitar satu menit untuk berjalan. Sabar!
Dr Rob Lang
apa yang harus dilakukan dengan ini:sort: write failed: /tmp/sortGmL8oF: No space left on device
DOM
1
@duh, Aduh. Cobalah untuk membersihkan beberapa ruang /tmp. Atau, jika Anda harus, persempit langkah demi langkah dengan perintah seperti du -xhs /*.
David Schwartz
du -x -h / | sort -h | tail -40 | sort -h -rdapat digunakan untuk mengurutkan dalam urutan menurun saat menggunakan output yang dapat dibaca manusia.
Vigs
14

Saya tahu saya membalas di utas ini setelah hampir 5 tahun tetapi mungkin membantu seseorang, saya punya masalah yang sama, saya punya contoh m4.xlarge df -h mengatakan bahwa / dev / xvda1 penuh, - 100%

Filesystem      Size  Used Avail Use% Mounted on
udev            7.9G     0  7.9G   0% /dev
tmpfs           1.6G  177M  1.4G  12% /run
/dev/xvda1      7.7G  7.7G     0 100% /
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/1000

Saya mencoba menyelesaikannya di sini adalah langkah-langkahnya

sudo find / -type f -printf '%12s %p\n' 2>/dev/null|awk '{if($1>999999999)print $0;}'

Membantu saya untuk mengetahui bahwa itu adalah kontainer buruh pelabuhan yang berbicara semua ruang saya jadi saya mendorong semua kontainer saya ke registri buruh pelabuhan saya kemudian melakukan sudo rm -rf / var / lib / docker / itu membersihkan ruang saya :) semoga membantu seseorang :)

Memukul
sumber
8

Jika Anda menjalankan instance boot EBS (disarankan) maka Anda dapat meningkatkan ukuran volume root (/) menggunakan prosedur yang saya jelaskan di artikel ini:

Mengubah ukuran Disk Root pada Menjalankan EBS Boot EC2 Instance
http://alestic.com/2010/02/ec2-resize-running-ebs-root

Jika Anda menjalankan instance-store instance (tidak disarankan) maka Anda tidak dapat mengubah ukuran disket root. Anda harus menghapus file atau memindahkan file ke penyimpanan sementara (misalnya, / mnt) atau melampirkan volume EBS dan memindahkan file ke sana.

Berikut ini adalah artikel yang saya tulis yang menjelaskan cara memindahkan basis data MySQL dari disk root ke volume EBS:

Menjalankan MySQL di Amazon EC2 dengan EBS
http://aws.amazon.com/articles/1663

... dan pertimbangkan untuk pindah ke instance boot EBS. Ada banyak alasan mengapa Anda akan berterima kasih pada diri sendiri nanti.

Eric Hammond
sumber
Saya menggunakan EBS, cukup murah untuk memperluas disk root, kan? Untungnya saya tidak harus berurusan dengan MySQL, proyek saya saat ini adalah Mongo / Redis. beberapa bahan bagus di sini. +1
2

Saya baru-baru ini mengalami masalah ini di Amazon Linux. Antrian email keluar crontab saya /var/spool/clientmqueueadalah 4,5GB.

Saya menyelesaikannya dengan:

  1. Menemukan file besar: sudo find / -type f -size +10M -exec ls -lh {} \;
  2. Menghapus file besar: /bin/rm -f <path-to-large-file>
  3. Mulai ulang server contoh

Masalah terpecahkan!

Gabe Karkanis
sumber
1

Saya baru saja menyelesaikan masalah itu dengan menjalankan perintah ini:

sudo apt autoremove

dan banyak paket lama dihapus, membebaskan 5 gigabyte, misalnya ada banyak paket seperti ini "linux-aws-headers-4.4.0-1028"

Paulo
sumber