Saturday, August 11, 2012

Sửa chữa file hệ thống linux : ext2 và ext3

Error disk 
EXT3-fs error (device sdb1): ext3_lookup: unlinked inode 77358041 in dir #77332481
EXT3-fs error (device sdb1): ext3_lookup: unlinked inode 77358040 in dir #77332481

1 - file hệ thống sẽ không thể được unmount ,một khi nó đang hoạt động (
thường là báo busy khi unmount) .Cho nên chúng ta cần phải hạ hệ thống xuống chạy ở runlevel là 1 và chắc chắn rằng bạn đang chạy lệnh với permission là root

Nếu không phải disk chứa OS có thể  umount trực tiếp và fix không cần đưa về init 1
# init 1

2 - Unmount disk đang bị lỗi, ví dụ là /home file system được mount tới /dev/sda3 (partion sda3 của hdd sda) ,khi đó chúng ta cần chạy lệnh :
# umount /home
hay
# umount /dev/sda3

3 - bây giờ chúng ta sẽ chạy fsck cho phân vùng này
# fsck /dev/sda3
Tuy nhiên nếu bạn biết chắc được kiểu định dạng của phần vùng này thì nên dùng tùy biến -t .
# fsck -t ext3 /dev/sda3
OR
# fsck.ext3 /dev/sda3
Chú ý : nếu bạn không nhớ kiểu file ,bạn có thể gõ lệnh mount để xác định ,nó sẽ liệt kê tất cả phân vùng đang được mount và kiểu ext .

Lệnh fsck sẽ kiểm tra file system ,nó sẽ báo khi có vấn đề xuất hiện và sẽ fix .Nó sẽ bắt bạn xác nhận y (yes) nếu sửa file bị lỗi .Trường hợp bị nhiều quá mà bạn lười gõ y từng file bạn có thể dùng tùy biến -y (mặc định sửa hết)
# fsck -y /dev/sda3
Các file không thể sữa chửa và phục hồi sẽ được lưu trữ trong thư mục /home/lost+found

4 - Sau khi fsck xong ,remount lại file hệ thống
# mount /home

5 - Quay lại chế độ multiuser mode
# init 3
Bạn có thể xem man của fsck để biết thêm về các tùy biến khác .Chú ý /dev/sda3 chỉ là ví dụ ,bạn cần xác định đúng phân vùng và ổ cứng bị lỗi .
Chúc các bạn thành công 

[root@ns ~]# fsck -t ext3 /dev/sdb1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sdb1: recovering journal
/dev/sdb1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 77358037, i_size is 16711680, should be 16826368.  Fix? yes

Inode 77358037, i_blocks is 32680, should be 32904.  Fix? yes 
Pass 2: Checking directory structure
Entry '363969661+1.1.3+ESPGALUDA II+AP.ipa' in /store/datanew (77332481) has deleted/unused inode 77358040.  Clear? yes

Entry '387176580+1.1.3+Dodonpachi Resurrection+AP.ipa' in /store/datanew (77332481) has deleted/unused inode 77358041.  Clear? yes

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(338821634--338821639) -(338829533--338829535) -338832079 -(338835793--338835799) -(338843626--338843631) -(338852609--338852615) +(338867427--338867431) +(338867922--338867927) +(338869180--338869195) +338869212
Fix? yes

Free blocks count wrong for group #10341 (17487, counted=17459).
Fix? yes

Free blocks count wrong (232484352, counted=232484324).
Fix? yes


/dev/sdb1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb1: 27364/244203520 files (43.3% non-contiguous), 255893676/488378000 blocks
[root@ns ~]#


No comments: