JBOD: 다양한 용량의 드라이브를 Raid1하는 방법은 무엇입니까? Btrfs, ZFS?

JBOD: 다양한 용량의 드라이브를 Raid1하는 방법은 무엇입니까? Btrfs, ZFS?

다음과 같은 용량의 하드 드라이브를 선택할 수 있습니다.

1 TB
500 GB
320 GB
250 GB

나는 그 중에서 Raid1을 만들고 싶습니다. 즉, 모든 데이터 사본이 항상 내가 가지고 있는 4개 드라이브 중 2개 드라이브에 저장된다는 의미입니다. 문제는 모든 드라이브의 용량이 다르다는 것입니다. 과거에는 mdadm에서 마이그레이션한 후 일반 Raid1 mdadm 2x 2TB, Btrfs(2x 2TB)를 실행했습니다. mdadm이나 Btrfs, ZFS를 다시 사용해도 괜찮습니다. 비록 그에 대해 아무것도 모르지만요.

이 기준에 맞는 가장 적합한 파일 시스템이나 유틸리티는 무엇입니까?

  1. 항상 두 개의 파일 복사본을 보유하므로 디스크 하나가 죽어도 데이터가 손실되지 않습니다.
  2. 여전히 포인트 1의 기준을 충족하면서 사용 가능한 공간이 많이 있습니다.

무엇을 사용해야 합니까? Btrfs Raid1이 이 문제를 처리하고 4개의 하드 드라이브 전체에 걸쳐 모든 파일의 복사본을 정확히 2개씩 기록할 것이라고 생각하지만 확실하지 않습니다. 저는 5.10 커널을 사용하는 AMD64 컴퓨터에 Linux를 사용하고 있습니다.

어떤 조언이라도 환영합니다.

편집 - 솔루션!

모든 답변에 진심으로 감사드립니다! 그래서 저는 Btrfs Raid1 구성을 진행했습니다. 시간이 많이 걸리는 프로세스였지만 이미 Btrfs에 익숙하고 매일 사용하기 때문에 매우 고통스럽지 않았습니다. 중복 비율을 2로 유지하면서 Raid1을 사용하면 물리적 공간이 손실되지 않을 것이라고 생각했습니다. 다음 계산기를 사용했습니다.https://carfax.org.uk/btrfs-usage/

내 장치 크기:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

Raid1을 사용하면 이제 719.5GiB의 데이터가 저장되고 241.6GiB의 여유 데이터가 있어 총 961.1GiB가 됩니다. 이는 계산기에서 말한 것과 일치합니다. 그리고 나중에 마음대로 드라이브를 추가/제거할 수 있습니다. 놀라운.

Raid5는 이론적으로 4배의 읽기 속도 향상을 제공하는 반면 Raid1은 2배를 제공하기 때문에 Raid5를 선택하고 싶습니다. 하지만 지금은 약간 실험적이어서 일상적인 사용에는 권장되지 않는다고 들었습니다. 그렇죠? 5.10 커널의 상태는 어떻습니까? 누구나 사용하고 경험을 공유할 수 있습니까?

어레이를 구축하고 모든 드라이브를 하나씩 추가하고 모든 데이터를 여기에 마이그레이션한 후(백업이 있음) 전체 스크럽을 수행했는데 모든 것이 정상입니다.

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

매우 기쁘다!

편집 - @Marcus Müller에 대한 의견:

"비고: 정말로 이것을 원하십니까? 320GB와 250GB는 아마도 아주 새로운 드라이브는 아닐 것입니다(...)"

당신 말이 맞습니다. 이것은 아주 오래된 드라이브입니다! 지난 몇 년간 Btrfs Raid1에 있던 현재 2TB Seagate Barracuda Compute 드라이브 2개를 제거하여 오래된 드라이브 4개를 무작위로 넣었습니다. Barracudas는 완전한 신뢰성이 필요한 내 서버로 이동합니다. /거기(Ext4 mdadm)용으로 2개의 SSD 250GB, /home 및 /var(Btrfs Raid1)용으로 2개의 HDD TB, ECC RAM이 있습니다. Btrfs Raid1 모드 또는 Raid10 또는 Raid5의 경우 또 다른 두 개의 Barracuda가 처음 두 개에 합류할 것입니다.

4x 오래된 드라이브가 이제 내 데스크탑에 있으며 다음으로 구성됩니다.

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591

