RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'debugfs'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. dumpe2fs
(1) 설명: dumpe2fs는 파일시스템의 슈퍼블록과 블록 그룹에 대한 정보를 보여주고 이 명령어는 BSD
          Fast File System의 dumpfs와 유사하다. ext2 파일시스템과 ext3파일시스템에서 사용가능
          하다.
(2) 사용법
   dumpe2fs [options] 장치명
(3) 사용예
   dumpe2fs /dev/hda7

2. debugfs
(1) 설명: ext2 파일시스템 디버거로 파일시스템의 상태를 조사하고 변화시킬 수 있는 명령이다.
          대화형 디버거로 해당 명령을 알아야 하고 ext3 도 일부지원한다.
(2) 사용법
   debugfs [option] [장치명]
(3) option
   -w : 쓰기가 가능한 상태로 파티션을 만들어준다.
(4) debugfs의 명령어
   1) cat 파일명: 파일의 내용을 보여준다.
   2) cd 디렉토리: 작업디렉토리를 변경한다.
   3) chroot 디렉토리: 지정한 디렉토리를 루트디렉토리로 변경한다.
   4) close : 현재 열려진 파일시스템을 닫는다.
   5) clri 파일명: 파일에 해당하는 아이노드의 내용을 지운다.
   6) dump 파일명 출력파일명: 아이노드의 내용을 파일로 덤프한다.
   7) expand_dir 파일명: 디렉토리를 확장한다.
   8) find_free_block 목표: 목표로부터 시작해서 첫번째 블록을 찾아 할당한다.
   9) find_free_inode 디렉토리 : 빈 아이노드를 찾아서 할당한다.
   10) freeb 블록: 블록을 할당되지 않은 것으로 표시한다.
   11) freei 파일명: 파일명에 해당하는 아이노드를 해제한다.
   12) help :debugfs가 인식하는 명령어 목록을 출력한다.
   13) icheck 블록: 블록의 아이노드 변환을 수행한다.
   14) iname 아이노드: 아이노드에 해당하는 파일명을 출력한다.(현재 구현되지 않는다. ncheck를
                      참고할 것)
   15) initialize 장치명: 장치명에 ext2 파일시스템을 생성
   16) kill_file 파일명: 파일을 삭제하고 사용한 블록을 해제한다.
   17) ln 원본파일 링크파일: 링크를 만든다.
   18) ls : 디렉토리나 파일의 목록을 보여준다.
   19) modify_inode : 파일명에 해당하는 아이노드의 내용을 수정한다.
   20) mknod : 특별한 장치파일을 생성한다.
   21) ncheck 아이노드: 아이노드의 이름을 변환한다.
   22) open 디바이스명 : 해당 디바이스의 파일시스템을 연다.
   23) pwd : 현재 작업디렉토리를 출력한다.
   24) quit : debugfs를 종료한다.
   25) rm 파일명: 파일을 삭제한다.
   26) rmdir 디렉토리명: 디렉토리를 삭제한다.
   27) setb 블록: 블록을 할당된 것으로 표시한다.
   28) seti 파일명: 파일명에 해당하는 아이노드를 사용중이라고 표시한다.
   29) show_super_stats : 슈퍼블록의 내용을 보여준다.
   30) stat 파일명: 파일에 해당하는 아이노드의 내용을 덤프한다.
   31) testb 블록넘버: 블록이 할당되어 있다고 표시되어 있는 확인한다.
   32) testi 파일명: 해당파일에 아이노드가 할당되어 있는지 표시한다.
   33) unlink 파일명 : 파일의 링크를 지운다.
   34) write 원본파일 파일명: 파일명을 갖는 파일 시스템에 파일하나를 만들고 나서 원본파일의
                             내용을 복사한다.
(5) 사용예
   1) [root@www root]# debugfs /dev/hda7
       => /dev/hda7 디바이스를 debugfs로 디버깅한다. 기본 읽기전용이다.
   2) [root@www root]# debugfs -w /dev/hda7
       => /dev/hda7 디바이스를 debugfs로 디버깅하는데 쓰기가 가능하도록 한다.
