NAS용 Ext4 vs. XFS vs. Btrfs vs. ZFS

NAS용 Ext4 vs. XFS vs. Btrfs vs. ZFS

내 사용 사례: M.2 SSD에 Ubuntu Server 18.04가 설치되어 있습니다. 4TB HDD를 스토리지로 추가하고 싶습니다. 대부분 대용량 미디어 파일 및 백업용이므로 자주 기록되지는 않습니다.

이 사용 사례에 가장 적합한 파일 시스템은 무엇이라고 생각하시나요?

나의 주요 후보는 Ext3/4, XFS, Btrfs 및 ZFS입니다(다른 것에 대해서는 자유롭게 논쟁해 보세요).

저는 "최고의 파일 시스템이 무엇입니까?"라고 묻는 것이 아닙니다. '최고'라는 것은 없습니다. 저는 사람들에게 이 사용 사례에 가장 적합한 파일 시스템이 무엇인지 묻고 있습니다. 다음을 포함해 보세요:

  • 단점이나 위험이 있나요? 정전이 발생하면 XFS가 데이터를 손상시킬 수 있다고 들었습니다. ECC RAM이 없는 ZFS와 동일합니다.
  • 나중에 데이터 손실 없이 RAID-1을 추가할 수 있습니까? 지금은 다른 하드 드라이브를 살 돈이 부족하지만(저는 그것을 외장 드라이브에 사용했습니다. RAID는 백업을 대체하지 않습니다) 나중에 하나를 추가할 수 있습니다. 이는 필수 사항은 아니며 단지 좋을 수도 있습니다.
  • 읽기/쓰기 성능은 어떤가요? Btrfs는 아마도 내 요구 사항 대부분에 적합할 것이지만 Phoronix 벤치마크에서는 매우 느립니다. XFS는 뛰어난 성능을 제공하지만 데이터 손실이 발생할 수 있다고 들었습니다.

조언해 주셔서 감사합니다.

답변1

나는 일반적으로 다음 두 파일 시스템 중 하나를 사용합니다.

  • CoW(또는 데이터 저장소가 이미 CoW 파일 시스템에 있는 가상 머신)와 잘 작동하지 않거나 매우 빠른 직접 I/O가 필요한 경우 XFS입니다.

  • 다른 용도로는 ZFS를 사용할 수 있습니다.

귀하의 사용 사례에서는 특히 Ubuntu 18.04가 이미 ZFS를 제공한다는 점을 고려하여 ZFS를 사용합니다. 이미 존재하는 장치에 다른 미러 다리를 쉽게 부착할 수 있으므로 ZFS는 매우 적합합니다. 예를 들어 디스크 이름을 다음과 같이 지정하십시오 nvme0p1.

  • zpool create tank /dev/nvme0p1"탱크"라는 단일 vdev 풀을 만듭니다.
  • zpool attach tank <newdev> /dev/nvme0p1미러링을 활성화합니다.

