JFS(파일 시스템)
JFS (file system)![]() | 이 기사의 주요 부분을 다시 써야 할 수도 있다.(2012년 7월) (이 과 시기 |
개발자 | IBM 등 |
---|---|
풀네임 | IBM 문서철 파일 시스템 |
소개했다 | 1990년과 1999년 AIX 3.1의 JFS1 및 OS/2 4.5의 JFS 사용 |
파티션 식별자 | 0x35(MBR) |
구조물들 | |
디렉토리 내용 | B+트리 |
파일 할당 | 비트맵/확장점 |
한계 | |
최대 볼륨 크기 | 32PB(32 × 1024바이트5) |
최대 파일 크기 | 4PB(4 × 1024바이트5) |
최대 파일 수 | 제한 없음 |
최대 파일 이름 길이 | 255바이트 |
파일 이름에 허용된 문자 | NUL을 제외한 모든 유니코드 |
특징들 | |
기록된 날짜 | 수정(mtime), 속성 수정(ctime), 액세스(attime) |
날짜 결정 | 1ns |
포크 | 네 |
파일 시스템 권한 | POSIX, ACL |
투명 압축 | AIX의 JFS1에만 해당 |
투명 암호화 | 아니오(블록 장치 수준에서 제공됨) |
데이터 중복 제거 | 아니요. |
기타 | |
지원되는 운영 체제 | AIX, OS/2, Linux, eComStation, ArcaOS |
JFS(Journaled File System)는 IBM이 만든 64비트 저널링 파일 시스템이다.AIX, OS/2, eComStation, ArcaOS, Linux 운영 체제용 버전이 있다.후자는 GNU General Public License(GPL)의 조건에 따라 무료 소프트웨어로 이용할 수 있다.HP-UX는 베리타스 소프트웨어 VxFS의 OEM 버전인 JFS라는 이름의 다른 파일 시스템을 가지고 있다.null
AIX 운영체제에는 JFS(JFS1)와 JFS2로 각각 불리는 JFS 파일시스템 2세대가 존재한다.[1][2]OS/2나 Linux와 같은 다른 운영 체제에서는 2세대만 존재하며 단순히 JFS라고 부른다.[3]이는 실제로 JFS1을 지칭하는 AIX의 JFS와안 된다 혼동해서는.
역사
IBM은 1990년 2월 AIX 버전 3.1의 초기 출시와 함께 JFS를 선보였다.현재 AIX에서 JFS1로 불리는 이 파일 시스템은 이후 10년간 AIX의 최고 파일 시스템이었으며, 수천 또는 수백만 명의 고객의 AIX 시스템에 설치되었다.역사적으로 JFS1 파일 시스템은 AIX의 메모리 관리자와 매우 밀접하게 연관되어 있는데,[1] 이는 하나의 운영 체제만을 지원하는 파일 시스템의 전형적인 설계다.JFS는 저널링을 지원하는 최초의 파일 시스템 중 하나였습니다.
1995년, 작업은 파일 시스템을 확장성을 높이고 프로세서가 두 개 이상 있는 기계를 지원하기 시작했다.또 다른 목표는 여러 운영 체제에서 실행할 수 있는 좀 더 휴대 가능한 파일 시스템을 확보하는 것이었다.몇 년간의 설계, 코딩, 테스트를 거쳐 1999년 4월 eBusiness용 OS/2 Warp Server에서, 2000년 10월 OS/2 Warp Client에서 새로운 JFS가 출하되었다.1999년 12월, OS/2 JFS 원본의 스냅샷이 오픈 소스 커뮤니티에 부여되어 JFS를 리눅스로 포팅하기 위한 작업이 시작되었다.리눅스용 JFS의 첫 번째 안정적 출시는 2001년 6월에 나타났다.[3]JFS for 리눅스 프로젝트는 JFS Core Team으로 알려진 소수의 기여자 그룹에 의해 유지된다.[4]또한 이 소스 릴리스는 오픈 소스 JFS의 OS/2로 다시 전송되는 리포트의 기초를 형성하는 데에도 작용했다.null
이러한 노력과 병행하여 JFS 개발팀 중 일부는 1997년에 AIX 운영체제 개발그룹으로 복귀하여 이 새로운 JFS 원천기지를 AIX 운영체제로 이전하기 시작했다.2001년 5월에 AIX 5L에 두 번째 저널링된 파일 시스템인 JFS2(Enhanced Journaled File System)가 제공되었다.[1][3]
2008년 초에는 IBM이 더 이상 JFS를 유지하는 데 관심이 없으므로 생산 환경에서 사용해서는 안 된다는 추측이 있었다.[5]그러나 IBM Linux Technology Center와 JFS Core Team의 멤버인 Dave Kleikamp는 여전히 Linux 커널의 변화를 따르고 있으며 잠재적인 소프트웨어 버그를 고치려고 한다고 설명했다.[4]그는 이어 특정 배포에서 더 많은 리소스를 투입할 것으로 예상하며 파일 시스템을 지원하지 않기로 선택했다고 덧붙였다.[6]null
2012년에는 솔리드 스테이트 드라이브에 대한 TRIM 명령 지원이 JFS에 추가되었다.[7]null
특징들
JFS는 다음과 같은 기능을 지원한다.[8][9]null
저널
JFS는 저널링 파일 시스템이다.ext3 파일 시스템처럼 저널링을 애드온 기능으로 추가하는 대신 처음부터 구현했다.저널은 최대 128MB까지 사용할 수 있다. JFS 저널 메타데이터만 가능하므로 메타데이터는 일관성이 유지되지만 사용자 파일은 충돌 또는 전력 손실 후 손상될 수 있다.JFS의 저널링은 인노드의 일부분만 저널링한다는 점에서 XFS와 비슷하다.[10]null
B+트리
JFS는 B+ 트리를 사용하여 디렉터리에서 룩업을 가속화한다.JFS는 항목을 B+ 트리로 이동하기 전에 디렉토리의 inode에 디렉토리 항목 8개를 저장할 수 있다.또한 JFS는 B+ 트리의 익스텐트를 인덱스한다.null
동적 inode 할당
JFS는 필요에 따라 디스크 인노드를 위한 공간을 동적으로 할당한다.각각의 inode는 512바이트 입니다.32개의 inode가 16 kB 익스텐트에 할당된다.null
익스텐트
JFS는 파일을 익스텐트로 할당한다.익스텐트는 Aggregate 블록의 가변 길이 시퀀스입니다.익스텐트는 여러 할당 그룹에 위치할 수 있다.이를 해결하기 위해 익스텐트 위치를 찾을 때 성능 향상을 위해 익스텐트를 B+ 트리에서 인덱싱한다.null
압축
압축은 AIX의 JFS1에서만 지원되며 LZ 알고리즘의 변형을 사용한다.CPU 사용량이 많고 사용 가능한 공간 조각화가 증가하기 때문에 단일 사용자 워크스테이션 또는 오프라인 백업 영역 이외에는 압축을 사용하지 않는 것이 좋다.[2][11]null
동시 입력/출력(CIO)
JFS는 일반적으로 읽기 공유 쓰기 전용 잠금을 파일에 적용하여 데이터 불일치는 방지하지만 파일 수준에서 쓰기 직렬화를 부과한다.CIO 옵션은 이 잠금을 해제한다.데이터 일관성을 유지하는 관계형 데이터베이스와 같은 애플리케이션은 파일 시스템 오버헤드를 크게 제거하기 위해 이 옵션을 사용할 수 있다.[12]null
할당 그룹
JFS는 할당 그룹을 사용한다.할당 그룹은 집계 공간을 청크로 나눈다.이를 통해 JFS는 리소스 할당 정책을 사용하여 뛰어난 I/O 성능을 달성할 수 있다.첫 번째 정책은 디스크에 대한 양호한 인접성을 달성하기 위해 관련 데이터에 대한 디스크 블록과 디스크 inode를 동일한 AG에 클러스터링하는 것이다.두 번째 정책은 자유 공간 조각화를 최소화하기 위해 관련 없는 데이터를 파일 시스템 전체에 배포하는 것이다.열린 파일이 있을 때 JFS는 파일이 있는 AG를 잠그고 열린 파일만 확장하도록 허용한다.이것은 열린 파일만이 AG에 쓸 수 있기 때문에 단편화를 줄인다.null
슈퍼블록
슈퍼블록은 전체 파일 시스템에 대한 정보를 유지하며 다음 필드를 포함한다.
- 파일 시스템의 크기
- 파일 시스템의 데이터 블록 수
- 파일 시스템의 상태를 나타내는 플래그
- 할당 그룹 크기
- 파일 시스템 블록 크기
Linux에서
리눅스 운영 체제에서 JFS는 커널 모듈(커널 버전 2.4.18pre9-ac4)과 JFSutils라는 이름으로 패키지된 보완적 사용자공간 유틸리티에서 지원된다.대부분의 리눅스 배포판은 라이브 CD와 같은 공간 제한으로 인해 특별히 제거되지 않는 한 JFS를 지원한다.[citation needed]
Linux용 사용 가능한 파일 시스템의 벤치마크에 따르면 JFS는 빠르고 신뢰할 수 있으며, 다양한 종류의 로드에서 지속적으로 우수한 성능을 발휘한다.[13]null
Linux에서 JFS의 실제 사용은 드물다. ext4는 일반적으로 더 나은 성능을[citation needed] 제공하기 때문이다.JFS는 Linux에서 틈새 역할을 하고 있다. 다른 대부분의 Linux 파일 시스템과 달리 대/소문자를 구분하지 않는 마운트 옵션을 제공한다.[14]null
JFS의 저널 쓰기 실행과 같은 잠재적인 문제도 있다.이론적으로 무한정 기간 동안 데이터 손실을 유발할 수 있는 잠재적으로 무한정 발생 가능한 또 다른 트리거가 있을 때까지 연기할 수 있다.[15]null
참고 항목
참조
- ^ a b c "A Mini-FAQ for JFS". JFS for Linux project.
- ^ a b "Comparison of JFS1 and JFS2 on AIX". IBM.
- ^ a b c "Interview with the People Behind JFS, ReiserFS & XFS".
- ^ a b "JFS for Linux". JFS.SourceForge.net. Retrieved August 26, 2020.
- ^ "Re: which to use: ext3, JFS, XFS, ReiserFS?". Archived from the original on March 3, 2016. Retrieved March 31, 2008.
- ^ SourceForge.net: jfs-토론
- ^ "TRIM support for JFS Filesystem".
- ^ "JFS overview". Steve Best, IBM. Archived from the original on January 29, 2008. Retrieved January 9, 2008.
- ^ "JFS Layout" (PDF). Steve Best, IBM. Retrieved May 1, 2008.
- ^ David Kleikamp. "JFS journal". OSDIR. Archived from the original on March 3, 2016. Retrieved July 7, 2008.
- ^ "AIX Wiki: JFS". IBM. Archived from the original on May 28, 2006.
- ^ "Improving Database Performance With AIX Concurrent I/O - White Paper" (PDF). IBM.com. IBM.
- ^ "9-Way File-System Comparison With A SSD On The Linux 3.17 Kernel". Phoronix.com. Retrieved July 7, 2020.
- ^ "jfs_mkfs: create a JFS formatted partition - Linux Man Pages (8)". SysTutorials.com. Retrieved July 7, 2020.
- ^ 저널링 파일 시스템의 분석 및 발전 - V. Prabhakaran 및 기타 2013-06
외부 링크
- 리눅스용 JFS 프로젝트 웹 사이트
- JFS1 파일 시스템 레이아웃, IBM
- JFS2 파일 시스템 레이아웃, IBM
- 손상된 JFS 파일 시스템에서 파일 및 디렉터리의 읽기 전용 추출만 수행하는 콘솔 프로그램 JFSRec