파일 시스템 점검 fsck (File system check)
: 파일 시스템이 전원이상이나 커널에서 동작하는 프로그램의 이상, 하드웨어적 이상, 비정상적인 시스템 shutdown이 발생해 데미지를 입게 되면, 파일 시스템을 fsck 명령어를 통해 파일 시스템의 무결성을 점검하게 된다.
: fsck 명령어와 비슷한 명령어로는 fsck.ext4, e2fsck
: 위의 명령어는 모두 파일 시스템을 점검하고, 손상된 파일 시스템을 복구하는 명령어
(Linux) fsck = 점검 (check) + 수정 (repair) <==> (Windows) scandisk / chkdsk (디스크점검)
∇ 명령어 형식
# fsck /dev/sda1 (# fsck -t ext4 /dev/sda1, # fsck.ext3 /dev/sda1, # e2fsck /dev/sda1)
# fsck -p /dev/sda1 -p : preen, non-interactive , 물어보는 화면이 나오지 않음 자동으로 처리됨
# fsck -y /dev/sda1 -y : yes , 수행 과정의 질문에 모두 yes라 응답
# fsck -t ext4 /dev/sda1 -t : 특정 종류의 파일시스템만 점검
= fsck.ext4 /dev/sda1
= e2fsck /dev/sda1
∇ fsck, fsck.ext3 명령어 옵션
| 옵션 | 설명 |
| -A | /etc/fstab 파일에 있는 모든 파일시스템을 한번씩 점검 |
| -R | -A와 함께 사용시 /(root) 파일시스템은 제외 |
| -T | 시작시 제목은 생략 |
| -N | 실행은 하지 않고 어떤 작업을 할 것인지만 출력 |
| -P | -A와 함께 사용시 /파일시스템과 다음 파일시스템을 병렬처리하여 점검함 |
| -V | 자세한 정보가 출력 |
| -a | 에러 발생시 자동으로 복구함 |
| -t | 특정 종류의 파일시스템만 점검함. |
| -f | 파일 시스템에 오류가 없더라도 강제로 점검하도록 함 |
| -p | 에러 발생 시 자동으로 복구하도록 함 |
| -y | 모든 질문에 yes라고 답하도록 설정 |
| -b | 슈퍼 블럭을 이용한 복구 |
∇ fsck 명령어 사용시 주의점
- 마운트된 파일 시스템에 대해서 fsck 명령어를 수행 X
: 점검할 때는 반드시 서비스를 중지시켜야함 -> umount 상태로 만듦
: 운영체제는 계속해서 돌아가기 때문에 umount가 불가 -> single user 모드로 들어가서 서비스 중지시켜야함
/home, /data1, /data2 ,...... -> umount CMD + fsck CMD
/, /usr, /var, /tmp ,........-> single user mode + fsck CMD
∇ fsck 명령어의 사용법
- 파일 시스템 생성
# mkfs.ext4 /dev/sdb1
# mkfs.xfs -f /dev/sdc1
- 파일 시스템 점검
: ext3/ext4와 xfs의 점검 명령어가 다름
(ext3/ext4)
# fsck.ext4 -N /dev/sdb1 : 파일시스템 점검 ( -N 옵션 : 실행하지 않는다는 의미로 repair하지 않는다는 것)
# fsck.ext4 /dev/sdb1 : 파일 시스템 점검 및 수정
(xfs)
# xfs_repair -n /dev/sdc1 : 파일시스템 점검
# xfs_repair /dev/sdc1 : 파일 시스템 점검 및 수정
# e2 [TAB] [TAB]
e2fsck : fsck 명령어의 확장명령어라고 할 수 있으며, 리눅스에서 파일시스템의 점검과 복구를 할 수 있는 명령어
[root@server1 ~]# e2
e2freefrag e2fsck e2image e2label e2mmpstatus e2undo
# fsck. [TAB] [TAB]
fsck.xfs fsck.ext4 : 부팅시에 파일 시스템을 자동으로 체크하고, 파일 시스템이 손상 입었을 때 점검하고 복구할 수 있는 명령어
[root@server1 ~]# fsck.
fsck.cramfs fsck.ext3 fsck.fat fsck.msdos fsck.xfs
fsck.ext2 fsck.ext4 fsck.minix fsck.vfat
- 파일 시스템 점검
# mount /dev/sdb1 /raid0
# df -h -T
/dev/sdc1 ext4 991M 2.6M 963M 1% /raid1
[root@server1 ~]# df -h -T
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 866M 0 866M 0% /dev
tmpfs tmpfs 896M 0 896M 0% /dev/shm
tmpfs tmpfs 896M 18M 878M 2% /run
tmpfs tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root xfs 39G 6.0G 33G 16% /
/dev/mapper/cl-home xfs 19G 179M 19G 1% /home
/dev/sda1 xfs 1014M 240M 775M 24% /boot
tmpfs tmpfs 180M 1.2M 178M 1% /run/user/42
tmpfs tmpfs 180M 4.6M 175M 3% /run/user/0
/dev/sdb1 ext4 477M 2.3M 465M 1% /raid0
/dev/sdc1 ext4 991M 2.6M 963M 1% /raid1
# fsck /dev/sdb1
/dev/sdb1 is mounted.
e2fsck: Cannot continue, aborting. : 마운트되어 있는 중이기 때문에 실행할 수 없다고 나옴
[root@server1 ~]# fsck /dev/sdb1
fsck from util-linux 2.32.1
e2fsck 1.45.6 (20-Mar-2020)
/dev/sdb1 is mounted.
e2fsck: Cannot continue, aborting.
# umount /raid0
# df -h
-> /raid0가 umount 되어 보이지 않음
[root@server1 ~]# umount /raid0
[root@server1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 866M 0 866M 0% /dev
tmpfs 896M 0 896M 0% /dev/shm
tmpfs 896M 18M 878M 2% /run
tmpfs 896M 0 896M 0% /sys/fs/cgroup
/dev/mapper/cl-root 39G 6.0G 33G 16% /
/dev/mapper/cl-home 19G 179M 19G 1% /home
/dev/sda1 1014M 240M 775M 24% /boot
tmpfs 180M 1.2M 178M 1% /run/user/42
tmpfs 180M 4.6M 175M 3% /run/user/0
/dev/sdc1 991M 2.6M 963M 1% /raid1
# fsck /dev/sdb1
: 파일 시스템 점검이 된 것을 확인할 수 있음
[root@server1 ~]# fsck /dev/sdb1
fsck from util-linux 2.32.1
e2fsck 1.45.6 (20-Mar-2020)
/dev/sdb1: clean, 11/128016 files, 26684/512000 blocks
= # e2fsck /dev/sdb1
= # fsck.ext4 /dev/sdb1
= # fsck -t ext4 /dev/sdb1 (ext4 타입을 점검)
= # fsck -y /dev/sdb1 ( -y : yes)
※ # fsck -y /dev/sda1 사용시
: 점검할 때 고장이 났거나 문제가 생겼을 경우에는 fsck 하는 동안 많은 것을 물어봄, 그렇지 않은 경우에는 문제가 없다는 것
: 많은 출력 내용들이 나중에 고칠 때 필요하는데 화면이 매우 빠르게 지나가기 때문에 script라는 명령어를 실행시킨 후 fsck 명령어를 돌리면 그 출력 결과가 file에 저장됨
: 파일에 저장된 내용들을 바탕으로 문제점을 확인할 수 있음
- 과정 -
# script -a fsck.log (# fsck -y /dev/sda3 2>&1 | tee -a fsck.log)
# fsck -y /dev/sda3
# exit
# cat fsck.log
※ 슈퍼 블럭을 복구하는 방법 - 수동 복구 방법
: 하나의 파티션인 ext4가 만들어지면 상단에는 superblock이 존재하는데 그것은 전체적인 정보를 담고 여러 개의 그룹들로 구성되어 있음
: 여러 개의 그룹들로 나누어져 있는데 용량이 커지면 커질수록 늘어남
: 그곳의 곳곳에 백업 superblock의 카피본이 존재함
: 그룹의 하나의 superblock이 깨지면 그룹 전체에 접근이 불가능하기에 그것을 복원하기 위해 사용
: 즉, 백업 슈퍼블락을 이용
- 슈퍼블록 복구 -
# dumpe2fs /dev/sdb1 | grep -i superblock
Backup superblock at 8193, Group descriptors at 8194-8197
[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
# e2fsck -b 8193 /dev/sdb1
[root@server1 ~]# e2fsck -b 8193 /dev/sdb1
e2fsck 1.45.6 (20-Mar-2020)
/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
Block bitmap differences: +(8193--8453) -(10247--10249) -10255 -(10285--10286) -(10305--10307) -10312 -(10314--10315) -(10318--10319) -(10321--10323) -10326 -10329 -(10334--10335) -(10337--10339) -10344 -(10346--10347) -(10350--10351) -(10353--10355) -10358 -10361 -(10366--10367) -(10369--10371) -10376 -(10378--10379) -(10382--10383) -(10385--10387) -10390 -10393 -(10398--10399) -10450 -(10468--10469) -10561 -10563 -10570 -(10594--10595) -10602 -(10625--10627) -10634 -10660 -10666 -10689 -10692 -10698 -10722 -10724 -10730 -(10753--10754) -10756 -10762 -(10787--10788) -10794 -10817 -(10819--10820) -10826 -(10850--10852) -10858 -(10881--10884) -10890 -10917 -10922 +(24577--24837) +(40961--41221) +(57345--57605) +(73729--73989) +(204801--205061) +(221185--221445) -(272369--278528) +(401409--401669) -(403441--409600)
Fix<y>? yes
Padding at end of inode bitmap is not set. Fix<y>? yes
/dev/sdb1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb1: 11/128016 files (0.0% non-contiguous), 26684/512000 blocks
※ 배드블럭(Bad Block) 발생한 경우 복구하는 방법
- 배드블럭(Bad Block)의 종류
- 물리적인 배드블럭(Physical badblock) : 플래터와 헤더가 닿아 플래터에 스크래치가 생긴 경우로 최대한 빨리 백업하고 변경해야 함
- 논리적인 배드블럭(Logical badblock) : 파일 시스템도 하나의 프로그램으로 관리되는 방식인데 그 과정이 꼬여서 생긴 경우로 데이터 백업 후 초기화 시킨 후 다시 파일 시스템을 만들어 해결
# badblocks -v /dev/sdb1 상당히 오랜 시간이 걸림
# e2fsck -c -p -f -v /dev/sdb1 ( # e2fsck -cpfv /dev/sdb)
- p (preen) : 질문함 없이 자동적으로 오류 수정
- f (force) : 파일 시스템에 이상이 없다 하더라도 점검하도록 강제함
- c : e2fsck로 하여금 badblocks을 실행해 파일 시스템 상의 배드 블럭을 찾아내고 배드 블럭 inode에 추가함으로써 표시를 해둠
- v : 자세한 출력 모드
'Linux > 2) 리눅스 서버 관리자 과정' 카테고리의 다른 글
| 10_1 User & Group Administration - 사용자 정보 파일 (0) | 2021.08.31 |
|---|---|
| 3_4 File System Administration - 슈퍼블럭(superblock)복구 (0) | 2021.08.30 |
| 3_2 File System Administration - 파일 시스템 생성 (0) | 2021.08.29 |
| 3_1 File System Administration - 파일시스템(File System) 정의와 종류 (0) | 2021.08.26 |
| 2_2 Device Reconfiguration & Partition - fdisk 명령어를 통한 디스크 파티션 구성 (0) | 2021.08.23 |