Bagaimana cara membersihkan daftar inode anak yatim yang belum diproses?

17

Saya mencoba untuk me-mount sebelumnya dibaca mount filesystem read-ditulisi :

mount -o remount,rw /mountpoint

Sayangnya itu tidak berhasil:

mount: /mountpoint not mounted already, or bad option

dmesg laporan:

[2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list.  Please umount/remount instead

A umountjuga tidak berfungsi:

umount /mountpoint
umount: /mountpoint: device is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

Sayangnya tidak satupun lsofdari fusermereka tidak menunjukkan proses mengakses sesuatu yang terletak di bawah mount point.

Jadi - bagaimana saya bisa membersihkan daftar anak yatim yang belum diproses ini untuk dapat me-mount sistem file lagi tanpa me-reboot komputer?

bmk
sumber
1
Sudahkah Anda mencoba fuser -km /mountpoint? Namun waspadalah, flag -k akan membunuh semua proses yang mengakses direktori itu.
Richard Keller
Bisakah Anda memberikan sedikit wawasan tentang apa yang terdiri dari dm-0?
thinice
Saya merasa saya tahu apa yang terjadi, tetapi dapatkah Anda memberi tahu saya, apakah filesystem awalnya rw, dibuat ulang (karena kesalahan ata atau apa pun), dan sekarang Anda mencoba mencari lagi?
Matthew Ife
@ MLfe: Sistem file sebelumnya di-remountend rodengan sengaja. Ini adalah sistem file pada LVM yang memegang snapshot cadangan harian yang akan diatur rwselama operasi pencadangan dan rosetelah menyelesaikan pencadangan.
bmk

Jawaban:

6

Anda membersihkan daftar inode anak yatim yang belum diproses dengan melepas dan menghapus kembali sistem file.

Sebuah diskusi diperpanjang dari linux-ext4 mailing list memiliki informasi lebih lanjut tentang apa pesan ini dan mengapa hal itu mungkin muncul. Singkatnya, satu dari dua hal telah terjadi: Entah Anda telah mengalami bug kernel, atau lebih mungkin, beberapa korupsi filesystem terjadi salah satu dari sebelumnya Anda remount sistem file hanya baca. Yang mungkin mengapa sistem berpikir ada sesuatu yang masih menggunakan filesystem ketika tidak ada.

Jika sudah satu tahun dan Anda masih belum me-reboot mesin, menyerah saja dan jadwalkan jendela perawatan.

Michael Hampton
sumber
Sementara itu saya menjadwalkan jendela pemeliharaan dan menyalakan ulang mesin. Itu memecahkan masalah (saya tidak mengharapkan yang lain ...). Saya akan menerima jawaban Anda. Mungkin Anda benar bahwa ada beberapa kerusakan filesystem - meskipun saya tidak dapat membuktikannya.
bmk
24

Jika Anda menggunakan ext2 / ext3 / ext4, Anda seharusnya dapat menggunakannya e2fsckuntuk membersihkan inphon yang tidak asli:

e2fsck -f

Untuk reiserfs, Anda dapat menggunakan reiserfsckyang juga akan membersihkan inode yatim.

Richard Keller
sumber
Tidak yakin mengapa ini diturunkan, mungkin memberikan alasan untuk downvote? Menjalankan e2fsck membersihkan inode yatim, yang akan Anda lihat di output konsol seperti di clearing orphaned inode XXXXmana XXXX adalah nomor inode. Anda dapat dengan mudah menjalankan e2fsck tanpa me-reboot sistem. Setelah menjalankan e2fsck, Anda harus dapat memasang kembali partisi.
Richard Keller
2
Terima kasih, terima kasih banyak .. Saya menghabiskan waktu berjam-jam untuk mencari tahu kesalahannya. Melakukan 'e2fsck -f / dev / sda1' memperbaiki node yatim untuk saya bersama dengan beberapa perbaikan lainnya. Saya hanya mengatakan ya untuk semua dan berfungsi dengan baik sekarang :)
whitehat
1
Terima kasih banyak!!. Perintah Anda diperbaiki hanya dengan disk VirtualBox VM setelah gagal menginstal versi VirtualBox baru: sudo e2fsck -f / dev / sda1
nine9five
2
Sempurna, bekerja untuk saya di partisi root. Jawaban yang diterima (reboot) tidak bekerja sendiri. Saya memang harus reboot setelah e2fsck jadi sepertinya Anda masih membutuhkan jendela pemeliharaan.
AdamS
1
Jawaban yang lebih baik daripada jawaban yang diterima. Itu bekerja dengan sempurna untuk VPS saya. Menemukan banyak kesalahan dan memperbaikinya, daripada mem-boot ulang dan semuanya berjalan kembali. Menyelamatkan hariku.
Brain Foo Long
6

e2fsck -f <mount point> tidak akan bekerja

Pertama temukan titik mount dengan

sudo mount -l

Kemudian fsck drive secara langsung.

Misalnya untuk saya

sudo e2fsck -f /dev/xvda2
Ganesh Krishnan
sumber
Ketika Anda google masalah dan tiba di solusi Anda sendiri di stackoverflow. Hidupku sekarang lengkap.
Ganesh Krishnan
1

Saya akan merekomendasikan untuk pertama-tama melepas partisi dengan paksa, yaitu menggunakan opsi -f, dan menjalankan pemeriksaan sistem file menggunakan fsck.

wolfgangsz
sumber
1
Sayangnya umount -ftidak berhasil juga. Pesan kesalahannya sama dengan pesan biasa umount.
bmk
1

Anda mungkin harus mencoba unmount malas, yaitu:

umount -l

sumber