Làm thế nào để dọn sạch một danh sách inode mồ côi chưa được xử lý?


17

Tôi cố gắng để gắn kết một trước đây là readonly gắn hệ thống tập tin đọc có thể ghi :

mount -o remount,rw /mountpoint

Không may, nó không hoạt động:

mount: /mountpoint not mounted already, or bad option

dmesg báo cáo:

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

A umountcũng không hoạt động:

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))

Đáng tiếc là không phải lsofcủa fuserkhông hiển thị bất kỳ quá trình truy cập vào một cái gì đó nằm dưới điểm lắp.

Vậy - làm thế nào tôi có thể dọn sạch danh sách trẻ mồ côi chưa được xử lý này để có thể gắn lại hệ thống tập tin mà không cần khởi động lại máy tính?


1
Bạn đã thử fuser -km /mountpointchưa Hãy coi chừng, cờ -k sẽ giết tất cả các tiến trình truy cập vào thư mục đó.
Richard Keller

Bạn có thể cung cấp thêm một chút cái nhìn sâu sắc về những gì dm-0 bao gồm?
mỏng

Tôi có cảm giác tôi biết những gì đang xảy ra, nhưng bạn có thể cho tôi biết, hệ thống tập tin ban đầu là rw, được nhắc lại (do lỗi ata hoặc bất cứ điều gì) ro, và bây giờ bạn đang cố gắng để quay lại?
Matthew Ife

@Mlfe: Hệ thống tập tin trước đây được tái hiện rotheo mục đích. Đó là một hệ thống tệp trên LVM giữ ảnh chụp sao lưu hàng ngày sẽ được đặt thành rwtrong quá trình hoạt động sao lưu và rosau khi hoàn tất sao lưu.
bmk

Câu trả lời:


6

Bạn dọn sạch danh sách inode mồ côi chưa được xử lý bằng cách ngắt kết nối và nối lại hệ thống tập tin.

Một cuộc thảo luận mở rộng từ danh sách gửi thư linux-ext4 có thêm thông tin về thông báo này là gì và tại sao nó có thể xuất hiện. Nói tóm lại, một trong hai điều đã xảy ra: Hoặc là bạn đã gặp phải lỗi kernel, hoặc rất có thể, một số lỗi hệ thống tệp đã xảy ra một trong những lần trước bạn đã đọc lại hệ thống tệp chỉ đọc. Đó có lẽ là lý do tại sao hệ thống nghĩ rằng một cái gì đó vẫn đang sử dụng hệ thống tập tin khi không có.

Nếu đó là một năm và bạn vẫn chưa khởi động lại máy, chỉ cần từ bỏ và lên lịch cho một cửa sổ bảo trì.


Trong khi đó tôi đã lên lịch cho một cửa sổ bảo trì và khởi động lại máy. Điều đó đã giải quyết vấn đề (tôi không mong đợi gì nữa ...). Tôi sẽ chấp nhận câu trả lời của bạn. Có lẽ bạn đúng rằng đã có một số tham nhũng hệ thống tập tin - mặc dù tôi không thể chứng minh điều đó.
bmk

24

Nếu bạn đang sử dụng ext2 / ext3 / ext4, bạn sẽ có thể sử dụng e2fsckđể dọn sạch các nút bị mồ côi:

e2fsck -f

Đối với reiserfs, bạn có thể sử dụng reiserfscknó cũng sẽ dọn sạch các nút mồ côi.


Không chắc chắn tại sao điều này đã bị hạ cấp, có lẽ cung cấp một lý do cho downvote? Chạy e2fsck sẽ dọn sạch các nút mồ côi, mà bạn sẽ thấy trong đầu ra của bàn điều khiển vì clearing orphaned inode XXXXtrong đó XXXX là một số inode. Bạn có thể dễ dàng chạy e2fsck mà không cần khởi động lại hệ thống. Sau khi chạy e2fsck, bạn sẽ có thể kết nối lại phân vùng.
Richard Keller

2
Cảm ơn cảm ơn rất nhiều .. Tôi dành hàng giờ để tìm ra lỗi. Làm 'e2fsck -f / dev / sda1' đã sửa các nút mồ côi cho tôi cùng với một số bản sửa lỗi khác. Tôi chỉ nói có với tất cả và làm việc tốt ngay bây giờ :)
trắng

1
Cảm ơn rất nhiều!!. Các lệnh của bạn đã cố định đĩa VirtualBox VM chỉ đọc sau khi cài đặt phiên bản VirtualBox mới không thành công: sudo e2fsck -f / dev / sda1
nin9five

2
Hoàn hảo, làm việc cho tôi trên phân vùng gốc. Câu trả lời được chấp nhận (khởi động lại) không hoạt động một mình. Tôi đã phải khởi động lại sau e2fsck vì vậy có vẻ như bạn vẫn cần một cửa sổ bảo trì.
AdamS

1
Câu trả lời tốt hơn câu trả lời. Điều đó đã làm việc hoàn hảo cho VPS của tôi. Tìm thấy rất nhiều lỗi và sửa nó, hơn là khởi động lại và mọi thứ đang chạy lại. Cứu lấy ngày của tôi.
Brain Foo dài

6

e2fsck -f <mount point> sẽ không làm việc

Trước tiên hãy tìm hiểu các điểm gắn kết với

sudo mount -l

Sau đó fsck ổ đĩa trực tiếp.

Ví dụ cho tôi

sudo e2fsck -f /dev/xvda2

Khi bạn google một vấn đề và đi đến giải pháp của riêng bạn trên stackoverflow. Cuộc sống của tôi bây giờ đã hoàn tất.
Ganesh Krishnan

1

Trước tiên tôi khuyên bạn nên ngắt kết nối phân vùng một cách mạnh mẽ, tức là sử dụng tùy chọn -f và kiểm tra hệ thống tệp đang chạy bằng fsck.


1
Thật không may, umount -fcũng không thành công. Thông báo lỗi giống như với một đồng bằng umount.
bmk

1

Bạn có lẽ nên thử một unmount lười biếng, tức là:

umount -l
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.