신뢰성은 실제로 문제가 되지 않습니다. 백업이 있지만 너무 빨리 충격적인 일이 발생하는 것을 원하지 않으므로 기본 중복성 2.0을 사용하면 드라이브 중 하나가 1년 이내에 수명이 다할 경우 문제를 해결할 수 있습니다. 다른 드라이브를 사용하면 됩니다. 하나 또는 둘.

답변1

각 드라이브에 하나의 LVM 물리 볼륨만 있으면 됩니다.

pvcreate /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

그런 다음 다음 중에서 볼륨 그룹을 만듭니다.

vgcreate myvolumegroup /dev/drive1 /dev/drive2 /dev/drive3 /dev/drive4

마지막으로 하나의 미러가 있는 모든 블록의 속성을 갖는 논리 볼륨을 생성합니다.

lvcreate --mirrors 1 -l100%FREE  -n myvolume myvolumegroup

축하해요! 이제 다음과 함께 사용할 수 있는 블록 장치가 생겼습니다.어느원하는 파일 시스템(예: btrfs 또는 XFS):

mkfs.xfs /dev/myvolumegroup/myvolume
mount /dev/myvolumegroup/myvolume /mnt

그냥 작동해야합니다.


비고: 당신은확신하는이걸 원해? 320GB와 250GB는 아마도 아주 새로운 드라이브는 아닐 것이며 여기에 매우 오래되었을 가능성이 있는 드라이브를 포함하면 (160+125)GB = 285GB의 추가 스토리지만 얻을 수 있습니다.

오래된 드라이브를 사용하는 것은 RAID1을 시작하려는 이유인 데이터 가용성과 다소 상반됩니다. 또한 대신 RAID5를 사용해 보십시오( man lvmraid도움이 될 수 있음).

답변2

btrfsZFS와 달리 다양한 크기의 드라이브를 효율적으로 처리할 수 있으므로 사용합니다 . 대략적으로 모든 드라이브의 총 용량을 2로 나눈 값이 됩니다(중복성을 위한 복사본 2개 포함). 약 1TB 투명한 압축은 포함되지 않습니다.

ZFS는 다음 용량의 vdev를 생성합니다.가장 작은장치 - 하지만 드라이브가 4개이면 미러 vdev 2개를 만들 수 있습니다. 예를 들어 1TB 및 500GB의 미러-1 vdev와 320GB 및 250GB의 미러-2 vdev입니다. 낭비되는 공간을 최소화하기 위해 1TB 및 320GB 드라이브를 분할하여 미러 드라이브와 일치하는 500GB 파티션과 250GB 파티션을 가질 수 있습니다. 그러면 압축 전에 풀에 총 750GB 용량(RAID1+0과 유사한 구성)이 제공됩니다. 해당 드라이브의 남은 공간(500GB 및 70GB)은 인터넷에서 다운로드하고 "인터넷에 백업"했기 때문에 신경 쓰지 않는 것과 같은 다른 용도로 사용할 수 있습니다.

여유가 된다면 250GB 드라이브를 다른 1TB 드라이브로 교체하는 것이 좋습니다. 이는 투명 압축 전에 둘 중 하나에 대해 용량을 약 1.3TB로 늘리기 때문에 zfs에는 좋고 btrfs에는 꽤 좋습니다. "낭비되는" 공간이 훨씬 적습니다.

RAID-1/미러링을 수행하기 위해 LVM 또는 mdadm을 사용하지 마십시오. btrfs는 자체적으로 이를 수행할 수 있으며 btrfs와 같은 오류 수정 파일 시스템을 사용하는 목적의 대부분을 무효화합니다.

스냅샷 및 투명 압축과 같은 기능은 여전히 ​​작동하지만 단일 드라이브만 효과적으로 제공하므로 해당 파일 시스템 중 하나에서 오류를 수정하는 기능을 잃게 됩니다.

~할 수 있다원하는 경우 ZFS 또는 btrfs에서 소프트웨어 또는 하드웨어 RAID를 사용하십시오. 그러나 a) 필요하지 않으며 b) 좋은 생각이 아니며 실제로는 끔찍한 생각입니다. 설정 작업이 더 많고 복잡하며 중요한 기능을 제거하고 보상 혜택을 제공하지 않습니다.

LVM이나 mdadm을 사용하려면 그 위에 ext4(또는 더 나은 방법으로 )를 사용하세요.xfs

그런데, 나는 여전히 RAID-5/6에 대해 btrfs를 신뢰하지 않을 것이라고 생각하지만 미러와 같은 RAID-1 또는 RAID-10에는 전혀 문제가 없습니다.

관련 정보