$ df, $ fsck, $ e2fsck, $ badblocks, $ dumpe2fs, ext4 FS 구조, 슈퍼블록, i-node, 하드링크

27678 단어 filesystemfilesystem

$ df

  • 파일 시스템의 '블록'에 관한 정보를 보여줌
  • Used + Available ≠ 1K-blocks 일 것이다.
    • 예비 블록으로 따로 사용중인 것이 있기 때문이다.

$ df -h

  • '-h' 옵션은 human readable 하게 보여준다.

fsck: 파일 시스템 체크

$ sudo fsck [option] <device file>
  • 리눅스의 파일 시스템을 검사한다. inode 및 블록, 디렉토리, 파일 링크 등을 검사하고 필요시 복구 작업도 수행
optiondescription
-f강제로 검사한다.
-b <super block num>슈퍼블록으로 지정한 백업 슈퍼블록을 사용한다.
-y모든 질문에 yes로 대답한다.
-a파일 시스템 검사에서 문제가 발생했을 때 자동으로 복구한다.
-n아무 수정 없이 파일 시스템 체크

주의!!! 마운트된 파일 시스템에서는 결코 fsck을 사용하면 안된다.

  • 체킹 작업을 할 때, 커널이 디스크 데이터를 변경할 수도 있기 때문이다.
  • runtime 불일치를 일으켜 시스템이 고장 나고, 파일이 손상될 수도 있다.
  • 단일-사용자 모드에서 루트 파티션을 ro로 마운트 했다면, fsck를 사용할 수 있다.

파일 시스템 검사

$ sudo fsck /dev/sdd1
fsck from util-linux 2.22.1
e2fsck 1.42.5 (29-Jul-2012)
/dev/sdd1: clean, 12/76912 files, 11779/307200 blocks

파일 시스템 강제 검사

$ sudo fsck -f /dev/sdd1

lost+found

  1. 만약 어떤 문제를 발견하면 일단 멈추고 문제 해결과 관련한 질문을 하게된다.

    • 이런 질문들은 연결되지 않은 inode를 다시 연결하고 블록들을 정리하는 등 파일 시스템의 내부 구조에 대해 다룬다.
    • fsck이름 없는 파일을 발견한 경우이다.
      - 이름 없는 파일을 다시 inode에 연결하면 fsck는 파일 이름을 숫자로 해서 파일 시스템 안의 lost+found 디렉터리에 둔다.

$ e2fsck

  • 리눅스의 확장 파일 시스템 ext2, ext3, ext4를 검사한다.
$ sudo e2fsck [option] <device file>
optiondescription
-f강제로 검사한다.
-b <super block num>슈퍼블록으로 지정한 백업 슈퍼블록을 사용한다.
-y모든 질문에 yes로 대답한다.
-j ext3/ext4ext3나 ext4 파일 시스템을 검사할때 지정한다.
-p옵션은 자동적으로 질문 없이 일반적인 문제들을 수정하고 '심각한 오류'는 실행을 중단한다.

$ badblocks

  • 배드 블록을 검사한다.
$ sudo badblocks [option] <device file>
optiondescription
-v검사 결과를 자세하게 출력한다.
-o <out file>검사한 배드 블록 목록을 지정한 파일에 출력한다.

$ badblocks -o <file> <dev>

$ sudo badblocks -o bad.out /dev/sda1

$ dumpe2fs: 파일 시스템 정보 출력

  • 파일 시스템의 정보를 자세히 볼 수 있다.
  • 백업 슈퍼 블록을 찾거나 찾아서 복구할 수 있다.
$ sudo dumpe2fs <device file>


