4000円のSata増設カードを10年物のマザーボードに増設して、iscsiターゲットにできるだろうか。
ASM1062 チップ搭載の8ポートSataカード(RAIDなし)で挑戦してみた。
テストは、「0x00」を連続的にディスクに書き込んで、そのスピードを計測する、というものです。
Sata 増設カード
PCIe x4 sata増設カード、8ポートです。
RAIDの機能はありません。
MB上にgen1とgen2のPCIeがあるので、gen2にSata増設カードを接続しています。
詳しくは、次の通り。
fumi@iss:~$ lspci
...
01:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
02:00.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
02:02.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
02:06.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
02:0e.0 PCI bridge: ASMedia Technology Inc. Device 1806 (rev 01)
03:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)
04:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)
05:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)
06:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)
07:00.0 PCI bridge: Integrated Device Technology, Inc. [IDT] PES12T3G2 PCI Express Gen2 Switch (rev 01)
08:02.0 PCI bridge: Integrated Device Technology, Inc. [IDT] PES12T3G2 PCI Express Gen2 Switch (rev 01)
08:04.0 PCI bridge: Integrated Device Technology, Inc. [IDT] PES12T3G2 PCI Express Gen2 Switch (rev 01)
...
PCIe gen1 x1 の転送は片方向 0.25GB/sです。
PCIe gen2 x1 の転送は片方向 0.5GB/sです。
当該のSata増設カードは外観 x4 ですが、実質的には x2 接続のようです。
0.5GB/s x 2 で、1.0GB/s ということで、つじつまが合う結果になるでしょうか?
CPU
ハイパースレッディング有効、4コア8スレッドです。
fumi@iss:~$ cat /proc/cpuinfo |grep "model name"
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
Memory
16GB
fumi@iss:~$ free -m
total used free shared buff/cache available
Mem: 16031 740 14608 522 682 14523
Swap: 0 0 0
HDD
最近は5000円を切るようになった、1TB、7200rpm ×8玉。
メーカーはSeagate。
足りなかったので古いのが1つ入っています。
root@iss:~# cat /proc/partitions
major minor #blocks name
8 0 3910656 sda
8 1 426976 sda1
8 2 2880 sda2
8 16 976762584 sdb
8 32 976762584 sdc
8 48 976762584 sdd
8 64 976762584 sde
8 80 976762584 sdf
8 96 976762584 sdg
8 112 976762584 sdh
8 128 976762584 sdi
7 0 358832 loop0
fumi@iss:~$ ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM003-*************** -> ../../sdi
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdg
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdb
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdc
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdh
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sde
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdd
lrwxrwxrwx 1 root root 9 Jun 13 13:58 ata-ST1000DM010-*************** -> ../../sdf
....
書き込みテスト前のテスト
とりあえず古いディスクの性能をテストしてみます。
/dev/sdi は ST1000DM003 なので少し古い。
書き込むのは、1MBを102400回なので、100GBです。
root@iss:~# dd if=/dev/zero of=/dev/sdi bs=1M count=102400
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 536.311 s, 200 MB/s
新しい ST1000DM010 はどうか?
/dev/sdb と /dev/sdc で確認してみます。
root@iss:~# dd if=/dev/zero of=/dev/sdb bs=1M count=102400
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 525.546 s, 204 MB/s
root@iss:~# dd if=/dev/zero of=/dev/sdc bs=1M count=102400
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 520.22 s, 206 MB/s
ST1000DM003 で 200MB/s、ST1000DM010 が 204MB/s ~ 206MB/s でした。
ST1000DM003は、さほど遜色はなさそうです。
「bs=1M」オプションで、書き込み単位を 1Mバイトにしているのは、実際の使用時と同じようにキャッシュが効いた状態で測定するためです。
だから、実装しているメモリの容量によって書き込みスピードが変わりますが、100GB書き込みするので、参考程度のデータはとれるというもくろみです。
キャッシュなしの、ハードディスク本来の性能が知りたい場合は、「oflag=direct」でテストしてください。
キャッシュを効かさない書き込み速度は、おそらくチンケな結果になるでしょう。
8本のHDDに一斉書き込みテスト
バックグラウンドで、HDD8本、同時に書き込んでみます。
dd if=/dev/zero of=/dev/sdb bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdc bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdd bs=1M count=102400 &
dd if=/dev/zero of=/dev/sde bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdf bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdg bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdh bs=1M count=102400 &
dd if=/dev/zero of=/dev/sdi bs=1M count=102400 &
結果です。
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 595.106 s, 180 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 978.64 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 979.234 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 979.314 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 979.52 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 979.773 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 980.224 s, 110 MB/s
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 992.553 s, 108 MB/s
1本目は、メモリキャッシュが効いて、1本単独で書き込むのとそれほど変わらない結果ですが、ほかのディスクはおよそ半分のスピードです。
topコマンドで、負荷の状態を見てみます。
root@iss:~# top
top - 03:40:15 up 15 min, 1 user, load average: 16.13, 15.09, 9.43
Tasks: 188 total, 1 running, 187 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.4 us, 3.2 sy, 0.0 ni, 8.7 id, 82.3 wa, 0.0 hi, 5.4 si, 0.0 st
%Cpu1 : 0.0 us, 4.1 sy, 0.0 ni, 6.4 id, 88.0 wa, 0.0 hi, 1.5 si, 0.0 st
%Cpu2 : 0.0 us, 3.1 sy, 0.0 ni, 22.5 id, 74.4 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 3.3 sy, 0.0 ni, 1.2 id, 95.4 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.4 us, 8.2 sy, 0.0 ni, 2.0 id, 89.5 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.4 us, 6.0 sy, 0.0 ni, 0.4 id, 93.2 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.4 us, 4.3 sy, 0.0 ni, 4.3 id, 91.1 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.4 us, 5.2 sy, 0.0 ni, 16.3 id, 78.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16031.8 total, 168.7 free, 322.5 used, 15540.6 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 14775.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
72 root 20 0 0 0 0 S 15.3 0.0 1:51.29 kswapd0
1659 root 20 0 5124 2424 1436 D 11.0 0.0 1:28.19 dd
1661 root 20 0 5124 2412 1428 D 11.0 0.0 1:28.21 dd
1664 root 20 0 5124 2396 1396 D 11.0 0.0 1:28.66 dd
1665 root 20 0 5124 2404 1416 D 11.0 0.0 1:28.51 dd
1660 root 20 0 5124 2372 1388 D 10.6 0.0 1:28.37 dd
1666 root 20 0 5124 2508 1520 D 10.6 0.0 1:28.57 dd
1662 root 20 0 5124 2332 1344 D 10.3 0.0 1:30.00 dd
1663 root 20 0 5124 2572 1596 D 9.6 0.0 1:27.71 dd
1050 root 20 0 1489784 29168 24 S 3.3 0.2 0:28.54 containerd
201 root 20 0 0 0 0 D 3.0 0.0 0:20.73 kworker/u32:4+flush-8:96
215 root 20 0 0 0 0 D 3.0 0.0 0:20.74 kworker/u32:10+flush-8:80
208 root 20 0 0 0 0 D 2.7 0.0 0:20.85 kworker/u32:7+flush-8:64
209 root 20 0 0 0 0 D 2.7 0.0 0:20.53 kworker/u32:8+flush-8:128
214 root 20 0 0 0 0 D 2.7 0.0 0:20.66 kworker/u32:9+flush-8:16
220 root 20 0 0 0 0 D 2.7 0.0 0:20.75 kworker/u32:11+flush-8:112
221 root 20 0 0 0 0 D 2.7 0.0 0:20.77 kworker/u32:12+flush-8:48
226 root 20 0 0 0 0 D 2.7 0.0 0:20.67 kworker/u32:13+flush-8:32
13 root 20 0 0 0 0 I 0.3 0.0 0:01.21 kworker/0:1-events
1679 root 20 0 9892 2968 2512 R 0.3 0.0 0:00.57 top
1 root 20 0 22528 6528 3784 S 0.0 0.0 0:02.69 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:00.13 ksoftirqd/0
...
CPUはどれほど使われていないので、Sata増設カードからHDDの間にボトルネックがあることがわかります。
書込みを100GBで止めずに、ディスクの最後まで書き込んでみます。
dd if=/dev/zero of=/dev/sdb bs=1M &
dd if=/dev/zero of=/dev/sdc bs=1M &
dd if=/dev/zero of=/dev/sdd bs=1M &
dd if=/dev/zero of=/dev/sde bs=1M &
dd if=/dev/zero of=/dev/sdf bs=1M &
dd if=/dev/zero of=/dev/sdg bs=1M &
dd if=/dev/zero of=/dev/sdh bs=1M &
dd if=/dev/zero of=/dev/sdi bs=1M &
結果です。
root@iss:~# dd: error writing '/dev/sdh': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9725.12 s, 103 MB/s
dd: error writing '/dev/sde': No space left on device
dd: error writing '/dev/sdb': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9735.45 s, 103 MB/s
dd: error writing '/dev/sdd': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9740.71 s, 103 MB/s
dd: error writing '/dev/sdf': No space left on device
dd: error writing '/dev/sdg': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9747.57 s, 103 MB/s
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9747.65 s, 103 MB/s
dd: error writing '/dev/sdc': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9756.06 s, 103 MB/s
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9771.18 s, 102 MB/s
dd: error writing '/dev/sdi': No space left on device
953870+0 records in
953869+0 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 9974.46 s, 100 MB/s
全体的に100MB/s出ていることがわかります。
合計すると800MB/sです。
PCIe gen2 x2 の 1.0GB/s スピードとのつじつまもあいます。
ビットに直すと6400Mb/sです。
iscsiのターゲットにする場合は、10Gb/sネットワークに収まる速度です。
RAID6 でスピードテスト
データを単体ディスクに保存するわけにはいかないので、ソフトウエアRAIDを構成します。
root@iss:~# mdadm -C /dev/md0 -l6 -n8 /dev/sd[bcdefghi]
1時間くらいでビルドが完了します。
dd if=/dev/zero of=/dev/md0 bs=1M count=102400 &
負荷状態は次の通りです。
書き込み始めてすぐに top したので、average が小さいのですが、徐々に増えていきます。
root@iss:~# top
top - 17:29:24 up 13:27, 1 user, load average: 1.39, 0.36, 0.18
Tasks: 146 total, 2 running, 144 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 8.7 sy, 0.0 ni, 75.4 id, 15.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16031.8 total, 161.5 free, 891.6 used, 14978.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 14287.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1732 root 20 0 0 0 0 D 26.7 0.0 90:59.14 md0_raid6
20645 root 20 0 6336 2724 1684 R 26.7 0.0 0:10.12 dd
14956 root 20 0 0 0 0 D 13.3 0.0 0:08.91 kworker/u32:1+flush-9:0
72 root 20 0 0 0 0 S 6.7 0.0 25:29.66 kswapd0
1 root 20 0 169960 5572 2832 S 0.0 0.0 0:06.60 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
ボトルネックはSata増設カードから先です。
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 250.086 s, 429 MB/s
[1]+ Done dd if=/dev/zero of=/dev/md0 bs=1M count=102400
420MB/s、3400Mb/sくらいです。
iscsiターゲットで使えるレベルでしょう。
暗号化する
md-cryptを載せてみます。
root@iss:~# cryptsetup luksFormat /dev/md0
WARNING!
========
This will overwrite data on /dev/md0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/md0:
Verify passphrase:
root@iss:~# cryptsetup luksOpen /dev/md0 md0c
Enter passphrase for /dev/md0:
書き込み。
dd if=/dev/zero of=/dev/mapper/md0c bs=1M count=102400 &
CPUの負荷も相当なものになります。
system cpu time (下記 sy)が80%を超えます。
10年前のAES-NI無しCPUですから。
root@iss:~# top
top - 19:40:10 up 15:37, 1 user, load average: 12.10, 4.95, 1.85
Tasks: 162 total, 19 running, 143 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 85.7 sy, 0.0 ni, 9.0 id, 4.7 wa, 0.0 hi, 0.7 si, 0.0 st
%Cpu1 : 0.0 us, 81.4 sy, 0.0 ni, 14.6 id, 3.7 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu2 : 0.0 us, 84.1 sy, 0.0 ni, 15.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 86.0 sy, 0.0 ni, 7.7 id, 6.4 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 84.8 sy, 0.0 ni, 7.7 id, 7.4 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 81.0 sy, 0.0 ni, 17.0 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 85.0 sy, 0.0 ni, 14.0 id, 1.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 81.6 sy, 0.0 ni, 15.7 id, 2.7 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16031.8 total, 239.5 free, 1926.2 used, 13866.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 13253.6 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21357 root 0 -20 0 0 0 R 78.8 0.0 1:45.29 kworker/u33:0+kcryptd
21364 root 0 -20 0 0 0 R 70.9 0.0 1:40.39 kworker/u33:3+kcryptd
21373 root 0 -20 0 0 0 R 70.9 0.0 1:42.15 kworker/u33:8+kcryptd
21369 root 0 -20 0 0 0 R 68.2 0.0 1:41.38 kworker/u33:5+kcryptd
21363 root 0 -20 0 0 0 R 66.9 0.0 1:40.72 kworker/u33:2+kcryptd
21370 root 0 -20 0 0 0 R 63.6 0.0 1:41.39 kworker/u33:6+kcryptd
21371 root 0 -20 0 0 0 R 60.6 0.0 1:41.43 kworker/u33:7+kcryptd
21362 root 0 -20 0 0 0 R 57.6 0.0 1:39.62 kworker/u33:1+kcryptd
1732 root 20 0 0 0 0 D 37.1 0.0 93:04.95 md0_raid6
21372 root 20 0 0 0 0 R 28.1 0.0 0:11.31 kworker/u32:3-bond0
21367 root 20 0 6336 2680 1640 R 20.5 0.0 0:31.03 dd
21359 root 20 0 0 0 0 D 16.6 0.0 0:26.76 dmcrypt_write
21368 root 0 -20 0 0 0 I 16.2 0.0 0:14.24 kworker/u33:4-kcryptd
72 root 20 0 0 0 0 R 7.6 0.0 25:53.21 kswapd0
92 root 20 0 0 0 0 I 1.0 0.0 0:40.55 kworker/0:2-events
454 root 20 0 0 0 0 R 0.7 0.0 0:16.22 kworker/7:2-events
21374 root 20 0 0 0 0 R 0.7 0.0 0:00.51 kworker/6:0-events
65 root 20 0 0 0 0 R 0.3 0.0 0:12.53 kworker/1:1-events
67 root 20 0 0 0 0 R 0.3 0.0 0:15.62 kworker/3:1-events
69 root 20 0 0 0 0 R 0.3 0.0 0:14.93 kworker/5:1-events
229 root 20 0 0 0 0 R 0.3 0.0 0:16.39 kworker/4:2-events
21376 root 20 0 11100 3488 3004 R 0.3 0.0 0:00.08 top
1 root 20 0 169960 5616 2876 S 0.0 0.0 0:07.38 systemd
...
結果です。
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 361.071 s, 297 MB/s
[1]+ Done dd if=/dev/zero of=/dev/mapper/md0c bs=1M count=102400
300MB/s、2400Mb/s。
データ専用なら、ターゲットで使えます。
LVM on Md-Crypt
LVMを載せます。
root@iss:~# pvcreate /dev/mapper/md0c
Physical volume "/dev/mapper/md0c" successfully created.
root@iss:~# vgcreate vg /dev/mapper/md0c
Volume group "vg" successfully created
root@iss:~# lvcreate -l"100%free" -nlv vg
Logical volume "lv" created.
dd if=/dev/zero of=/dev/vg/lv bs=1M count=102400 &
負荷。
root@iss:~# top
top - 19:53:50 up 15:51, 1 user, load average: 9.50, 4.53, 3.38
Tasks: 164 total, 14 running, 150 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 92.6 sy, 0.0 ni, 6.0 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 88.6 sy, 0.0 ni, 11.1 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu2 : 0.0 us, 89.3 sy, 0.0 ni, 7.0 id, 3.7 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.3 us, 90.9 sy, 0.0 ni, 7.4 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 88.0 sy, 0.0 ni, 6.7 id, 5.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu5 : 0.0 us, 88.0 sy, 0.0 ni, 10.0 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 94.6 sy, 0.0 ni, 5.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 88.6 sy, 0.0 ni, 10.7 id, 0.7 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16031.8 total, 183.0 free, 1907.1 used, 13941.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 13272.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21399 root 0 -20 0 0 0 R 78.1 0.0 1:08.56 kworker/u33:5+kcryptd
21364 root 0 -20 0 0 0 R 76.2 0.0 5:27.16 kworker/u33:3+kcryptd
21405 root 0 -20 0 0 0 R 74.8 0.0 1:08.71 kworker/u33:8+kcryptd
21363 root 0 -20 0 0 0 R 74.2 0.0 5:23.74 kworker/u33:2+kcryptd
21386 root 0 -20 0 0 0 R 72.2 0.0 1:08.00 kworker/u33:1+kcryptd
21387 root 0 -20 0 0 0 R 69.5 0.0 1:07.66 kworker/u33:4+kcryptd
21402 root 0 -20 0 0 0 R 69.2 0.0 1:08.32 kworker/u33:6+kcryptd
21385 root 0 -20 0 0 0 R 54.6 0.0 1:05.68 kworker/u33:0+kcryptd
1732 root 20 0 0 0 0 R 41.7 0.0 95:03.74 md0_raid6
21372 root 20 0 0 0 0 I 38.4 0.0 0:41.03 kworker/u32:3-bond0
21401 root 20 0 6336 2792 1756 R 22.5 0.0 0:21.09 dd
21359 root 20 0 0 0 0 D 18.9 0.0 1:27.13 dmcrypt_write
21404 root 0 -20 0 0 0 I 18.5 0.0 0:10.81 kworker/u33:7
72 root 20 0 0 0 0 S 7.6 0.0 26:09.83 kswapd0
21392 root 20 0 0 0 0 R 1.0 0.0 0:00.59 kworker/5:2-events
...
結果です。
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 367.608 s, 292 MB/s
[1]+ Done dd if=/dev/zero of=/dev/vg/lv bs=1M count=102400
300MB/sを少し切りましたが、LVMによる損失は、ほとんどありません。
ファイルシステム on LVM
LVMをフォーマットします。
root@iss:~# mkfs.xfs /dev/vg/lv
meta-data=/dev/vg/lv isize=512 agcount=32, agsize=45779456 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=1464939520, imaxpct=5
= sunit=128 swidth=768 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
マウント。
root@iss:~# mount /dev/vg/lv /mnt/
書き込み。
dd if=/dev/zero of=/mnt/TF bs=1M count=102400 &
負荷。
root@iss:~# top
top - 20:17:25 up 16:15, 1 user, load average: 6.84, 2.21, 2.49
Tasks: 172 total, 15 running, 157 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 82.5 sy, 0.0 ni, 16.9 id, 0.3 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu1 : 0.0 us, 84.1 sy, 0.0 ni, 13.6 id, 2.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 82.4 sy, 0.0 ni, 13.6 id, 4.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 83.0 sy, 0.0 ni, 11.3 id, 5.7 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 84.1 sy, 0.0 ni, 9.9 id, 6.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.3 us, 82.4 sy, 0.0 ni, 16.9 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.0 us, 83.2 sy, 0.0 ni, 14.2 id, 2.6 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.0 us, 82.7 sy, 0.0 ni, 12.6 id, 4.7 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 16031.8 total, 173.8 free, 1116.4 used, 14741.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 14104.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21387 root 0 -20 0 0 0 R 79.4 0.0 4:48.87 kworker/u33:4+kcryptd
21418 root 0 -20 0 0 0 R 78.7 0.0 0:29.29 kworker/u33:1+kcryptd
21417 root 0 -20 0 0 0 R 78.4 0.0 0:30.10 kworker/u33:0+kcryptd
21444 root 0 -20 0 0 0 R 75.4 0.0 0:28.95 kworker/u33:8+kcryptd
21420 root 0 -20 0 0 0 R 74.4 0.0 0:29.49 kworker/u33:5+kcryptd
21442 root 0 -20 0 0 0 R 70.1 0.0 0:28.74 kworker/u33:6+kcryptd
21419 root 0 -20 0 0 0 R 67.8 0.0 1:01.63 kworker/u33:3+kcryptd
21443 root 0 -20 0 0 0 R 58.5 0.0 0:28.91 kworker/u33:7+kcryptd
1732 root 20 0 0 0 0 D 34.9 0.0 97:13.95 md0_raid6
21441 root 20 0 6336 2828 1804 R 18.3 0.0 0:08.40 dd
21425 root 20 0 0 0 0 I 11.3 0.0 0:01.28 kworker/u32:1-flush-253:1
21359 root 20 0 0 0 0 D 10.0 0.0 2:24.19 dmcrypt_write
67 root 20 0 0 0 0 R 2.3 0.0 0:18.70 kworker/3:1-events
21379 root 20 0 0 0 0 I 2.0 0.0 0:02.09 kworker/6:1-events
72 root 20 0 0 0 0 R 1.3 0.0 26:26.20 kswapd0
65 root 20 0 0 0 0 I 0.7 0.0 0:14.89 kworker/1:1-events
21363 root 0 -20 0 0 0 I 0.7 0.0 8:34.20 kworker/u33:2-kcryptd
21383 root 20 0 0 0 0 R 0.7 0.0 0:01.90 kworker/7:0-events
229 root 20 0 0 0 0 R 0.3 0.0 0:19.36 kworker/4:2-events
247 root 20 0 0 0 0 I 0.3 0.0 0:16.14 kworker/2:2-events
21449 root 20 0 0 0 0 R 0.3 0.0 0:00.11 kworker/0:0-events
1 root 20 0 169960 5756 3016 S 0.0 0.0 0:07.62 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
...
結果です。
102400+0 records in
102400+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 342.172 s, 314 MB/s
[1]+ Done dd if=/dev/zero of=/mnt/TF bs=1M count=102400
ファイルシステムでキャッシュが効率的に効いて、パフォーマンスが上がっています。
300MB/s。
これくらいのスピードなら、iscsiターゲットで使うことも可能かもしれません。
最近は10TB超えのHDDもざらになりましたので、データ専用なら、十分に使えそうです。
4000円のSata増設カード、恐るべし。
まとめ
「xfs」on「LVM」on「md-crypt暗号化」on「md-raid6」with「ディスク8本」。
それぞれの段階で書き込み速度をテストしてみました。
結果は以下の通りでした。
構成 | 速度 |
ハードディスク1本に書き込む | 200メガバイト/秒 |
構成 | 速度 |
ハードディスク8本に一斉に書き込む | 800メガバイト/秒(8本合計) ※100メガバイト/秒(1本あたり) |
8ディスクでRAID6を組んだ場合の書き込み | 420メガバイト/秒 |
RAID6を暗号化した場合の書き込み | 300メガバイト/秒 |
LVMを追加した場合の書き込み | 290メガバイト/秒 |
ファイルシステムを追加した場合の書き込み | 300メガバイト/秒 |
暗号化導入以降、システムCPU時間の90%を使っています。
この構成では用途を限定する必要があるかもしれません。
データバックアップ用の「iscsiターゲット」として使ってみようと思います。