(6) command 사용예
   1) debugfs:  ls -l
       128258   40750 (2)      0      0    4096  5-Feb-2003 21:56 .
            2   40755 (2)      0      0    4096  5-Feb-2003 16:43 ..
       128259  100644 (1)      0      0   66420 27-Dec-2002 01:13 install.log
       128260  100644 (1)      0      0    4096 27-Dec-2002 00:48 install.log.syslog
        32102   40700 (2)      0      0    4096  5-Feb-2003 11:13 .gconfd
       132579  100644 (1)      0      0      24 11-Jun-2000 06:00 .bash_logout
       132578  100644 (1)      0      0    1126 24-Aug-1995 04:02 .Xresources
        48673   40700 (2)      0      0    4096 26-Dec-2002 19:24 .kde
       177385   40700 (2)      0      0    4096  5-Feb-2003 11:13 .gconf
       132580  100644 (1)      0      0     234  6-Jul-2001 03:23 .bash_profile
       132581  100644 (1)      0      0     176 24-Aug-1995 04:04 .bashrc
       132582  100644 (1)      0      0     210 11-Jun-2000 06:09 .cshrc
        => (설명) 총 8개의 필드로 구성되어 있다.
                 1. Inode 번호
                 2. 맨 앞 두 숫자는 inode의 종류를 의미하고 남은 4개의 숫자는 운영체제에서
                   정해진다. 또한 (1)은 파일을, (2)는 디렉토리를 의미한다.
                    2 : 문자디바이스
                    4 : 디렉토리
                    6 : 블록 디바이스
                    10 : 일반 파일
                    12 : 심볼릭 링크
                 3. 소유자의 UID
                 4. 소유그룹의 GID
                 5. 파일이나 디렉토리의 크기(바이트)
                 6. 날짜
                 7. 시간
                 8. 파일이나 디렉토리명
   2) debugfs:  quit
       => debugfs를 종료한다.
(7) 참고 : ext2 파일시스템에서 파일 복구하기 (ext3에서는 안됨)
   1) 가정 : /home/doc.txt 라는 파일이 존재하고 문서를 삭제했다고 가정하자.
   2) 복구절차
    ㄱ. debugfs -w /dev/hda6
        => /dev/hda6 파티션을 디버깅한다. (/home의 파티션을 /dev/hda6이라고 가정)
    ㄴ. debugfs: 프롬프트에서 'lsdel' 이라고 친다.
        debugfs:  lsdel
         Inode  Owner  Mode    Size    Blocks   Time deleted
        48730    500 100644   9232    3/   3 Thu Jan 30 00:02:05 2003
        16346    500 100644   8947    1/   3 Sun Feb  2 16:50:44 2003
         => 그럼 지워진 목록이 나온다. 시간과 파일명을 알고 있어야 한다.
    ㄷ. debugfs에서 'dump <아이노드번호> 경로를_포함한_파일명'을 입력한다.
        debugfs: dump <16436> /home/doc.txt
         => 파일이 복구되었음을 알 수 있다.

3. tune2fs
(1) 설명: ext2파일시스템을 튜닝하고 조정하는 명령어이다.
(2) 사용법
   tune2fs [option] 장치명
(3) option
   -j : ext2파일시스템을 ext3파일시스템으로 바꾼다.
   -c 마운트횟수: ext2파일시스템에서는 어느 정도의 수를 마운트한 뒤에는 자동으로 파일시스템을
                 체크하도록 되어 있다. 이 마운트횟수를 지정하는 옵션이다. 0으로 하면 마운트횟
                 수의 제한이 없다.
   -i 점검시간[d|w|n] : 파일시스템의 점검시간을 설정한다. 접미어를 쓰기않거나 'd'를 사용하면
                       날짜단위로 설정하는 것이고, 'm'은 달, 'w'은 주 단위로 설정한다. 값을
                       0으로하면 시간 점검을 하지 않는다.
(4) 사용예
   1) [root@www root]# tune2fs -j /dev/hda6
       => /dev/hda6을 ext3파일시스템으로 바꾼다.
   2) [root@www root]# tune2fs -c 0 -i 0 -j /dev/hda7
       => /dev/hda7을 마운트횟수제한이 없고 기간제한이 없도록 하고 ext3파일시스템으로 바꾼다.
   3) [root@www root]# tune2fs -L /backup /dev/hda8
       => /dev/hda8에 backup이라는 레이블을 설정한다.
(5) 주의 : 이 명령을 이용하여 파일시스템을 조정할 경우에는 마운트가 되지 상태에서 해야한다.

4. stat
(1) 설명: 파일이나 파일시스템의 상태를 보여준다.
(2) 사용법
   stat [options] 파일이름
