XFS

XFS
XFS
개발자
풀네임XFS
소개했다1994년, 28년 전(1994년) IRIX 5.3 사용
파티션 식별자0x83: Linux 파일 시스템(마스터 부트 레코드)
0FC63DAF-8483-4772-8E79-3D69D8477DE4: Linux 파일 시스템(GUID 파티션 테이블)[1]
구조물들
디렉토리 내용B+ 트리
파일 할당B+ 트리
한계
최대 볼륨 크기8 ebibyte - 1 바이트
최대 파일 크기8 ebibyte - 1 바이트
최대 파일 수2개64[2]
최대 파일 이름 길이255 바이트
파일 이름에 허용되는 문자NULL 및 "/"를 제외한 모든 것
특징들
기록된 날짜atime, mtime, ctime,[3] 버전5: crtime[4]
날짜 범위1901년 12월 13일 ~ 2486년[5] 7월 2일
날짜 해결1 ns
특성네.
파일 시스템 권한네.
투과적 압축아니요.
투과적 암호화아니요(블록 디바이스레벨로 제공)
데이터 중복 배제시험판, Linux만[6]
다른.
지원되는 운영 체제

XFS[8]Silicon Graphics, Inc(SGI)가 1993년에 작성한 고성능 64비트 저널링 파일 시스템입니다.SGI의 IRIX 운영체제에서는 버전 5.3부터 기본 파일 시스템입니다.XFS는 2001년에 Linux 커널로 이식되었습니다.2014년 6월 현재 XFS는 대부분의 Linux 디스트리뷰션에서 지원되고 있으며 Red Hat Enterprise Linux는 이를 기본 파일 시스템으로 사용하고 있습니다.

XFS는 할당 그룹(XFS가 사용되는 물리적 볼륨의 하위 분할 유형)에 기반한 설계로 인해 병렬 입출력(I/O) 작업의 실행이 탁월합니다.따라서 XFS를 사용하면 여러 물리적 스토리지 디바이스에 걸쳐 I/O 스레드, 파일 시스템 대역폭, 파일 크기 및 파일 시스템 자체의 확장성을 극대화할 수 있습니다.XFS는 메타데이터 저널링채택하고 쓰기 장벽을 지원하여 데이터의 일관성을 보장합니다.공간 할당은 데이터 구조가 B+ 트리에 저장된 익스텐트를 통해 수행되므로 파일 시스템의 전반적인 성능이 향상됩니다. 특히 대용량 파일을 처리할 때 더욱 그렇습니다.지연된 할당은 파일 시스템 조각화를 방지하는 데 도움이 되며 온라인 조각 모음도 지원됩니다.XFS 고유의 기능은 I/O 대역폭을 미리 정해진 속도로 할당하는 것입니다.이것은 많은 실시간애플리케이션에 적합합니다.단, 이 기능은 IRIX에서만 지원되며 전용 하드웨어에서만 지원됩니다.

역사

Silicon Graphics는 1993년에 XFS의[9] 개발을 시작했습니다("X"는 나중에 입력될 예정이었지만 결코 입력되지 않았습니다).

파일 시스템은 2000년 5월에 GNU General Public License(GPL)로 출시되었습니다.SGI의 Steve Lord가 이끄는 팀이 Linux로 [10]포팅한 것은 2001년입니다.이 지원은 거의 모든 Linux [citation needed]디스트리뷰션에서 점차 사용할 수 있게 되었습니다.

Linux 커널에서의 XFS의 초기 지원은 SGI의 패치를 통해 이루어졌습니다.2.6 시리즈의 Linux 커널 메인라인에 병합된 후 2004년 2월에 버전 2.4.[11]25의 2.4 시리즈에 개별적으로 병합되어 XFS는 Linux [12]시스템에서 거의 보편적으로 사용할 수 있게 되었습니다.Gentoo Linux는 Linux [13]디스트리뷰션처음으로 XFS 옵션을 기본 파일 시스템으로 도입했습니다.

