OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 파일 시스템 검사 및 복구 - fsck, e2fsck, badblocks, dumpe2fs

주누다 2015. 4. 13. 00:09
반응형

파일 시스템 검사하고 복구하기

- 파일 시스템은 부적절한 시스템 종료나 전원의 불안정, 소프트웨어 오류, 하드웨어 오작동 등 다양한 이유로 손상될 수 있음

- 이렇게 손상된 파일 시스템의 용량을 확인할 뿐만 아니라 파일 시스템의 상태를 점검하고 문제가 있을 때는 복구해야함



fsck 명령으로 파일 시스템 검사하기


- fsck 는 'file system check' 의 약자

- inode 및 블록, 디렉터리, 파일 링크 등을 검사하고 필요시 복구 작업도 수행

- 기능 : 리눅스의 파일 시스템을 검사

- 형식 : fsck [옵션] 장치명

- 옵션 :

 * '-f' : 강제로 점검

 * '-b 슈퍼블록' : 지정한 백업 슈퍼블록을 사용

 * '-y' : 모든 질문에 yes로 대답하게 함

 * '-a' : 파일 시스템 검사에서 문제가 발생했을 때 자동으로 복구

- 사용 : fsck /dev/sdb1, fsck -f /dev/sdb1


- fsck 명령은 기본적으로 '/etc/fstab' 에 지정된 파일 시스템을 대상으로 함

- 물론 다른 파일도 검사도 수행 가능(fsck.ext2, fsck.ext3, fsck.ext4 명령도 제공)

1) 일반적인 파일 시스템 검사

======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/음악/Music/K_PopStar$ sudo fsck /dev/sda1
fsck from util-linux 2.20.1
fsck: fsck.swap: not found
fsck: error 2 while executing fsck.swap for /dev/sda1
sjw-lenovo@sjwlenovo-Lenovo-U310:~/음악/Music/K_PopStar$

======================================================================



2) 파일 시스템 강제로 검사

======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/음악/Music/K_PopStar$ sudo fsck -f /dev/sda1
fsck from util-linux 2.20.1
fsck: fsck.swap: not found
fsck: error 2 while executing fsck.swap for /dev/sda1
sjw-lenovo@sjwlenovo-Lenovo-U310:~/음악/Music/K_PopStar$
======================================================================



3) 파일 시스템 종류를 지정해 검사

======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:/$ sudo fsck.ext4 /dev/sda5
e2fsck 1.42.9 (4-Feb-2014)
/dev/sda5 is mounted.
e2fsck: Cannot continue, aborting.


sjw-lenovo@sjwlenovo-Lenovo-U310:/$

======================================================================

- '/dev/sda5 is mounted. e2fsck: Cannot continue, aborting.' 마운트가 되어 있어서 나오는 오류인듯.




e2fsck 명령으로 파일 시스템 검사하기


- 'e2fsck' 명령은 'fsck' 처럼 inode 및 블록, 디렉터리, 파일 링크 등을 검사하고 필요시 복구 작업도 수행

- 기능 : 리눅스의 확장 파일 시스템(ext2, ext3, ext4) 을 검사

- 형식 : e2fsck [옵션] 장치명

- 옵션 :

 * '-f' : 강제로 점검

 * '-b 슈퍼 블록' : 지정한 백업 슈퍼블록을 사용

 * '-y' : 모든 질문에 yes 로 대답하게 함

 * '-j ext3/ext4' : 'ext3'이나 'ext4' 파일 시스템을 검사할 때 지정

- 사용 예 : e2fsck /dev/sdb1, e2fsck -f /dev/sdb1


- e2fsck 명령으로 파일 시스템을 점검할 때는 해당 파일 시스템의 마운트를 해제하고 해야함

- 마운트되어 있는 상태에서 e2fsck 명령을 수행할 경우 예상치 않은 오류가 발생할 수도 있으므로 주의

1) 일반적인 파일 시스템 검사

======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:/$ sudo e2fsck /dev/sdc1
e2fsck 1.42.9 (4-Feb-2014)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** ext3 journal has been deleted - filesystem is now ext2 only ***

The filesystem size (according to the superblock) is 7816192 blocks
The physical size of the device is 256000 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
sjw-lenovo@sjwlenovo-Lenovo-U310:/$ 

======================================================================



2) 파일 시스템 강제로 검사

======================================================================

- e2fsck 명령은 inode와 블록, 디렉터리 구조, 파일 링크의 수 등을 단계적으로 검사

sjw-lenovo@sjwlenovo-Lenovo-U310:/$ sudo e2fsck -f /dev/sdc1
e2fsck 1.42.9 (4-Feb-2014)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** ext3 journal has been deleted - filesystem is now ext2 only ***

The filesystem size (according to the superblock) is 7816192 blocks
The physical size of the device is 256000 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
sjw-lenovo@sjwlenovo-Lenovo-U310:/$
======================================================================





배드 블록 검사하기 : badblocks

- 디스크에 발생하는 문제 중 심각한 것 중의 하나가 배드 블록으로 인한 데이터 유실