e.g.
$ sudo dumpe2fs /dev/sda2
... 중략
Group 3810: (Blocks 124846080-124878847) csum 0xadd3 [INODE_UNINIT, ITABLE_ZEROED]
  Block bitmap at 124780546 (bg #3808 + 2), csum 0x6e52061f
  Inode bitmap at 124780550 (bg #3808 + 6), csum 0x00000000
  Inode table at 124781576-124782087 (bg #3808 + 1032)
  4660 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 124850908-124850911, 124850940-124850943, 124850980-124850983, 124851050-124851055, 124851065-124851071, 124851123-124851135, 124851164-124851167, 124851196-124851199, 124851251-124851263, 124851319-124851327, 124851449-124851455, 124851609-124851615, 124851647, 124851695-124851711, 124851922-124851967, 124852046-124852063, 124852089-124852095, 124852143-124852159, 124852209-124852223, 124852347-124852351, 124852407-124852415, 124852444-124852447, 124852466-124852479, 124852695-124852703, 124852727-124852735, 124852908-124852927, 124852983-124852991, 124853189-124853215, 124853247, 124853304-124853343, 124853363-124853375, 124853468-124853471, 124853495-124853503, 124853667-124853695, 124853751-124853759, 124854132-124854143, 124854199-124854207, 124854232-124854239, 124854267-124854271, 124854644-124854655, 124854884-124854889, 124854910-124854943, 124854962-124854975, 124855031-124855039, 124855098-124855103, 124855137-124855167, 124855257-124855279, 124855334-124855359, 124855398-124855423, 124855477-124855491, 124855520-124855679, 124855787-124856063, 124856157-124856191, 124856248-124856255, 124856317-124856319, 124862605-124862719, 124862816-124862847, 124862903-124862911, 124862968-124862975, 124863954-124863967, 124863985-124863999, 124864478-124864511, 124866716-124866751, 124866807-124867295, 124867315-124867455, 124867494-124867551, 124867570-124867583, 124867806-124867967, 124868025-124868031, 124868091-124868223, 124868297-124868607, 124869541-124869631, 124870018-124870047, 124870073-124870079, 124870112-124870143, 124870322-124870655, 124872651-124872703, 124873001-124873215, 124873565-124874751
  Free inodes: 31211521-31219712
Group 3811: (Blocks 124878848-124895487) csum 0xdcc7 [INODE_UNINIT, ITABLE_ZEROED]
  Block bitmap at 124780547 (bg #3808 + 3), csum 0x681c95d4
  Inode bitmap at 124780551 (bg #3808 + 7), csum 0x00000000
  Inode table at 124782088-124782599 (bg #3808 + 1544)
  4027 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 124882904-124882911, 124882942-124882943, 124883120-124883135, 124883166-124883167, 124883190-124883199, 124883440-124883455, 124883606-124883653, 124883674-124883679, 124883704-124883967, 124884085-124884127, 124884145-124884223, 124884336-124884351, 124884480-124884735, 124884953-124885023, 124885047-124885055, 124885100-124885119, 124885227-124885247, 124885400-124885503, 124886035-124886271, 124886412-124887551, 124888327-124889087, 124889299-124889343, 124889582-124889599, 124889857-124890111, 124890624-124891135, 124895420-124895487
  Free inodes: 31219713-31227904
    
  • 디바이스의 블록 그룹

슈퍼블록 찾기

$ sudo dumpe2fs <dev file> | grep "superblock"

슈퍼블록 복구

  • 위에 있는 슈퍼 블록 백업을 가지고 복구할 수 있다.
  • 블록을 고른다.
$ e2fsck -b 98304 -y /dev/sdb2 # 90304에 있는 슈퍼블록 백업본을 이용해 파일시스템 슈퍼블록을 복구 시킨다.

ext4 파일 시스템 구조

1. 디스크 전체 구조


2. ext4 파일 시스템의 '파티션'의 구조 (블록 그룹)

  • 1개의 파티션은 '여러 개의' 블록 그룹으로 나뉘어져 있음
    • 1개 블록 그룹 = n개 블록 모음
    • 1 block = 4KB (설정마다 다름)
$ sudo dumpe2fs <device file>


e.g.
$ sudo dumpe2fs /dev/sda2
... 중략
Group 3810: (Blocks 124846080-124878847) csum 0xadd3 [INODE_UNINIT, ITABLE_ZEROED]
  Block bitmap at 124780546 (bg #3808 + 2), csum 0x6e52061f
  Inode bitmap at 124780550 (bg #3808 + 6), csum 0x00000000
  Inode table at 124781576-124782087 (bg #3808 + 1032)
  4660 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 124850908-124850911, 124850940-124850943, 124850980-124850983, 124851050-124851055, 124851065-124851071, 124851123-124851135, 124851164-124851167, 124851196-124851199, 124851251-124851263, 124851319-124851327, 124851449-124851455, 124851609-124851615, 124851647, 124851695-124851711, 124851922-124851967, 124852046-124852063, 124852089-124852095, 124852143-124852159, 124852209-124852223, 124852347-124852351, 124852407-124852415, 124852444-124852447, 124852466-124852479, 124852695-124852703, 124852727-124852735, 124852908-124852927, 124852983-124852991, 124853189-124853215, 124853247, 124853304-124853343, 124853363-124853375, 124853468-124853471, 124853495-124853503, 124853667-124853695, 124853751-124853759, 124854132-124854143, 124854199-124854207, 124854232-124854239, 124854267-124854271, 124854644-124854655, 124854884-124854889, 124854910-124854943, 124854962-124854975, 124855031-124855039, 124855098-124855103, 124855137-124855167, 124855257-124855279, 124855334-124855359, 124855398-124855423, 124855477-124855491, 124855520-124855679, 124855787-124856063, 124856157-124856191, 124856248-124856255, 124856317-124856319, 124862605-124862719, 124862816-124862847, 124862903-124862911, 124862968-124862975, 124863954-124863967, 124863985-124863999, 124864478-124864511, 124866716-124866751, 124866807-124867295, 124867315-124867455, 124867494-124867551, 124867570-124867583, 124867806-124867967, 124868025-124868031, 124868091-124868223, 124868297-124868607, 124869541-124869631, 124870018-124870047, 124870073-124870079, 124870112-124870143, 124870322-124870655, 124872651-124872703, 124873001-124873215, 124873565-124874751
  Free inodes: 31211521-31219712
Group 3811: (Blocks 124878848-124895487) csum 0xdcc7 [INODE_UNINIT, ITABLE_ZEROED]
  Block bitmap at 124780547 (bg #3808 + 3), csum 0x681c95d4
  Inode bitmap at 124780551 (bg #3808 + 7), csum 0x00000000
  Inode table at 124782088-124782599 (bg #3808 + 1544)
  4027 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 124882904-124882911, 124882942-124882943, 124883120-124883135, 124883166-124883167, 124883190-124883199, 124883440-124883455, 124883606-124883653, 124883674-124883679, 124883704-124883967, 124884085-124884127, 124884145-124884223, 124884336-124884351, 124884480-124884735, 124884953-124885023, 124885047-124885055, 124885100-124885119, 124885227-124885247, 124885400-124885503, 124886035-124886271, 124886412-124887551, 124888327-124889087, 124889299-124889343, 124889582-124889599, 124889857-124890111, 124890624-124891135, 124895420-124895487
  Free inodes: 31219713-31227904
    

3. 블록 그룹 하나

$ sudo dumpe2fs <device file>


e.g.
$ sudo dumpe2fs /dev/sda2
... 중략

Group 3811: (Blocks 124878848-124895487) csum 0xdcc7 [INODE_UNINIT, ITABLE_ZEROED]
  Block bitmap at 124780547 (bg #3808 + 3), csum 0x681c95d4
  Inode bitmap at 124780551 (bg #3808 + 7), csum 0x00000000
  Inode table at 124782088-124782599 (bg #3808 + 1544)
  4027 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 124882904-124882911, 124882942-124882943, 124883120-124883135, 124883166-124883167, 124883190-124883199, 124883440-124883455, 124883606-124883653, 124883674-124883679, 124883704-124883967, 124884085-124884127, 124884145-124884223, 124884336-124884351, 124884480-124884735, 124884953-124885023, 124885047-124885055, 124885100-124885119, 124885227-124885247, 124885400-124885503, 124886035-124886271, 124886412-124887551, 124888327-124889087, 124889299-124889343, 124889582-124889599, 124889857-124890111, 124890624-124891135, 124895420-124895487
  Free inodes: 31219713-31227904
    
블록 그룹 구성 요소설명
슈퍼블록파일 시스템에 대한 정보 저장. 즉, 파일 시스템 전체 정보
1. 전체 inode 개수
2. free block 수
3. free inode 수
4. 첫 번째 데이터 블록의 주소
5. 그룹 당 블록의 수
6. 파일 시스템의 생태
7. 전체 블록의 갯수
8. 블록의 크기
9. 마운트 시간
10. 그룹 디스크립터 크기
그룹 디스크립터1. 블록 비트맵 주소
2. inode 비트맵 주소
3. inode 테이블의 주소
4. 할당되지 않은 블록 갯수
5. 할당되지 않은 inode 개수
6. 디렉토리 개수
7. 블록 비트맵
8. inode 비트맵 체크섬
데이터 블록 비트맵블록 그룹내 '데이터 블록' 사용 여부 확인하는데, 사용 됨
inode 비트맵inode 테이블의 항목(inode)가 사용 중인지 표시
비트맵에서 각 데이터 블록과 inode 테이블 항목은 1bit로 표시한다.
inode 테이블inode에 파일 정보 저장
데이터 블록실제 데이터 저장

inode

  • inode는 파일의 이름을 제외한 해당 파일의 모든 '정보'를 담고 있다.
  • 파일이름은 inode번호와 함께 디렉토리 안에 저장된다.

디렉토리 및 하드링크의 아이노드

  • 디렉토리 파일은, 내부 {디렉토리,파일} 명 과 각 아이노드를 갖고있다.
    • 디렉터리는 자기 자신 참조(.)와 부모로 부터 참조 때문에 inode 참조 링크 수가 2개이다.
  • 하드링크의 두 파일은 같은 아이노드를 가지고 있어서 결국 '아이노드'가 '같기'때문에, 같은 파일이다.
  • inode 참조 링크 수가 0개가 되면 비로소 제거된다.

$ ls -i: inode 조회


$ stat <file>

좋은 웹페이지 즐겨찾기