리눅스마스터 2급 - 파일 시스템 관련
<파일 시스템의 개요>
1. 운영체제가 파일을 시스템의 디스크상에 구성하는 방식
2. 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관/조직하는 체제
3. 하드 디스크나 CD-ROM과 같은 물리적 저장소 관리
4. 파일 서버상 자료의 접근을 제공하는 방식과 가상의 형태로서 접근 수단만이 존재하는 방식(procfs 등)도 파일 시스템 범위에 포함
5. 리눅스 파일 시스템의 구조(ext2) :
Super Block | 해당 파일 시스템 관련 정보 저장 - 블록의 크기(1KB, 2KB, 4KB) - 총 블록의 개수와 블록 그룹의 개수 - inode의 개수 |
Group Descriptor Table |
각 Block Group을 관리하는 정보 저장 - Block Bitmap과 inode Bitmap의 블록 번호 - 첫 번째 inode Table Block의 블록 번호 - 그룹 안에 있는 빈 블록 수, 그룹 안에 있는 inode 수, 그룹 안에 있는 빈 디렉터리 수 |
Block bitmap | 그룹 내에 있는 각 블록의 사용 상태를 나타냄 |
inode | 1. 파일에 대한 제어 정보 및 데이터 블록 포인터 저장 2. 파일의 이름을 제외한 해당 파일의 모든 정보를 저장 3. 파일 이름에 부여되는 고유번호, 파일 형태, 크기, 위치, 파일의 소유자 등 4. 모든 파일들과 디렉터리들은 각각 1개의 inode를 할당 inode bitmap : 이 블록에 속한 각 비트는 그룹 내에 있는 각 inode의 사용 상태를 나타냄 inode tabel : 각각의 inode에 대한 정보를 나타내는 inode descriptor로 구성 |
<파일 시스템의 종류>
1. 리눅스 전용 디스크 기반 파일 시스템
파일 시스템 | 설명 |
ext(1) | - 리눅스 초기에 사용되던 파일 시스템이며 호환성 X - ext2의 원형 - 2GByte의 데이터와 파일명을 255자까지 지정 가능 - 파일 접근에 대한 타임 스탬프, 아이노드 수정 지원 불가 |
ext2 | - ext 파일 시스템의 다음 ver - 고용량 디스크 사용을 위해 설계된 파일 시스템 - 호환 및 업그레이드가 쉽게 설계되어있음. |
ext3 | - ext2의 확장판 - 리눅스의 대표적인 저널링(journaling)을 지원하도록 확장된 파일 시스템 - ACL(Access Control List)을 통한 접근 제어 지원 |
ext4 | - ext2 ext3와 호환성이 있는 확장 버전 - 파일에 디스크 할당 시 물리적으로 연속적인 블록을 할당 = 파일 접근 속도 향상 및 단편화를 줄이도록 설계된 파일 시스템 - 64비트 기억 공간 제한을 없앰 - 16TB의 파일 지원 = 파일 확장자는 필요 없으며 파일 특성을 알리기 위해 확장자 사용 가능 = ' . '으로 시작하는 파일은 숨겨진 파일(ls -a 명령) = ' . '은 현재 디렉터리 ' .. '은 부모 디렉터리 |
( 파일시스템 비교 ) | ext2 | ext3 | ext4 |
개발년도/ 커널버전 | 1993년 | 2001년 커널 2.4.15 | 2006년 커널 2.6.19 2008년 커널 2.6.28 |
최대 파일 크기 | 16GB ~ 2TB | 16GB ~ 2TB | 16GB ~ 2TB |
최대 파일 시스템 크기 | 2TB ~ 32TB | 2TB ~ 32TB | 1EB |
특징 | 저널링 기능 X | 저널링 기능 포함 | 확장 멀티블록 할당 |
2. 저널링 파일 시스템
- 시스템 비정상 종료 시 저널(로그)을 이용해 빠르면서도 안정적인 복구가 가능
- 데이터를 디스크에 쓰기 전 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 빠르고 안정적인 복구 기능을 제공하는 기술
= 기존의 ext2 파일 시스템의 경우에는 시스템이 동작을 멈추기 직전에 파일 시스템에 수정을 가하고 있었는지 전혀 알 수 없음.
= 저널 기능이 없는 경우 시스템을 복구하기 위해서 fsck에 의해 관리되는 슈퍼블록, 비트맵, 아이노드 등을 모두 검사
해야 하기 때문에 시간이 오래 걸림.
- 운영 형태는 다음과 같다.
= 저널이라는 로그에 시스템 전 상태를 저장
= 시스템의 비정상적인 종료 시 저널(로그)을 검사
= 저널(로그) 정보를 바탕으로 파일 시스템에 수정 내용을 적용
- 저널링 기술이 적용된 파일 시스템은 ext3, ext4, XFS, JFS, RexierFS 등
3. 네트워크 파일 시스템
파일 시스템 | 설명 |
SMB | - 삼바 파일 시스템을 마운트 지정 - Server Message Block(서버 메시지 블록) - 윈도우 계열 OS 환경에서 사용되는 파일/ 프린터 공유 프로토콜 - 리눅스, 유닉스 OS와 윈도우 OS와의 자료 및 하드웨어 공유 - 윈도우에서 표준 클라이언트 환경으로 처음부터 구성됐고, NFS 유닉스 표준 응용부터 운용 상 쉬움. |
CIFS | - Connon Internet File System - SMB를 확장한 파일 시스템 - SMB를 기초로 응용하여 라우터를 뛰어넘어 연결할 수 있는 프로토콜 |
NFS | - Network File System - 썬마이크로시스템이 개발한 네트워크 공유 프로토콜 - 파일 공유 및 파일 서버로 사용됨 - 공유된 영역을 마운트할 때 사용 - 하드웨어, 운영체제/ 네트워크 구조가 달라도 공유 가능 - NFS 서버의 특정 디렉터리를 마운트하여 사용 가능 |
4. 기타 지원 가능한 파일 시스템
파일 시스템 | 설명 |
FAT | - Windows NT가 지원하는 파일 시스템 중 가장 간단한 시스템 - FAT로 포맷된 디스크는 클러스터 단위로 할당 - 클러스터 크기는 볼륨 크기에 따라 결정 - 읽기 전용, 숨김, 시스템 및 보관 파일 특성만 지원 - 삼바 파일 시스템을 마운트 지정 |
VFAT | - FAT 파일 시스템이 확장된 것으로 FAT과 호환 - FAT보다 제한이 적음 - 파일 이름 최대 255자까지 - 공백이나 여러 개의 구두점도 포함 - 대소문자는 지정한 대로 보존되기는 하나 구별하지 X |
FAT32 | - Windows 95, 98 및 ME와 같은 버전과 다중 부팅을 구성 - 32GB보다 큰 파티션을 만들 수 X, 파티션에 4GB를 초과하는 파일을 저장할 수 X |
NTFS | - 윈도우에서 사용하는 파일 시스템 - 안정성이 뛰어나고 대용량 파일도 저장 - 안정성, 자세한 사용자 제한, 보안성 등이 FAT32보다 뛰어남 - 파일 크기 및 볼륨은 이론상으로 최대 16EB이나 실질적으론 2TB |
ISO 9660 | - CD-ROM의 표준 파일 시스템 - 1988년에 제정된 표준 |
UDF | - Universal Dist Format, 최신 파일 시스템 형식 - OSTA에 의해 개발 - 광학 매체용 파일 시스템 표준 - ISO 9660 파일 시스템을 대체하기 위한 것으로 대부분 DVD에서 사용 - DVD 멀티미디어 디스크들은 MPEG 오디오 및 비디오 스트림을 담기 위해 사용 |
HPFS | - OS/2 운영체제를 위해 만들어진 파일 시스템 - 1988년 발표, 마이크로소프트와 IBM이 공동개발 |
<관련 명령어 - mount, umount>
1. mount는 특정 디바이스를 특정 디렉터리처럼 사용하기 위해 장치와 디렉터리를 연결
2. 리눅스는 PnP(플러그앤플레이) 기능을 지원하지만 지원하는 하드웨어가 많지 않으므로 시스템 부팅 후에 수동으로
마운트해서 사용을 하고 사용이 끝난 후에는 언마운트함
3. 마운트 설정 명령어 형식 :
mount [옵션] [디바이스명] [디렉터리명] |
옵션 | 설명 | |
-a | /etc/fstab 파일에 정의된 모든 시스템 마운트 | |
-n | /etc/mtab 파일에 정보를 저장하지 않고 마운트 | |
-f | 실제 마운트 X, 마운트가 가능한지 테스트 | |
-t | 파일 시스템 | - vfat : 마이크로소프트 파일 시스템 FAT32를 마운트 - ext2, ext3, ext4 : 리눅스 파일 시스템 마운트 - iso9660 : CD-ROM이나 DVD 마운트 - smbfs : 삼바 파일 시스템 마운트 - nfs : 네트워크 파일 시스템인 공유된 영역을 마운트 |
-o | 추가 설정 | - ro : 읽기 전용으로 마운트 - rw : 읽기/ 쓰기 모드로 마운트 - loop : 루프 디바이스나 CD-ROM 이미지 파일 iso 마운트 - remount : 파티션을 재마운트 - noatime : 파일이 변경되기 전까지 access time이 변경되지 X - sync : 파일 시스템에 대한 입출력 동기화 - user : 일반 사용자가 마운트 |
4. 파일 /etc/mtab은 현재 마운트된 블록 시스템 정보 표시
- 시스템 부팅 시에는 파일 /etc/fstab의 마운트 정보 참조
- 파일 /etc/mtab에서는 현재 시스템의 마운트 정보 확인 가능
5. 마운트 해제 명령어 형식 :
umount [옵션] [디바이스명] [디렉터리명] |
옵션)
-a : 파일 /etc/mtab에 명시된 파일 시스템을 마운트 해제
-n : 파일 /etc/mtab 파일을 갱신하지 않고 마운트 해제
-t : 언마운트할 파일 시스템 지정
<eject>
이동식 보조기억장치(DVD/CD-ROM) 등의 미디어를 해제하고 장치를 제거하는 명령어 형식 :
eject [옵션] [디바이스명] |
옵션)
-r : CD-ROM을 마운트 해제
-f : 플로피를 마운트 해제
<fdisk>
1. 새로운 파티션 생성, 기존 파티션의 삭제, 파티션의 타입 결정 등의 작업 수행 가능
2. fdisk 프로그램은 한 번에 한 디스크에 대한 작업 수행
3. fdisk는 명령어 프롬프트 중심의 매우 간단한 인터페이스를 보유
4. fdisk 형식
fdisk [옵션] [장치명] |
명령어)
-v : fdisk 버전 정보 표시
-l : 현재 디스크의 파티션 테이블 정보 표시
-s : 지정된 파티션의 크기를 블록 단위로 표시
5. fdisk를 실행하기 위해서는 어떤 디스크의 파티션으로 나눌 것인지 알려 줘야함.
6. 하나의 컴퓨터에 여러 개의 하드디스크가 설치될 수 있기에 어떤 하드디스크의 파티션을 변경할 것인지 알려줘야함.
7. 주요 명령어 :
명령어 | 설명 |
p | 디스크 정보 표시 |
n | 파티션 생성 |
t | 파티션 속성 지정 |
d | 파티션 삭제 |
w | 변경된 파티션 정보 저장 |
q | 파티션 설정 작업 종료 |
<mkfs>
1. 리눅스 파일 시스템 생성
2. fdisk로 하드디스크의 파티션을 나눈 후 해당 파티션에 맞는 파일 시스템 생성
3. mkfs형식
mkfs [옵션] 장치이름 |
옵션 | 설명 |
-v | 자세한 정보 보기 |
-t 파일 시스템 | 생성할 파일 시스템 타입(ext2, ext3, ext4 등) 지정 |
-c | 파일 시스템을 생성 전 배드블록 검사 |
-l 파일명 | 지정된 파일명으로부터 배드블록 목록 읽기 |
-v | 작업 상태와 결과 자세히 보기 |
<mke2fs>
1. ext2, ext3, ext4 타입의 리눅스 파일 시스템을 생성(포맷)하는 명령
2. fdisk 명령어로 파티션 작업 후에 mke2fs/mkfs 명령어로 파일 시스템을 생성해야함
3. mke2fs 형식 :
mke2fs [옵션] 장치명 |
옵션 | 설명 |
-t | 파일 시스템 타입 지정(ext2, ext3, ext4 등) |
-b | 블록 크기를 바이트 수로 지정 |
-f | 프래그먼트 크기 지정 |
-i | inode당 바이트 수를 지정 |
-j | 파티션을 저널링 파일 시스템 ext3으로 생성 |
-R | RAID4 장치를 포맷할 때 사용하는 특수 옵션 -R stripe은 RAID 장치에 적합한 데이터 구조 저장 |
<fsck>
1. 파일 시스템의 무결성을 점검하고 대화식으로 복구하는 명령
2. 파일 시스템 점검은 다음과 같은 여러 단계로 이루어짐
- 오류에 대한 저널 로그의 점검
- i-node, 간접 데이터 블록, 데이터 블록, 그리고 메모리에 할당되지 않은 블록들을 리스트화한 빈칸목록(free-list) 점검
- 파일 크기의 점검과 디렉터리 항목의 점검
3. 디렉터리 /lost+found는 fsck에서 사용하는 디렉터리임.
- 손상된 파일을 /lost+found 디렉터리로 연결한 뒤에 오류를 수정하게 되며, 평상시에는 null파일 링크에 의해 비어있음.
- 디렉터리 /lost+fount에서 작업을 수행하다 정상적으로 복구 될 시 파일이 사라짐.
4. fsck 형식 :
fsck [옵션] 장치명 |
옵션 | 설명 |
-A | /etc/fstab에 표시된 모든 파일 시스템을 점검 |
-a | 질의 없이 자동 복구 |
-r | 질의 후 복구 |
-s | fsck 동작을 시리얼화, 대화형 모드에서 여러 파일 시스템 점검 시 유용 |
-t 파일 시스템 | 점검할 파일 시스템 유형 지정 |