- 백업이나 이중화 구성 등으로 대비하겠지만 주기적으로 배드 블록을 검사하는 것도 매우 중요

- 배드 블록은 'fsck'나 'e2fsck' 명령으로도 검사가 가능하나 배드 블록을 검사하는 별도의 'badclocks' 명령도 있음

- 기능 : 장치의 배드 블록을 검색

- 형식 : badblocks [옵션] 장치명

- 옵션 :

 * '-v' : 검색 결과를 자세하게 출력

 * '-o 출력 파일' : 검색한 배드 블록 목록을 지정한 출력 파일에 저장

- 사용 예 : badblocks -v /dev/sdb1, badblocks -v -o bad.out /dev/sdb1

1) 배드 블록 검색하기

===========================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo badblocks -v /dev/sdb1
Checking blocks 0 to 511999
Checking for bad blocks (read-only test):
done                                                
Pass completed, 0 bad blocks found. (0/0/0 errors)
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
===========================================================



2) 검색 결과를 파일로 저장 : '-o' 옵션

- '-o' 옵션을 사용하면 'badblocks' 명령으로 검색한 결과가 파일로 저장

- 결과 파일에는 배드 블록 번호가 저장

- 배드 블록이 없는 경우 파일에 아무것도 저장되지 않음

===========================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ sudo badblocks -v -o bad.out /dev/sdb1
Checking blocks 0 to 511999
Checking for bad blocks (read-only test):
done                                                
Pass completed, 0 bad blocks found. (0/0/0 errors)
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ ls
bad.out
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ cat bad.out
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$

===========================================================




백업 슈퍼블록을 이용해 파일 시스템 복구 : dumpe2fs

- 파일 시스템의 기본 슈퍼블록에 문제가 있으면 해당 파일 시스템을 사용할 수 없음

- 이럴 경우를 대비해 백업 슈퍼 블록이 있음( 참조 : http://sharkmino.tistory.com/1533)

- 백업 슈퍼블록 중 하나를 사용하여 파일 시스템을 복구할 수 잇음

- 백업 슈퍼블록의 위치는 'dumpe2fs' 명령으로 확인 가능

- 기능 : 파일 시스템의 정보를 출력

- 형식 : dumpe2fs 장치명

- 사용 예 : dumpe2fs /dev/sdb1

 1) 'sudo dumpe2fs /dev/sda6' 명령으로 파일 시스템 정보 출력


===========================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ sudo dumpe2fs /dev/sda6

.

.

.

===========================================================



2) 'grep' 명령을 통해 슈퍼 블록 정보만 추출하기

- 많은 양의 정보가 출력되므로 'grep' 명령을 통해 슈퍼 블록에 대한 정보만 추출해야함

===========================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ sudo dumpe2fs /dev/sdb3 | grep superblock
dumpe2fs 1.42.9 (4-Feb-2014)
  Primary superblock at 1, Group descriptors at 2-3
  Backup superblock at 8193, Group descriptors at 8194-8195
  Backup superblock at 24577, Group descriptors at 24578-24579
  Backup superblock at 40961, Group descriptors at 40962-40963
  Backup superblock at 57345, Group descriptors at 57346-57347
  Backup superblock at 73729, Group descriptors at 73730-73731
  Backup superblock at 204801, Group descriptors at 204802-204803
  Backup superblock at 221185, Group descriptors at 221186-221187
  Backup superblock at 401409, Group descriptors at 401410-401411
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$
===========================================================



3) 파일 시스템 복구하기 : '-b' 옵션

- 백업 슈퍼블록을 이용하여 파일 시스템을 복구할 때 'fsck'나 'e2fsck' 명령의 '-b' 옵션을 사용함

- 'dumpe2fs' 로 확인 한 백업 슈퍼블록을 이요하여 파일 시스템 복구하는 방법은 아래와 같음

===========================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ sudo dumpe2fs /dev/sdb3 | grep superblock
dumpe2fs 1.42.9 (4-Feb-2014)
  Primary superblock at 1, Group descriptors at 2-3
  Backup superblock at 8193, Group descriptors at 8194-8195
  Backup superblock at 24577, Group descriptors at 24578-24579
  Backup superblock at 40961, Group descriptors at 40962-40963
  Backup superblock at 57345, Group descriptors at 57346-57347
  Backup superblock at 73729, Group descriptors at 73730-73731
  Backup superblock at 204801, Group descriptors at 204802-204803
  Backup superblock at 221185, Group descriptors at 221186-221187
  Backup superblock at 401409, Group descriptors at 401410-401411
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$

sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ sudo fsck -b 8193 -y /dev/sdb3

.....

.....

.....

/dev/sdb3: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb3: 2067/128016 files (0.5% non-contiguous), 26737/512000 blocks
sjw-lenovo@sjwlenovo-Lenovo-U310:~/linux_ex/ch7$ 

===========================================================
- 'e2fsck' 'fsck' 의 '-b' 옵션은 백업 슈퍼블록의 위치를 지정

- '-y' 옵션은 복구 과정에서 나오는 질문에 모두 yes로 대답하라는 것.





반응형