Computer >> 컴퓨터 >  >> 시스템 >> Linux

2021년 최고의 리눅스 파일 시스템은 무엇일까?

2021년 최고의 리눅스 파일 시스템은 무엇일까?

리눅스 시스템을 설치하기 위해 하드 디스크를 포맷할 때는 어떤 파일 시스템을 사용할지 신중하게 결정해야 합니다. 2021년 현재 가장 널리 쓰이는 선택지는 단연 EXT4입니다. 하지만 EXT4가 정말 최선일까요? 다른 대안들이 있다면 그쪽을 선택하는 편이 나을까요? 지금부터 주요 파일 시스템 옵션들을 하나씩 살펴보겠습니다.

EXT4

'Fourth Extended Filesystem'이라는 이름의 EXT4는 이전 세대인 EXT2와 EXT3과 완벽하게 하위 호환되며, 대부분의 리눅스 배포판에서 표준으로 자리 잡았습니다. 전신만큼이나 여전히 큰 인기를 누리고 있습니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

저널링(journaling)을 지원하기 때문에 오늘날 가장 안전하고 안정적인 선택지 중 하나로 꼽힙니다. 저널링 덕분에 시스템 충돌이나 정전이 발생한 후에도 데이터 손실을 최대한 막을 수 있습니다.

또한 '익스텐트(extents)'와 '지연 할당(delayed allocation)'이라는 두 가지 핵심 기능을 갖추고 있어, 저장 매체에 데이터가 기록되는 방식을 지능적으로 관리함으로써 성능을 높이고 조각화를 줄여줍니다.

BtrFS

'B-tree 파일 시스템'인 Btrfs는 처음에 Oracle이 설계했으며, 꾸준히 인기를 얻어 많은 사람들이 EXT 계열의 진정한 후계자로 여기고 있습니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

Btrfs는 자동 조각 모음과 투명 압축 같은 고급 기능을 제공합니다. COW(Copy-on-Write) 방식을 따르기 때문에 기존 데이터를 직접 수정하는 대신 새로운 버전의 데이터와 메타데이터를 별도로 저장합니다('섀도잉'). 이를 통해 파일 시스템의 여러 상태에 대한 스냅샷 생성은 물론, 손쉬운 복제·마이그레이션·증분 백업도 가능합니다. 온라인 및 오프라인 파일 시스템 검사까지 지원해 데이터 손실 가능성을 더욱 낮춰줍니다.

Btrfs는 RAID를 기본적으로 지원하지만, 일반적인 소프트웨어 RAID 스트라이핑이나 하드웨어 블록 미러링 방식과는 다른 접근법을 사용합니다. 대신 한 장치의 각 블록이 다른 장치에 복사본을 갖도록 보장하고 모든 데이터에 대한 CRC를 유지합니다. 따라서 장애가 발생하면 백업과 체크섬 정보를 활용해 손상되거나 사라진 데이터를 재구성할 수 있습니다.

또한 Btrfs는 'SSD 친화적'이기도 합니다. 기계식 HDD에는 유용하지만 SSD 수명을 닳게 할 수 있는 기능들을 자동으로 비활성화하기 때문입니다.

XFS

XFS는 거의 30년 전 Silicon Graphics가 3D 그래픽 렌더링에 특화된 그래픽 워크스테이션을 위해 만든 파일 시스템입니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

그래서 XFS는 지금도 끊임없이 데이터를 읽고 쓰는 시스템에 가장 적합한 선택지 중 하나로 남아 있습니다. '할당 그룹(allocation groups)', 즉 각각 고유한 inode와 여유 공간을 포함하는 파일 시스템의 구역을 활용하기 때문에 여러 스레드가 동시에 병렬로 데이터를 읽고 쓰는 것이 가능합니다. 지연 할당, 동적 inode 할당, 고급 선행 읽기(read-ahead) 알고리즘 지원 덕분에 수백 TB 규모의 대형 스토리지 풀에서도 뛰어난 성능을 발휘합니다.

다만 저널링 지원이 좀 더 현대적인 대안들에 비해 제한적이며, 상대적으로 데이터 손실 위험이 크다는 지적도 있습니다. 또한 사진 폴더에서 사진 몇 장을 삭제하는 것처럼 일상적이고 대부분 단일 스레드로 동작하는 일반적인 시나리오에서는 성능이 잘 나오지 않습니다. 즉, 자체 데이터센터를 구축할 때는 훌륭하지만 일반적인 개인 사용 환경에는 어울리지 않을 수 있습니다.

F2FS

비교적 최신 파일 시스템 중 하나인 'Flash-Friendly File System(F2FS)'은 플래시 기반 저장 장치에서 사용하기 가장 좋은 선택지 중 하나입니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

삼성전자가 이러한 목적을 위해 처음 개발한 F2FS는 저장 매체를 작은 단위로 나누고, 그 안에 다시 더 작은 영역(zone)을 포함시키는 식으로 구조화하며, 같은 영역을 반복해서 쓰기보다 다양한 영역을 골고루 사용하려 합니다. TRIM/FITRIM 지원과 결합되면 쓰기 횟수에 제한이 있는 플래시 미디어에 훨씬 친화적으로 작동합니다.

