명확히 말하면, 제가 말하는 것은 기존 스트라이프(예: RAID0) zfs 풀을 가져와 새 장치를 한두 개 추가하고 기존 풀(RAID5) 또는 raidz2(RAID6)에서 추가 패리티를 계산한 후 이를 raidz1로 변환하는 것입니다. . 또는 더 일반적으로는 N개의 디스크를 어레이에 추가한 후 raidzP를 raidz(P+N)로 변환합니다.
내가 알 수 있는 한, 이것은 상대적으로 간단해야 하며(대략 말하면, 악마는 세부 사항에 있다고 확신하므로) 최근 추가된 "raidz 확장"보다 더 유용한 기능이어야 합니다. 어레이의 중복성 수준을 변경하지 않고 추가 장치를 연결하여 기존 raidzP 풀을 사용하면 새 장치 수에 선형적으로 새 어레이의 오류 확률이 증가합니다.
RAID 레벨 변환에 대한 많은 사용 사례를 생각할 수 있습니다(두 장치 중 하나가 임박한 오류의 징후를 보이기 시작하기 전에 기존 어레이에 새 디스크를 추가하여 신경 쓰이는 상황을 방지함). 반면 raidz 확장은 몇 가지 경우에만 유용한 것 같습니다. Edge 이 경우 raidz1/2/3은 특정 수의 디스크(2^n + P)에서 가장 잘 작동한다는 점을 고려하면 됩니다.
즉, raidz1 풀을 파괴하고, 다운그레이드된 raidz3 구성에서 이전 장치로 새 풀을 만들고, 두 개의 새 장치를 추가하고 다시 동기화하는 등 그리 어렵지 않아야 할 방법이 있습니다. 그러나 이상적으로는 추가 패리티 디스크를 생성하고 데이터 블록을 재배열하는 전체 프로세스 동안 파일 시스템이 온라인 상태를 유지합니다.
이 누락된 기능에는 사용자의 관심/필요가 부족한 것이 아니라 기술적인 이유가 있을 것이라고 확신하지만 정확히 무엇이 이 기능을 방해하는지 모르겠습니다.
추신: 이 질문에 약간의 언어 남용이 있다는 것을 알고 있습니다. 이는 의도적이며 명확성을 위한 것입니다. raidz1/2/3이 RAID5/6/7과 유사하지만 동일하지는 않다는 것을 알고 있습니까? 그러나 문제는 남아 있습니다. 간단한 구현 확장을 통해 새 디스크 C를 C = A로 채운다고 가정해 보겠습니다.