[RHEL6] 파일 시스템 명령어 2탄(du, dumpe2fs, e2fsck, e2lable, fdisk)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 파일 시스템 명령어 2탄(du, dumpe2fs, e2fsck, e2lable, fdisk)

by 찬찬이 아빠 2020. 4. 3.
반응형
  6. du(내가 쓴 용량 보기)

 1) 경로 : /usr/bin/du

 2) 요약 : 디스크 사용 현황을 출력

 3) 사용 방법 : du [옵션]

 4) 옵션

 -a, --all : 현재 디렉터리 아래의 모든 파일과 디렉터리의 사용 정보를 출력

 -B, --block-size=SIZE : 블록의 크기(SIZE)를 지정. 지정한 블록의 크기 단위로 용량을 출력

 -b, --bytes : 바이트 크기로 출력

 -c, --total : 모든 파일의 디스크 사용 정보를 출력하고 나서 합계를 출력. 이것은 해당 경로가 얼마 만큼의 디스크 공간을 사용하는지 확인할 때 사용

 -D, --dereference-args : 지정한 파일이나 경로가 심볼릭 링크 파일이면 원본의 값을 출력

 -h, --human-readable : 파일 용량을 보기 쉬운 형태로 출력

 -H, --si : -h와 비슷하나 1,204 단위의 비율로 출력

 -k : 출력 단위를 1KB 형태로 출력

 -l(엘), --count-links : 하드 링크되어 있는 파일도 있는 그대로 계산

 -L, --dereference : 모든 심볼릭 링크를 따름

 -S, --separate-dirs : 디렉터리의 총 사용량을 출력할 때 하위 디렉터리의 사용량은 제외

 -s, --summarize : 간단하게 총 사용량만 출력

 -x, --one-file-system : 현재 파일 시스템의 파일 사용량만을 출력

 -X file, --exclude-from=file : 지정한 파일과 일치하는 것은 제외

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

du는 현재 디렉터리의 사용량을 출력하는 명령어로, 옵션을 지정하지 않으면 현재 경로의 몯느 디렉터리의 크기를  MB 단위로 출력합니다. 아래와 같이 -a 옵션은 현재 디렉터리를 포함한 하위 모든 파일, 지정한 파일, 디렉터리를 요약하여 출력합니다.

# du -a | more
8	./linux_2.6.32-23.37.dsc
144	./grub_0.97-29ubuntu60.diff.gz
4	./.swap
264	./grub2_1.98-1ubuntu6.diff.gz
4	./grub-0.97/grub/Makefile.am
8	./grub-0.97/grub/main.c
16	./grub-0.97/grub/Makefile.in
28	./grub-0.97/grub/asmstub.c
60	./grub-0.97/grub
4	./grub-0.97/Makefile.am
32	./grub-0.97/config.sub
12	./grub-0.97/install-sh
24	./grub-0.97/configure.ac

 

아래와 같이 -s 옵션은 지정한 파일이나 디렉터리의 총 사용량을 출력합니다.

# du -s /home/*
4		/home/chan
8		/home/chan2
1012432		/home/user

 

-s 옵션에서 디렉터리를 지정하지 않으면 현재 디렉터리의 총 사용량을 출력합니다.

# cd /var/log
# du -hs
11M

 

du 명령의 -c 옵션은 현재 디렉터리의 총 사용량을 출력하며 h는 알아보기 쉽게 적당한 단위 별로 출력합니다.

# du -ch | more
28K		./gnome-doc-utils/icons/hicolor/48x48/status
32K		./gnome-doc-utils/icons/hicolor/48x48/
124K		./gnome-doc-utils/icons/hicolor/scalable/status
128K		./gnome-doc-utils/icons/hicolor/scalable
164K		./gnome-doc-utils/icons/hicolor/
168K		./gnome-doc-utils/icons/

 

--max-depth 옵션을 이용하여 디렉터리의 깊이를 제한할 수 있습니다. 이 옵션을 지정하지 않으면 현재 디렉터리부터 모든 하위 디렉터리를 출력합니다.

