![작은 파일이 많을 경우 JBOD 또는 스트라이핑이 더 좋습니까?](https://rvso.com/image/1672308/%EC%9E%91%EC%9D%80%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EB%A7%8E%EC%9D%84%20%EA%B2%BD%EC%9A%B0%20JBOD%20%EB%98%90%EB%8A%94%20%EC%8A%A4%ED%8A%B8%EB%9D%BC%EC%9D%B4%ED%95%91%EC%9D%B4%20%EB%8D%94%20%EC%A2%8B%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
다음을 사용하여 다중 디스크 구성의 서버가 있습니다.LVM-on-LUKSJBOD 모드에서. 그러나 htop
CPU 사용량의 커널 시간이 일반적으로 (비)매우 높다는 점을 iotop
알았 습니다 .jbd2/dm-5-8그리고dmcrypt_write/2프로세스가 IO%의 대부분을 차지하는 경우가 많습니다.
fio
나는 4K 임의 IOPS가 전체 LVM 디스크 세트는 물론 각 드라이브의 값보다 훨씬 낮다는 것을 확인 하고 깨달았습니다. JBOD 세트에 더 많은 디스크를 추가하면 LVM이 개별 디스크에 병렬로 액세스를 제공할 수 있다고 생각했습니다. 예를 들어 각각 600,000 IOPS의 SSD 드라이브 4개가 있다면 ~4×600,000 IOPS를 달성할 수 있어야 하지만 그건 아닌 것 같아
그래서 드라이브 세트를 처음부터 다시 재구성하여 튜닝을 하려고 합니다. 서버는 평균 40~80KB 정도의 작은 파일을 많이 처리해야 하기 때문에 기본 RAID0 스트라이프 크기도 파일 자체보다 크기 때문에 JBOD가 더 좋다고 생각합니다. 게다가 RAID0 모드에서 실행하는 경우 작은 파일을 읽고 쓸 때마다 모든 드라이브의 모든 스트라이프에 불필요하게 액세스됩니다.
내 이해가 맞나요? 이 경우 IOPS를 어떻게 향상시킬 수 있습니까? Btrfs 또는 ZFS로 변경하고 LVM 계층을 제거하면 도움이 됩니까?
답변1
업데이트 - 내 초기 답변은 여전히 유용하지만 다시 읽으면 SSD를 사용하고 있음을 알 수 있습니다. 이것은 당신이 잘못된 곳을 찾고 있다고 생각하게 만듭니다. 나는 당신의 속도를 늦추는 것이 데이터의 암호화/암호 해독이라고 생각합니다. SSD 펌웨어에서 해당 작업을 수행할 수도 있습니다.
초기 답변 -
RAID0은 JBOD보다 더 나은 성능을 제공할 것으로 기대합니다. 이는 파일이 다른 디스크에 있을 가능성이 크게 높아져 읽기 속도가 빨라지기 때문입니다.
(어레이가 5개의 동일한 크기 디스크이고 1/5이 꽉 차고 조각화되지 않았다고 가정해 보겠습니다. 데이터는 RAUD0의 경우 5개의 디스크에 분산되지만 JBOD의 경우 모두 1개의 디스크에 분산됩니다. 디스크가 가득 찼더라도(그러나 합리적으로 nrw) - 모든 최신 파일은 1개의 디스크에 있습니다. 따라서 최신 파일만 보는 작업은 다시 JBOD가 있는 1개의 디스크에만 수행됩니다.
동일한 섹터/디스크 블록에 있는 파일의 경우 여전히 RAID0에 비해 jbod의 이점이 없습니다. JBODS의 장점은 다양한 크기의 디스크를 사용할 수 있는 기능, 데이터를 부분적으로 복구하고 디스크 공간을 더 쉽게 늘릴 수 있는 기능입니다.