(3) 사용예
    [root@www root]# stat /etc/passwd
      File: "/etc/passwd"
      Size: 2386            Blocks: 8          IO Block: 4096   Regular File
    Device: 307h/775d       Inode: 225622      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: Sun Jan 12 19:33:00 2003
    Modify: Mon Jan  6 00:54:42 2003
    Change: Mon Jan  6 00:54:42 2003
      => 파일명, 사이즈, 파일타입, 권한, 접근시간, 수정정보, 변경정보 등을 알 수 있다.

5. mkfs.ext2
(1) 설명: ext2 파일시스템 생성해주는 명령이다.
(2) 사용법
   mkfs.ext2 장치명
(3) 사용예
   mkfs.ext2 /dev/hdb1

6. mkfs.ext3
(1) 설명: ext3파일시스템을 생성해주는 명령이다.
(2) 사용법
   mkfs.ext3 장치명
(3) 사용예
   mkfs.ext3 /dev/hdb1

7. lsattr
(1) 설명: ext2 와 ext3파일시스템은 파일의 권한이외에 속성을 조작할 수 있는 명령을 제공한다.
          이 명령은 해당 파일의 속성을 보여주는 명령이다.
(2) 사용법
   lsattr [option] [파일명]
(3) option
   -R : 서브디렉토리까지 한꺼번에 파일속성을 확인할 수 있다.
   -a : .으로 시작되는 숨김파일과 디렉토리까지 모두 속성을 확인할 수 있다.
   -V : 프로그램의 버전을 확인할 수 있다.
   -v : 파일생성과 관련된 넘버를 확인할 수 있다.
(4) 사용예
   [posein@www posein]$ lsattr /etc/passwd
   -------------- /etc/passwd
    => 현재 이 파일은 어떠한 속성도 설정되어 있지 않다.

8. chattr
(1) 설명: 이 명령은 파일의 속성을 변경시키는 명령이다. 참고로 몇가지 속성은 리눅스커널에서
         지원하지 않을 수도 있다.
(2) 사용법
   chattr [option] mode 파일명
(3) option
   -R : 서브디렉토리까지 그 속성을 변경할 때 지정한다.
   -V : 프로그램의 버전을 출력해준다.
   -v : 지정된 파일에 넘버를 설정할 수 있다.
(4) mode: 기호와 속성으로 이루어진다.
   1) 기호
     + : 해당 속성을 부여한다.
     - : 해당 속성을 해제한다.
     = : 해당 속성만 부여하고 나머지는 해제한다.
   2) 속성
     A : 파일수정시에 atime을 수정하지 않는다.
     a : 해당 파일에 추가만을 할 수 있는 속성이다.
     d : 이 속성이 설정된 파일은 dump로 백업되지 않는다.
     i : 이 속성이 지정되면 해당 파일의 변경, 삭제, 이름변경, 파일추가 및 링크파일도 불가능해
        진다.
     c : 이 속성이 설정되면 커널에 의해 디스크상에 자동적으로 압축된 상태로 저장이 되어 있다.
        파일을 읽을 경우에는 압축을 해제한 상태로 되돌려주며 쓰기시에는 디스크에 저장하기 전에
        파일을 압축한다.
     j : 이 속성을 지정되면 저장할 때 저널링 파일시스템으로 데이타를 저장한다.
     s : 이 속성이 설정된 파일은 파일삭제가 될 경우에 해당블록이 모두 0으로 되어 버리고 디스크
        에 다시 쓰기가 발생한다. 따라서 보안상 안전한 삭제가 이루어진다.
     S : 이 속성이 설정되면 파일이 변경될 경우 디스크동기화가 일어나는 효과를 누릴 수 있다.
     u : 이 속성을 가진 파일이 삭제되면 그 내용이 저장되어 삭제되기 전의 데이터로 복구가 가능
        하다.
(5) 사용예
   1) [root@www root]# chattr +i test.txt
       => test.txt 불변의 속성(i)을 지정하였다.
         (확인) [root@www root]# lsattr test.txt
                ---i---------- test.txt
         (제거) [root@www root]# rm test.txt
                rm: remove write-protected regular file `test.txt'? y
                rm: cannot remove `test.txt': 명령이 허용되지 않음
   2) [root@www root]# chattr +a /var/log/messages
       => /var/log/messages 파일에 삭제는 불가하고 추가만 가능하게 설정하였다.

