파티션 파일시스템의 구조
파일시스템의 종류
ext 리눅스 초기에 사용되던 파일 시스템 호환성이 없던 시스템
ext2 ext3가 개발 되기 이전까지 뛰어난 안정성과 속도로 가장 유명한 파일 시스템 쉽게 호환, 업그레이드도 쉽게 설계
mimix 가장오래되고 기본이 되는 시스템,몇가지 제한 = time stamp가 유실, 파일이름 30문자 제한, 파일 시스템마다 64mb 성능제한,
대부분 배포본의 부팅디스크는 보통 미닉스 파일 시스템으로 구성되어 있다. 교육용으로 시작
xiafs mimix의 제한이었던 파일 이름과 파일 시스템의 제한을 보완한 버전,한때 ext2와 함께 많이 사용, : 과거 minix에서 사용되었던 파일 시스템
msdos ma-dos의 fat파일 시스템과 호환을 지원, os/2와 윈도즈 nt의 fat파일 시스템과도 호환
hpfs os/2 os/2파일 시스템이다. 현재는 읽기 전용인 파일 시스템으로 읽기만이 가능하다.
isofs cd-rom iso 기준을 따르는 표준 cd-rom 파일 시스템, 긴 파일 이름을 사용할 수 있도록 확장한 rock bridge가 기본으로 지원
umsdos ms-dos파일 시스템을 리눅스 상에서도 긴 파일 이름과 소유자, 접근 허가, 링크와 장치 파일등을 사용할 수 있도록 확장한 파일 시스템
dos파일 시스템을 리눅스 파일 시스템인 것처럼 보이도록 하는 기능을 제공하므로 따로 리눅스를 위한 파티션은 필요하지 안핟.
nfs network file system이다. 공유 파일 시스템, 네트워크 파일 시스템 (Network File System)
sysv system v/386,xenix.coherent 파일 시스템
ext3 fsck 동안 시스템을 사용할수없다. Journaling저널링 기술:파일을 실제로 수정하기 전에 우선 로그에 수정된 내용을 저장한다.
reiserFS 저널링 파일 시스템의 일종,트리에는 기본적 4가지 형태의 아이템 = stat데이터,직접적인아이템,간접적인아이템,디렉토리아이템,공간낭비를줄임
Journaling File System : ext3(리눅스 공동체/Extension3), JFS(IBM/Journaling FS),XFS(SGI/eXtendedFS), reiserfs(Hans Reiser/Reiser FS)
저널링 파일 시스템을 쓰는 대표적인 이유는 데이터 복구확률이 높기 때문이다.
파일 시스템 유지/보수
시스템 관리자는 파일 시스템의 완전성을 유지/보수하는 책임을 가진다.
/etc/fstab 파일의 pass number 필드에 0보다 큰 값이 있는 경우 linux는 부트 시에 자동으로 파일 시스템을 점검한다.
Linux에서 공통적으로 사용자는 ext2 파일 시스템은 clean bit라고 부르는 특수 플래그를 갖는다. 파일 시스템이 동기화 되고 깨끗하게 탑재 취소된 경우, clean bit가 파일 시스템에 설정된다. Linux가 부트 할 때, clean bit가 파일 시스템에 설정되면 해당 파일 시스템은 완전성이 점검되지 않는다.
파일시스템의 구조
아이노드 i-node
슈퍼블록 super block
데이터블록 datablock
디렉토리블록 directory
간접블록 indirection
부트블록
홀 hole
리눅스 파일 파티션 시스템
리눅스 파일 시스템과 파티션에 대해 설명해 두었습니다.
fdisk 사용법도 간단히 설명 되어 있습니다.
리눅스를 처음으로 설치시 초보자분들이 많이 어려워 하는 것이 파티션이다.
이 파티션에 대해 자세히 한번 알아보자..
우선 파티션은 파일 시스템을 위해 예약된 하드 디스크의 영역을 말한다.
즉 물리적인 파티션(소위 하드 디스크)를 논리적으로 분할해 유지 관리와 백업등의 작업을 효율적을 높이기 위해 사용되어 진다.
여기서는 일반적인 파티션 얘기를 하고자 하는 것이 아니니 이정도만 하겠다.
더 알고 싶다면 웹상에서 검색을 하면 많은 정보를 어렵지 않게 접할수 있을 것이다.
리눅스를 설치해 보았다면 파티션을 나누어 각 영역을 나누어 주었을 것이다.
그럼 왜 나누어 주었을까? (윈도우처럼 통짜로-C: 드라이브처럼-사용하면 안되는건가?)
물론 리눅스도 이처럼 사용코자 한다면 가능하나, 기본적으로 루트와 사용자 파일 시스템을 같은 파티션에 두지 않는다.
이유는 보안과 관리가 어렵다는 것이다.
루트영역과 사용자 파일 시스템이 같은 파티션에 존재하면 공격자가 SUID를 사용할수 있는 기회가 늘어나게 되어 보안상 취약하게 된다.
그리고 백업이 용이하지 못하고 몇몇 파일 손상등으로 인해 전체 시스템을 재설치하는 일이 발생할수 있기 때문이다.
이에 대한 것은 뒤에서 좀더 알아 보기로 하고..
우선 /etc/fstab 파일을 한번 살펴보자.
이 파일은 리눅스 부팅시 이파일이 기록된 모든 파일 시스템을 마운트(mount)한다.
/etc/fstab을 통해서 사용자와 시스템이 파티션에 접근하는 방법을 제어 할수 있다.
참고) mount란?
리눅스에서의 모든 장치들은 하나의 파일로 인식되어 진다. 이런 각각의 장치들을 시스템이 인식하게 해 주는 것이 마운트이다.
[root@dream root]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home /home ext3 defaults 1 2
......
리눅스는 설정 파일들이 거의 텍스트로 되어 있어 그때마다 내용을 보고 수정을 해 주면 된다.
위 파일의 구성을 살펴보자.(4번째 라인인 /home을 예로 살펴본다.)
LABEL=/home : 장치 Label명을 나타낸다.(또는 마운될 블록 장치명이 오기도 한다. /dev/hda9 처럼)
/home : 파일 시스템의 파일 위치로 마운트될 지점을 나타낸다.
ext3 : 파일 시스템의 종류를 나타낸다. ext,msdos,iso9660/CDROM,NFS등이 올수 있다.
defaults : 이것은 마운트 옵션으로 사용자와 시스템이 마운트된 파일 시스템을 접근할때의 수준을 나타낸다.(아래는 들어올수 있는 값들이다.)
defaults 는 모든것이 가능하다.(읽기,쓰기,suid)
noquota 는 일반적으로 쿼터가 없다.
nosuid 는 suid접근이 불가능하다.
quota 는 쿼더가 설치되어 있을경우 사용
ro 는 읽기만 가능
rw 는 읽기,쓰기가 가능
suid 는 suid 접근이 가능
1 : 파일 시스템이 덤프될 필요가 있는지 설정하는 값이다.
2 : fsck에 의해 수행되는 무결성 검사를 위한 우선 순위를 나타낸다.
이처럼 fstab파일은 6개의 필드로 구성되어 있다.
여기서 잠깐 파티션 크기 지정에 대해 알아보자.
처음 리눅스를 설치할 경우 파티션 크기를 어떻게 잡아야 하는지 모르는 경우가 많다.
정해진 것이 아니고, 사용될 용도에 따라 적당히 지정해 주면된다.
스왑영역은 보통 메모리의 두배로 지정하며, 메모리가 부족하다 싶으면 좀더 잡아주면 된다.
그리고 웹 서버로 사용을 할 것이면 /home 영역을 많이 잡아주고, 메일 서버나 디비 서버로 사용을 하려면 /var 영역을 많이 잡아주면 된다.
(보통은 /home과 /usr 영역이 많이 차지하게 된다.)
아래는 제 서버의 상태입니다. 참고해 보시기 바랍니다.
[root@dream root]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/hdb10 587 112 445 20% /
/dev/hdb1 587 22 535 4% /boot
/dev/hdb2 19689 1344 17344 8% /home
/dev/hdb8 2007 50 1855 3% /opt
none 251 0 250 0% /dev/shm
/dev/hdb7 2949 33 2767 2% /tmp
/dev/hdb6 9844 1769 7575 19% /usr
/dev/hdb3 9844 146 9199 2% /usr/local
/dev/hdb5 9844 635 8709 7% /var
df는 Disk Free의 약자로 시스템의 사용량을 체크해 주는 명령어이다.(이때 스왑 영역은 체크되지 않는다.)
-m 은 용량을 메가로 출력해 준다.
자세히 한번 살펴보면 Filesystem의 명칭이 /dev/hdb1, /dev/hdb2, /dev/hdb3, /dev/hdb5, /dev/hdb6...
이처럼 출력이 되고 있는데, /dev/hdb4가 없다. 왜 그럴까?
이것은 인텔 컴퓨터에서는 4개나 3개의 주 파티션과 하나의 확장 파티션으로 나누어 지기 때문이다.
즉 hdb1,hdb2,hdb2는 주 파티션이고, hdb5, hdb6.. 부터는 확장 파티션에 나누어진 확장 논리 파티션 영역인 것이다.
(도스상의 기본 DOS영역과 확장 DOS영역, 확장 DOS영역 안의 논리 영역으로 보시면 될것이다.)
잘 찾아보면 하나의 빈 영역이 있다. /dev/hdb9 가 안 보이는데, 이것은 swap 영역이라서 표시가 안된것이다.
참고) 1024 실린더
설치시 부트 영역을 1024실린더 안에 잡아야 하는지로 고민하는 경우가 있는데 레드햇은 7.x대부터 이것을 걱정하지 않아도 된다.
간혹 경고성 문구가 띄는데, 이때는 무시를 해도 문제가 없다.
스왑(swap)이란?
메모리가 부족할 경우 하드 디스크를 메모리처럼 사용하기 위한 가상 메모리 영역이다.
일바적으로 많이 사용이 되지 않으며, 스왑영역이 자주 사용이 된다면 메모리가 많이 부족한 것이니 메모리 확충을 고려해 보아야 한다.
위 글을 읽어보고, 윈도우를 많이 다룬 분들이라면 왠지 윈도우 설치시 많이 들었던 파티션 분활과 비슷하다고 생각하지 모르겠다.
해당 시스템만 틀리고, 이름이 틀리고, 파티션 지정 방법에서 약간 차이가 날뿐 DOS상에서 사용하던 파티션 분활과 같다고 보아도 된다.
자주 사용을 해 보면 알겠지만, 윈도우와 리눅스의 차이점은 제가 볼때는 자판으로 입력을 하는 것과 마우스로 클릭하는 것의 차이처럼 수단의 차이만 있을뿐 들어다 보면 거기서 거기라는 것을 알게 될것이다.
(윈도우는 알아서 처리하는것이 많아서 몰라도 될것처럼 사용자를 방심하게 만드는데 반해, 리눅스는 최대한 사용자에게 처리할 것들은 요구하는 것 같다. 사용자를 귀찮게 하는것 같지만 얼마후엔 전체 시스템을 내가 바꿀수 있다는 것을 알게 해 준다.)
여기서 fdisk 명령어에 대해 한번 알아보자.
윈도우와 동일하게 파티션을 처리하는 명령어이다.
[root@dream root]# fdisk /dev/hdb <== 해당 장치명을 입력하면 된다.
The number of cylinders for this disk is set to 7297.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
이처럼 출력이 되는데..이는
총 실린더의 수(7297개의 실린더)와 실린더가 1024를 넘어설 경우 아무런 문제가 없지만 아래 두가지 경우 문제를 발생 시킬수도 있다는 말이다.
Command에다 m 을 입력하자. 그럼 명령어들이 쭈욱 출력하게 된다.
Command action
a toggle a bootable flag(부트 플래그 토글)
b edit bsd disklabel(bsd 디스크 레이블 편집)
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 partition table(새로운 DOS파티션 생성)
p print the partition table(파티션 테이블 출력)
q quit without saving changes(저장없이 빠져 나가기)
s create a new empty Sun disklabel(새로운 Sun 디스크 레이블 생성)
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)(기타기능-전문가용)
여기서 p를 입력해 보면 현재 파티션 테이블을 확인할수 있을 것이다.
Command (m for help): p
Disk /dev/hdb: 255 heads, 63 sectors, 7297 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 * 1 76 610438+ 83 Linux
/dev/hdb2 77 2626 20482875 83 Linux
/dev/hdb3 2627 3901 10241437+ 83 Linux
/dev/hdb4 3902 7297 27278370 f Win95 Ext'd (LBA)
/dev/hdb5 3902 5176 10241406 83 Linux
/dev/hdb6 5177 6451 10241406 83 Linux
/dev/hdb7 6452 6833 3068383+ 83 Linux
/dev/hdb8 6834 7093 2088418+ 83 Linux
/dev/hdb9 7094 7220 1020096 82 Linux swap <== 위에서 얘기한 swap 영역이 보여진다.
/dev/hdb10 7221 7296 610438+ 83 Linux
리눅스 설치후 삭제시 이 fdisk 명령어를 이용해 해당 파티션을 삭제해 주면 된다.
Command (m for help): d
Partition number (1-8):
이처럼 출력이 되는데.. 이때 뒤에서 부터 하나씩 지워 나가면 된다.
(즉 큰수부터 입력을 해 나가면 된다. 8, 7, 6, 5.. 처럼)
다 삭제후 w로 저장후 ctrl+alt+del로 재부팅을 하면 된다.
fdisk명령어에 대한 것은 와우리눅스에서 설명이 잘 되어 있으니 참조하시기 바란다.
http://www.wowlinux.com/information/freshmanview.html?id=92&view=1