파일 시스템
- 리눅스 운영체제의 주요한 기능 중 하나
- 다양한 정보를 가진 파일과 디렉터리의 집합을 구조적으로 관리하는 체계
리눅스 고유의 디스크 기반 파일 시스템 |
- 리눅스는 초기에 미닉스의 파일 시스템(Minix File System. MFS)를 이용 - 곧 ext 파일 시스템으로 알려진 리눅스 고유의 파일 시스템을 사용 |
|
ext(ext1) |
- 레미 카드가 개발. - ext 는 'Extended File System'의 약자 - extfs라고도 하며, MSF의 기능을 확장했다는 의미 - MSF의 경우 16비트 주소 체계를 사용. 파일 시스템의 최대 크기 64MB / ext 의 경우 2GB로 늘어남. - 파일 이름 같은 경우 MFS는 14바이트 / ext는 255바이트까지 지원 - 하지만 ext 파일 시스템은 inode의 수정과 데이터 수정시간 지원이 되지 않음. - 링크드 리스트로 파일 시스템을 구성하여 파일 시스템이 복잡해지고, 파편화되는 문제 발생 - 현재 리눅스에서는 ext 파일 시스템을 사용하지 않고 있음. |
ext2 |
- ext2 는 'Second Extended File System(Ext2 fs)' 의 약자. 보통 ext2라 불림. - ext2 파일 시스템은 ext 파일 시스템이 가지고 있던 문제를 해결하기 위해 내놓은 것으로, 레미 카드가 개발하여 1990년 1월에 공개 - ext2 파일 시스템은 ext 파일 시스템을 기반으로 확장성도 고려하여 개발 - ext2 초기에 버그가 있어 불안정하였지만 사용이 증가하면서 매우 안정적인 파일 시스템이 됨. - ext2 파일 시스템은 리눅스 커널 2.6.17 버전 이전에서는 최대 크기가 2TB로 제한. - 현재는 이론적으로 32TB까지 지원이 가능. - ext2 는 ext3 파일 시스템이 도입되기 전까지 리눅스의 표준 파일 시스템으로 사용. - 현재도 부팅 가능한 USB 플래시 드라이브와 다른 SSD 장치에 사용. |
ext3 |
- ext3 는 'Third Extended File System' - 스테판 트위디(Stephan Tweedie) 가 개발하여 2001년 11월 리눅스 2.4.15에 추가 - ext3 는 ext2 를 기반으로 개발되어 호환이 가능 - ext2 파일 시스템의 파일을 별도의 변경 없이 ext3 파일 시스템에 바로 이식 가능 - ext3 의 가장 큰 장점인 저널링(journaling) 기능을 도입 - 저널링 => 디스크에 기록되는 데이터의 복구 기능을 강화한 것. => 데이터를 디스크에 기록하기 전에 먼저 저널에 수정 사항을 기록. => 저널은 쉽게 말해 로그 기록과 같은 것이라고 보면 됨. => 디스크에 데이터를 기록하기 전에 갑자기 전원이 나가거나 시스템에 충돌이 발생할 경우 이 저널의 기록을 보고 재빨리 복구할 수 있음. - ext3 에서 파일 시스템의 최대 크기는 블록의 크기에 따라 2~32TB까지 지원. - 단점) inode의 동적 할당이나 다양한 블록 크기와 같은 최신 파일 시스템 기능 부족. - 단점) 온라인 조각 모음 기능 없음. |
ext4 |
- ext4 'Fourth Extended File System' - 밍밍 카오(Mingming Cao), 안드레 딜거(Andreas Dilger), 알렉스 주라블레프(Alex Zhuravlen), 데이브 클레이 캠프(Dave Kleikamp), 테오도어 츠오(Theodore Ts'o), 에릭 샌딘(Eric Sandeen), 샘 나그시네(Sam Naghshineh) 등에 의해 개발. - 2008년 12월 25일 2.6.28에 포함되어 공개 - ext4 파일 시스템은 1EB(엑사바이트, 1EB = 1024 * 1024TB) 이상의 볼륨과 16TB이상의 파일을 지원. - ext2 및 ext3와 호환성 유지 - ext3에서는 서브 디렉토리의 수가 32000개로 제한 / ext4에서는 64000개로 늘어남. - 온라인 조각 모음 기능 지원. |
리눅스에서 지원하는 다른 파일 시스템 - 리눅스에서 제공하는 표준 파일 시스템이라고 할 수 있는 ext2, ext3, ext4외에 유닉스나 윈도 시스템 등 다른 시스템과 호환 가능. - CD-ROM, DVD 등 외부 저장 장치를 사용할 수 있도록 다양한 파일 시스템 지원 |
|
파일 시스템 |
기능 |
msdos |
MS-DOS 파티션을 사용하기 위한 파일 시스템 |
iso9660 |
CD-ROM, DVD의 표준 파일 시스템(읽기 전용으로 사용) |
nfs |
Network File System으로 원격 서버의 디스크를 연결할 때 사용 |
ufs |
Unix File System으로 유닉스의 표준 파일 시스템 |
vfat |
윈도 95, 98, NT를 지원하기 위한 파일 시스템 |
hpfs |
HPFS를 지원하기 위한 파일 시스템 |
ntfs |
윈도의 NTFS를 지원하기 위한 파일 시스템 |
sysv |
유닉스 시스템 V를 지원하기 위한 파일 시스템 |
hfs |
맥의 hfs 파일 시스템을 지원하기 위한 파일 시스템 |
특수 용도의 가상 파일 시스템 - 디스크가 아니라 메모리에서 생성되어 사용되는 가상 파일 시스템 - 가상 파일 시스템은 일반적으로 특수한 용도를 가지고 필요에 따라 생겼다 없어졌다를 반복 |
|
파일시스템 |
기능 |
swap |
- 스왑 영역을 관리하기 위한 스왑 파일 시스템 |
tmtpfs |
- Temporary File System. 메모리에 임시 파일을 저장하기 위한 파일 시스템. 시스템이 재식작할 때마다 기존 내용이 없어짐. - ex) '/run' 디렉터리 |
proc |
- proc 파일 시스템 '/proc' 디렉터리 - 커널의 현재 상태를 나타내는 파일을 가지고 있음. |
ramfs |
- 램디스크를 지원하는 파일 시스템 |
rootfs |
- Root File System. '/' 디렉터리 - 시스템 초기화 관리에 필요한 내용을 관리 |
현재 시스템이 지원하는 파일 시스템 확인 |
- 배포판에 따라 사용하는 파일 시스템 종류가 다를 수 있음. - cat 명령 등을 통해 '/proc/filesystems'를 확인하면 현재 커널이 지원하는 파일 시스템의 종류를 확인할 수 있음. - 좌측의 'nodev' 는 해당 파일 시스템이 블록장치(ex : 디스크)와 연결되어 있지 않읂 가상 파일 시스템임을 뜻함. - 우측에 나오는 것이 지원하는 파일 시스템 - 특수한 용도로 사용되는 가상 파일 시스템이 대부분. - 'fuseblk' 는 ntfs 파일 시스템을 연결할 때 사용 되는 파일 시스템. |
스왑 파티션 관리 |
- 스왑 파티션은 물리적 메모리(RAM)과 함께 메모리 영역으로 사용하기 위해 할당한 디스크 영역. - 프로그램은 메모리에 적재되어야 실행 가능. 만약 메모리 용량이 모자랄 경우 현재 실행하지 않는 프로그램을 스왑 파티션으로 이동했다가 실행할 순서가 되면 다시 메모리로 불러들임. - 스왑 파티션에 할당한 공간이 모자를 경우 스왑 영역을 추가해야함. - 새로운 디스크 파티션을 스왑 파티션으로 생성하거나, 기존의 일반 디스크 파티션에 스왑 파일을 생성함. |
1. 현재 스왑 영역 확인 : swapon -s - 'swapon -s' 명령으로 확인 가능 |
2. 새로운 디스크 파티션을 스왑 영역으로 추가 1) - 'fdisk' 명령으로 디스크에 스왑 파티션 생성 - 비어 있는 디스크 파티션에 새로운 파티션을 생성 후, 이 파티션의 종류를 82(Linux Swap)으로 설정 - 'sudo fdisk /dev/sdd' 2) - 'mkswap' 명령으로 스왑파티션을 포맷하여 스왑 파일 시스템을 생성 - 'sudo mkswap /dev/sdd1' 3) - 새로운 스왑 파티션을 활성화 - 'sudo swapon /dev/sdd1' 4) - 'swapon -s' 명령으로 스왑 영역 추가되었는지 확인 5) - 재부팅 시에도 새 스왑 영역을 활성화하려면 '/etc/fstab' 파일에 정보 추가 - '/dev/sdd1 swap swap defaults 0 0' |
3. 기존 파티션에 스왑 파일 추가 1) - 생성할 스왑 파일의 크기를 정한 후 1,024*블록 개수를 산정 ex) 128M일 경우 1,024*131,072가 됨 2) - 빈 파일을 'dd' 명령으로 생성. count 다음에 위에서 계산한 블록 개수를 지정. ex) sudo dd if=/dev/zero of=/swapfile bs=1024 count=131072 3) - 'mkswap' 명령으로 2번에서 생성한 파일을 스왑 파일로 만듬 ex) sudo mkswap /swapfile 4) - 스왑 파일 활성화 ex) sudo swapon /swapfile 5) - 'swapon -s' 명령으로 스왑 영역 추가되었는지 확인 6) - 재부팅 시에도 새 스왑 영역을 활성화하려면 '/etc/fstab' 파일에 정보 추가 - '/swapfile swap swap defaults 0 0' |