9. badblocks
(1) 설명: 장치의 배드블록(Bad Block)을 검색한다.
(2) 사용법
   badblocks [option] 장치명
(3) option
   -b 블록사이즈: 블록의 크기를 바이트수로 나타낸다.
   -o 출력파일 : 배드블록의 목록을 지정한 파일에 기록한다.
   -v : 자세히 보여준다.
   -w : 쓰기 모드 테스트를 해서 배드블록을 찾아낸다. 이 옵션을 사용하면 파일시스템의 내용이
       지워지므로 주의를 요한다.
(4) 사용예
   1) [root@www root]# badblocks /dev/fd0H1440
      8
      9
      10
      11
      60
      171
      1438
      1439
        => 배드블록의 목록을 보여준다.
   2) [root@www root]# badblocks -o badblock /dev/fd0H1440
        => 배드블록의 목록을 badblock이라는 파일에 저장한다.

10. mknod
(1) 설명: 블록디바이스나 캐릭터디바이스 같은 특별한 파일을 만들 때 쓰는 명령어이다.
(2) 사용법
   mknod  파일명 type [major minor]
(3) type
   b : block 장치 파일을 생성한다.
   c : character 장치 파일을 생성한다.
   p : FIFO 장치파일을 생성한다.
(4) 사용예
   mknod myfd0 b 2 0
    => myfd0라는 블록디바이스 파일을 생성하고 major 넘버는 2이고 minor넘버는 0이다.
      현재 이 설정은 첫번째 플로피디스크에 대한 설정이다. 즉 /dev/fd0 와 같다. 이 장치파일로
      마운트시킬 수 있다.

11. hdparm
(1) 설명: HDD Parmeters의 약자로 하드디스크의 설정을 보여주거나 설정을 조절할 수 있는 명령어
          이다. 하드디스크의 튜닝하여 최적의 성능을 발휘하도록 할 때 사용한다. 잘못사용하면
          하드디스크의 자료를 잃어버릴 수 있으니 사용에 주의를 요한다.
(2) 사용법
   hdparm [option] 디바이스명
(3) option
   -i : 부팅시에 확인되는 정보를 표시해준다.
   -t : 비교를 목적으로 벤치마크를 위해 장치의 읽는 시간을 잰다.
   -T : 비교를 목적으로 벤치마크를 위해 캐쉬의 읽는 시간을 잰다.
   -d 값 : 직접 메모리 접근(DMA)옵션의 on/off를 지정한다. 1이면 on, 0이면 off
   -c 값 : 32bit 입출력(I/O)기능을 켜거나 끌 수 있다. 0이면 16bit, 1 이면 32bit, 3이면 동기배
          열(Sync Sequence)을 포함한 32bit 입출력을 한다.
   -m 값 : 다중섹터(MultSec)의 값을 지정한다.
   -X 값 : IDE의 전송모드를 설정한다. PIO 모드는 8을 기본으로 해서 더하고, 일반 DMA 모드는 32
          를 기본으로 더하고, UltraDMA인 경우에 는 64를 기본으로 더한다. -i 옵션으로 나온 결과
          를 토대로 지원여부를 확인한다.
   -a 값 : 미리읽기(Read-ahead) 섹터값을 설정한다. 기본값은 8이다.
   -u 값 : unmaskirq 설정유무를 지정한다. 1이면 on, 0이면 off 이다.
