mdadm RAID-6 쓰기 속도 향상 UPS를 지원합니다. mdstat는 다음과 같습니다. Personalities

5x1Tb WD Green HDD의 홈 서버에 mdadm RAID-6이 있습니다. dd 단위의 읽기 속도는 268 Mb / s 이상입니다. 그러나 쓰기 속도는 37.1Mb / s에 불과합니다. (48Gb 파일에서 dd를 통해 테스트되었으며 RAM 크기는 1Gb이고 테스트에 사용 된 블록 크기는 8kb입니다.)

왜 쓰기 속도가 그렇게 느리고 개선 할 수있는 방법이 있는지 제안 해 주시겠습니까? 쓰기 중 CPU 사용량은 25 %에 불과합니다 (즉, Opteron 165의 1 코어 절반) 비즈니스 크리티컬 데이터가 없으며 서버는 UPS를 지원합니다.

mdstat는 다음과 같습니다.

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

어떤 제안?

쓰기 취소, 장벽, nobh와 같은 것은 도움이되지 않았습니다. DD blocksize = 1M, 8M은 아무것도 변경하지 않았습니다. mdadm은 물리적으로 섹터를 읽어서 중요하지 않은 경우에도 패리티를 계산하는 것처럼 보입니다 … 맞습니까?

업데이트 : 변경 된 스트라이프 캐시 후 속도 저하는 실제로 테스트 중에 1 HDD가 실패했기 때문에 실제로 저하되었습니다.

해결 : 스트라이프 캐시를 늘리고 외부 비트 맵으로 전환 한 후 속도는 160Mb / s 쓰기, 260Mb / s 읽기입니다. :-디



답변

/ sys / block / mdX / md / stripe_cache_size 조정을 시도 했습니까?

이 포럼 게시물 (노르웨이어, 죄송합니다)에 따르면 “이 매개 변수를 조정하는 것은 디스크가 많고 시스템이 더 빠를수록 더 중요합니다.”

내 시스템에서는 8192 값을 사용하여 최상의 성능을 얻습니다. 기본값 256을 사용하면 쓰기 성능이 66 % 감소합니다.

비교를 위해 그의 속도를 인용 :

디스크 : mdadm RAID6 (-n 512)의 8xSeagate 2TB LP (5900RPM) (stripe_size_cache = 8192).

CPU : Intel X3430 (4×2.4GHz, 8GB DDR3 ECC RAM)

속도 : 387MB / s 순차 쓰기, 704MB / s 순차 읽기, 초당 669 개의 ​​랜덤 탐색.

내 홈 서버에는 RAID 5를 사용하는 디스크와 거의 동일한 디스크가 있습니다.

디스크 : RAID 5의 4×1.5TB WD 녹색 (stripe_size_cache = 256-기본값)

CPU : Intel i7 920 (2.66GHz, 6GB RAM)

속도 : 60MB / s 순차 쓰기, 138MB / s 순차 읽기 (Bonnie ++에 따름)

따라서 순차적 쓰기 성능이 읽기 성능의 약 50 % 인 것처럼 보입니다.

어떤 성능을 기대할 수 있는지 Linux Raid Wiki 는 RAID 5에 대해 말합니다.

읽기는 RAID-0 읽기와 거의 유사하며 쓰기는 다소 비쌀 수 있습니다 (데이터베이스 작업과 같은 올바른 패리티 정보를 계산하기 위해 쓰기 전에 읽기가 필요함) 또는 RAID-1과 유사합니다. 쓰기 (더 큰 순차적 쓰기가 수행되고 패리티는 다른 블록에서 직접 계산되어 기록 될 때).

그리고 RAID 6 :

읽기 성능은 RAID-5와 비슷하지만 쓰기 성능이 떨어집니다.


답변

시험

echo 32768 > /sys/block/md0/md/stripe_cache_size

확인;)


답변