F2FS의 기능을 깊이 파고들 필요는 없습니다. 속도나 데이터 보안 면에서 다른 대안들보다 특별히 뛰어난 점이 없고, 일반적인 저장 매체에서는 다른 파일 시스템이 더 나은 기능 세트를 제공하기 때문입니다. 하지만 플래시 기반 저장 장치, 즉 F2FS가 명확히 그 목적으로 탄생한 분야에 관한 한 이야기는 달라집니다.

OpenZFS/ZFS

OpenZFS는 Sun의 Solaris에서 처음 등장한 Zettabyte File System(ZFS)의 포크(fork)입니다. 라이선스 문제 때문에 2010년까지는 주로 FUSE를 통해서만 리눅스에서 ZFS를 사용할 수 있었습니다. 2010년 이후 개발이 개방되기 시작했고, 2016년에는 우분투가 오픈소스 버전을 기본 지원했습니다. 그 이후로 사람들이 'ZFS'라고 말할 때는 보통 Solaris ZFS가 아닌 오픈소스 변종을 의미합니다. 물론 Solaris ZFS도 별도의 경로로 계속 발전하고 있습니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

ZFS는 파일 시스템과 볼륨 관리자를 결합했다는 점에서 다른 모든 대안들과 차별화됩니다. 그래서 파일과 디렉터리뿐 아니라 그것이 저장된 물리적 매체까지 직접 관리합니다. 덕분에 모든 저장 장치를 하나의 자원처럼 취급되는 '풀(pool)'에 할당할 수 있습니다. 용량이 부족해지면 풀에 새 저장 장치를 추가해 확장하면 되고, 세부 사항은 ZFS가 알아서 처리해 줍니다.

매체 자체를 직접 관리하기 때문에 ZFS는 RAID 지원에서도 돋보입니다. RAID 0, 2, 5 등 대부분의 유형의 RAID 배열을 구성할 수 있을 뿐 아니라, 자체적인 'RAIDZ' 방식도 사용할 수 있습니다. 일반적인 RAID 배열과 달리 RAIDZ는 드라이브들 사이에 가변 폭 스트라이프를 사용해 정전 이후 데이터 손실에 대한 내성을 높입니다.

ZFS 역시 COW(Copy-on-Write) 방식을 따릅니다. 기존 데이터를 수정하는 대신 이전 버전과 새 버전 사이의 변경 사항('델타')만 저장합니다. 이를 통해 많은 공간을 차지하지 않으면서도 백업이나 스냅샷으로 활용할 수 있는 여러 데이터 복사본을 투명하고 지능적으로 보관할 수 있습니다. 사용자는 파일 시스템의 이전 상태로 되돌려 변경 사항을 취소하거나, 반대로 기존 데이터의 클론에 모든 변경 사항을 반영할 수도 있습니다.

이런 기능들 덕분에 ZFS는 이론상 데이터 손실 가능성을 거의 완전히 제거합니다.

JFS

IBM의 Journaling File System(JFS)은 저널링을 가장 먼저 지원한 파일 시스템 중 하나로, 데이터 손실 가능성을 크게 줄였습니다. 다른 많은 현대적인 대안들처럼 익스텐트를 사용하고, XFS처럼 할당 그룹을 활용해 높은 읽기/쓰기 성능을 목표로 합니다.

2021년 최고의 리눅스 파일 시스템은 무엇일까?

특정 기능 하나에 집중하지 않기 때문에 다양한 워크로드와 요구 사항에서 균형 잡힌 만능형 파일 시스템입니다. 불행히도 이는 어떤 분야에서도 두드러지지 않는다는 뜻이기도 합니다. 게다가 저장 장치용 파일 시스템을 고르는 사람들이 부정적으로 볼 만한 몇 가지 문제점도 있습니다. 예컨대 저널 업데이트를 무기한 지연시킬 수 있어 데이터 손실 가능성이 커지고, 저널링 파일 시스템이라는 존재 이유가 사실상 무색해질 수 있습니다. 서버와 대형 데이터베이스에 유용한 병렬 쓰기에는 강점이 있지만, 더 보편적인 데스크톱 사용 시나리오에서는 EXT4보다 성능이 떨어집니다.

아마도 이런 이유들 때문에 JFS는 더 빠르거나 데이터 손실에 더 잘 대비할 수 있는 다른 파일 시스템들만큼 인기를 얻지 못하고 있습니다.

어떤 파일 시스템을 사용해야 할까?

대부분의 리눅스 배포판이 EXT4를 기본값으로 채택하는 데에는 이유가 있습니다. 오랫동안 검증되었고, 안정적이며, 성능이 뛰어나고, 폭넓게 지원됩니다. 안정성을 원한다면 EXT4가 최고의 리눅스 파일 시스템입니다.

하지만 다소 덜 성숙한 생태계를 감수할 용기가 있다면 Btrfs가 더 나은 선택일 수 있습니다.

데이터 손실 가능성을 거의 완전히 없애고 안정성이 최우선인 서버 환경이라면 ZFS를 고려해 볼 만합니다. 다만 ZFS를 제대로 활용하려면 상당한 학습이 필요합니다.

플래시 미디어라면 F2FS가 기본적으로 가장 좋은 선택입니다.

어떤 파일 시스템을 선택하든, 기존 내용을 사실상 복구 불가능하게 만들고 싶다면 HDD를 미리 완전히 지우는 것을 잊지 마세요.