[리눅스명령어]파일시스템 관련명령어(II)
출처 : 대전국제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