# du -h --max-depth=1 /usr
861M	/usr/share
9.9M	/usr/sbin
576K	/usr/games
108K	/usr/local
119M	/usr/bin
162M	/usr/ssrc

 

 

 

  7. dumpe2fs(파일 시스템 정보 보기)

 1) 경로 : /sbin/dumpe2fs

 2) 요약 : ext2/ext3/ext4 파일 시스템 정보를 출력

 3) 사용 방법 : dumpe2fs [옵션] 장치명

 4) 옵션

 -b : 파일 시스템에 bad로 예약된 블록(배드블록)을 출력

 -o(오) superblock=superblock : 파일 시스템을 조사할 때 지정한 슈퍼블록(superblock)를 사용

 -o(오) blocksize=blocksize : 파일 시스템을 조사할 때 지정한 블록 크기(blocksize)를 사용

 -h : 슈퍼 블록 정보만 출력

 -i : e2image로 생성된 이미지 파일로부터 파일 시스템 데이터를 출력

 -x : 세분화된 그룹 정보의 블록 수를 16진수로 출력

 -v : 버전 정보 출력

 

 5) 추가 설명

dumpe2fs 명령어는 지정한 파일 시스템의 슈퍼 블록과 블록 그룹의 정보를 출력합니다.

# dumpe2fs /dev/sda1
내용 추가 예정

 

리눅스 파일 시스템

리눅스 파일 시스템은 다섯 가지 주요 부분으로 이루어져 있습니다. 파일 시스템의 앞 부분에는 부트 블록이 저장되고, 나머지는 실린더 그룹을 여러 개로 나누어 관리하는 실린더 그룹 블록이 저장됩니다. 하나의 실린터 그룹은 슈퍼 블록, 실린더 그룹 블록, 아이노드 테이블과 데이터 블록으로 이루어져 있습니다.

 

1) 부트 블록 : 부팅이 필요한 파일들이 존재하며 루트 영역 외에는 해당되지 않습니다. 일반 사용자에게는 해당되지 않는 블록입니다.

 

2) 슈퍼 블록 : 파일 시스템의 크기, 아이노드 테이블의 크기, 가용한 블록 리스트 등 파일 시스템을 관리하는데 필수적인 정보가 저장됩니다. 이 부분에 오류가 생기면 이 실린터를 사용할 수 없으므로, 보통 슈퍼 블록은 여러 블록에 걸쳐 백업으르 만듭니다.

 

3) 실리더 그룹 블록 : 실린더 그룹의 유효 블록들의 비트맵 정보나  통계정보를 기록합니다.

 

4) 아이노드 테이블 : 파일에 대한 중요한 정보를 저장합니다. 즉 커널의 파일 관리에 있어서 핵심이 되는 파일 크기, 데이터 위치(디스크 주소), 파일 유형, 사용 허가권, 생성 날짜 등의 자료를 기록합니다.

 

5) 데이터 블록 : 실제 데이터가 저장되는 공간입니다.

 

 

 

  8. e2fsck(리눅스 파일 시스템 점검)

 1) 경로 : /sbin/e2fsck

 2) 요약 : ext2/ext3 파일 시스템을 점검

 3) 사용 방법 : e2fsck [옵션] 장치명

 4) 옵션

 -b superblock : 기본 슈퍼 블록을 사용하지 않고, 지정한 슈퍼블록(superblock)을 불러옴

 -B blocksize : 슈퍼 블록을 찾기 위해 지정한 블록 사이즈(blocksize)를 사용

 -c : 배드 블록을 체크

 -f : 파일 시스템에 이상 유무에 상관없이 강제로 파일 시스템을 체크

 -l(엘) bad_blocks_file : 지정한 배드 블록 파일을 배드 블록 목록에 추가

 -L bad_block_file : 지정한 배드 블록 파일을 배드 블록 목록으로 설정

 -n : 파일 시스템을 읽기 전용으로 열고 질문에 대해 no로 답함

 -p : 사용자 의견을 묻지 않고, 자동으로 파일 시스템을 체크

 -v : 상세한 정보 출력

 -y : 파일 시스템을 읽기 전용으로 열고, 질문에 대해 yes로 답함

 

 5) 추가 설명

e2fsck 명령어는 fsck 명령어에 -t ext2 옵션을 붙인것과 동일한 명령어입니다. fsck나 e2fsck는 파일 시스템을 검사하는 명령어이기 때문에 사용중인 파일 시스템을 검사할 수 없습니다. 그러므로 명령어 실행 전에 꼭 파티션을 언마운트해야 합니다. 또한 시스템의 부팅 시 파일 시스템을 검사하므로 별도로 이 명령을 사용사용하는 일은 드뭅니다. 시스템 부팅 시 심각한 문제를 만난 경우 다음과 같은 메시지를 출력하며 중단됩니다.