FreeBSD는 2005년 12월에 XFS에 대한 읽기 전용 지원을 추가했으며 2006년 6월에 시험적인 쓰기 지원을 도입했습니다.다만, 이것은 Linux로부터의 이행을 지원하기 위한 것일 뿐, 「메인」파일 시스템으로서가 아닙니다.FreeBSD 10은 XFS에 [7]대한 지원을 삭제했습니다.

2009년 64비트 Red Hat Enterprise Linux(RHEL) Linux 디스트리뷰션 버전 5.4에는 XFS 파일 시스템의 작성 및 사용에 필요한 커널 지원이 포함되어 있었지만 대응하는 명령줄 툴은 없었습니다.Cent에서 이용할 수 있는 도구OS는 이 목적을 위해 운용할 수 있으며 Red Hat은 RHEL 고객에게 요청에 [14]따라 OS를 제공하기도 했습니다.2010년에 출시된 RHEL 6.0에는 Red Hat의 "확장 가능한 파일 시스템 애드온"[15]의 일부로 유료로 XFS 지원이 포함되어 있습니다.2011년에 출시된 오라클 리눅스 6에는 XFS를 [16]사용하는 옵션도 포함되어 있습니다.

2014년 6월에 출시된 RHEL 7.0은 XFS를 기본 파일 [17]시스템으로 사용하며, 여기에는 XFS를 사용하여/boot파티션은 이전에는 GRUB [18]부트로더의 버그로 인해 실용적이지 않았습니다.

리눅스 커널 4.8은 2016년 8월에 "역 매핑"이라는 새로운 기능을 추가했습니다.이는 스냅샷, COW(Copy-on-Write) 데이터, 데이터 중복 제거, 리링크 복사본, 온라인 데이터 및 메타데이터 스크러빙, 데이터 손실 또는 불량 섹터에 대한 매우 정확한 보고, 손상되거나 손상된 파일 시스템의 재구축 등 다양한 계획된 기능의 기반입니다.이 작업을 수행하려면 XFS의 온디스크 [19][20]포맷을 변경해야 했습니다.

2020년 12월에 출시된 리눅스 커널 5.10은 아이노드 타임스탬프를 기존의 32비트 초 카운터가 아닌 64비트 나노 초 카운터로 저장하기 위해 "빅 타임"을 도입했다.이는 전년도 2038년 문제를 2486년으로 [5]연기한다.

특징들

용량.

XFS는 64비트 파일[21] 시스템으로 최대 파일 시스템 크기 8exbyte에서 1바이트(2 - 1바이트)를63 뺀 값을 지원하지만 호스트 운영 체제에 의해 부과되는 제한으로 인해 이 제한이 줄어들 수 있습니다.32비트 Linux 시스템에서는 파일과 파일 시스템의 크기가 모두 16테비바이트로 제한됩니다.

저널링

현대 컴퓨팅에서 저널링은 정전이나 시스템 크래시가 발생하더라도 파일 시스템의 데이터 일관성을 유지하는 기능입니다.XFS는 파일 시스템 메타데이터의 저널링을 제공합니다.파일 시스템 업데이트는 실제 디스크 블록이 업데이트되기 전에 먼저 시리얼 저널에 기록됩니다.저널은 일반적인 파일 시스템 작동에서는 읽을 수 없는 디스크 블록의 순환 버퍼입니다.

XFS 저널은 파일 시스템의 데이터 섹션에 내부 로그로 저장하거나 디스크 경합을 최소화하기 위해 별도의 장치에 저장할 수 있습니다.

XFS에서 저널에는 주로 파일 시스템 작업에 의해 변경된 디스크 블록의 부분을 설명하는 항목이 포함됩니다.저널 업데이트는 성능 속도 저하를 방지하기 위해 비동기적으로 수행됩니다.

시스템 크래시가 발생했을 경우 크래시 직전에 발생한 파일 시스템 조작을 저널에 기록된 대로 재적용하여 완료할 수 있으므로 XFS 파일 시스템에 저장된 데이터의 일관성이 유지됩니다.크래시 후 파일 시스템이 처음 마운트될 때 복구가 자동으로 수행됩니다.복구 속도는 파일 시스템의 크기에 관계없이 재적용되는 파일 시스템 작업의 양에 따라 달라집니다.

