본문 바로가기

Linux/2) 리눅스 서버 관리자 과정

3_4 File System Administration - 슈퍼블럭(superblock)복구

1. 슈퍼블럭(superblock) 복구 실습

① 슈퍼블럭 복구 실습할 파일시스템 선택

# mount /dev/sdb1 /raid0

# df -h /raid0

[root@server1 ~]# mount /dev/sdb1 /raid0
[root@server1 ~]# df -h /raid0
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4  477M  2.3M  445M   1% /raid0

 

# cp -L -r /etc/sysconfig/* /raid0

-L : --dereference , 심볼릭 링크를 따름

-r : 하위 디렉토리 및 파일까지 모두 복사

→ 파일들을 생성

 

② backup superblock 번호 확인 및 block size 확인

 

▷ backup superblock 번호 확인

- blocksize가 4096인 경우

[root@server1 ~]# dumpe2fs /dev/sdb1 | grep -i superblock
dumpe2fs 1.45.6 (20-Mar-2020)
Primary superblock at 0, Group descriptors at 1-1
  Backup superblock at 32768, Group descriptors at 32769-32769
  Backup superblock at 98304, Group descriptors at 98305-98305
  Backup superblock at 163840, Group descriptors at 163841-163841
  Backup superblock at 229376, Group descriptors at 229377-229377

 

- blocksize가 1096인 경우

[root@server1 ~]# dumpe2fs /dev/sdb1 | grep -i superblock
dumpe2fs 1.45.6 (20-Mar-2020)
  Primary superblock at 1, Group descriptors at 2-5
  Backup superblock at 8193, Group descriptors at 8194-8197
  Backup superblock at 24577, Group descriptors at 24578-24581
  Backup superblock at 40961, Group descriptors at 40962-40965
  Backup superblock at 57345, Group descriptors at 57346-57349
  Backup superblock at 73729, Group descriptors at 73730-73733
  Backup superblock at 204801, Group descriptors at 204802-204805
  Backup superblock at 221185, Group descriptors at 221186-221189
  Backup superblock at 401409, Group descriptors at 401410-401413

 

▷block size 확인

# dumpe2fs /dev/sdb1 | grep -i 'block size'

[root@server1 ~]# dumpe2fs /dev/sdb1 | grep -i 'block size'
dumpe2fs 1.45.6 (20-Mar-2020)
Block size:               1024

Block size  : 1024  → (첫번째 백업 슈퍼블럭 : 8193)

Block size  : 4096  → (첫번째 백업 슈퍼블럭 : 32768)

 

③ /raid0 언마운트

 

▷(백업)

# mkdir -p /backup

# cd /radi0

# tar -czvf /backup/raid.tar.gz

 

▷ /raid0 umount

# cd

# umount /raid0

# df -h 

→ /raid0의 정보가 보이지 않음

 

④ backup superblock으로 superblock 복원

# dd if=/dev/zero of=/dev/sdb1 count=1 bs=1024 seek=1

if : input file,      of : output file,           bs : block size

[root@server1 ~]# dd if=/dev/zero of=/dev/sdb1 count=1 bs=1024 seek=1
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 3.1768e-05 seconds, 32.2 MB/s

 

# mount /dev/sdb1 /raid0

[root@server1 ~]# mount /dev/sdb1 /raid0
mount: /raid0: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.

→ 에러 메세지 확인 

 

# fsck -y /dev/sdb1

[root@server1 ~]# fsck -y /dev/sdb1
fsck from util-linux 2.32.1
e2fsck 1.45.6 (20-Mar-2020)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
/dev/sdb1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (3821, counted=3820).
Fix? yes
---------------(중략)---------------------

 

# mount /dev/sdb1 /raid0

# df -h /raid0

[root@server1 ~]# df -h /raid0
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4  991M  2.6M  922M   1% /raid0

 

2. 정리 

1) superblock 자동 복구 방법에 대한 과정

# mount /dev/sdb1 /raid0

# cp -L -r /etc/sysconfig/* /raid0

# umount /raid0

# dd if=/dev/zero of=/dev/sdb1 bs=1024 count=1 seek=1

# mount /dev/sdb1 /raid0 -> 에러 메세지 확인

# fsck -y /dev/sda3

# mount /dev/deb1 /raid0

 

2) superblock 수동 복구 방법에 대한 과정

# mount /dev/sdb1 /raid0

# cp -L -r /etc/sysconfig/* /raid0

# umount /raid0

# dd if=/dev/zero of=/dev/sdb1 bs=1024 count=1 seek=1

# mount /dev/sdb1 /raid0 -> 에러 메세지 확인

# dump2fs /dev/sdb1 | grep -i superblock

# e2fsck -b 8193 /dev/sda3

# mount /dev/sdb1 /raid0

# df -h