RAID1의 쓰기 액세스 시간이 느림

RAID1의 쓰기 액세스 시간이 느림

저는 개인용 컴퓨터에서 MongoDB를 실행하고 있습니다. 최근에 회전한 하드 드라이브 소프트웨어 RAID1 2개에 데이터가 있을 때 RAID가 없는 기존 회전 하드 드라이브에 있을 때보다 성능이 훨씬 느려지는 것을 확인했습니다.

오래된 드라이브, RAID 없음

단일 작업:

> var d = new Date(); db.test.createIndex({ "test": 1 } ); print(new Date - d + 'ms');
251ms
> var d = new Date(); db.test.createIndex({ "test": "2dsphere" } ); print(new Date - d + 'ms');
83ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
71ms

전체 테스트 스위트: 250초

 최근 드라이브, RAID1 

단일 작업:

> var d = new Date(); db.test.createIndex({ "test": 1 } ); print(new Date - d + 'ms');
1220ms
> var d = new Date(); db.test.createIndex({ "test": "2dsphere" } ); print(new Date - d + 'ms');
597ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
671ms
> var d = new Date(); db.dropDatabase(); print(new Date - d + 'ms');
1ms

전체 테스트 스위트: 700초

 구성 파일

작동하는 경우(의심스럽습니다):

/etc/fstab

UUID=d719f337-d835-4688-baf2-3e29f147ff15 /               ext4    errors=remount-ro 0       1
# /home was on /dev/md0p3 during installation
UUID=def01643-c71e-47df-9dc8-67096243aee6 /home           ext4    defaults        0       2
# swap was on /dev/md0p1 during installation
UUID=d43319a8-92fb-437d-b576-ef964276cde none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

 UUID="dd8b1f05-c65b-42e1-a45e-0ef421faf1df" /mnt/bak ext4 defaults,errors=remount-ro 0 1

/etc/mdadm/mdadm.conf

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0  metadata=1.2 UUID=3a0f91ae:51c48198:3d1e26ed:118a1938 name=bouzin:0

# This configuration was auto-generated on Sun, 24 Jan 2016 18:00:55 +0100 by mkconf

질문

내가 읽은 바에 의하면,RAID1의 쓰기 액세스는 단일 동등한 드라이브의 쓰기 액세스와 대략 동일해야 합니다..

  • 이 5400/7200 요소가 위 테스트의 차이 크기 순서를 설명할 수 있습니까?

  • RAID가 없으면 더 좋을까요?

  • 실행할 수 있는 흥미로운 테스트/벤치마크가 있습니까? 현재 Mongo 쉘 테스트만 있는데 Mongo 자체가 아닌 RAID나 드라이브를 가리키는 것 같습니다. 무엇이든 식별하기 위해 실행할 수 있는 애플리케이션에 구애받지 않는 테스트가 있습니까?

  • RAID 구성에 문제가 있거나 최적이 아닌가?

편집하다:

중요한 점은 7200rpm과 5400rpm 드라이브를 혼합했다는 것입니다.

답변1

드라이브 사양이 동일하더라도 RAID1은 단일 드라이브보다 속도가 느립니다.

그 이유는 RAID1이 두 개의 드라이브에 각각 쓰기를 수행하여 안정성을 향상시키는 반면, 동일한 작업으로 인해 성능이 저하되기 때문입니다.

RAID0은 2개의 드라이브 간에 쓰기를 분할하여 로드를 공유하여 성능을 향상시키지만 같은 이유로 안정성을 저하시킵니다.

RAID5는 단일 드라이브보다 더 나은 성능을 제공하고 드라이브 오류로 인해 어레이가 작동 불능 상태가 되지 않으므로 더 안정적입니다(이러한 조건에서는 속도가 크게 느려지지만).

위에 해당사항 없음RAID 레벨과 그 장단점에 대한 전체 목록특정 RAID 수준에 대한 권장 사항도 없습니다. 하드웨어에 대한 권장 사항https://hardwarerecs.stackexchange.com/좋은 선택입니다.

벤치마킹 방법에 관계없이 정확한 벤치마크를 얻으려면 테스트를 여러 번 실행하고 결과의 평균을 내야 하며 시스템이 다른 작업을 실행하지 않을 때 단일 사용자 모드에서 이 작업을 수행해야 합니다. 다른 작업으로 인해 결과가 왜곡될 수 있기 때문입니다. 예상보다 iowait 시간이 길어질 수 있습니다.

벤치마킹의 또 다른 간단한 형태는 dd특정 크기의 샘플 파일로 실행하는 것입니다. XGB 크기의 임의 데이터 소스 파일이 있거나 생성되었다고 가정합니다. 그럼 당신은 실행할 수 있습니다time dd if=sourcefile of=target file

dd매개변수를 사용하면 bs=다양한 블록 크기로 테스트를 실행할 수 있으며(참고자료 참조 man dd), 이는 요구사항/환경에 맞게 조정하는 데 유용할 수 있습니다.

이는 말할 필요도 없지만 RAID 어레이에 사용되는 드라이브의 품질은 중요한 요소입니다. Seagate의 Barracuda Pro 및 WD의 Gold 데이터 센터 드라이브는 10^15 읽기(약 125TB)에서 복구할 수 없는 오류가 1개 미만으로 지정되었습니다.

그러나 다른 많은 대용량 드라이브는 사양이 높지 않습니다. RAID에서 저사양 드라이브를 사용하는 경우 재구축이 실패할 가능성이 높습니다.

답변2

RAID1은 어레이에서 가장 느린 드라이브만큼 빠릅니다.

RAID1에 3개의 드라이브가 있고 그 중 2개는 기업용 SSD이고 1개는 소비자 HDD인 경우에도 해당 HDD의 속도를 얻을 수 있습니다.

3개 이상의 드라이브에서 RAID1을 사용해 본 적이 없거나 본 적이 없는 분들을 위해 다음은 Wiki에서 발췌한 내용입니다(협회):

RAID 1은 두 개 이상의 디스크에 있는 데이터 세트의 정확한 복사본(또는 미러)으로 구성됩니다.

관련 정보