XFS
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
- 1. 개요
- 2. 역사
- 3. 기능
- 3.1. 용량
- 3.2. 저널링
- 3.3. 할당 그룹 (Allocation Groups)
- 3.4. 스트라이프 할당 (Striped Allocation)
- 3.5. 익스텐트 기반 할당 (Extent-based Allocation)
- 3.6. 가변 블록 크기
- 3.7. 지연 할당 (Delayed Allocation)
- 3.8. 스파스 파일 (Sparse Files)
- 3.9. 확장 속성 (Extended Attributes)
- 3.10. 다이렉트 I/O (Direct I/O)
- 3.11. 스냅샷 (Snapshots)
- 3.12. 온라인 조각 모음 (Online Defragmentation)
- 3.13. 온라인 확장 (Online Growth)
- 4. IRIX 전용 기능
- 5. 단점
- 참조
1. 개요
XFS는 1993년 실리콘 그래픽스(SGI)에서 개발을 시작하여 1994년 IRIX 5.3에 처음 도입된 저널링 파일 시스템이다. 2000년 GNU GPL 하에 공개되었으며, 2001년부터 리눅스 배포판에서 지원되기 시작했다. XFS는 64비트 파일 시스템으로, 최대 8엑스비바이트 크기의 파일 시스템을 지원하며, 저널링, 할당 그룹, 익스텐트 기반 할당, 온라인 조각 모음 등의 기능을 제공한다. XFS는 IRIX 전용 기능으로 DMAPI와 보장 속도 I/O를 지원했으나, 현재는 제자리 축소 불가, 부트 파티션 생성 제한 등의 단점이 존재한다.
더 읽어볼만한 페이지
- 1994년 소프트웨어 - WinG
WinG는 윈도우 3.x의 그래픽 성능 향상을 위해 개발된 기술로, DirectX로 발전하는 기반이 되었으며 한국 게임 산업에도 영향을 미쳤다. - 1994년 소프트웨어 - 윈도우 NT 3.5
윈도우 NT 3.5는 마이크로소프트가 개발한 윈도우 NT 3.1의 후속 운영체제로, 네트워크 기능 강화, VFAT 파일 시스템 지원을 통한 긴 파일 이름 사용 가능, 그리고 1995년 서비스 팩 3의 TCSEC C2 등급 획득 등의 특징을 가진 NT 워크스테이션과 NT 서버 두 가지 에디션으로 출시되었다. - 파일 시스템 - 부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다. - 파일 시스템 - ZFS
ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
XFS - [IT 관련 정보]에 관한 문서 | |
---|---|
파일 시스템 정보 | |
이름 | XFS |
전체 이름 | XFS |
개발자 | 실리콘 그래픽스 레드햇 |
소개 운영 체제 | IRIX 5.3 |
소개 날짜 | 1994년 |
파티션 ID | MBR: 0x83: 리눅스 파일 시스템 GPT: 0FC63DAF-8483-4772-8E79-3D69D8477DE4: 리눅스 파일 시스템 |
디렉터리 구조 | B+ 트리 |
파일 구조 | B+ 트리 |
최대 파일 이름 크기 | 255 바이트 |
최대 파일 수 | 264 |
최대 볼륨 크기 | 8 엑시바이트 - 1 바이트 |
최대 파일 크기 | 8 엑시바이트 - 1 바이트 |
파일 이름 문자 집합 | NUL과 "/"를 제외한 모든 문자 |
날짜 기록 | atime, mtime, ctime, version 5: crtime |
날짜 범위 | 1901년 12월 13일 – 2486년 7월 2일 |
날짜 해상도 | 1 ns |
포크/스트림 | 예 |
속성 | 예 |
파일 시스템 권한 | 예 |
압축 | 아니오 |
단일 인스턴스 저장소 | 실험적, 리눅스 전용 |
암호화 | 아니오 (블록 장치 수준에서 제공) |
운영 체제 | IRIX 리눅스 FreeBSD (읽기 전용, 실험적인 쓰기 지원) |
2. 역사
XFS는 JFS와 함께 UNIX 시스템에서 가장 오래된 저널링 파일 시스템 중 하나로, 성숙하고 안정적이며 코드는 잘 디버깅되어 있다. XFS는 실리콘 그래픽스가 1993년에 개발을 시작하여 1994년 IRIX 5.3에 처음 탑재되었다[37]。
2000년 5월, XFS는 GPL로 공개됨과 동시에 리눅스로 이식되기 시작했으며[38][39], 2001년-2002년경에는 지원하는 배포판이 나타났다[40]。2002년 개발 버전 메인라인인 Linux 2.5 커널에, 이어서 2004년 안정 버전 메인라인인 2.4 커널에 병합되었다[39]。Red Hat Enterprise Linux (RHEL)에서는 버전 5.4 이후 "Scalable File System 애드온"이라는 이름으로 XFS를 유료 지원했지만, RHEL 7부터는 /boot를 포함한 표준 파일 시스템으로 채택했다.
현재 대부분의 리눅스 시스템에서 XFS를 이용할 수 있으며, SUSE, 젠투, 만드리바, 슬랙웨어, 우분투, 데비안, 페도라, 아치 리눅스 등에서 선택할 수 있다.
FreeBSD는 2005년 12월부터 읽기 전용으로 XFS를 지원하기 시작했으며, 2006년 6월에는 FreeBSD-7.0-CURRENT에서 실험적으로 쓰기를 지원했다.
XFS는 파일 시스템의 첫 번째 블록을 수퍼블록으로 사용하므로, 부트로더를 첫 번째 블록에 설치할 수 없다. 이는 IRIX와의 호환성을 위한 것으로, 변경될 예정은 없다[41][42]。
2. 1. 개발 및 초기 도입
실리콘 그래픽스는 1993년에 XFS 개발을 시작했으며,[47][48] 1994년 IRIX 버전 5.3에 처음으로 포함시켰다.[37] 이 파일 시스템은 2000년 5월 GNU GPL 하에 출시되었다.[9] 스티브 로드가 이끄는 SGI 팀이 리눅스로 포팅했으며,[49] 2001년에 리눅스 배포판에서 처음으로 지원되기 시작했다.[40]젠투 리눅스는 2002년 중반에 XFS를 기본 파일 시스템 옵션으로 도입한 최초의 리눅스 배포판 중 하나였다.[13] 2004년 2월에는 리눅스 커널 2.4.25 버전에 별도로 병합되어,[11] XFS가 리눅스 시스템에서 거의 보편적으로 사용 가능하게 되었다.[12]
FreeBSD는 2005년 12월에 XFS에 대한 읽기 전용 지원을 추가했으며, 2006년 6월에는 실험적인 쓰기 지원을 도입했다. 그러나 이는 "주요" 파일 시스템이 아닌, 리눅스에서 마이그레이션하는 데 도움을 주기 위한 것이었다. FreeBSD 10은 XFS에 대한 지원을 제거했다.[14]
레드햇 엔터프라이즈 리눅스(RHEL)에서는 버전 5.4 이후 "Scalable File System 애드온"이라는 이름으로 XFS의 유료 지원을 하고 있었지만, RHEL 7에서는 /boot를 포함한 표준 파일 시스템으로 XFS를 채택했다.
2. 2. 리눅스 포팅 및 발전
실리콘 그래픽스는 1993년에 XFS 개발을 시작했으며[47][48], 2000년 5월 GNU GPL 하에 공개했다.[9] 스티브 로드 주도의 SGI 팀이 XFS를 리눅스로 포팅했고[49][10], 2001년 리눅스 배포판에서 처음으로 지원되기 시작하여 점차 대부분의 리눅스 배포판에서 XFS를 사용할 수 있게 되었다.리눅스 커널에서 XFS에 대한 초기 지원은 SGI의 패치를 통해 이루어졌다. 2004년 2월, 리눅스 커널 2.4.25 버전에 병합되면서[11] XFS는 리눅스 시스템에서 거의 보편적으로 사용 가능하게 되었다.[12] 젠투 리눅스는 2002년 중반에 XFS를 기본 파일 시스템 옵션으로 도입한 최초의 리눅스 배포판이었다.[13]
2. 3. 레드햇 엔터프라이즈 리눅스(RHEL) 채택
레드햇 엔터프라이즈 리눅스(RHEL) 5.4 버전은 2009년에 64비트 커널에서 XFS 파일 시스템 생성 및 사용에 필요한 지원을 포함했지만, 해당 명령줄 도구는 없었다. CentOS에서 제공되는 도구를 사용할 수 있었으며, 레드햇은 요청 시 RHEL 고객에게도 이를 제공했다.[15] 2010년에 출시된 RHEL 6.0은 레드햇의 "확장 가능한 파일 시스템 애드온"의 일부로 XFS 지원을 유료로 포함했다.[16] 2014년 6월에 출시된 RHEL 7.0은 XFS를 기본 파일 시스템으로 사용하며,[18] 이전에 GRUB 부트로더의 버그로 인해 실용적이지 않았던/boot
파티션에 XFS를 사용하는 것에 대한 지원도 포함한다.[19]2. 4. FreeBSD 지원
FreeBSD는 2005년 12월에 XFS에 대한 읽기 전용 지원을 추가했으며, 2006년 6월에는 실험적인 쓰기 지원을 도입했다.[14] 그러나 이는 "주요" 파일 시스템이 아닌, 리눅스에서 마이그레이션하는 데 도움을 주기 위한 것이었다. FreeBSD 10은 XFS에 대한 지원을 제거했다.[14]2. 5. 추가 기능 개발
2016년 8월, 리눅스 커널 4.8은 "역 매핑"이라는 새로운 기능을 추가했다.[20][21] 이는 스냅샷, 카피 온 라이트(COW) 데이터, 데이터 중복 제거, reflink 복사, 온라인 데이터 및 메타데이터 스크러빙, 데이터 손실 또는 불량 섹터에 대한 매우 정확한 보고, 손상된 파일 시스템의 개선된 재구성을 위한 기초이다.
2020년 12월, 리눅스 커널 5.10에는 새로운 온디스크 형식인 XFS v5가 포함되었다. XFS v4는 더 이상 사용되지 않으며 XFS v5로 변환할 수 없기 때문에, XFS v4로 포맷된 파티션의 데이터는 XFS v5로 포맷한 후 복원하기 위해 다른 파티션이나 미디어에 백업해야 한다. 이는 파티션의 모든 데이터를 완전히 지우는 작업이다. XFS v4에 대한 지원은 2030년 9월에 리눅스 커널에서 제거될 예정이다.[22]
XFS v5는 기존의 32비트 초 카운터 대신 64비트 나노초 카운터로 inode 타임스탬프를 저장하는 "빅타임"을 도입하여 2038년 문제를 2486년까지 연기했다.[5] 또한 메타데이터 체크섬을 도입했다.
젠투 리눅스의 공식 설치 매뉴얼인 젠투 핸드북은 2023년 6월 28일부터 Ext4를 대신하여 XFS를 "만능 올 플랫폼 파일 시스템"으로 권장하고 있다.[23]
3. 기능
XFS는 64비트 파일 시스템[50]으로, 최대 8엑스비바이트 크기의 파일 시스템을 지원한다. 하지만, 이는 호스트 운영 체제의 제한에 따라 감소할 수 있다. 예를 들어, 32비트 리눅스 시스템에서는 파일과 파일 시스템의 크기가 16테비바이트로 제한된다.
3. 1. 용량
XFS는 64비트 파일 시스템[50]으로, 파일 시스템 크기는 최대 8 엑스비바이트 - 1 바이트 (263 - 1 바이트)이지만, 호스트 운영 체제의 제한에 따라 이 제한은 감소될 수 있다. 32비트 리눅스 시스템은 파일과 파일 시스템의 크기를 16 테비바이트로 제한한다.3. 2. 저널링
현대 컴퓨팅에서 저널링은 전원 중단이나 시스템 충돌이 발생하더라도 파일 시스템의 데이터 일관성을 보장하는 기능이다. XFS는 파일 시스템 메타데이터에 대한 저널링을 제공하며, 파일 시스템 업데이트는 실제 디스크 블록이 업데이트되기 전에 먼저 일련의 저널에 기록된다. 저널은 일반적인 파일 시스템 작동 시 읽히지 않는 디스크 블록의 링 버퍼이다.XFS 저널은 파일 시스템의 데이터 섹션 내에 (내부 로그로) 저장하거나 디스크 경합을 최소화하기 위해 별도의 장치에 저장할 수 있다.
XFS에서 저널은 주로 파일 시스템 작업에 의해 변경된 디스크 블록의 부분을 설명하는 항목을 포함한다. 저널 업데이트는 성능 속도 저하를 방지하기 위해 비동기적으로 수행된다.
시스템 크래시 발생 시, 충돌 직전에 발생한 파일 시스템 작업은 저널에 기록된 대로 다시 적용되어 완료될 수 있으며, 이것이 XFS 파일 시스템에 저장된 데이터가 일관성을 유지하는 방식이다. 복구는 충돌 후 파일 시스템이 처음 마운트될 때 자동으로 수행된다. 복구 속도는 파일 시스템 크기와 관계없이 다시 적용해야 하는 파일 시스템 작업량에 따라 달라진다.
XFS의 저널은 파일 시스템 조작이 고수준으로 표현된 "논리적인" 항목으로 구성된다. 이에 반해 다른 파일 시스템의 저널은 트랜잭션 중에 변경되는 블록의 복사본을 그대로 유지하는 "물리적인" 항목으로 구성된다.
크래시 시에 미기록 데이터 블록이 저널에 남아있는 경우에는, 복구 시에 0으로 치환되어 기록된다. 이는 보안상의 문제를 회피하기 위함이다.
3. 3. 할당 그룹 (Allocation Groups)
XFS 파일 시스템은 내부적으로 동일한 크기의 선형 영역인 ''할당 그룹''으로 분할된다. 파일과 디렉터리는 할당 그룹에 걸쳐 있을 수 있다. 각 할당 그룹은 자체 아이노드와 여유 공간을 개별적으로 관리하여 여러 스레드와 프로세스가 동일한 파일 시스템에서 동시에 I/O 작업을 수행할 수 있도록 확장성과 병렬성을 제공한다.이러한 구조는 여러 프로세서 및/또는 코어가 있는 시스템에서 병렬 I/O 성능을 최적화하는 데 도움이 되며, 메타데이터 업데이트도 병렬화할 수 있다. 할당 그룹에서 제공하는 내부 분할은 파일 시스템이 여러 물리적 장치에 걸쳐 있을 때 특히 유용하여 기본 스토리지 구성 요소의 처리량을 최적으로 사용할 수 있다.
3. 4. 스트라이프 할당 (Striped Allocation)
XFS 파일 시스템을 RAID 어레이와 같은 스트라이핑된 저장 장치에 생성할 경우, 파일 시스템 생성 시 ''스트라이프 유닛''을 지정할 수 있다. 이렇게 하면 데이터 할당, inode 할당 및 내부 로그(저널)가 스트라이프 유닛에 맞춰지도록 하여 처리량을 극대화한다.[1] RAID 어레이 상에 XFS 파일 시스템을 생성할 때에는, '''스트라이프 단위'''를 RAID 어레이의 스트라이프 단위와 일치시키는 것이 처리량을 최대화 하는데 도움이 된다.[1]3. 5. 익스텐트 기반 할당 (Extent-based Allocation)
XFS 파일 시스템에 저장된 파일에 사용되는 블록은 하나 이상의 연속된 블록을 설명하는 가변 길이 익스텐트로 관리된다. 이는 파일이 사용하는 모든 블록을 개별적으로 나열하는 파일 시스템에 비해 블록 목록을 상당히 줄일 수 있다.[1]블록 지향 파일 시스템은 하나 이상의 블록 지향 비트맵으로 공간 할당을 관리한다. XFS에서는 이러한 구조가 각 파일 시스템 할당 그룹에 대한 한 쌍의 B+ 트리로 구성된 익스텐트 지향 구조로 대체된다. B+ 트리 중 하나는 사용 가능한 익스텐트의 길이를 기준으로 인덱싱되고, 다른 하나는 사용 가능한 익스텐트의 시작 블록을 기준으로 인덱싱된다. 이중 인덱싱 방식은 파일 시스템 작업에 사용 가능한 익스텐트를 매우 효율적으로 할당할 수 있게 해준다.[1]
3. 6. 가변 블록 크기
XFS는 512바이트에서 64킬로바이트 사이의 블록 크기로 파일 시스템을 생성할 수 있도록 지원한다. 파일 시스템 블록 크기는 최소 할당 단위를 나타낸다. 예상 사용량에 맞춰 파일 시스템을 조정할 수 있는데, 작은 크기의 파일을 다수 사용할 경우 블록 크기를 작게 하면 사용 가능한 용량이 커진다. 주로 큰 크기의 파일만 다룰 경우에는 블록 크기를 크게 함으로써 읽기/쓰기 성능이 향상된다.3. 7. 지연 할당 (Delayed Allocation)
XFS는 파일 할당을 위해 느긋하게 계산하는 기술을 사용한다. 파일이 버퍼 캐시에 기록될 때, 데이터를 위한 익스텐트를 할당하는 대신, XFS는 메모리에 저장된 데이터에 적절한 수의 파일 시스템 블록을 예약한다. 실제 블록 할당은 데이터가 최종적으로 디스크에 플러시될 때만 발생한다. 이렇게 하면 파일이 연속된 블록 그룹으로 기록될 가능성이 높아져 조각화 문제를 줄이고 성능을 향상시킬 수 있다.XFS는 지연 쓰기 기술을 사용하는데, 버퍼 캐시에 파일이 기록될 때 즉시 익스텐트를 할당하는 대신, 기록에 필요한 수의 블록을 예약하는 데 그친다. 실제로 익스텐트(블록)가 할당되는 것은 디스크에 플래시될 때이다. 이렇게 함으로써 파일이 가능한 연속된 블록에 기록되도록 하여 단편화를 줄이고 성능을 향상시킨다.
3. 8. 스파스 파일 (Sparse Files)
XFS는 각 파일에 대해 64비트 스파스 파일 주소 공간을 제공하여, 매우 큰 파일 크기와 디스크 공간이 할당되지 않은 파일 내의 "구멍"을 허용한다.[1]XFS는 파일의 데이터 블록 관리에 가변 길이 익스텐트를 사용하므로 파일 할당 맵의 크기를 작게 유지할 수 있다. 할당 맵의 크기가 하나의 inode에 담을 수 없게 된 경우에도 해당 할당 맵은 B+트리 위에 위치하게 된다.[1] 이로 인해 64비트의 광대한 공간에서도 빠르게 접근할 수 있다.[1]
3. 9. 확장 속성 (Extended Attributes)
XFS는 파일에 대해 여러 데이터 스트림을 제공하며, 이는 확장 속성의 구현을 통해 가능하다. 확장 속성을 통해 파일에 연결된 여러 이름/값 쌍을 저장할 수 있다. 이름은 널(null)로 종료되는 최대 256바이트 길이의 인쇄 가능한 문자열이며, 관련 값은 최대 64 KB의 이진 데이터를 포함할 수 있다.확장 속성은 `root` 및 `user`의 두 개의 네임스페이스로 더 세분된다. `root` 네임스페이스에 저장된 확장 속성은 슈퍼유저만 수정할 수 있는 반면, `user` 네임스페이스의 속성은 파일에 쓰기 권한이 있는 모든 사용자가 수정할 수 있다.
확장 속성은 심볼릭 링크, 장치 노드, 디렉터리 등 모든 종류의 XFS 아이노드에 연결할 수 있다. `attr` 유틸리티를 사용하여 명령줄에서 확장 속성을 조작할 수 있으며, `xfsdump` 및 `xfsrestore` 유틸리티는 확장 속성을 인식하여 해당 내용을 백업하고 복원한다. 다른 많은 백업 시스템은 확장 속성 작업을 지원하지 않는다.
3. 10. 다이렉트 I/O (Direct I/O)
XFS는 디스크에 대한 높은 처리량이 필요한 응용 소프트웨어를 위해, 캐시되지 않은 입출력을 사용자 공간에서 가능하게 하는 다이렉트 I/O를 제공한다. 파일 데이터는 DMA에 의해 애플리케이션의 버퍼에서 디스크로 직접 전송되므로, 디스크 장치의 I/O 대역폭을 그대로 이용할 수 있다.[1]3. 11. 스냅샷 (Snapshots)
XFS는 스냅샷 기능을 직접 지원하지 않으며,[25] 현재 스냅샷 프로세스는 LVM과 같은 볼륨 관리자가 구현할 것으로 예상하고 있다. XFS 파일 시스템의 스냅샷을 생성하려면 `xfs_freeze` 유틸리티를 사용하여 파일 시스템에 대한 I/O를 일시적으로 중지하고, 볼륨 관리자가 실제 스냅샷을 수행한 다음, I/O를 재개하여 정상적인 작업을 계속해야 한다. 그런 다음 스냅샷을 백업 목적으로 읽기 전용으로 마운트할 수 있다.IRIX의 XFS 릴리스에는 XLV라는 통합 볼륨 관리자가 포함되어 있었으나, 리눅스로 포팅되지 않았다. 따라서 리눅스 시스템에서 XFS는 표준 LVM과 함께 작동한다.
최신 리눅스 커널에서 `xfs_freeze` 기능은 VFS 계층에서 구현되며, 볼륨 관리자의 스냅샷 기능이 호출될 때 자동으로 실행된다. 이는 한때 ext3 파일 시스템을 중지할 수 없었고[26] 볼륨 관리자가 매우 바쁜 데이터베이스를 백업하기 위해 일관된 "핫" 스냅샷을 생성할 수 없었기 때문에 귀중한 장점이었다. 그러나 리눅스 2.6.29 이후로 ext3, ext4, GFS2 및 JFS 파일 시스템에도 정지 기능이 있어[28] 상황이 바뀌었다.
3. 12. 온라인 조각 모음 (Online Defragmentation)
XFS는 익스텐트 기반 특성과 지연 할당 전략으로 파일 시스템 단편화에 대한 저항성을 크게 향상시켰지만, 마운트되고 활성화된 XFS 파일 시스템에서 파일을 조각 모음할 수 있는 파일 시스템 조각 모음 유틸리티(`xfs_fsr`, XFS 파일 시스템 재구성기)를 제공한다.[29] `xfs_fsr`은 일반적으로 `xfsprogs` 패키지가 아니라 `xfsdump` 패키지의 일부로 제공된다.3. 13. 온라인 확장 (Online Growth)
XFS는 `xfs_growfs` 유틸리티를 제공하여 XFS 파일 시스템의 온라인 확장을 지원한다. XFS 파일 시스템은 파일 시스템을 담고 있는 장치에 할당되지 않은 공간이 남아 있는 한 확장될 수 있다. 이 기능은 일반적으로 파티션을 별도로 확장해야 하는 경우를 제외하고는 볼륨 관리와 함께 사용된다.[1]4. IRIX 전용 기능
XFS는 IRIX에서 다음과 같은 기능들을 지원했으나, 리눅스에서는 제한적으로 지원되거나 지원되지 않았다.
- '''DMAPI (Data Management API)'''
XFS는 IRIX에서 계층적 스토리지 관리를 지원하기 위해 DMAPI 인터페이스를 구현했다. 2010년 10월 기준으로, 리눅스용 XFS는 DMAPI 구현에 필요한 온디스크 메타데이터를 지원했지만, 커널 지원은 사용할 수 없었다. SGI는 DMAPI 훅을 포함하는 커널 트리를 호스팅했지만, 이 지원은 제대로 유지 관리되지 않았다.[30]
- '''보장 속도 I/O (Guaranteed-Rate I/O)'''
XFS 보장 속도 I/O는 응용 프로그램이 파일 시스템에 대역폭을 예약할 수 있도록 하는 API를 제공한다. XFS는 기본 저장 장치에서 사용 가능한 성능을 동적으로 계산하여, 지정된 시간 동안 요청된 성능을 충족하기에 충분한 대역폭을 예약한다. 이는 XFS 파일 시스템 고유의 기능이다. 보장 속도는 안정성과 성능 간의 균형을 "하드" 또는 "소프트"로 설정할 수 있지만, XFS는 기본 저장 하위 시스템이 지원하는 경우에만 "하드" 보장을 허용한다. 이 기능은 주로 비디오 스트리밍과 같은 실시간 응용 프로그램에 사용된다.[31] 보장 속도 I/O는 IRIX에서만 지원되었으며, 이를 위해 특수 하드웨어가 필요했다.[31]
4. 1. DMAPI (Data Management API)
XFS는 IRIX에서 계층적 스토리지 관리를 지원하기 위해 DMAPI 인터페이스를 구현했다. 2010년 10월 현재, XFS의 리눅스 구현은 DMAPI 구현에 필요한 온디스크 메타데이터를 지원했지만, 커널 지원은 사용할 수 없는 것으로 보고되었다. 한동안 SGI는 DMAPI 훅을 포함하는 커널 트리를 호스팅했지만, 이 지원은 제대로 유지 관리되지 않았으며, 커널 개발자들은 이 지원을 최신 상태로 유지하겠다는 의사를 표명했다.[30]4. 2. 보장 속도 I/O (Guaranteed-Rate I/O)
XFS 보장 속도 I/O는 응용 프로그램이 파일 시스템에 대역폭을 예약할 수 있도록 하는 API를 제공한다. XFS는 기본 저장 장치에서 사용 가능한 성능을 동적으로 계산하여, 지정된 시간 동안 요청된 성능을 충족하기에 충분한 대역폭을 예약한다. 이는 XFS 파일 시스템 고유의 기능이다. 보장 속도는 안정성과 성능 간의 균형을 "하드" 또는 "소프트"로 설정할 수 있지만, XFS는 기본 저장 하위 시스템이 지원하는 경우에만 "하드" 보장을 허용한다. 이 기능은 주로 비디오 스트리밍과 같은 실시간 응용 프로그램에 사용된다.[31]보장 속도 I/O는 IRIX에서만 지원되었으며, 이를 위해 특수 하드웨어가 필요했다.[31]
5. 단점
- XFS 파일 시스템은 현재 제자리에서 축소할 수 없다.[32]
- 저널링을 비활성화할 수 없다. 하지만, XFS는 별도의 블록 장치에 있는 외부 저널에 기록할 수 있다.[34]
- x86 머신에서 리눅스를 사용할 경우, XFS는 PBR 등으로 불리는 레거시 부트 시퀀스에 사용되는 파티션의 선두 섹터를 사용하므로, 부팅 가능한 파티션을 만들 수 없다. 이 사양은 IRIX와의 호환성을 유지하기 위해 변경되지 않는다.[42]
- 삭제된 파일의 복원은 거의 불가능하다.
- 리눅스에서의 구현에서는 서로 다른 CPU 아키텍처 간에 저널링 최적화를 위해 호환성 문제가 발생한다. 그러나 이 문제는 서로 다른 아키텍처에서 마운트하기 전에 `xfs_repair`를 실행하고 저널을 삭제함으로써 회피할 수 있다.
- XFS는 데이터 변경에 대해서는 저널링하지 않으므로, 전원 코드를 뽑았을 때 데이터를 잃을 가능성이 있다.[44]
- 디렉토리 엔트리 생성(빈 파일, 하위 디렉토리 등) 및 삭제가 다른 파일 시스템에 비해 느리다는 지적이 있다.
- SELinux가 등장했을 당시, XFS에서 사용하면 성능 저하를 일으킨다는 이야기가 있었다.[45]
참조
[1]
웹사이트
GPT fdisk - ArchWiki
https://wiki.archlin[...]
[2]
웹사이트
What is the maximum number of inodes in Linux filesystems?
https://www.quora.co[...]
2014-06-17
[3]
간행물
XFS Filesystem Structure 2nd Edition, Revision 1
http://oss.sgi.com/p[...]
[4]
웹사이트
ondisk_inode.asciidoc\XFS_Filesystem_Structure\design - xfs/xfs-documentation.git - XFS AsciiDoc Documentation tree
https://git.kernel.o[...]
[5]
웹사이트
xfs: widen timestamps to deal with y2038
https://lwn.net/Arti[...]
2020-08-10
[6]
웹사이트
Duperemove
https://github.com/m[...]
2016-08-21
[7]
웹사이트
xFS: The Extension of EFS - "x" for To-be-Determined (but the Name Stuck)
http://xfs.org/docs/[...]
[8]
서적
Linux Administrator Street Smarts: A Real World Guide to Linux Certification Skills
https://books.google[...]
John Wiley & Sons
2007
[9]
웹사이트
SGI open-sourcing XFS
https://slashdot.org[...]
1999-05-19
[10]
웹사이트
Porting XFS to Linux
http://olstrans.sour[...]
2000-07-21
[11]
웹사이트
Linux kernel 2.4.25 changelog
https://www.kernel.o[...]
2004-02-18
[12]
웹사이트
Common threads: Advanced filesystem implementor's guide, Part 9, Introducing XFS
http://www.ibm.com/d[...]
IBM
2002-01-01
[13]
웹사이트
Common threads: Advanced filesystem implementor's guide, Part 10, Deploying XFS
http://www.ibm.com/d[...]
IBM
2002-04-01
[14]
웹사이트
Has FreeBSD 10 Dropped Support For XFS?
http://lists.freebsd[...]
2013-10-27
[15]
웹사이트
Bug 521173 -xfsprogs is missing in RHEL-5.4
http://bugzilla.redh[...]
2010-05-24
[16]
웹사이트
Red Hat Enterprise Linux Scalable File System Add-On
http://ca.redhat.com[...]
[17]
웹사이트
Oracle Linux 6 Release Notes
https://oss.oracle.c[...]
Oracle Corporation
2011-02-01
[18]
웹사이트
Red Hat Unveils Red Hat Enterprise Linux 7, Redefining the Enterprise Operating System
http://www.redhat.co[...]
Red Hat
2014-06-10
[19]
웹사이트
Bug 250843 -grub-install hangs on xfs
http://bugzilla.redh[...]
2009-05-04
[20]
웹사이트
kernel/git/torvalds/linux.git - Linux kernel source tree
https://git.kernel.o[...]
[21]
웹사이트
Linux_4.8 - Linux Kernel Newbies
https://kernelnewbie[...]
[22]
웹사이트
xfs
https://www.haiku-os[...]
[23]
웹사이트
Difference between revisions of "Handbook:Parts/Installation/Disks" - Gentoo wiki
https://wiki.gentoo.[...]
[24]
웹사이트
XFS Overview
http://oss.sgi.com/p[...]
Silicon Graphics International Corp
2013-07-02
[25]
웹사이트
XFS: There and back ... and there again? [LWN.net]
https://lwn.net/Arti[...]
[26]
웹사이트
How to freeze ext3 file system
http://www.linuxques[...]
[27]
웹사이트
LVM snapshots: How to use?
http://www.linuxques[...]
[28]
웹사이트
kernel/git/torvalds/linux.git - Linux kernel source tree
https://git.kernel.o[...]
[29]
웹사이트
defragment-xfs-file-system
http://bitubique.com[...]
[30]
메일링리스트
Re: Linux and DMAPI
http://oss.sgi.com/a[...]
SGI
2010-10-03
[31]
메일링리스트
Re: Re: realtime section bugs still around
http://oss.sgi.com/a[...]
SGI
2012-07-30
[32]
웹사이트
XFS_FAQ#Q:_Is_there_a_way_to_make_a_XFS_filesystem_larger_or_smaller.3F
http://xfs.org/index[...]
[33]
메일링리스트
Re: Shrink an XFS filesystem? (LVM)
http://oss.sgi.com/a[...]
SGI
2002-01-18
[34]
웹사이트
About External XFS Journals
https://docs.oracle.[...]
[35]
웹사이트
Improving Metadata Performance By Reducing Journal Overhead
http://xfs.org/index[...]
2010-12-23
[36]
메일링리스트
Re: PATCH 0/12 xfs: delayed logging V6
http://oss.sgi.com/a[...]
2010-05-24
[37]
웹사이트
1.2. A Brief History of XFS
http://xfs.org/docs/[...]
xfs.org
2015-11-11
[38]
웹사이트
Porting XFS to Linux
http://olstrans.sour[...]
Olstrans.sourceforge.net
2000-07-21
[39]
웹사이트
1.3. XFS on Linux
http://xfs.org/docs/[...]
xfs.org
2015-11-11
[40]
학회발표
XFS for Linux
http://verein.lst.de[...]
2016-10-24
[41]
웹사이트
Bug 250843 -grub-install hangs on xfs
http://bugzilla.redh[...]
Redhat.com
2009-05-04
[42]
웹사이트
Q: Does LILO work with XFS?
http://xfs.org/index[...]
2014-08-13
[43]
웹사이트
XFS Overview
http://oss.sgi.com/p[...]
Silicon Graphics International Corp
2013-07-02
[44]
웹사이트
XFS FAQ
http://oss.sgi.com/p[...]
2008-05-08
[45]
웹사이트
EA and ACL Performance
http://www.suse.de/~[...]
[46]
웹사이트
xFS: the extension of EFS - "x" for to-be-determined (but the name stuck)
http://xfs.org/docs/[...]
2014-07-14
[47]
서적
Linux Administrator Street Smarts: A Real World Guide to Linux Certification Skills
https://books.google[...]
John Wiley & Sons
2016-03-21
[48]
웹인용
XFS file system
http://linux-bible.c[...]
linux-bible.com
2016-03-21
[49]
웹인용
Porting XFS to Linux
http://olstrans.sour[...]
Olstrans.sourceforge.net
2000-07-21
[50]
웹인용
XFS Overview
http://oss.sgi.com/p[...]
Silicon Graphics International Corp
2013-07-02
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com