(4) 사용예
   1) [root@www root]# hdparm /dev/hda

      /dev/hda:
       multcount    = 16 (on)
       IO_support   =  0 (default 16-bit)
       unmaskirq    =  0 (off)
       using_dma    =  0 (off)
       keepsettings =  0 (off)
       readonly     =  0 (off)
       readahead    =  8 (on)
       geometry     = 2481/255/63, sectors = 39865392, start = 0
        => 하드디스크에 대한 정보를 보여준다.
          (주요설정 설명)
           multcount : 한번에 읽는 섹터의 수
           IO_support : 하드디스크의 동작모드(16/32/32sync)
           unmaskirq : 한 디스크 인터럽트를 처리할 때 다른 인터럽트를 언마스크하도록 허용할 것
                      인지를 지정한다. 요청된 데이터를 디스크가 리턴하기를 기다리는 동안, 시스
                      템이 다른 인터럽트와 관련된 작업을 처리하도록 한다. 이것은 전체적인 반응
                      시간(response time)을 향상시켜 주지만 주의해야 한다.
           using_dma : DMA 기능 사용여부를 표시한다.
           keepsettings : 소프트 리셋(Soft Reset)후의 설정을 유지하도록 한다.
           readonly : 장치가 읽기전용인지 아닌지를 시스템에 알려준다. 일반적으로 CD-ROM에만
                     1로 설정한다.
           readahead    =  8 (on)
           geometry : 하드디스크의 물리적인 정보를 보여준다. 실린더/헤드/섹터
   2) [root@www root]# hdparm -i /dev/hda

      /dev/hda:

       Model=SAMSUNG SV2042H, FwRev=PK100-12, SerialNo=0273J1FNB12589
       Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
       RawCHS=16383/16/63, TrkSize=34902, SectSize=554, ECCbytes=4
       BuffType=DualPortCache, BuffSize=426kB, MaxMultSect=16, MultSect=16
       CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39865392
       IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
       PIO modes:  pio0 pio1 pio2 pio3 pio4
       DMA modes:  mdma0 mdma1 mdma2
       UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
       AdvancedPM=no WriteCache=enabled
       Drive conforms to: ATA/ATAPI-4 T13 1153D revision 17:  1 2 3 4 5 6
         => (주요설정 설명)
             MaxMultSect : 하드디스크가 한번에 읽을 수 있는 최대 섹터(Sector)의 수
             MultSect : 현재 한번에 읽는 섹터의 수
             PIO & DMA & UDMA modes : 하드디스크가 지원하는 모드를 나타내고 *로 표시된 것이
                                     현재 사용 하는 모드이다.
             AdvancedPM : APM(Advanced Power Management: 고급전원관리)지원여부를 표시한다.
             WriteCache : 쓰기 캐쉬의 지원여부이다.
   3) [root@www root]# hdparm -t /dev/hda

      /dev/hda:
       Timing buffered disk reads:  64 MB in 18.67 seconds =  3.43 MB/sec
        => 하드디스크의 읽는 시간을 잰다.
   4) [root@www root]# hdparm -Tt /dev/hda

      /dev/hda:
       Timing buffer-cache reads:   128 MB in  0.25 seconds =520.16 MB/sec
       Timing buffered disk reads:  64 MB in 18.54 seconds =  3.45 MB/sec
        => 디스크와 캐쉬의 읽는 시간을 잰다.
   5) hdparm -d 1 /dev/hda
        => DMA를 사용한다.
   6) hdparm -c 1 /dev/hda
        => 32bit I/O로 세팅한다.
   7) hdparm -m 8 /dev/hda
        => MultSec의 값을 8로 설정한다.
   8) hdparm -X34 /dev/hda
        => 일반 DMA모드인 mdma2로 설정한다.
   9) hdparm -X69 /dev/hda
        => UltraDMA모드인 umda5로 설정한다.
   10) hdparm /dev/cdrom
        => CD-ROM드라이브의 정보를 보여준다.
(5) 관련파일 : /etc/sysconfig/harddisks
    hdparm 명령의 실행시 설정과 관련된 파일이다.

12. e2label
(1) 설명: ext2 파일시스템을 사용하는 하드디스크 디바이스에 label을 부여하거나 확인하는 명령어
          이다.
(2) 사용법
   e2label 장치명 [새로운 label]
(3) 사용예
   1) [root@linux245 root]# e2label /dev/hda5
      /home
       => /dev/hda5에 부여된 레이블을 확인한다.
   2) [root@linux245 root]# e2label /dev/hda8 /backup
       => /dev/hda8의 레이블을 backup로 부여한다.
(4) 참고: 레이블을 부여하면 /etc/fstab파일에서 디바이스명 대신에 레이블을 사용해서 등록할 수
          있다.
    예) LABEL=/backup           /backup                 ext3    defaults        0 0

13. mkinitrd
(1) 설명: make init ramdisk의 약자로 초기화 램디스크 이미지를 만들어주는 명령이다. 보통 부팅
          할 때 필요한 블록 디바이스 모듈을 이미지로 만들때 사용하는 명령이다.
(2) 사용법
   mkinitrd 이미지파일명 커널버전
(3) 사용예
   mkinitrd /boot/initrd-2.4.21.img 2.4.21

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/12   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)