할당 그룹

XFS 파일 시스템은 내부적으로 파일 시스템 내의 동일한 크기의 선형 영역인 할당 그룹으로 분할됩니다.파일 및 디렉토리는 할당 그룹에 걸쳐 있을 수 있습니다.각 할당 그룹은 자체 inode와 빈 공간을 별도로 관리하여 확장성과 병렬성을 제공하여 여러 스레드와 프로세스가 동일한 파일 시스템에서 동시에 I/O 작업을 수행할 수 있도록 합니다.

이 아키텍처는 메타데이터 업데이트도 병렬화할 수 있기 때문에 여러 프로세서 및/또는 코어를 탑재한 시스템에서 병렬 I/O 성능을 최적화하는 데 도움이 됩니다.할당 그룹이 제공하는 내부 파티셔닝은 파일 시스템이 여러 물리적 디바이스에 걸쳐 있을 때 특히 효과적이며, 기본 스토리지 구성 요소의 throughput을 최적으로 사용할 수 있습니다.

스트라이프 할당

스트라이프 RAID 어레이에 XFS 파일시스템을 작성하는 경우는, 파일 시스템 작성시에 스트라이프 유닛을 지정할 수 있습니다.이를 통해 데이터 할당, inode 할당 및 내부 로그(저널)가 스트라이프 유닛과 일치하도록 함으로써 throughput을 최대화합니다.

익스텐트 기반 할당

XFS 파일시스템에 저장되어 있는 파일에 사용되는 블록은 가변 길이 익스텐트로 관리됩니다.한 익스텐트는 하나 이상의 연속된 블록을 나타냅니다.이렇게 하면 파일에 의해 사용되는 모든 블록을 개별적으로 나열하는 파일 시스템에 비해 블록 목록을 상당히 줄일 수 있습니다.

블록 지향 파일 시스템은 하나 이상의 블록 지향 비트맵을 사용하여 공간 할당을 관리합니다. XFS에서는 이러한 구조는 각 파일 시스템 할당 그룹의 B+ 트리 쌍으로 구성된 익스텐트 지향 구조로 대체됩니다.B+ 트리 중 하나는 프리 익스텐트의 길이에 의해 인덱싱되는 반면, 다른 하나는 프리 익스텐트의 시작 블록에 의해 인덱싱됩니다.이 듀얼 인덱스 방식을 사용하면 파일 시스템 작업에 사용할 수 있는 익스텐트를 매우 효율적으로 할당할 수 있습니다.

가변 블록 크기

파일 시스템 블록 크기는 최소 할당 단위를 나타냅니다.XFS를 사용하면 512바이트에서 64KB 사이의 블록 크기로 파일 시스템을 만들 수 있으므로 파일 시스템을 예상 사용량에 맞게 조정할 수 있습니다.많은 작은 파일이 예상될 경우 일반적으로 작은 블록 크기가 용량을 최대화하지만, 주로 큰 파일을 처리하는 시스템에서는 큰 블록 크기가 성능 효율성을 높일 수 있습니다.

할당 지연

XFS는 파일 할당에 느린 평가 기술을 사용합니다.파일을 버퍼 캐시에 쓸 때 데이터에 익스텐트를 할당하는 대신 XFS는 메모리에 저장된 데이터에 대해 적절한 수의 파일 시스템 블록을 예약합니다.실제 블록 할당은 데이터가 최종적으로 디스크에 플러시된 경우에만 이루어집니다.이것에 의해, 파일이 연속하는 블록 그룹에 써질 가능성이 향상해, 플래그멘테이션의 문제를 경감해, 퍼포먼스가 향상됩니다.

스파스 파일

XFS는 각 파일에 64비트 스파스 주소 공간을 제공하여 매우 큰 파일 크기와 디스크 공간이 할당되지 않은 파일 내의 "홀"을 모두 허용합니다.파일 시스템은 파일별로 익스텐트 맵을 사용하기 때문에 파일 할당 맵 사이즈는 작게 유지된다.할당 맵의 크기가 너무 커서 inode 내에 저장할 수 없는 경우 맵은 파일에 제공된 64비트 주소 공간 내의 데이터에 빠르게 액세스할 수 있는 B+ 트리로 이동됩니다.