*** An error occurred during the file system check
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintence
(or type Control-D for normal startup):		-> root 패스워드 입력
(Repair filesystem) #

 

만일 그대로 부팅하려면 Ctrl + D 키를 입력합니다. 위의 예제와 같이 루트 패스워드를 입력하면 프롬프트를 볼 수 있습니다. 이런 경우 fsck 명령을 사용하여 파일 시스템을 체크할 수 있습니다.

(Repair filesysten) # fsck /dev/hda1

 

위의 예제에서 /dev/hda1은 리눅스가 설치되어 있는 파티션을 뜻합니다.

아래 예제에서 /dev/hdc1 파티션이 /hdc1 디렉터리에 마운트되었다가 가정하면 e2fsck 명령을 실행하기 앞서 /hdc1 디렉터리는 반드시 언마운트 해야합니다.

# umount /hdc1
# e2fsck /dev/hdc1
e2fsck 1.39 (29-May-2006)
/hdc 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
/hdc: 5766/794976 files (1.9% non-contiguouus), 1293868/1586962 blocks​

 

 

 

  9. e2lable(파일 시스템 레이블 변경)

 1) 경로 : /sbin/e2lable

 2) 요약 : 파일 시스템의 레이블을 출력하거나 변경

 3) 사용 방법 : e2lable 디바이스 [새로운 레이블]

 4) 추가 설명

e2lable 명령어는 지정한 파일 시스템의 레이블을 출력하거나 새롭게 레이블을 생성할 수 있습니다. 먼저 fdisk 명령어로 시스템의 파일 시스템이 어떻게 구성되어 있는지 확인해 봅니다. 아래 예제의 Linux 시스템은 /dev/sda5와 /dev/sda7 파일 시스템으로 파티셔닝되어 있습니다.

# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1cda073d
Device Boot		Start		End		Blocks		Id		System
/dev/sda1		1		1959		15728640	27		Unknown
/dev/sda2 *		1959		1972		102400		7		HPFS/NTFS
/dev/sd3		1972		20500		148832256	7		HPFS/NTFS

 

e2lable에 파일 시스템을 지정하면 현재 지정된 레이블을 볼 수 있는데 지정된 레이블이 없으면 공백으로 출력됩니다.

/dev/sda7 파일 시스템에 chan이라는 레이블 이름을 지정할 수 있습니다.

# e2labe /dev/sda7 chan
# e2lable /dev/sda7
chan

 

 

  10. fdisk(파티션 설정)

 1) 경로 : /sbin/fdisk

 2) 요약 : 파티션 설정

 3) 사용 방법 : fdisk [옵션] [디바이스명]

 4) 옵션

 -b sectorsize : 디스크의 섹터 크기를 지정. 512, 1024, 2048, 4096로 지정 가능

 -h : 사용법 출력

 -c : DOS 호환 모드를 비활성화

 -C cyls : 디스크의 실린더 수를 지정

 -H heads : 디스크의 헤더 수를 지정

 -S sects : 디스크의 트랙당 섹터 수를 지정

 -l(엘) : 현재 시스템의 파티션 테이블을 출력. 디바이스를 지정하지 않으면 /proc/partitions의 정보를 출력

 -u : 파티션 테이블 목록을 출력할 때 실린더 대신에 섹터의 크기를 출력

 -s 파티션 : 파티션의 크기를 출력

 -v : 버전 정보 출력

 

 5) 추가 설명

리눅스를 설치할 때 파티션 설증은 보통 Disk Druid와 fdisk, cfdisk 명령어를 사용합니다. 간단한 설정은 Disk Druid로 할 수 있으나 좀 더 세부적인 파티션 설정은 fdisk를 이용해야 합니다. 먼저 설치된 리눅스에서 /dev/hda 디바이스를 fdisk 명령어로 확인합니다. -l(엘) 옵션을 이용하면 지정한 파티션의 정보를 볼 수 있습니다.

# fdisk -l /dev/sda

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot		Start		End		Blocks		Id		System
/dev/sda1 *		1		3824		30716248+	83		Linux
/dev/sda2 		3825		4085		2096482+	82		Linux swap / Solaris

 

-s 옵션으로 각각 지정한 파티션의 크기를 살펴볼 수 있습니다.

# fdisk -s /dev/sda
78150744

# fdisk -s /dev/sda1
30716248

 

