/var/log/messages
xfs 파일시스템 '안전하게' 복구하기 본문
시나리오 구현
xfs 파일시스템이 깨진 상황에서, 해당 마운트포인트에 있는 데이터를 복구 시키기
localhost:~ # ll /srv/one
total 0
-rw-r--r-- 1 root root 0 Jan 30 15:15 one
localhost:~ # df -hT | grep one
/dev/vdb1 xfs 1010M 34M 977M 4% /srv/one
localhost:~ # xfs_db -fx /dev/vdb1
xfs_db> sb
xfs_db> p
magicnum = 0x58465342
blocksize = 4096
dblocks = 259328
rblocks = 0
....
xfs_db> write uuid 12345678
xfs_db> q
xfs_db로 수행한 작업은 /var/log/messages, journalctl, dmesg로는 확인이 불가
그래서 이 상황에서는 고의로 umount를 실행. 그러나, 파일의 보존을 위해서, /srv/one에 존재하는 파일은 다른 디렉터리로 백업
localhost:~ # cp /srv/one/one ./
localhost:~ # ll | grep one
-rw-r--r-- 1 root root 0 Jan 31 09:22 one
실제로는, iso 파일을 통해서 복구 모드로 들어간 후, lvs, vgchange -ay로 감지가 되는 지 확인합니다. 그리고 os영역의 xfs 문제가 생겼다면, /usr/sbin/xfs_metadata, /usr/sbin/xfs_mdrestore 같이 전체 명령어 경로도 적어줘야 합니다. ( os영역의 의미는 os가 기본적으로 제공하는 디렉터리의 마운트 포인트가 사용중인 파일시스템을 의미합니다. ) |
localhost:~ # xfs_metadump -aowg /dev/vdb1 /tmp/dump_xfs_meta
Copying log => 어느 경우에는 안 나올 수 있음!
localhost:~ # xfs_mdrestore /tmp/dump_xfs_meta /dev/vdb1
localhost:~ # mount /dev/vdb1 /srv/one
localhost:~ # ll /srv/one
total 0
-rw-r--r-- 1 root root 0 Jan 30 15:15 one
변수:
1. 만약, 해당 단계에서 mount에 실패 했다면 이 명령어를 입력해야 함
localhost:~ # xfs_repair /dev/vdb1
2. xfs_metadump를 실패 했을 시, 다음과 같은 에러가 출력이 될 수도 있음
localhost:~ # xfs_metadump -aowg /dev/vdb1 /tmp/dump_xfs_meta
Copying free space trees of AG 0 Metadata CRC error detected at 0x55e01ddd8cb8, xfs_0x8/0x1000
Metadata CRC error detected at 0x55e01ddd8cb8, xfs_cntbt block 0x10/0x1000
Metadata CRC error detected at 0x55e01de09488, xfs_inobt block 0x18/0x1000
xfs_metadump: invalid numrecs 65406 in inobt block 0/3
xfs_metadump: bad starting inode offset 7
해당 디스크의 파티션은 백업하지 않고, 디스크에 존재하는 데이터들만 백업을 해야함. 그래야 하는 이유는, 파티션 테이블이 백업이 되어도 손상이 된 테이블을 백업하는 것이라 의미가 없음. 파일시스템 자체가 심한 손상을 입었기 때문에 파일이 제대로 복구가 되지 않을 수도 있음. 이 정도 손상이면 심한 경우 디스크를 교체해야 될 수도 있음.
공식 링크:
https://www.suse.com/support/kb/doc/?id=000018858
'SUSE' 카테고리의 다른 글
3-way handshaking (0) | 2024.04.01 |
---|---|
error: cluster.join: [Errno 2] No such file or directory: '/etc/corosync/corosync.conf (0) | 2024.03.18 |
파티션 테이블 복제(백업)하기 (0) | 2024.01.30 |
XFS 에러 (2) | 2024.01.30 |
시스템 종료 쉘 스크립트 (2) | 2024.01.08 |