확장 속성

XFS는 파일에 여러 데이터 스트림을 제공합니다.이는 확장 속성을 구현함으로써 가능합니다.이를 통해 파일에 첨부된 다수의 이름/값 쌍을 저장할 수 있습니다.이름은 최대 256바이트 길이의 눌 종단 인쇄 가능 문자열이며, 관련 값에는 최대 64KB의 이진 데이터를 포함할 수 있습니다.

이 네임스페이스는 다음 두 개의 네임스페이스로 세분됩니다.root그리고.user루트 네임스페이스에 저장된 확장 속성은 슈퍼유저만이 변경할 수 있으며, 사용자 네임스페이스의 속성은 파일에 쓸 수 있는 권한을 가진 모든 사용자가 변경할 수 있습니다.

확장 속성은 심볼릭링크, 디바이스 노드, 디렉토리 등 모든 종류의 XFS inode에 부가할 수 있습니다.attr유틸리티를 사용하여 명령줄에서 확장 속성을 조작할 수 있습니다.xfsdump그리고.xfsrestore유틸리티는 확장 속성을 인식하고 있으며 해당 컨텐츠를 백업 및 복원합니다.대부분의 다른 백업 시스템은 확장 특성 작업을 지원하지 않습니다.

다이렉트 I/O

디스크에 높은 throughput을 필요로 하는 애플리케이션의 경우 XFS는 캐시되지 않은 I/O 작업을 사용자 공간에 직접 적용할 수 있는 직접 I/O 구현을 제공합니다.DMA를 사용하여 응용 프로그램의 버퍼와 디스크 간에 데이터가 전송되므로 기본 디스크 장치의 전체 I/O 대역폭에 액세스할 수 있습니다.

보증 레이트의 I/O

XFS 보장 속도 I/O 시스템은 애플리케이션이 파일 시스템에 대역폭을 예약할 수 있는 API를 제공합니다.XFS는 기본 스토리지 장치에서 사용할 수 있는 성능을 동적으로 계산하여 지정된 시간 동안 요청된 성능을 충족할 수 있는 충분한 대역폭을 예약합니다.이것은 XFS 파일시스템 고유의 기능입니다.보증 속도는 신뢰성과 성능의 균형을 나타내는 "하드" 또는 "소프트"일 수 있습니다. 단, XFS는 기본 스토리지 서브시스템이 지원하는 경우에만 "하드" 보증을 허용합니다.이 기능은 주로 비디오 스트리밍과 같은 실시간 애플리케이션에 사용됩니다.

보증 레이트의 I/O는 IRIX에서만 지원되었으며,[22] 이를 위해 특수 하드웨어가 필요했습니다.

DMAPI

XFS는 DMAPI 인터페이스를 구현하여 IRIX에서 계층형 스토리지 관리를 지원했습니다.2010년 10월 현재 XFS의 Linux 실장은 DMAPI 실장에 필요한 온디스크 메타데이터를 지원하지만 커널 지원은 사용할 수 없었던 것으로 알려졌습니다.한동안 SGI는 DMAPI 훅을 포함하는 커널 트리를 호스트했지만 커널 개발자들은 이 지원을 [23]최신 상태로 만들 의향을 밝혔지만 이 지원은 적절하게 유지되지 않았습니다.

스냅숏

XFS는 현재 볼륨 매니저에 의해 스냅샷 프로세스가 구현될 것으로 예상하기 때문에 아직 스냅샷을 직접 지원하지 않습니다[24].XFS 파일 시스템의 스냅숏을 작성하려면 , 를 사용해 파일 시스템에의 I/O 를 일시적으로 정지합니다.xfs_freeze유틸리티: 볼륨 매니저가 실제 스냅샷을 실행하도록 한 후 I/O를 재개하여 정상 작업을 계속합니다.그러면 스냅샷을 백업용으로 읽기 전용으로 마운트할 수 있습니다.

IRIX의 XFS 릴리스에는 XLV라는 통합 볼륨 매니저가 포함되어 있습니다.이 볼륨 매니저는 Linux로 이식되지 않았으며 XFS는 Linux 시스템의 표준 LVM과 함께 작동합니다.

