自宅サーバのハードウェアRAIDがおかしくなったので、この機会にもうHDD何台も積んで電気食うの止めようと 6TB HDD 2台でLinuxのソフトウェアRAID-1でいいや!と割り切ったのですが、せっかくだから暗号化して、LVMでスナップショット取って、ボリューム・シャドウ・コピー・サービス(VSS)とか良くね?って思って、主に週末に作業してました。
結論から言って、凄く遅いし、LA上がりまくりで、スナップショットもすぐに埋まって意味なくなるのがわかり、ソフトウェアRAID-1と暗号化だけにしました。
#環境
####サーバ・スペック
- CPU: AMD PhenomII X4 955 3.2GHz(4core/TDP95W)
- M/B: ASRock 880G Pro3(SocketAM3+/880G+SB850)
- RAM: DDR3 32GB(8GBx4)
2011年3月発売なので7年も前の代物。しかし、KVM+ファイルサーバとしてまだまだ現役です。(KVMのイメージはSSDに置いてます。)
mdadmで作ったRAID-1領域をcryptsetupで暗号化して、LVMで100GBくらい残して領域確保して、LVMスナップショットでVSSの設定をしました。しかし遅い。MP4の動画とかコピーすると体感で倍の時間かかり、サーバのLAが上がりっぱなしになります。
まずは、以下のように dd で書き込み試験をしてみました。
for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do echo $'\n\n' $i;date;time dd if=/dev/urandom of=/home/data/test$i.dat ibs=1M obs=1M count=1024;sleep 120;sync;sleep 60;date;done
結果は
[raid1 + crypt + lvm + snap]
1 279.275 s, 3.8 MB/s real 4m39.282s user 0m0.251s sys 1m59.049s
2 120.159 s, 8.9 MB/s real 2m0.162s user 0m0.238s sys 1m59.808s
3 226.536 s, 4.7 MB/s real 3m46.538s user 0m0.260s sys 1m59.585s
4 284.207 s, 3.8 MB/s real 4m44.210s user 0m0.244s sys 1m58.830s
5 240.122 s, 4.5 MB/s real 4m0.125s user 0m0.234s sys 1m59.486s
6 261.699 s, 4.1 MB/s real 4m21.701s user 0m0.237s sys 1m59.860s
7 227.461 s, 4.7 MB/s real 3m47.464s user 0m0.241s sys 1m59.436s
8 244.618 s, 4.4 MB/s real 4m4.621s user 0m0.248s sys 1m59.056s
9 121.658 s, 8.8 MB/s real 2m1.661s user 0m0.247s sys 1m59.868s
10 217.984 s, 4.9 MB/s real 3m37.987s user 0m0.301s sys 1m59.204s
遅い、遅すぎる・・・。書き込み中はLAも上がってしまってサーバ自体重くなります。
LVMスナップショットを止めて、同じくddでの書き込み測定をやってみました。
[raid1 + crypt + lvm]
1 119.067 s, 9.0 MB/s real 1m59.081s user 0m0.215s sys 1m58.512s
2 122.628 s, 8.8 MB/s real 2m2.631s user 0m0.229s sys 1m58.270s
3 119.039 s, 9.0 MB/s real 1m59.042s user 0m0.254s sys 1m58.167s
4 119.611 s, 9.0 MB/s real 1m59.613s user 0m0.221s sys 1m58.512s
5 118.525 s, 9.1 MB/s real 1m58.528s user 0m0.232s sys 1m58.206s
6 120.871 s, 8.9 MB/s real 2m0.874s user 0m0.242s sys 1m59.507s
7 122.434 s, 8.8 MB/s real 2m2.437s user 0m0.235s sys 1m58.260s
8 124.036 s, 8.7 MB/s real 2m4.038s user 0m0.229s sys 1m59.001s
9 119.162 s, 9.0 MB/s real 1m59.165s user 0m0.239s sys 1m58.557s
10 121.49 s, 8.8 MB/s real 2m1.493s user 0m0.228s sys 1m58.393s
はい、この通り、体感通り倍くらいの速度です。
ここで暗号化はどのくらい影響あるのか試してみました。暗号化を止め、同じdd測定。
[raid1 + ext4]
1 119.743 s, 9.0 MB/s real 1m59.766s user 0m0.232s sys 1m58.477s
2 122.782 s, 8.7 MB/s real 2m2.785s user 0m0.236s sys 1m58.307s
3 120.476 s, 8.9 MB/s real 2m0.479s user 0m0.230s sys 1m58.249s
4 121.462 s, 8.8 MB/s real 2m1.464s user 0m0.217s sys 1m58.448s
5 120.578 s, 8.9 MB/s real 2m0.581s user 0m0.224s sys 1m58.296s
6 122.139 s, 8.8 MB/s real 2m2.142s user 0m0.247s sys 1m58.068s
7 118.998 s, 9.0 MB/s real 1m59.001s user 0m0.231s sys 1m58.380s
8 121.787 s, 8.8 MB/s real 2m1.790s user 0m0.242s sys 1m58.527s
9 119.572 s, 9.0 MB/s real 1m59.574s user 0m0.221s sys 1m58.431s
10 119.16 s, 9.0 MB/s real 1m59.163s user 0m0.222s sys 1m58.250s
という感じで、暗号化あり・なしで書き込みのパフォーマンスはほとんど変わりありませんでした。
書き込み以外のパフォーマンスも調べたくなり bonnie++ をインストールして測定してみました。
bonnie++ -d /home/data -n 256:1024:1024:16 -u root
まずは、暗号化なしの状態。
Version 1.04 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
kvm86 63960M 88530 96 101396 14 18853 5 44081 49 143398 18 452.9 3
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
256:1024:1024/16 47951 71 81102 40 21555 20 15672 23 309 0 473 0
kvm86,63960M,88530,96,101396,14,18853,5,44081,49,143398,18,452.9,3,256:1024:1024/16,47951,71,81102,40,21555,20,15672,23,309,0,473,0
次に、再びcryptsetupで暗号化した場合、
Version 1.04 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
kvm86 63960M 77798 86 52299 6 16037 6 56891 66 144691 23 446.4 3
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
256:1024:1024/16 59118 87 58280 29 22944 22 15727 23 465 0 603 1
kvm86,63960M,77798,86,52299,6,16037,6,56891,66,144691,23,446.4,3,256:1024:1024/16,59118,87,58280,29,22944,22,15727,23,465,0,603,1
SequentialのBlockのOutputは半分くらいに落ち込んでますが、Sequential Inputはあまり変わりがなく、先ほどのddでの書き込み測定と一致しています。体感的に、それほど変わらないので暗号化して使うことにしました。