출처: [운영체제] 파일 시스템의 개념과 종류(FAT, NTFS, EXT, UFS) (tistory.com)
운영체제
[운영체제] 파일 시스템의 개념과 종류(FAT, NTFS, EXT, UFS)
파일 시스템(File system)
- 운영체제의 중요한 기능 중 하나로 사용자가 생성한 파일을 저장소에 어떻게 저장하고 관리할 것이지를 결정하는 것이다. 윈도우에서 파일 시스템을 확인할 수 있는 것은 바로 윈도우 탐색기이다. 즉, 탐색기는 C:\ 폴더 아래에 여러 개의 폴더로 이루어지는 계층형(Tree 형태) 구조를 이루고 있다. 이러한 파일 시스템은 과거 DOS에서 사용한 FAT부터 윈도우의 NTFS, 유닉스의 UFS 등이 존재한다.
FAT(File Allocation Table)
① FAT16(File Allocation Table)
- 대부분의 Microsoft 운영체제에서 호환되며 단순한 구조이다.
- 최대 2GB까지만 지원한다.
- 암호화 및 압축이 불가능하다.
- 파일명 최대 길이는 영문 8자이다.
- 클러스터당 1,632KB를 할당하여 내부 단편화가 발생한다.
② FAT32(File Allocation Table)
- FAT16을 보강한 것으로, 최대 2TB까지 지원한다.
- 암호화 및 압축이 불가능하다.
- 파일명의 최대 길이는 영문 256자이다.
- 클러스터당 4KB 사용하여 내부 단편화를 줄였다.
③ NTFS(New Technology file System)
- 암호화 및 압축을 지원하며, 대용량 파일 시스템을 지원한다.
- 가변 클러스터 크기(512 ~ 64KB)이며, 기본 값은 4KB이다.
- 트랜잭션 로깅을 통한 복구/오류 수정이 가능하다.
- Windows NT 이상에서 지원한다.
EXT(Extended File System)
① EXT(Extended File System)
- MINIX File System을 보완하여, 최대 2GB까지 파일 시스템 크기를 지원한다.
- 255byte까지 파일명을 지원한다.
- 접근 제어, inode 수정, 타임스탬프 수정 등의 기능이 불가능하다.
- 사용할수록 단편화가 심해진다.
② EXT2(Second Extended File System)
- 파일 시스템은 최대 2GB까지 파일 시스템 크기를 지원되며, 서브 디렉터리 개수 제한이 대폭 증가하였다.
- FSCK를 사용한 파일 시스템 오류 수정을 지원한다.
- 캐시의 데이터를 디스크에 저장 중 오류 발생 시 파일 시스템에 손상이 올 수 있다.(Sync 이전 데이터 손실)
- FSCK 이용한 파일 복구 시간에 많은 시간이 소요된다.(전체 섹터 검사해야 됨)
③ EXT3(Third Extended File System)
- EXT2에 저널링 기능 추가 및 온라인 파일 시스템이 증대됐다.
- 파일 시스템 변경 시 저널에 먼저 수정 내용을 기록한다(갑작스러운 다운 시 빠르게 오류 복구).
- 온라인 조각 모음이 불필요하다.(장시간 사용 시 조각화 발생).
- 디스크 조각화를 최소화한다.
④ EXT4(Fourth Extended File System)
- 16TB까지 파일 시스템을 지원하며, 볼륨은 1엑사바이트(Exabyte)까지 지원한다.
- Block Mapping 방식 및 Extends 방식을 지원한다.
- 저널 Checksum 기능이 추가되어 안정성이 강화되었다.
- 하위 호환성 지원 : exy3, ext2와 호환 가능
- Delayed allocation : 디스크에 쓰이기 전까지 블록 할당을 미루는 기술로 조각화 방지에 효과적
- 온라인 조각 모음 : 조각화 방지를 위한 커널 레벨의 기술
- Persistentt pre-allocation : 파일 전체만큼의 공간은 사전 할당, 스트리밍, 데이터 베이스 등에 유용
⑤ UFS(Unix File System)
- VTOC 디스크 레이블 : 각 파티션의 기본 정보
- 부트블록 : 부트스트랩에 필요한 파일들
- 프라이머리 슈퍼블록 : 데이터 블록의 개수, 실린더 그룹의 개수, 마운트 정보
- 백업 슈퍼블록 : 각 실린더마다 슈퍼블록에 대한 복사본을 가짐
- 실린더 그룹 : 슈퍼블록, 실린더 그룹 블록, i-node 테이블, 데이터 블록을 포함
- 슈퍼블록 : 파일 시스템 크기, i-node 테이블의 크기, free 블록 리스트 등 파일 시스템 관리 정보
- 실린더 그룹 블록 : 실린더 그룹 내의 유효 블록들의 비트맵 정보나 통계 정보
- i-node 테이블 : 파일에 대한 중요한 정보, 파일크기, 위치, 유형, 사용 허가권, 날짜 정보
- 데이터 블록 : 실제 데이터가 저장되는 공간
1. ZFS 역사 및 개념(ZFS 개념)
ZFS 란 ZettaByte File System 의 줄임말로, 기존의 유닉스(Unix) 파일 시스템을 대체하기 위하여 탄생한 파일 시스템 입니다. Matthew Ahrens 와 Jeff Bonwick 이 2001 년에 만들었습니다. ZFS 는 SUN Microsystems 의 OpenSolaris 를 위한 차세대 파일 시스템으로 설계되었습니다. 그 후에 2008 년 ZFS 는 FreeBSD 로 포팅되었습니다.
현존하는 유일한 128 비트 파일시스템이며, 기존의 32~64 비트 파일 시스템의 160 억배에 이르는 방대한 볼륨 크기를 가능하게 합니다. 64 비트 파일 시스템인 XFS 와 비교하는 것이 의미 없을 정도로 성능을 무한대로 확장한 스토리지이며, NTFS 의 논리적인 최대 12Exbyte 를 뛰어넘는 스토리지 공간을 제공합니다. 표준 POSIX 파일 시스템을 따르며, 기존 파일 시스템보다 관리가 편리합니다. 파일 시스템과 볼륨 매니저가 통합되어있기때문에 RAID 기술을 파일 시스템에서 지원합니다. 데이터 손상에 대한 광범위한 보호 및 자동 복구를 지원하며 기존 파일 시스템이 사용하지 않는 스토리지 풀(Storage Pool) 기술을 지원합니다.
2. ZFS 구조
ZFS 내부구조
위 이미지는 ZFS 파일 시스템의 구조를 도식화 한 그림이며, 구조의 가장 하부 구성은 SPA(Storage Pool Allocator)로 ZFS 파일 시스템의 특징 중 하나인 스토리지 풀을 의미합니다. 공간할당, 체크섬, 압축 암호화 등 ZFS 파일 시스템의 특징을 제공합니다. 상위 구조로 DMU(Data Management Unit)이며, DMU 오브젝트 및 13 SPA 메타 데이터를 저장합니다. DMU 오브젝트는 사용자 데이터, 디렉토리, znode, SPA 등으로 구성되며, 오브젝트 기반이기 때문에 모듈형 확장이 가능합니다. ZFS 의 경우 inode 기반의 표준 POSIX 를 타파했으나, 사용자들을 위해 ZPL(ZFS POSIX Layer)이 vnode 로부터 들어오는 읽기와 쓰기 작업 환경을 변환하여 처리하며 DMU 에게 SPA 의 위치와 사이즈를 기록하도록 요청합니다. 또한 볼륨 에뮬레이션이 가능하며, ZVOL(ZFS Emulated Volume)은 Pool 의 공간을 RAW 디바이스로 표현할 수 있도록 하여 SWAP 이나 ZFS 파일 시스템에서 UFS 파일 시스템을 생성하여 사용할 수 있도록 합니다. 체크섬(Checksum)은 엔드 투 엔드 (endto-end) 체크섬을 사용하여 블록마다 검사하지 않고 uberblock 최상위에 일괄적으로 작성하여 데이터 기록 오류에 대하여 빠른 에러 감지와 복구가 가능합니다. uberblock 이란 스토리지 풀 전체가 트리 구조로 표현이 되어 해당 트리의 뿌리에 해당하는 단일 디스크 블록을 의미합니다.
0. 서론
주요기능 10가지를 소개하겠습니다.
1. 스토리지 풀(Storage Pool)
Storage 구조비교
기존의 파일 시스템은 물리적인 스토리지에 볼륨을 생성하거나 RAID 를 구축하기 위해 별도의 볼륨 매니저를 사용하였으며, 기존의 파일 시스템의 볼륨 구성 변경(볼륨 확장, 디스크 추가, 레이아웃 변경) 시 서비스의 다운 타임이 발생합니다. 다운 타임을 줄이기 위해 ZFS 에선 스토리지 풀 개념을 사용합니다. 볼륨 확장 혹은 디스크 추가 시 스토리지 풀에 결합하며, 결합 직후 즉시 용량이 반영되어 사용이 가능합니다. 파일 시스템을 생성할 수 있는 임의의 데이터 저장소 역할을 수행하며, 모든 파일 시스템이 스토리지 풀로 구성된 스토리지에 데이터 저장이 가능합니다. 다양한 파일 시스템을 사용하여 생성한 스토리지 풀은 실제로 사용한 공간 만큼만 차지하기 때문에 효율적으로 디스크 사용이 가능합니다.
2. COW(Copy-On-Write) 트랜잭션
COW 트랜잭션 진행순서
기존 UFS 파일 시스템의 파일 수정 방식은 제자리에서 파일을 덮어쓰는 형식으로 진행되며, 데이터 블록이 할당되는 시간에 장애가 발생되면 데이터에 오류가 발생하고 포인팅 정보를 잃어버리게 되어 파일이 손상됩니다. 이 문제를 해결하기 위해 ‘fsck’ 명령어 사용하여 더티 블록을 찾아 정보를 재 연결하거나 복구하는데 다운타임이 발생합니다. 최근의 파일 시스템은 저널링 혹은 로깅 기능을 이용하여 분리된 저널을 찾아 복구할 수 있도록 하지만 불필요한 I/O 가 발생합니다. 이러한 현상을 방지하기 위하여 ZFS 에선 COW 트랜젝션 방식을 이용하여 파일을 수정하며, 일반적인 COW 트랜잭션과는 약간 다르게 사용합니다. ZFS 에서 사용하는 COW 트랜잭션은 사용중인 데이터를 가진 블록을 덮어쓰지 않고 별도의 다른 블록에 먼저 작성한 그림 3. COW 트랜잭션 진행 순서 15 뒤 변경 작업이 완료되면 포인터를 새로 쓰여진 블록으로 변경하여 저장합니다. 그렇게하면 기존의 변경 전 데이터는 파괴되지 않고 그대로 사용이 가능하며, 기존 데이터 복구가 가능합니다. 이 작업은 파일 시스템의 최상위의 단일 디스크 블록인 ubuerblock 에서 이루어지며, 이를 통해 예기지 않은 장애가 발생하더라도 데이터 손상이 없게 됩니다.
3. 체크섬(Checksum)
체크섬 예시
체크섬이란 중복검사의 한 형태로 오류 정정을 통해 공간이나 송신된 자료의 무결성을 검증하는 방법입니다. 대부분의 체크섬 파일 시스템은 비트 오류에 대한 보호만을 제공하며 그 이유는 스스로 일관성을 유지하는 블록 자체에 체크섬 데이터가 저장되기 때문입니다. 또한 유효성 검사를 진행하는 동안에는 다른 작업이 불가능합니다. 이러한 문제점을 해결하기 위하여 ZFS 에선 메모리 기반의 엔드 투 엔드(end-to-end) 체크섬을 제공합니다. 메모리 기반이기 때문에 유효성 검사 시 서버 메모리 하에서 작업이 이루어져 외부 작업이 가능하며, 체크섬 데이터는 블록을 가리키는 포인터의 옆에 저장됩니다. 포인터의 옆은 uberblock 의 최상위를 말하며 SHA-256 체크섬을 보유하고 있습니다. 모든 체크섬 확인 및 데이터 복구는 파일 시스템 계층에서 수행되고 응용 프로그램에는 영향을 주지 않습니다.
4. 스크러빙(scrubbing)
모든 디스크는 오류가 발생할 수 있습니다. 그렇기 때문에 디스크 오류가 발생하거나 데이터 불일치에 대한 루틴 검사를 실행하여 복구를 도와주는 기능인 스크러빙 기능이 존재합니다. ECC 메모리 스크러빙과 비슷한 기능을 ZFS 파일 시스템에서 지원하며, 스토리지 풀을 돌면서 모든 블록들을 읽은 뒤 체크섬을 검증한 후 블록의 복구가 필요하다는 결론이 나올 시 복구를 자동으로 진행시켜 줍니다.
5. 중복제거(Deduplication)
ZFS 파일 시스템의 주요 기능 중 하나인 중복 제거 기능은 하나의 스토리지 풀에서 동일한 내용의 파일이 여러 개 존재 시 하나의 파일 크기로 인식하여 디스크의 효율성을 높여줍니다. 파일의 해시값을 사용하여 동일한 내용의 파일인지 확인하며, 개별 파일의 해시값을 계산해야하기 때문에 리소스의 사용량이 증가합니다. 리소스의 사용때문에 옵션은 기본적으로 비활성화 상태입니다.
6. RAID-Z
ZFS 파일 시스템에선 RAID 기능을 파일 시스템 레벨에서 지원 합니다. 기존의 RAID 와 비슷하지만 ZFS 만의 RAID 인 RAID-Z 가 존재하며, 가변적인 스트라이프(Stripe) 형태를 지원함으로써 기존의 RAID-5 의 화이트 홀(Write Hole) 오류를 제거합니다. 기존 RAID 와 대응되는 방식은 RAID-5 와 RAID-Z, RAID-6 와 RAID-Z2 가 있으며 추가적인 RAID-Z3 도 존재합니다
RAID-Z 구조도
RAID-Z(RAID-5)의 경우 세 개 이상의 디스크에 데이터와 패리티 비트를 저장하는 구조이며 보통은 5 개 이상의 디스크를 사용합니다. 데이터별로 1 개의 패티리 비트를 사용하여 추후 디스크의 데이터 손실 시 복구용으로 사용합니다.
RAID-Z2 구조
RAID-Z2(RAID-6)는 4 개 이상의 디스크에 데이터와 패리티비트를 사용하여 저장하는 구조이며, 패리티 비트는 2 개를 사용합니다. 보통은 6 개의 디스크를 사용하며, 디스크가 최대 2 개까지 고장이 나더라도 데이터 복구가 가능합니다. 패리티 비트가 2 개 사용되어 동기화 및 알고리즘이 복잡해져 속도가 느립니다.
7. 스냅샷(Snapshot) 및 복제(Clone)
스냅샷(Snapshot)은 파일 시스템이나 볼륨의 I/O 가 발생하는 동안 파일 시스템 혹은 볼륨의 현재 내용을 읽기 전용 복사본으로 생성하는 기능입니다. 스냅샷으로 생성한 읽기 전용 복사본으로 볼륨 혹은 파일 시스템에 오류 발생 시 롤백(Roll-back)으로 복원이 가능합니다. 복제(Clone)란 읽기 전용 복사본인 스냅샷에 쓰기 기능을 추가한 것이며, 동일한 구조의 블록을 생성합니다.
8. 롤백(Roll-back) 및 백업(Back-up)
롤백(Roll-back)이란 스냅샷을 이용하여 활성화 된 ZFS 파일 시스템을 이전 상태로 되돌리는 기능이며, 오프라인이 아닌 온라인 상태에서도 백업(Back-up)이 가능합니다.
9. 압축(Compression)
모든 파일의 크기를 줄여 파일 전송이나 공간을 효율적으로 사용하도록 도와주는 기능이며, 기본적으로는 기능이 비활성화 상태입니다. 사용을 위해선 CLI 명령으로 기능을 활성화 시켜줍니다.
10. 암호화
솔라리스 11 및 익스프레스 버전에서 공식적으로 지원되는 기능이며, ZFS 파일시스템을 생성할때 암호화 설정을 할 수 있습니다. 암호화를 설정할 때 해당 ZFS 파일시스템 기능에 대한 비밀번호를 설정해야 하고 설정이 완료되면 기본값으로 aes-128-ccm 알고리즘을 통해서 암호화가 진행됩니다. 암호화가 완료되면 해당 파일시스템에 ZFS 기능을 사용할때마다 비밀번호를 입력받아 더욱 안전하게 사용할 수 있습니다
'법, 용어 > 용어' 카테고리의 다른 글
용어 비고 (1) | 2023.10.19 |
---|---|
네트워크 통신 Simplex Duplex (0) | 2023.10.19 |
네크워크 스위치 SLB (0) | 2023.10.10 |
용어 물리서버 가상서버 (0) | 2023.10.08 |
Guest OS와 Host OS란? 그 차이에 대해 알아보자 (0) | 2023.10.08 |