fdisk를 사용하여 /dev/sda의 파티션을 설정해 봅니다.

# fdisk /dev/sda

The number of cylinders for this disk is set to 9727.
There is nothing wrong with that, but this is larger the 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old version of LILO)
2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help) :

 

m을 입력하면 사용법을 볼 수 있습니다.

Command (m for help): m
Command action
 a	toggle a bootable flag
 b	edit bsd disklabel
 c	toggle the dos compatibility flag
 d	delete a partition
 l	list known partition types
 m	print this menu
 n	add a new partition
 o	create a new empty DOS partitoin table
 p	print the partition table
 q	quit without saving changes
 s	create a new empty Sun disklabel
 t	change a partition's system id
 u	change display/entry units
 v	verify the partition table
 w	write table to disk and exit
 x	extra functionality (experts only)
 
 Command (m for help): p
 
 Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot		Start		End		Blocks		Id		System
/dev/sda1 *		1		3824		30716248+	83		Linux
/dev/sda2 		3825		4085		2096482+	82		Linux swap / Solaris

 

Command (m for help) : 다음에 입력할 수 있는 명령어는 아래와 같습니다.

명령어 설명
a 부트 가능한 플래그로 변경
b bsd 디스크 레이블을 편집
c 도스 호환 플래그로 변경
d 파티션 삭제
l 알려진 파티션 형태의 목록
m 커맨드 메뉴 출력
n 새로운 파티션 추가
o 새로운 도스 파티션 테이블 생성
p 파티션 테이블 출력
q 변경을 저장하지 않고 종료
s 새로운 Sun 디스크 레이블 생성
t 파티션 종류 설정
u 표시/엔트리 단위 변경
v 파티션 테이블 점검
w 디스크에 테이블을 기록하고 빠져나감
x 전문가 메뉴로 진입(더 자세한 설정이 가능)

 

파티션을 나누고 파티션의 종류를 선택 할 때 t를 사용합니다. 파티션 종류를 보고 싶으면 아래와 같이 l을 입력합니다.

Command (m for help): t
Partition number (1-4):3
Hex code (type L to list codes): l
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix

 

그러면 예를 들어 fdisk 사용법을 읽혀봅시다. 현재 /dev/sda 하드 디스크에는 sda1, sda2 파티션이 있습니다. 여기에 약 5GB의 FAT32 윈도우 파티션을 만들어 봅니다. 물론 /dev/sda에 5GB 이상의 공간이 남아 있어야 합니다.

# fdisk /dev/sda

The number of cylinders for this disk is set to 9727.
There is nothing wrong with that, but this is larger the 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old version of LILO)
2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
	e	extended
	p	primary partition (1-4)
p

 

파티션 1과 2는 이미 존재하므로 3으로 추가합니다. 하드 디스크 상의 파티션 추가 위치는 sda2에 이어서 생성되기를 희망하므로 First cylinder에서 엔터를 입력하고, 추가하고 싶은 용량을 써 줍니다. 여기서는 약 5GB를 추가하므로 +5000M를 서 주고 엔터를 입력합니다.

Parition number (1-4): 3
First cylinder (4086-9729, default 4086):
Using default value 4086
Last cylinder or +size or +sizeM or +sizeK (4086-9729, default 9729): +5000M

 

여기까지 완료하면 파티션의 추가는 완료된 것입니다. 다음으로 추가한 파티션의 종류를 설정해야 합니다. t를 입력한 후 3번 파티션을 지정합니다. 그리고 파티션 타입을 FAT32로 설정하기 위해 c를 입력합니다.

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): c
Changed system type of partition 3 to c (W95 FAT32 (LBA))

 

설정이 끝나면 꼭  w를 입력하여 저장합니다. 만약 저장하지 않으면 설정한 내용은 반영되지 않습니다. 저장하기를 원치 않는다면 q를 입력합니다.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.

WARNING: If you have created ro modified any DOS 6.x partitions, please see the fdisk manual page for additional information.
Syncing disk.

 

fdisk -l 명령으로 추가된 파티션을 확인할 수 있습니다.

# fdisk -l /dev/sda

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot		Start		End		Blocks		Id		System
/dev/sda1 *		1		3824		30716248+	83		Linux
/dev/sda2 		3825		4085		2096482+	82		Linux swap / Solaris
/dev/sda2 		4086		4694		4891792+	c		W95 FATT32 (LBA)
반응형

댓글