私はパーソナルコンピュータで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が2つのドライブにそれぞれ書き込みを行って安定性を向上させるのに対し、同じ操作でパフォーマンスが低下するためです。
RAID0は、2つのドライブ間で書き込みを分割して負荷を共有し、パフォーマンスを向上させますが、同じ理由で安定性を低下させます。
RAID5は、単一のドライブよりも優れたパフォーマンスを提供し、ドライブの故障によりアレイが動作不能状態にならないため、より安定しています(これらの条件では速度が大幅に遅くなりますが)。
上記の該当事項はありませんRAIDレベルとその長所と短所の完全なリスト特定の RAID レベルに対する推奨事項はありません。ハードウェアに関する推奨事項https://hardwarerecs.stackexchange.com/良い選択です。
ベンチマーク方法に関係なく正確なベンチマークを得るには、テストを複数回実行し、結果を平均化し、システムが他のタスクを実行していないときにシングルユーザーモードでこれを実行する必要があります。他の操作によって結果が歪む可能性があるためです。予想より iowait 時間が長くなることがあります。
ベンチマークのもう1つの簡単な形式は、dd
特定のサイズのサンプルファイルで実行することです。 XGBサイズのランダムデータソースファイルがあるか作成されたとします。だからあなたは実行することができますtime dd if=sourcefile of=target file
dd
パラメータを使用すると、bs=
さまざまなブロックサイズでテストを実行できます(参考資料を参照man dd
)、これは要件/環境に合わせて調整するのに役立ちます。
これは言うまでもありませんが、RAIDアレイに使用されるドライブの品質は重要な要素です。 SeagateのBarracuda ProおよびWDのGoldデータセンタードライブは、10 ^ 15読み取り(約125 TB)から回復できないエラーが1つ未満に指定されました。
しかし、他の多くの大容量ドライブは仕様が高くありません。 RAIDで低仕様ドライブを使用すると、再構築が失敗する可能性があります。
答え2
RAID1は、アレイ内で最も遅いドライブほど高速です。
RAID1には3つのドライブがあり、そのうちの2つは企業向けSSDで、1つは消費者HDDであってもそのHDDの速度を得ることができます。
3台以上のドライブでRAID1を使用したことがない人や見たことがない人のために、以下はWikiから抜粋されています(協会):
RAID 1は、2つ以上のディスク上のデータセットの正確なコピー(またはミラー)で構成されています。