디스크 크기가 다른 btrfs RAID1

디스크 크기가 다른 btrfs RAID1

2TB 디스크에 기존 btrfs 파일 시스템이 있고 중복으로 5TB 디스크를 추가하고 싶습니다.

간단히 btrfs로 새 디스크를 포맷하고 다음을 사용하여 장치를 추가할 수 있습니다.

btrfs device add /dev/sdX /mymountpoint
btrfs filesystem balance start -dconvert=raid1 -mconvert=raid1 /mymountpoint

결국 2TB의 사용 가능한 디스크 공간과 두 디스크 모두에 모든 내용이 남게 됩니다. 그러나 5TB 디스크에 여분의 3TB를 사용하여 모든 쓰기가 더 큰 디스크에 두 번 들어가도록 할 수 있다면 더 많은 중복성을 확보할 수 있습니다(2TB 디스크는 모든 것을 한 번 저장하고, 5TB는 모든 것을 두 번 저장합니다). 이것이 가능한가?

지연 시간 증가, 속도 감소 등의 단점을 알고 있습니다.

답변1

기술적으로 더 큰 디스크에 각각 2TB의 파티션 두 개를 생성하면 더 작은 디스크(또는파티션) 동일한(또는 거의 동일한) 크기의 세 개의 장치로 표시됩니다.

단점이 있어도 괜찮다고 해도 하지 마세요. 이것이 이유 다:

btrfs는 먼저 모든 장치를 스토리지 풀로 결합한 다음 파일 데이터가 생성될 때 청크를 복제합니다. RAID-1은 현재 "다른 장치에 있는 모든 데이터의 복사본 2개"로 정의됩니다. 이는 n개의 장치에 대해 정확히 n개의 복사본을 만든다는 점에서 MD-RAID 및 dmraid와 다릅니다. 3개의 1TB 장치에 대한 btrfs RAID-1에서는 1.5TB의 사용 가능한 데이터를 얻습니다. 각 블록은 2개의 장치에만 복사되므로 특정 블록을 쓰려면 정확히 2개의 장치에만 기록하면 됩니다. 독서는 하나만 할 수 있습니다.

(원천)

따라서 일부 데이터가 더 큰 디스크의 두 파티션에 있지만 더 작은 디스크에는 없을 수도 있습니다. 나는 더 큰 디스크가 부분적으로/국지적으로 실패하는 경우 이러한 "가난한 사람의 중복성"이 때때로 도움이 될 수 있다고 생각합니다. 전체적으로 실패하면 여기에 두 번 저장되었던 데이터가 손실됩니다.

원하는 작업은 "n 장치에 대한 n 복사본" 접근 방식을 사용하여 수행할 수 있습니다(역시: 이 컨텍스트에서는 더 큰 디스크에 있는 두 개의 파티션이 장치입니다). 당신은 관심이있을 수 있습니다LVM과 MDRAID를 사용한 RAIDing - 장단점.

내가 당신이라면 나는 이것을하지 않을 것입니다. 이 설정에서는 각 쓰기 작업이 동일한 물리적 장치에 있는 두 개의 파티션을 사용합니다. 두 파티션에 순차적으로 쓰는 경우에도 헤드가 앞뒤로 이동해야 하는 동시 쓰기입니다. 특별히 파티션을 설정하지 않는 한 해당 쓰기는 공통 암의 동일한 위치에 있는 두 개의 서로 다른 헤드에 의해 수행됩니다. 펌웨어가 동시에 두 개의 헤드를 사용하여 쓸 수 있습니까? 처음에는 항상 두 파티션에 대해 데이터가 반동시에 도착합니까? 두 파티션에 대한 해당 쓰기 사이에 읽기 작업이 예약되지 않습니까? 나는 이 모든 것을 의심한다.

따라서 비 RAID 구성보다 헤드가 더 많이 이동한다고 가정하는 것이 합리적입니다. 아마도 팔의 수명이 단축될 것입니다. 기계적으로 오류가 발생하면 전체 디스크가 오류가 발생합니다. 그렇다면 얼마나 많은 사본을 가지고 있었는지는 중요하지 않습니다. 남은 것은 더 작은 디스크뿐입니다.

결론: 귀하의 아이디어는 (발생할 때) 추가 중복을 완전히 무의미하게 만드는 유형의 실패 위험을 증가시킬 수 있습니다.

답변2

btrfs를 사용하여 이를 구현하는 간단한 방법은 없습니다. 하지만 더 중요한 것은 이 구성이 사용되어서는 안 되는 위험한 구성이라는 것입니다.

RAID1의 목적은 중복성입니다. 단일 디스크에 데이터를 두 번 저장하면 중복성이 제공되지 않습니다. 해당 디스크에 오류가 발생하면 데이터가 손실됩니다.

관련 정보