Saya menggunakan Dirvish pada sistem server Ubuntu untuk membuat cadangan hd ke drive usb 3.0 eksternal. Sampai beberapa hari yang lalu, semuanya bekerja dengan baik, tetapi sekarang setiap cadangan gagal dengan "tidak ada ruang yang tersisa pada perangkat (28)" dan "sistem file penuh". Sayangnya itu tidak sesederhana itu: Ada> 500 GB gratis pada perangkat.
Detail:
rsync_error:
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename1>.eDJiD9": No space left on device (28)
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename2>.RHuUAJ": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename3>.9tVK8Z": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename4>.t3ARSV": No space left on device (28)
[... some more files ...]
rsync: connection unexpectedly closed (2712185 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
log terlihat cukup seperti biasanya sampai menyentuh:
<SomeFilename1>
<SomeFilename2>
<SomeFilename3>
<SomeFilename4>
<PartOfAFilename>filesystem full
write error, filesystem probably full
broken pipe
RESULTS: warnings = 0, errors = 1
Tetapi, seperti dikatakan di atas, ada banyak ruang pada perangkat:
df -h
/dev/sdg1 2.7T 2.0T 623G 77% /mnt/backupsys/shd
dan juga ada banyak inode yang tersisa:
df -i
/dev/sdg1 183148544 2810146 180338398 2% /mnt/backupsys/shd
Perangkat terpasang sebagai rw:
mount
/dev/sdg1 on /mnt/backupsys/shd type ext3 (rw)
Proses berjalan sebagai root.
Saya hampir mengatakan bahwa saya belum mengubah apa pun tetapi itu tidak sepenuhnya benar: Saya telah mengaktifkan acl untuk drive yang saya cadangkan:
/dev/md0 on /mnt/md0 type ext4 (rw,acl)
Mungkinkah itu masalahnya? Jika ya, bagaimana? root masih memiliki akses penuh ke file.
EDIT:
Saya baru saja memeriksa direktori temp:
- / tmp hanya berisi folder .webmin yang kosong
- / var / tmp kosong
sistem file tempat direktori-direktori ini berada memiliki banyak ruang dan inode bebas:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 289G 55G 220G 20% /
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 19202048 167644 19034404 1% /
EDIT2:
Direktori ini cukup besar, tetapi tidak> 2 GB. Yang mana cadangan gagal bahkan bukan yang terbesar, itu berisi 7530 file.
EDIT3:
Satu informasi yang saya anggap tidak relevan ketika memposting pertanyaan ini:
Sehari sebelum cadangan mulai gagal, saya telah mengaktifkan ACL pada sistem file yang dicadangkan. Saya berasumsi sekarang bahwa ini memicu Dirvish (atau rsync) untuk berpikir semua file telah berubah sehingga daftar file yang akan disalin daripada yang ditautkan sangat besar. Ini bisa berarti beberapa buffer terlalu kecil.
Saat ini, cadangan lengkap ke disk kosong berfungsi dengan sempurna. Saya akan mencoba cadangan tambahan berikutnya. Ini akan menunjukkan apakah mengaktifkan ACL adalah penyebab masalahnya.
sumber
Jawaban:
Kecurigaan saya (lihat EDIT3) ternyata benar: Menambahkan dukungan acl ke sistem file membuat rsync / dirvish berpikir bahwa semua file telah berubah. Jadi alih-alih membuat cadangan tambahan dan hanya membuat tautan keras ke file yang sudah ada, ia mencoba membuat cadangan lengkap yang tentu saja gagal karena hard disk tidak memiliki cukup ruang untuk itu.
Jadi pesan kesalahan itu sebenarnya benar.
Setelah memulai kembali dengan disk cadangan kosong, cadangan tambahan berfungsi seperti sebelumnya.
sumber
Melihat 2% inode yang tersisa membuat saya berpikir tentang cadangan root yang diberlakukan sistem file EXT. Anda mungkin ingin memeriksa ini:
Saya akan mencoba .tar.gz beberapa cadangan lama dengan harapan akan mengurangi jumlah inode yang digunakan.
sumber
df
keluaran sebelum-terakhir adalah persentase dari Inode yang digunakan, sehingga 2% dari Inode digunakan, dan 98% dibiarkan.Saya melihat bahwa dummzeuch menemukan solusi untuk masalahnya tetapi sebenarnya ada satu lagi kasus yang saya temukan di mana disk dapat memiliki cukup inode / ruang kosong dan masih menunjukkan "tidak ada ruang yang tersisa pada perangkat" ketika mencoba untuk mentransfer direktori tertentu.
Hal ini disebabkan oleh tabrakan hash pada perangkat blok yang diformat dengan sistem file ext4 di mana pengindeksan direktori diaktifkan juga terutama di mana direktori tunggal menampung lebih dari 100 ribu file di dalamnya dan nama file dihasilkan dari algoritma yang sama (file cache, nama file md5sum, dll. .)
Solusi adalah mencoba dengan algoritma pengindeksan direktori lain:
atau untuk menonaktifkan pengindeksan direktori sepenuhnya untuk perangkat blok itu (dapat merusak kinerja)
Solusi lain adalah melihat apa yang mengisi direktori dengan file-file tersebut dan memperbaiki perangkat lunak.
Solusi yang mungkin adalah membagi konten folder dengan volume file yang besar di dalamnya ke beberapa subfolder terpisah.
Deskripsi lengkap masalah disajikan oleh Axel Wagner di sini
http://blog.merovius.de/2013/10/20/ext4-mysterious-no-space-left-on.html
Bersulang.
sumber
Ada batas ukuran 2GB pada direktori itu sendiri - yaitu jika Anda memiliki banyak file sehingga ukuran direktori> 2GB (BUKAN ukuran file DI direktori), Anda akan memiliki masalah. Karena itu, dengan hanya 2,8M inode yang digunakan, itu seharusnya tidak menjadi masalah. Biasanya terjadi sekitar 15M inode.
Jadi ini mungkin tidak banyak membantu - tetapi coba ext4 di perangkat cadangan Anda?
sumber
find /mnt/backupsys/shd -type d -exec ls -ld {} \;
untuk melihat ukuran sebenarnya dari direktori.Tingkatkan batas pemirsa Inotify Anda di sysctl:
Dan reboot, atau lakukan
sysctl -w
versi itu juga.Itu biasanya akan melakukannya. Sesuatu memiliki terlalu banyak file yang terbuka di kernel, dan kesalahannya sangat menyesatkan. Dropbox adalah contoh klasik dari ini.
sumber
Saya sarankan Anda untuk memeriksa beberapa hal lain:
sumber
Saya baru saja menemukan topik ini saat mencari solusi untuk masalah saya.
Memang ada setidaknya alasan lain untuk ENOSPC. Dan saya membukanya dengan rsync juga, sambil menyalin dari sistem file ZFS ke yang EXT4:
Pada kasus ini:
man 7 xattr
menjelaskan:Dalam kasus saya, itu berarti saya harus memformat ulang seluruh sistem file. :-(
sumber