Ram Disk 上に仮想マシンを立てた時のコピー速度比較（Ram Disk、NvMe SSD、SSD、HDD、外付けHDD）

Ram Disk 上で仮想マシンを動かすとどの程度快適になるのか気になったので、コピーの速度を比較してみました。
※ あまり知識がない中で比較していますので、間違い等がありましたら、ご指摘いただけると幸いです。

# 測定結果一覧
結論を先に記載します。

||500MB|5MB|50KB|
|---|---|---|---|
|Ram Disk|1.1 GB/s|1.1 GB/s|413 MB/s|
|NvMe SSD|1.1 GB/s|1.1 GB/s|146 MB/s|
|SATA SSD|1.0 GB/s|618 NB/s|37.4 MB/s|
|内臓HDD × 2 (RAID0)|1.0 GB/s|319 NB/s|13.5 MB/s|
|外付けHDD|1.0 GB/s|618 NB/s|37.4 MB/s|

# ホストマシンのスペック

|||
|---|---|
|OS|Windows 10 Pro|
|CPU|Intel core i9-9900K|
|Memory|DRAM4 2667 MHz 32GB|
|NvMe SSD|[970 EVO Plus MZ-V7S500B/IT](https://kakaku.com/item/K0001123583/)|
|SATA SSD|[CSSD-S6B480CG3VX](https://kakaku.com/item/K0001132862/?lid=pc_ksearch_kakakuitem)|
|内臓HDD|[WD40EZRZ-RT2 [4TB SATA600 5400]](https://kakaku.com/item/K0000927098/?lid=20190108pricemenu_hot)×2（RAID0）|
|外付けHDD|[EX-HD3CZ 3TB](https://kakaku.com/item/K0000958472/)|
# Ram Disk の作成

今回は、Ram Disk の作成に、こちらの[ImDisk Virtual Disk Driver](https://sourceforge.net/projects/imdisk-toolkit/)を使用しました。

メモリ32GBのPCで、10GBのRam Disk を作成しました。

![](https://gyazo.com/18b1a67fdac4a422c96e5fe60c7575cf.png)

# Cent OS のインストール
Virtual Box 上にCent OS 8 のインストールを行うところから始めました。

#### 1. 仮想マシンを作成しました。

![](https://gyazo.com/5d9fc6ca737ec45f850ca6dc3648aa3d.png)

#### 2. 仮想ハードディスクを作成しました。

![](https://gyazo.com/30c12e7377251af91a56b80d25c6a10e.png)

#### 3. 言語設定

![](https://gyazo.com/c398cf46bbfaf96658447a84724a5b3a.png)

#### 4. インストールするソフトウェアの選択

![](https://gyazo.com/5a836cab6d8403ae64344f9c2078b18e.png)

#### 5. インストール。
Ram Disk だと、気持ちの問題かもしれませんが、インストールが早い気がします。
GIF画像は、等速再生です。

![](https://gyazo.com/87fdaeef67aa848be44ed1d30ad1537a.gif)

#### 6. 完了したので、再起動。

![](https://gyazo.com/bef5d8f7f5ce7fe03b8c3b612c43b4e4.png)

再起動すると、インストールディスクの方がブート順が優先されているのか、もう一度インストールメニューが出てきてしまいました。

![](https://gyazo.com/19d92ad1a7463d1b8b74c2b411ab93be.png)

#### インストールディスクの取り出し
ブート順を変更してもよいと思いますが、インストールディスクを取り出しました。

![](https://gyazo.com/576cc504c478a0ed3cf4ad73bf8957ce.png)

![](https://gyazo.com/6e73fd19fbb219b7c8203614daedc121.png)

![](https://gyazo.com/48134d60ecb915fb331288ff847c2207.png)

#### ログイン

![](https://gyazo.com/0f23a177125dff1937a89830958875bc.png)

## コピー速度の測定
[こちらの記事](https://kagasu.hatenablog.com/entry/2018/02/11/142638)を参考に、ddコマンドを用いてコピー速度の測定を行いました。
今回は、500MB、5MB、5KBのファイルコピーを10回ずつ行いました。

ここからはコマンド操作です。

```
$ dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
$ dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync
$ dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
```

なお、最初の実行は速度が遅いので、数回上記コマンドを実行した後の結果を掲載しています。

### Ram Disk での結果

```
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 4.91443 s, 1.1 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
52428800 bytes (52 MB, 50 MiB) copied, 0.0467458 s, 1.1 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
512000 bytes (512 kB, 500 KiB) copied, 0.00123854 s, 413 MB/s
```

ふむふむ。なるほど、なるほど。仮想化しているだけあって、Ram Disk の割には少し物足りない気もします。

## 仮想マシンの移動

わざわざovaファイルに書き出す必要もないかとも思うのですが、これが一番確実かと考え、ovaファイルに書き出したのち、それ以外のファイルをすべて削除することにしました。
書き出し先は、せっかくなので Ram Disk にしましょう。

![](https://gyazo.com/6424dda490785acb00cd20c786c0b574.png)

書き出した後、一旦すべてのファイルを削除します。

![](https://gyazo.com/9172c3b351e70fa40a4d083080e0aa55.png)

書き出したばかりのイメージをインポート。

![](https://gyazo.com/890e397a8928af7da3bc3f65e3a9f7c4.png)

![](https://gyazo.com/20eaed7baf302d7b478e36096f9fea53.png)

## 測定結果

### HDD（RAID0 2台構成）

使用機材：[WD40EZRZ-RT2 [4TB SATA600 5400]](https://kakaku.com/item/K0000927098/?lid=20190108pricemenu_hot)×2（RAID0）
Defraggler で見ると、こんな感じです。
![](https://gyazo.com/446bbd7dc900e233f98b45b61177df32.png)

```
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 5.23807 s, 1.0 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
52428800 bytes (52 MB, 50 MiB) copied, 0.164447 s, 319 MB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
512000 bytes (512 kB, 500 KiB) copied, 0.0378705 s, 13.5 MB/s
```


### SSD

使用機材：[970 EVO Plus MZ-V7S500B/IT](https://kakaku.com/item/K0001123583/)

Defraggler で見ると、かなり断片化しています。
![](https://gyazo.com/57cea5d9a6438cb6d87473c79465c5cb.png)

```
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 4.64225 s, 1.1 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
52428800 bytes (52 MB, 50 MiB) copied, 0.0479417 s, 1.1 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
512000 bytes (512 kB, 500 KiB) copied, 0.0035105 s, 146 MB/s
```

### 外付けHDD
使用機材：[EX-HD3CZ 3TB](https://kakaku.com/item/K0000958472/)
※ うる覚えなので、間違えていたらごめんなさい

空き容量は多くないですが、連続して使えそうな記憶域があります。

![](https://gyazo.com/681138f3b07d9276c693d8596b41447c.png)

```
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 5.21444 s, 1.0 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
52428800 bytes (52 MB, 50 MiB) copied, 0.0770246 s, 681 MB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
512000 bytes (512 kB, 500 KiB) copied, 0.0136731 s, 37.4 MB/s
```

### SSD
使用機材：[CSSD-S6B480CG3VX](https://kakaku.com/item/K0001132862/?lid=pc_ksearch_kakakuitem)

これまでのディスクと比較すると、かなりクリーンです。

![](https://gyazo.com/2dca38256a37e0f62575d5f7972017bd.png)

```
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=500M count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 5.0105 s, 1.0 GB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=5M count=10 conv=fdatasync                        10+0 レコード入力
10+0 レコード出力
52428800 bytes (52 MB, 50 MiB) copied, 0.062196 s, 843 MB/s
[root@localhost ~]# dd if=/dev/zero of=benchmark bs=50K count=10 conv=fdatasync
10+0 レコード入力
10+0 レコード出力
512000 bytes (512 kB, 500 KiB) copied, 0.00316221 s, 162 MB/s
```

# 測定結果一覧（再掲）

||500MB|5MB|50KB|
|---|---|---|---|
|Ram Disk|1.1 GB/s|1.1 GB/s|413 MB/s|
|NvMe SSD|1.1 GB/s|1.1 GB/s|146 MB/s|
|SATA SSD|1.0 GB/s|618 NB/s|37.4 MB/s|
|内臓HDD × 2 (RAID0)|1.0 GB/s|319 NB/s|13.5 MB/s|
|外付けHDD|1.0 GB/s|618 NB/s|37.4 MB/s|

Virtual Box は、ディスク速度以外がボトルネックになって、この環境だと、どんなに頑張っても1.2 GB/s 程度が限界のようです。
しかし、HDDが思ったよりも健闘しているなという印象でした。
理論値より早いのは、Virtual Box が内部でキャッシュしたりしてくれているのでしょうか？
謎が深まるばかりなので、ご存じの方がいらっしゃいましたら、コメントお待ちしております。