최신 Linux 커널에서는xfs_freeze기능은 VFS 계층에 구현되며 Volume Manager의 스냅샷 기능이 호출될 때 자동으로 실행됩니다.이는 한때 ext3 파일[25] 시스템을 일시 중단할 수 없고 볼륨 매니저가 [26]사용량이 많은 데이터베이스를 백업하기 위한 일관된 "핫" 스냅샷을 생성할 수 없었기 때문에 중요한 이점이었습니다.다행히 더 이상 그렇지 않다.Linux 2.6.29 이후 파일 시스템 ext3, ext4, GFS2JFS에도 [27]프리즈 기능이 있습니다.

온라인 조각 모음

XFS의 익스텐트 기반 특성 및 XFS가 사용하는 지연된 할당 전략은 파일 시스템의 플래그멘테이션 문제에 대한 내성을 크게 개선하지만 XFS는 파일 시스템 조각 모음 유틸리티를 제공합니다.xfs_fsr(XFS 파일 시스템 재구성의 줄임말). 마운트된 활성 XFS 파일 [28]시스템에서 파일을 조각 모음할 수 있습니다.

온라인 성장

XFS가 제공하는 것은xfs_growfs유틸리티를 사용하여 XFS 파일 시스템을 온라인으로 확장할 수 있습니다.XFS 파일 시스템은 파일 시스템을 유지하는 디바이스에 할당되지 않은 공간이 남아 있는 한 확장할 수 있습니다.이 기능은 일반적으로 볼륨 관리와 함께 사용됩니다. 그렇지 않으면 파일 시스템을 유지하는 파티션을 별도로 확대해야 합니다.

