まずランダムに書かれたIOPSをテストします.ランダムに書かれたIOPSは5082に達することができます.順番に書かれたIOPSは5087:$sudo fio-filename=/data/testfile-direct=1-iodepth 1-thread-rw=randwrite-ioengine=libaio-bs=16 k-size=10 G-numjobs=20-runtime=60-group_reporting -name=mytest$ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest 同様の方法でランダムに読むIOPSをテストしてみましょう.デフォルトでは、リードキャッシュは開いています.ランダムに読むと114619万程度のIOPSに達することができます.順番に読むと139746程度のIOPSに達することができます.$sudo fio-filename=/data/testfile-direct=1-iodepth 1-thread-rw=read-ioengine=libaio-bs=4 k-size=10 G-numjobs=20-runtime=60-group_reporting -name=mytest$ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=read -ioengine=libaio -bs=4k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest キャッシュサービスをオフにするテストを行います.つまり、キャッシュサービスが無に設定され、テストが行われます.ランダム書き込み:5089シーケンス書き込み:5099ランダム読み取り:5163シーケンス読み取り:5102 RAID 0高性能ディスクの構成とテスト
場合によっては、例えば高負荷のMySQL、MongoDBサーバは、単盤のIOPSに対して5000以上の要求があり、2000以上を達成したい場合があります.この場合、より高いIOPSを得る方法は、ソフトRAID、RAID 0を使用する方法です.その後のテストでは、実際のパフォーマンスを確認するために、すべてのディスクのキャッシュがオフになり、キャッシュが「なし」になります.
の前にすでにインタフェースの上で4つの1 TのSSDデータディスクを追加して、その中のsdcは単盤のテストに用いて、残りのsdd、sde、sdfはRAIDをします. SSHを使用して仮想マシンにログインし、RAID管理ソフトウェアmdadm:$sudo yum install mdadm をインストールします.
mdmを使用してRAID 0デバイス/dev/mdraidsudo mdadm--create/dev/md 127--level 0--raid-devices 3/dev/sdc 1/dev/sdd 1/dev/sde 1 を作成
マウントファイルディレクトリを作成し、フォーマットファイルシステムをext 4フォーマット:$ sudo mkdir /data
$ sudo mkfs -t ext4/dev/md127
すばやく有効にしたい場合は、パラメータ-E lazy_を使用します.itable_init=1
例:$sudo mkfs-t ext 4-E lazy_itable_init=1/dev/md127
最後に、fstabにファイルマウント情報を追加する必要があります.マシンが再起動するたびにファイルシステムを自動的にマウントできることを確認します.まず、さっき作成したデバイスのUUID:sudo/sbin/blkid を取得します.
fstabファイルを開き、ファイルに情報を追加します.$sudo vi/etc/fstab最後の行追加(独自のUUIDに変更する必要があります)UUID=bf 5 f 2973-ded 3-4 da 2-a 67 a-0 dc 9 fd 36554 c/data ext 4 defaults 0 2 前の注意事項に従ってbarrierとnofailを設定する必要がありますので、私のfstabファイルの設定は以下の通りです.
UUID=3c8289a5-de55-4e1c-9baf-5a603d8230e3/data ext4 defaults,barrier=0,nofail 0 2
sudo mount-aを実行し、現在のマウント状態を確認します: RAID 0ストライプ化を使用すると、iodepthの数値はテスト結果と大きく関係します.異なるパラメータで異なる結果を見てみましょう.$ sudo fio -filename=/data/testfile -direct=1 -iodepth 32 -thread -rw=write -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest
Iodepth
Randwrite
Write
Randread
Read
16
iops=15185
iops=17523
iops=17523
iops=19885
32
iops=15164
iops=25033
iops=15183
iops=30788
128
iops=15169
iops=31862
iops=15227
iops=31805
より高いディスク性能が必要で、単一のP 30があなたの要求を満たすことができない場合、ソフトウェアRAIDの方式を使ってディスクの性能を向上させることができて、ディスクの増加に従って、性能は線形に増加して、もちろん以前のすべてのように、ディスクの性能は磁気ディスクのタイプ、ディスクの大きさと仮想機の大きさに依存して、例えばDS 14はキャッシュがない情況の下で最大51200 IOPSに達することができて、必要に応じて適切なVMを選択し、高度なストレージを組み合わせることができます.
最後に、データベース・サーバのアーキテクチャ設計を行うためのいくつかのアイデアについて簡単に説明します.ほとんどの場合、高IOPSを作成する仮想マシンはデータベースとして使用されますが、高性能と高可用性は2つの概念です.データベースの高可用性を保証するには、MySQLを例に挙げると、Master-SlaveモードやマルチマスターマルチslaveモードなどのMySQLクラスタを構成する必要があります.性能と拡張性の観点から言えば、もしあなたが非常に高いIOPSを使って、大きいカーネルの仮想マシンを使って、しかしやはり要求を満たすことができなくて、あなたはできるだけ早くデータベースの拡張性の問題を考慮する必要があって、もとはこのような性能が足りないならばCPUをプラスして、メモリをプラスして、vertical scaleの方式は1つの良い設計ではないことを証明されて、物理マシンに関わらず仮想マシンに関わらず、性能はすべて上限があります現在の大規模で高同時アクセスのニーズを満たすために、データベースはsharding、ライブラリ、テーブルなどの方法でデータベースの拡張性を増加させ、各データベースノードに圧力を分散させ、できるだけ早く考慮する必要があります.この部分の変更はプログラムの修正で協力する必要があるため、総合的に考慮する必要があります.