Linux 파일 시스템 관리

리눅스 부팅 과정

전원 -> BIOS(POST작업) -> 부팅매체의 0번 섹터(MBR) -> Boot Loader(LILO or GRUB) -> Kernel booting -> init.d(PID 1) 실행 -> 실행레벨에 따른 부팅 -> 로그인

Partition
  1. 하나의 물리적 디스크를 여러 개의 논리적 디스크로 분할하는 기술
  2. 한 파티션이 손실되더라도 다른 파티션 영역은 손실로부터 보호할 수 있는 확률을 높이기 위한 수단
장치 번호와 장치 이름
  1. 리눅스는 4개의 Primary 파티션(Logical 파티션을 쓰고 있다면 3개)을 가질 수 있고, 디스크 하나 당 SCSI의 경우 최대 15개, IDE는 최대 63개의 파티션을 가질 수 있다.
  2. 리눅스에서는 디바이스 파일이 파티션을 나타낸다. 디바이스 파일은 c(버퍼 캐쉬를 쓰지 않는 "character" 디바이스)나 b(버퍼 캐쉬를 사용하는 "block"디바이스) 형식을 갖는 파일이다. 리눅스에서는 모든 디스크가 block 디바이스로만 표시된다.
     
[root@localhost ~]$ ls -al /dev/hda
brw-rw---- 1 root disk 3, 0 1월 4 23:07 /dev/hda
[
root@localhost ~]$ ls -al /dev/hda1
brw-rw---- 1 root disk 3, 1 1월 4 23:07 /dev/hda1
-> disk 다음에 나오는 숫자 3은 주번호, 0, 1은 부번호
File System
  1. 운영체제가 파일을 시스템의 디스크상에 구성하는 방식
  2. 운영체제는 시스템의 디스크 파티션상에 파일들을 연속적이고
    일정한 규칙을 가지고 저장하는데 파일 시스템은 이러한 규칙들의 방식을 제시
File System 구조
  1. Super Block : Super Block은 파일 시스템에 의존하는 정보를 가지며 파일 시스템의 크기 등과 같은 파일 시스템의 전체적인 정보를 가진다.
  2. inode : inode는 파일의 이름을 제외한 해당 파일의 모든 정보를 가지고 있다. 파일 이름은 inode 번호와 함께 디렉토리 안에 저장된다.
  3. Data Block : Data Block은 inode에 포함된다. inode는 여러 개의 XXXX
  4. Directory Block : 파일 이름과 inode번호를 저장하기 위해 사용된다.

 

관련 명령어
df
1) 현재 마운트되어 있는 파일 시스템의 사용 정보 출력
2) 공간 정보의 기본 표현단위는 1KB

-a : 파일 시스템의 크기가 0인 것도 모두 출력
-h : 공간 정보의 단위를 Giga Byte, Mega Byte, 또는 Kilo Byte 단위로 표현
-i : 블럭 사용 정보 대신에 inode 사용 정보를 출력

ex) # df /dev/hda1 -> 마운트 되어 있는 hda1의 정보 출력

 

du
1) Disk Usage를 의미하며, 지정된 디렉토리의 디스크 사용량 출력
2) 사용 공간 정보의 기본 표현단위는 1KB

-a : 디렉토리가 아닌 모든 파일에 대한 정보를 출력
-k : 결과 값을 KB 단위로 출력(기본값)
-m : 결과 값을 MB 단위로 출력
-h : 사용자가 이해하기 쉬운 용량의 단위를 표시((ex) KB,MB,GB)
-s : 사용량의 총 합계만 출력한다.

ex) # du -hs /home -> /home 디렉토리 내의 사용량의 총합 출력

 

fdisk
1) 파티션 관리자 명령
2) 새로운 파티션의 생성, 기존 파티션의 삭제, 파티션의 타입 결정 등의 작업 수행
3) 파티션 테이블이 출력될 때마다, 파티션 테이블에 오류가 없는지 항상 확인
4) fdisk는 독자적인 명령어를 가지고 있다. m이나 help를 치면 관련 명령어를 볼 수 있다.

a : 부트 가능한 플래그로 변경
b : bsd 디스크 레이블을 편집
c : 도스 호환 플 c : 도스 호환 플래그로 변경
d : 파티션 삭제
l : 알려진 파티션 형태의 목록
m : 이 메뉴를 출력
n : 새로운 파티션 추가
o : 새로운 도스 파티션 테이블을 생성
p : 파티션 테이블을 출력
q : 변경을 저장하지 않고 종료
s : 새로운 Sun 디스크 레이블을 생성
t : 파티션의 시스템 id를 변경
u : 표시/엔트리 단위를 변경
v : 파티션 테이블을 점검
w : 디스크에 테이블을 기록하고 빠져나감

ex) # fdisk -l -> 현재 시스템의 파티션 테이블을 나열

 

mke2fs
1) 확장 파일시스템(ext2, ext3) 생성
2) 파티션 이후 파일시스템 설정시 필요, 포맷기능

ex) # mke2fs -j /dev/hdb1 -> slave 디스크 파티션1을 ext3로 포맷

 

mount
1) 파일 시스템 마운트 명령, 장치를 사용할 때 필요한 명령
2) 유닉스 계열 시스템의 모든 파일들은 거대한 트리 구조로 나누어져 있고 그 뿌리는 '/'(root directory)이다.
3) mount 명령은 각 장치에 구성된 파일 시스템을 전체 파일 트리 구조에 붙이는 명령이다.(기본 사용법 : #mount -t type device directory)
4) umount 명령은 트리 구조로부터 떼어내는 명령이다. (기본 사용법 : # umount -t type)
5) 현재 마운트 되어 있는 파일시스템 정보는 '/etc/mtab'에 저장된다.
6) 시스템 부팅 시에 로컬 또는 원격 파일시스템으로부터 마운트 할 정보는 '/etc/fstab'에 저장된다. 그러므로 부팅할 때 항상 마운트 해야 하는 파 일시스템들은 이 파일에 등록해주면 자동으로 마운트가 이루어지게 된다.

 

lsattr
확장 파일시스템 상의 파일 속성을 출력한다.

ex) # lsattr -a -> 현재 디렉토리 내의 '.'의 파일까지 속성을 출력
ex) # lsattr -R -> 디렉토리와 그 안의 내용에 대해 회귀적으로 속성값을 출력

 

chattr
1) 확장 파일시스템 상의 파일 속성을 변경한다.
2) 보안 관련 설정 시 주로 사용된다.(백도어 파일 삭제시 등)
3) '+'연산자는 주어진 속성을 파일 속성에 추가한다.
4) '-'연산자는 주어진 속성을 제거한다.
5) '='연산자는 파일이 갖는 속성을 주어진 속성만 가지게 한다.

* 속성
a 파일을 쓸 때(write) 추가만 가능
c 커널에 의해 디스크 상에 압축 상태로 저장
i 파일의 수정 불가능(삭제, 이름변경, 수정, 링크) - 슈퍼유저만 가능
u 파일이 삭제되면 그 내용이 저장됨, 사용자는 다시 복구할 수 있음

* 옵션
-R 디렉토리와 이하 모든 내용의 속성을 회귀적으로 변환
-V 변화된 속성에 대하여 자세히 출력

ex) # chattr +i file -> 파일의 소유자도 'read-only'만 가능하고 root도 chattr로 설정한 것을 해제(-i)하지 않으면 절대 삭제가 불가능

 

+ Recent posts