--------------------------- +-------+ --------
| |
| part | vdev 1
| | no redundancy
------------------ +-------+ +-------+ --------
| | | | vdev 2
| part | | part | mirroring
| | | | (2 mirrors)
-------- +-------+ +-------+ +-------+ --------
| | | | | | vdev 3
| part | | part | | part | mirroring
| | | | | | (3 mirrors)
+-------+ +-------+ +-------+ +-------+ --------
| | | | | | | | vdev 4
| part | | part | | part | | part | raidz2
| | | | | | | |
+-------+ +-------+ +-------+ +-------+ -------
Disk Disk Disk Disk
1TB 2TB 3TB 4TB
다양한 크기의 디스크가 여러 개 있고 사용 가능한 모든 공간을 활용하기 위해 디스크를 분할하고 중복 정도가 다른 vdev로 파티션을 집계하고 싶다고 가정해 보겠습니다.
저는 위에 묘사된 것과 같은 사다리 같은 구조를 생각하고 있습니다.
각 디스크 1~4는 각각 1TB 크기의 1,2,3 또는 4개의 파티션으로 분할됩니다. 각 디스크는 각각 1,2,3 또는 4개의 vdev에서 공유됩니다.
- vdev 1은 중요하지 않은 데이터 전용입니다(중복성 없음).
- vdev 2에는 한 번 복제되는 데이터가 포함되어 있습니다.
- vdev 3에는 3개의 미러를 통해 두 번 복제되는 중요한 데이터가 포함되어 있습니다.
- vdev 4는 이중 패리티를 사용하여 두 번 복제되는 중요한 데이터를 보유합니다. 이는 vdev 3과 동일한 안정성을 가져야 하지만 공간 효율성이 더 높습니다.
ZFS가 내부적으로 데이터를 배치하는 방법에 대한 명확한 아이디어가 없다는 점을 감안할 때 여러 vdev에 디스크를 분할하는 것이 일반적인 관행인지, 성능 및 견고성 측면에서 말도 안되는 것인지 궁금합니다.
답변1
둘 이상의 풀에 동시에 액세스하는 순간 성능은 형편없게 됩니다.
3방향 미러링은 디스크 공간을 낭비하는 것 외에는 큰 이점을 얻을 수 없습니다.
RAIDZn은 단일 디스크의 IOPS 성능과 비슷합니다.
견고성 측면에서 가장 작은 드라이브를 제외한 모든 드라이브를 잃어버리면 여러 풀의 성능이 저하되므로 주의하세요. 저하된 상태는 성능 저하와 함께 발생합니다.
또한 간접비를 고려하십시오. 10TB의 디스크가 있지만 5TB의 사용 가능한 공간이 있으며 그 중 1TB에는 중복성이 없습니다.
2+3과 4+1이라는 두 개의 풀이 있고 sanoid/syncoid를 사용하여 정기적으로(시간별) 스냅샷을 만들고 2+3 풀 기본 풀에서 4+ 풀로 데이터를 전송하는 배열을 사용하는 것이 더 나을 것입니다. 백업 풀 1개. 그래도 여전히 5TB의 사용 가능한 공간이 제공되며, 모두 백업되어 훨씬 덜 왜곡된 설정을 제공합니다.