LVMのスナップショット環境でパフォーマンスを測ってみます。
LVMのスナップショットは非常に便利な機能で、サーバ稼働中でもバックアップ(オンラインバックアップ)が可能なため、サーバを停止する時間を大幅に削減できるメリットがあります。
ただ、うまい話には罠がある(?)と言うことで、実際にパフォーマンスを測って実運用に耐えられるか検証します。
0. 準備
検証するサーバ構成はこちらです。
ゲストOS | CentOS7 (CPU:AMD Phenom(tm) 9550 Quad-Core Processor メモリ:1,024MB) |
仮想ソフト | VirtualBox |
ホストOS | Windows10(CPU:AMD Phenom(tm) 9550 Quad-Core Processor メモリ:8,192MB) |
ゲストOSのCentOS7で検証します。
最近では仮想環境上にサーバを構築する機会が増えているため参考になるかと思います。
1. パフォーマンス測定
[スナップショットなし]
まずはスナップショットがない状態で測定します。
# lvscan
ACTIVE '/dev/VolGroup01/root' [25.00 GiB] inherit
ACTIVE '/dev/VolGroup01/swap' [2.00 GiB] inherit
ACTIVE '/dev/VolGroup01/home' [50.00 GiB] inherit
ddコマンドで書き込み時間を測ります。
# dd if=/dev/zero of=test bs=10M count=100
100+0 レコード入力
100+0 レコード出力
1048576000 バイト (1.0 GB) コピーされました、 4.68762 秒、 224 MB/秒
まずまずの結果です。
[スナップショットあり(1つ)]
ではスナップショットを作成した状態で測定します。
# lvscan
ACTIVE Original '/dev/VolGroup01/root' [25.00 GiB] inherit
ACTIVE '/dev/VolGroup01/swap' [2.00 GiB] inherit
ACTIVE '/dev/VolGroup01/home' [50.00 GiB] inherit
ACTIVE Snapshot '/dev/VolGroup01/root_snap' [5.00 GiB] inherit
ddコマンドで書き込み時間を測ります。
# dd if=/dev/zero of=test bs=10M count=100
100+0 レコード入力
100+0 レコード出力
1048576000 バイト (1.0 GB) コピーされました、 126.32 秒、 8.3 MB/秒
途端に書き込み速度が落ちてしまいました。
[スナップショットあり(2つ)]
スナップショットを複数作成した場合にどのくらい影響があるかも測定して確認します。
# lvscan
ACTIVE Original '/dev/VolGroup01/root' [25.00 GiB] inherit
ACTIVE '/dev/VolGroup01/swap' [2.00 GiB] inherit
ACTIVE '/dev/VolGroup01/home' [50.00 GiB] inherit
ACTIVE Snapshot '/dev/VolGroup01/root_snap' [5.00 GiB] inherit
ACTIVE Snapshot '/dev/VolGroup01/root_snap2' [5.00 GiB] inherit
ddコマンドで書き込み時間を測ります。
# dd if=/dev/zero of=test1 bs=10M count=100
100+0 レコード入力
100+0 レコード出力
1048576000 バイト (1.0 GB) コピーされました、 140.89 秒、 7.4 MB/秒
やはり書き込み速度が遅いです。
2. 考察
「スナップショットが存在する状態ではサーバの実運用に耐えられない。」
です。書き込み速度が遅すぎます。
もしスナップショットを利用してオンラインバックアップを実施したい場合は、
オンラインバックアップを実施する直前にスナップショットを作成して
バックアップ取得後は速やかにスナップショットを削除することをお勧めします。
(書き込みが少ない時間帯にバックアップを実施することも考慮に入れてください。)
お疲れ様でした。