리눅스에서는 ext포맷을 사용한다.
시스템 파티션에서는 당연히 ext 포맷은 필수이지만, ext 포맷의 장점을 제대로 알아야 추가로 사용하는 파티션에도 FAT나 NTFS, HTFS가 아닌 ext 파티션을 적용할 수 있을 것이다.
그래서 그 차이를 정리해본다.
ext, ext2, ext3, ext4 순서로 기록하였다.
1. ext
2. ext2
- 리눅스 커널에 있는 ext2fs 파일 시스템 드라이버는 ext2 파일 시스템을 정식으로 구현했다.
- 1993년 1월에 도입되었다.
- 파티션 ID: Apple_UNIX_SVR2(애플 파티션 맵), 0x83(마스터 부트 레코드, MBR), EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
- 디렉토리 구조는 테이블
- 파일 구조는 비트맵(여유공간), 테이블(메타데이터)
- 불량블록 구조: 테이블
- 최대 파일 크기: 16GB - 2TB
- 최대 파일 수:
- 최대 파일 이름 길이: 255 바이트
- 최대 볼륨 크기: 2-32TB
- 날짜 사용권한: 수정(mtime), 특성 수정(ctime), 접근(atime)
- 날짜 범위: 1901년 12월 14일 ~ 2038년 1월 18일
- 날짜 정밀도: 1s
- 파일 시스템 권한: POSIX
- 압축은 지원되지 않으나, 패치를 통해 사용 가능하다.
- 암호화는 지원되지 않는다.
- 사용 가능한 운영체제로는 리눅스, BSD, WINDOWS(IFS를 통해), OSX(IFS를 통해)
- 모든 파일이나 디렉토리는 아이노드로 표현된다. 아이노드는 크기, 권한, 소유권, 그리고 파일이나 디렉토리의 디스크의 위치에 대한 데이터를 포함한다.
- 아이노드에서 파일의 데이터를 포함하는 첫 12블록의 포인터가 있다. (블록의 다음 세트에 포인터를 포함하는) 간접 블록에 대한 포인터, (간접 블록에 대한 포인터를 포함하는) 이중 간접 블록에 대한 포인터, 그리고 (이중 간접 블록에 대한 포인터를 포함하는) 삼중-간접 블록에 대한 포인터가 있다.
- e2compr는 리눅스 커널에서 사용자 애플리케이션의 어떤 지원도 없이 파일 시스템에서 파일의 온라인 압축과 압축 해제를 지원하는 ext2 파일 시스템 드라이버의 변형이다.
3. ext3
- 날짜 사용권한: 수정(mtime), 특성 수정(ctime), 접근(atime)
- 날짜 범위: 1901년 12월 14일 ~ 2038년 1월 18일
- 날짜 정밀도: 1s
- 특성: No-atime, append-only, synchronous-write, no-dump, h-tree(디렉토리), immutable, journal, secure-delete, top(디렉토리), allow-undelete
- 파일시스템 권한: 유닉스 허가, ACLs, 임의보안 특성(리눅스 6.2 이상)
- 압축은 지원되지 않음
- 암호화는 지원되지 않음(블록장치 수준에서 제공됨)
- 운영체제: 리눅스, BSD, WINDOWS(IFS를 통해 지원)
- 하위디렉토리에 생성될 수 있는 서브디렉토리의 최대 수는 31998개 이다. 이는 아이노드가 32000개의 링크를 지원하기 때문이다. 남은 2개는 ./ 현재폴더, ../ 상위폴더 링크이다.
- 저널링은 Journal(리스크 최소), Ordered(리스크 중간), Writeback(리스크 최고)로 나눠진다.
ext3 장점
ext3 단점
4. ext4
- 64비트 기억 공간 제한을 없애고 ext3의 성능을 향상시키며, 하위 호환성이 있는 확장 버전으로서, 클러스터 파일 시스템스 사에서 개발되었다. 그러나 다른 커널 개발자들이 ext3사용자에게는 영향을 주지 않으면서 ext3에서 fork하여 ext4로 이름 변경을 제안하여, Theodore Ts'o는 ext4 개발 계획을 발표하였다.
- 영문명은 Fourth extended file system
- 도입일은 안정버전 기준 2008년 10월 21일이며, 불안정 버전 기준으로 2006년 10월 10일이다.
- 도입 운영체제: 리눅스 2.6.28, 2.6.19
- 파티션 ID: 0x83(MBR), EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
- 디렉토리 구조: Linked List, Hashed B-tree
- 파일 구조: Extents/Bitmap
- 불량 블록 구조: 테이블
- 최대 파일 크기: 16 TiB (4k 블록 기준)
- 최대 파일 수: 40억(파일 시스템 작성 시간에 지정됨)
- 최대 파일이름 길이: 256바이트
- 최대 볼륨 크기: 1 EiB
- 날짜 사용권한: 수정(mtime), 특성 수정(ctime), 접근(atime), 삭제(dtime), 작성(crtime)
- 날짜 범위: 1901년 12월 14일 - 2514년 4월 25일
- 날짜 정밀도: nano second
- 포크 스트림: NO
- 특성: extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev
- 파일시스템 권한: POSIX
- 압축 지원되지 않음
- 암호화 지원되지 않음
- 운영체제: 리눅스, WINDOWS(ext2fsd 이용시)
ext4 장점
- 대형 파일 시스템: 최대 1 엑사바이트의 볼륨과 최대 16테라바이트의 파일을 지원한다.
- extent: ext2와 ext3에서 쓰이던 전통적인 블록 매핑 방식을 대체하기 위한 것이다.
- 하위 호환성: ext3와 ext2에 대한 하위 호환성이 있어서 ext3와 ext2 파일 시스템을 ext4로 마운트 하는 것이 가능하다. 하지만 ext4의 중요한 새로운 특징인 extents를 사용한다면 ext3로 마운트는 불가능하다.
- 지연된 할당: allocate-on-flush라는 파일 시스템 성능 기술을 사용한다.
- 32000개의 하위 디렉토리 제한 없음, ext4에서는 64000개로 늘어났으며, dir_nlink 기능을 이용한다면 더 큰 개수도 허용한다. H-tree인덱스를 이용하여 지속된 성능을 얻을 수 있다. 1
ext4 단점
참고 링크: 위키피디아. 위키백과
https://ko.wikipedia.org/wiki/%ED%99%95%EC%9E%A5_%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C
https://ko.wikipedia.org/wiki/Ext2
https://ko.wikipedia.org/wiki/Ext3
https://ko.wikipedia.org/wiki/Ext4
- 트리 깊이는 3으로 제한된다. 디렉토리의 해시값만 알면, 트리를 2번만 조회해도 해당 dentry객체를 찾을 수 있으므로 O(1)이라고 볼 수 있다. 최대이름의 길이를 가진 파일 기준으로, 한 디렉토리 안의 갯수는 993814개이고, 최대이름 길이를 가질 가능성은 거의 없기 때문에 색인트리의 제한은 있지만, 그 제한에 걸리는 일은 없다고 보면 된다.(http://aiya.ms.mff.cuni.cz/lfs/doc_html/node6.html) [본문으로]
'[Developer] > Linux,Windows,macOS' 카테고리의 다른 글
Unreal에서 프로젝트 생성시 System.IO.DirectoryNotFoundException 발생시 해결 (0) | 2018.09.12 |
---|---|
새 디스크 추가시 ext4 format으로 마운트하기 (0) | 2017.09.06 |
Gitlab 설치시 포트 변경 방법 (0) | 2016.09.14 |
ssh접속을 위해 클립보드에 public key 복사하기 (0) | 2016.09.12 |
Gitlab 설치시 오류 대처법 1 (0) | 2016.09.12 |
댓글