어떤 이유로 ZFS를 사용할 수 없거나 사용할 수 없다면 MDRAID와 XFS가 도움이 됩니다.

  • mdadm --create /dev/md200 -l raid1 -n 2 /dev/nvme0p1 missing누락된 레그가 있는 RAID1 어레이를 생성합니다(#1 참조).
  • mdadm --manage /dev/md200 --add <newdev>새 미러 레그를 연결합니다(완전한 RAID1 구성, #2 참조).

배열을 생성한 후 다음을 통해 XFS로 포맷할 수 있습니다.mkfs.xfs

그래요~ 아니다성능과 복원력이 모두 수준 이하이므로 BTRFS를 사용하는 것이 좋습니다. 예를 들어,데비안 위키:

현재(2019-07-07, linux ≤ 5.1.16) 두 디스크로 구성된 raid1 프로필이 두 번째로 저하된 상태로 마운트될 때 영구적으로 읽기 전용이 되는 버그가 있습니다. 예를 들어 누락된/ 파손/SATA 링크 재설정 디스크

또한 BTRFS(읽기: Synology)를 사용하는 상업용 NAS 공급업체는 자체 통합 RAID 기능을 사용하지 않습니다. 오히려 검증된 Linux MDRAID 계층을 사용합니다.

편집하다:일부 사람들은 XFS가 데이터 손실에 취약하다고 주장하지만 이는 전혀 옳지 않습니다. 음, ext3에 비해 XFS(및 지연 할당을 지원하는 다른 파일 시스템)는 제어되지 않은 전원 끄기 시 동기화되지 않은 데이터를 더 많이 잃을 수 있습니다. 그러나 동기화된 데이터(예: 중요한 쓰기)는 100% 안전합니다. 또한 XFS 데이터 손실을 악화시키는 특정 버그10여년 전에 수정되었습니다.. 그 버그는 별개로,어느지연 할당 파일 시스템(ext4 및 btrfs 포함)~ 할 것이다제어할 수 없는 전원 차단의 경우 상당한 수의 데이터 또는 동기화되지 않은 데이터가 손실됩니다.

ext4와 비교하여 XFS에는 무제한 inode 할당, 고급 할당 힌트(필요한 경우) 및 최신 버전의 reflink 지원(그러나 Ubuntu 18.04에서는 명시적으로 활성화해야 함)이 있습니다.mkfs.xfs 매뉴얼 페이지추가 정보를 원하시면)


1: /proc/mdstat장치가 누락된 예제 파일:

Personalities : [raid1]
md200 : active raid1 loop0[0]
      65408 blocks super 1.2 [2/1] [U_]

unused devices: <none>

2: /proc/mdstat두 번째 장치를 추가한 후 파일

Personalities : [raid1]
md200 : active raid1 loop1[2] loop0[0]
      65408 blocks super 1.2 [2/2] [UU]

unused devices: <none>

답변2

이것은 다음 질문에 더 가깝습니다.수퍼유저그러나 일부 아이디어는 이 사이트에도 유효하므로 몇 가지 질문에 답해 보겠습니다.

  • XFS는 전력 손실을 좋아하지 않는다는 평판을 얻었습니다. 그 이후로 많은 일이 일어났고 요즘은 RedHat, Oracle 등이 이를 기본 파일 시스템으로 사용하고 있기 때문에 이것이 오늘날 예전보다 훨씬 작은 문제라고 해도 놀라지 않을 것입니다. 특히 적절한 백업 정책이 있고 사용 사례가 이 파일 시스템의 속도 이점을 보는 종류라면 위험을 감수할 가치가 있을 수 있습니다.
  • ECC RAM이 없는 ZFS는 여전히 매우 훌륭한 기능을 갖고 있지만 일부 잘못된 데이터 인스턴스를 포착하지 못할 위험이 있습니다. 나는 당신이 설명하는 것과 유사한 가정 환경에서 몇 년 동안 ECC 메모리 없이 ZFS를 실행했으며 눈에 띄는 데이터 손실을 경험한 적이 없었지만 다시 한번 그 볼륨에 중요한 데이터를 정확하게 저장하지 않았습니다. 그 이후로 적절한 서버 하드웨어로 마이그레이션했고 이제 실제로 중요한 작업에 스토리지를 사용하는 것이 훨씬 더 편안해졌습니다.
  • ZFS를 사용하면 단일 디스크 풀에 디스크를 추가하여 미러를 만들 수 있습니다. 실제로 해보진 않았지만 확인해보면 성공했다는 검색결과가 여러개 나오네요덕덕고. 다른 시스템에 대해서는 잘 모르겠지만 파일 시스템 아래에 일종의 볼륨 관리자가 있는 한 단일 디스크에서 RAID1로 이동하는 것은 쉽지 않습니다.
  • CoW 기반 파일 시스템(zfs, btrfs)은 기능이 덜 풍부한 시스템보다 느리며 이를 뒷받침하는 충분히 강력한 하드웨어에 더 의존합니다.

기업 환경에서와 마찬가지로 저는 예상되는 로드로 벤치마크를 실행하고 성능과 기능을 직접 경험하는 데 시간을 할애할 것입니다.

답변3

나는 그렇게 하지 않을 타당한 이유가 없는 한 문제의 운영 체제가 기본값으로 제안한 저널링 파일 시스템을 사용할 것입니다. 지난번에 ext4인 Ubuntu를 확인했습니다.

이유는 간단합니다. 기본값은 가장 많이 사용되는 값이므로 버그가 발견되어 수정될 가능성이 가장 큽니다. 언급한 파일 시스템 간의 차이점은 일상적인 가벼운 사용에서는 큰 의미가 없을 것 같습니다. 성능이 매우 중요하다면 운영 체제에서 캐싱을 위한 더 많은 공간을 확보할 수 있도록 더 많은 메모리를 확보하는 것이 좋습니다.

즉, 여러 운영 체제에서 드라이브를 사용하려면 두 개를 얻거나 최소한 두 개의 물리적 파티션으로 분할한 다음 미디어가 있는 파티션에서 NTFS 또는 exFAT를 사용하는 것이 좋습니다.

답변4

실제 미러가 없어도 mdadm 미러로 이루어진 항목에 XFS 형식의 파일 시스템을 생성할 수 있습니다.

세 개의 미러가 있지만 두 개는 없는 미러로 파티션을 만듭니다. 나중에 누락된 항목 두 개를 추가할 수 있습니다.

관련 정보