단점들

  • XFS 파일 시스템은 (2022년 7월 현재) [29]축소할 수 없지만 몇 가지 가능한 해결 방법이 논의되었습니다.[30]
  • XFS의 메타데이터 작업은 나중에 구현된 저널링 파일 시스템에 비해 속도가 느렸고 로그 크기가 훨씬 크도록 설계되어 많은 파일을 삭제하는 등의 작업에 대한 성능이 저하되었습니다.그러나 John Nelson에 의해 구현되어 Linux 커널 메인라인 버전 2.6.39 이후 사용 가능한 지연 로깅이라는 새로운 XFS 기능은 [31]이를 해결할 수 있다고 합니다.개발자가 2010년에 실시한 퍼포먼스 벤치마크에서는 낮은 스레드 수에서는 ext4와 비슷하고 높은 스레드 [32]수에서는 우수한 것으로 나타났습니다.
  • 저널링을 비활성화할 수 없습니다.이로 인해 SSD의 수명이 단축될 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "GPT fdisk - ArchWiki".
  2. ^ "What is the maximum number of inodes in Linux filesystems?". 2014-06-17.
  3. ^ "XFS Filesystem Structure 2nd Edition, Revision 1" (PDF). p. 25. Archived from the original (PDF) on 2017-10-31.
  4. ^ "ondisk_inode.asciidoc\XFS_Filesystem_Structure\design - xfs/xfs-documentation.git - XFS AsciiDoc Documentation tree". git.kernel.org.
  5. ^ a b Darrick J. Wong (2020-08-10). "xfs: widen timestamps to deal with y2038".
  6. ^ "Duperemove". GitHub. Archived from the original on 6 March 2016. Retrieved 21 August 2016.
  7. ^ a b "Has FreeBSD 10 Dropped Support For XFS?". Lists.freebsd.org. 2013-10-27. Archived from the original on 2014-03-30. Retrieved 2014-03-30.
  8. ^ "xFS: The Extension of EFS - "x" for To-be-Determined (but the Name Stuck)". XFS.org. Archived from the original on 2014-07-14.
  9. ^ Smith, Roderick W. (2007). Linux Administrator Street Smarts: A Real World Guide to Linux Certification Skills. Street smarts series. John Wiley & Sons. p. 204. ISBN 9780470116746. Archived from the original on 2016-08-21. Retrieved 2016-03-21. Silicon Graphics (SGI) created its Extents File System (XFS) for its IRIX OS and [...] later donated the code to Linux.
  10. ^ "Porting XFS to Linux". Olstrans.SourceForge.net. 2000-07-21. Archived from the original on 2013-02-25. Retrieved 2013-04-29.
  11. ^ "Linux kernel 2.4.25 changelog". kernel.org. 2004-02-18. Archived from the original on 2014-08-19. Retrieved 2014-08-14.
  12. ^ Daniel Robbins (January 1, 2002). "Common threads: Advanced filesystem implementor's guide, Part 9, Introducing XFS". Developer Works. IBM. Archived from the original on September 4, 2015. Retrieved November 6, 2011.
  13. ^ Daniel Robbins (April 1, 2002). "Common threads: Advanced filesystem implementor's guide, Part 10, Deploying XFS". Developer Works. IBM. Archived from the original on December 24, 2011. Retrieved November 6, 2011.
  14. ^ "Bug 521173 -xfsprogs is missing in RHEL-5.4". RedHat.com. May 24, 2010. Archived from the original on July 10, 2012. Retrieved November 6, 2011.
  15. ^ "Red Hat Enterprise Linux Scalable File System Add-On". RedHat.com. Archived from the original on 2014-05-29. Retrieved 2014-05-22.
  16. ^ "Oracle Linux 6 Release Notes". Oracle Corporation. February 2011. Archived from the original on 2012-03-28. Retrieved 2013-04-07. Oracle Linux 6 includes many new features, including [...] XFS [:] Oracle Linux 6 includes XFS as an optional filesystem.
  17. ^ "Red Hat Unveils Red Hat Enterprise Linux 7, Redefining the Enterprise Operating System". Red Hat. 2014-06-10. Archived from the original on 2014-06-13. Retrieved 2014-06-10.
  18. ^ "Bug 250843 -grub-install hangs on xfs". Redhat.com. May 4, 2009. Archived from the original on July 10, 2012. Retrieved November 6, 2011.
  19. ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org.
  20. ^ "Linux_4.8 - Linux Kernel Newbies". Archived from the original on 2018-10-19. Retrieved 2018-10-19.
  21. ^ "XFS Overview". Silicon Graphics International Corp. 2013-07-02. Archived from the original on 2013-06-06. Retrieved 2013-07-02.
  22. ^ John Nelson (July 30, 2012). "Re: Re: realtime section bugs still around". XFS mailing list (Mailing list). SGI. Archived from the original on April 14, 2014. Retrieved April 13, 2014.
  23. ^ Christoph Hellwig (October 3, 2010). "Re: Linux and DMAPI". XFS mailing list (Mailing list). SGI. Archived from the original on September 27, 2011. Retrieved November 6, 2011.
  24. ^ "XFS: There and back ... and there again? [LWN.net]". lwn.net. Archived from the original on 2016-10-27. Retrieved 2016-10-27.
  25. ^ "How to freeze ext3 file system". www.linuxquestions.org. Archived from the original on 2011-04-28. Retrieved 2011-08-24.
  26. ^ "LVM snapshots: How to use?". www.linuxquestions.org. Archived from the original on 2011-01-17. Retrieved 2010-04-17.
  27. ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org.
  28. ^ Bitubique.com 2009년 4월 1일 Wayback Machine에서 아카이브 완료
  29. ^ XFS.org Wayback Machine에서 2009-01-05 아카이브 완료, FAQ
  30. ^ Eric Sandeen (Jan 18, 2002). "Re: Shrink an XFS filesystem? (LVM)". XFS mailing list (Mailing list). SGI. Archived from the original on 2016-02-03.
  31. ^ Nelson, John (December 23, 2010). "Improving Metadata Performance By Reducing Journal Overhead". XFS.org wiki. Archived from the original on October 6, 2011. Retrieved November 6, 2011.
  32. ^ Nelson, John (May 24, 2010). "Re: PATCH 0/12 xfs: delayed logging V6". XFS Mailing List Message (Mailing list). Archived from the original on December 5, 2011. Retrieved November 6, 2011.

추가 정보

외부 링크