Ubuntu Weekly Recipe

第800回USBメモリ型SSD選手権! 速くてお得なインストールメディアを探す

みなさんはOSのインストールをするときにどういったインストールメディアを使っているでしょうか?

現代ではUbuntuでもWindowsでも、USBメモリのようなデバイスにインストールイメージを書き込み、そこからインストールを開始するのが一般的かと思います。OSのインストールという作業は頻繁に発生するものではないため、筆者もUSBメモリを使い続けてきました。しかし、従来型USBメモリよりも高速かつ大容量な「USBメモリ型SSD」と呼ばれる製品が登場したころから、こういった製品を使用すればインストールメディアの作成とインストール自体が従来に比べて格段に高速化できるのではという考えが頭から離れませんでした。

そこで今回、従来型USBメモリの代替を目指す選手権を勝手ながら開催するに至りました図1⁠。

図1 USBメモリ型SSD選手権の開催をここに宣言します!
図1

レギュレーションと選手紹介

急に選手権を開くことになったので、まずは参加資格を含むレギュレーションを決めなければなりません。インストールメディアとして十分な容量である8GB[1]を満たす従来型USBメモリが1,000円以下で買えてしまう現状を考慮し、次のように参加資格を定めました。

  • 今までの使い勝手を維持できること
    • 従来型USBメモリのような外観をしていること
    • 従来型USBメモリに比べてあまり大きすぎないこと
  • 販売価格が4,000円未満であること

販売価格の上限についてはすごく悩んだのですが、やはりインストールメディアとしてたまに使うのが主な用途とすると、3千円台までに抑えたほうが納得感が出るのではという主催者の判断です。

それでは今回エントリーしてくれた選手たち(正確に言うと筆者が購入してエントリーさせた選手たち)の紹介です図2表1⁠。

図2 エントリー選手たち。一番上のNVMe M.2 SSDケースは撮影のためカバーを外しています。
図2
表1 選手一覧(図2の上からと順番を揃えてあります)
分類 型番/シリーズ 容量 発売年 購入価格 最大書き込み
速度
USB 3.2
NVMe
M.2 SSD
KIOXIA EXCERIA G2 NVMe SSD 500GB 2021 5,980円 1,700 MB/s -
USBメモリ型SSD I-O DATA SSPE-USC250 250GB 2023 3,699円 450 MB/s Gen 2
USBメモリ型SSD BUFFALO SSD-PUT250U3-BKC 250GB 2021 3,250円 記載なし Gen 1
USBメモリ型SSD ELECOM ESD-EMA0250GBK 250GB 2023 2,980円 480 MB/s Gen 2
USBメモリ型SSD ELECOM ESD-EMC0250GBK 250GB 2023 3,160円 380 MB/s Gen 1
従来型USBメモリ Transcend TS32GJF790K 32GB 2015 880円 記載なし Gen 1
microSDカード Nextorage NUS-MA32G 32GB 2021 580円 40 MB/s -

従来型USBメモリの例として筆者が使っている2015年購入のものを、そしてサイズが最小となるmicroSDカードもカードリーダーBUFFALO BSCR27U3BKを使うことでUSB接続ストレージということにして特別招待選手として追加しています。さらにKIOXIAの「メインストリーム向け」とされるNVMe SSDをUSB変換ケース(Realtek RTL9210B-CG搭載)に入れたものも特別招待選手枠で追加し、USB 3.2 Gen 1 (5Gbps)の帯域をしっかり使い切ってくれるペースメーカーとしての役割を期待します。

計測ツールの選択

参加資格の決定と選手の選考が終わったら、次は計測方法を決めなければなりません。ストレージのベンチマークといえば図3のようなスクリーンショットをよく見かけることでしょう。いくつかのシナリオ(シーケンシャルリード・ライト、ランダムリード・ライト)のパフォーマンスをお手軽に計測してくれて、各シナリオの理想的な状態での速度をざっと把握するのに便利です。ただ、今回の選手権においては、Ubuntu、Windowsともにインストールイメージがこういったツールのデフォルト値である1GiBには収まらず、さらに試合途中の速度が可視化されないため、選手達の一挙手一投足を見逃してしまう可能性があります。

各インストールイメージのサイズ
## GiB (1024*1024*1024 bytes)の単位で表示
$ du -h *.iso
4.7G	ubuntu-22.04.3-desktop-amd64.iso
4.9G	ubuntu-23.10.1-desktop-amd64.iso
6.3G	Win11_23H2_Japanese_x64v2.iso

## GB (1000*1000*1000 bytes)の単位で表示
$ du --si *.iso
5.1G	ubuntu-22.04.3-desktop-amd64.iso
5.2G	ubuntu-23.10.1-desktop-amd64.iso
6.8G	Win11_23H2_Japanese_x64v2.iso
図3 よく見かけるSSDベンチマークの例。kdiskmarkを使用。
図3

次の候補は、Ubuntuデスクトップに最初からインストールされているgnome-disk-utilityパッケージの中の「ディスク」(Disks)というアプリケーションです。こちらもデフォルトの計測サイズが約1GiB(10MiB*1000)という制約はあるものの、途中の読み込み・書き込み速度をリアルタイムで美しく表示してくれます図4⁠。単体でテストする分にはいいのですが、複数デバイスの結果を一同に比較したい今選手権では採用を見送ります。

図4 Ubuntu標準アプリケーションでもグラフが描ける
図4

ここまで主催者の前置きが長くなりましたが、今回はfioとその結果を複数デバイス間で比較できるグラフを生成してくれるfio-plotというツールを使っていきます。特に断りのない限り計測に使用する環境は次の通りです。

  • ノートPC: Lenovo ThinkPad T14 Gen 3 AMD
  • 使用するUSBポート: 本体右側のUSB 3.2 Gen 1x1ポート(5Gbpsまでの対応)
  • ホストOS: Ubuntu 24.04 LTS(noble)開発版

計測ツールのインストールについては、fioはUbuntuでインストールできるパッケージを、fio-plotはパッケージ化されていないので今回はpipxを使っていきます。

$ sudo apt install fio
$ sudo apt install pipx

$ pipx install fio-plot

pipxはインストールしたプログラムを~/.local/bin/から起動できるようにしているため、初めて使用する場合はPATHを通すために再ログインが必要になる場合があります。

第一種目 8GB走(シーケンシャル書き込み部門)

ではさっそく競技を始めていきます。まずは、インストールメディアを作成するときに使う次のような各ツールによる書き込み負荷を模した第一種目、8GB走(シーケンシャル書き込み部門)です。

インストールメディア作成ツールの例

よくあるベンチマークツールが標準で1GiBでの速度を計測するのが人間でいうところの100m走に相当する短距離走だとするならば、8GB走は人間でいうところの800m走に相当する中距離走といったところでしょうか。

まずは従来型USBメモリに対してベンチマークを実行してみます。

## 書き込みテストなのでデバイス内のデータを上書きします。
## 内容を確認後、実際に実行する際は`--destructive`をつけてください。

$ systemd-inhibit powerprofilesctl launch -p performance -- \
    sudo ~/.local/bin/bench-fio \
        --type device \
        --target '/dev/disk/by-id/usb-JetFlash_Transcend_32GB_AAOJK4FQJKH0JUP9-0\:0' \
        --size 8GB --runtime 0 \
        --iodepth 1 --numjobs 1 \
        --mode write -b 4M \
        --output usb-JetFlash_Transcend_32GB_8GB

systemd-inhibitをつけているのはベンチマーク実行中に勝手にスリープモードにならないように、powerprofilesctlをつけているのは省電力機能によってベンチマーク間で条件に差が出てしまうのを防ぐためです。ブロックサイズに4M(4MiB)、総書き込みサイズに8GB(8,000MB)とMBとMiBをあえて混在させているのは、書き込み単位にはMiB、ストレージの販売時のサイズ表記にはMBが使われる場合が多いためそれに合わせています。

同様に、ペースメーカーであるNVMe SSDに対してベンチマークを実行した後、二つのデバイスの結果を次のコマンドでグラフ化してみます。

$ fio-plot \
    -i {usb-KIOXIA_EXCERIA_G2_SSD,usb-JetFlash_Transcend_32GB}_8GB/*/4M/ \
    --loggraph --type bw --rw write \
    --title 'sequential write bandwidth of 8GB' \
    --xlabel-depth 2 --xlabel-parent 0 -w 2

すると、図5が出力されます。

図5 8GB書き込んだときの従来型USBメモリとUSB接続NVMe SSDのパフォーマンス
図5

このグラフの読み方ですが、横軸がレースがスタートしてからの経過時間(秒⁠⁠、縦軸がその秒数における書き込み速度、線が途切れた時点で8GBをすべて書き込み終わったことを示しています。青色の線で表されているUSB接続のNVMe SSDは、353MB/s(正確にはMiB/s)という平均速度で走りきり、わずか23秒でゴールしています。対して茶色の線で表される従来型USBメモリは122MB/sというトップスピードは記録するものの速度が安定せず、最終的な平均速度は31MB/sとなってしまいゴールまで471秒かかっています。UbuntuのISOイメージを約2.5Gbps(312.5MB/s)でわずか15秒ほどでダウンロードできるミラーサーバーがあっても、従来型USBメモリへの書き込みの部分で5分以上かかってしまうという筆者の体感に合致します。

同様にテストを繰り返し、USBメモリ型SSDの4製品とmicroSDカードを加えたグラフが図6です。

図6 8GB書き込みパフォーマンス総合結果
図6

意外にもピンク色の線のmicroSDカードが善戦しており、決して速くないものの安定した速度で約108秒でゴールしました。

USBメモリ型SSDは結果が拮抗しているため、従来型USBメモリとmicroSDカードを除いたグラフ図7も作ってみましょう。ちなみに、fio-plotの--truncate-xaxisオプションでも横軸の範囲を指定できます。

図7 8GB書き込みパフォーマンス拡大図
図7

中々興味深いレースとなりました。スタートダッシュが少し遅れた選手もいますが、概ねUSBメモリ型SSDのパフォーマンスはペースメーカーであるUSB接続のNVMe SSDと遜色ないです。しかし、他の選手が約25秒でゴールする中、紫色の線で表されるELCOMのESD-EMCシリーズが13秒付近、4.7GBほどを書き込んだところで息切れのような速度の低下を起こし、約59秒でゴールしています。何度か繰り返し計測しましたがこの製品は常に同じようなグラフになり、熱によるスロットリングという感じもしませんでした。推測するに、一定容量の速いキャッシュとそうではない部分の階層化構造となっており、今回の8GB書き込み走という特定の競技の中でキャッシュがあふれた際の速度の落ち込みが目立ちやすくなったものと思われます。

第二種目 8GB走(シーケンシャル読み込み部門)

続いて、第二種目は8GBのシーケンシャル読み込みです。第一種目ではインストールメディアの作成を模したベンチマークでしたが、今度は作成したインストールメディアから起動するシナリオを想定します[2]

第二種目のベンチマークとグラフの生成は、第一種目のwriteの部分をreadに変えて実行するだけです。

ベンチマーク実行コマンド
$ systemd-inhibit powerprofilesctl launch -p performance -- \
    sudo ~/.local/bin/bench-fio \
        --type device \
        --target '/dev/disk/by-id/usb-JetFlash_Transcend_32GB_AAOJK4FQJKH0JUP9-0\:0' \
        --size 8GB --runtime 0 \
        --iodepth 1 --numjobs 1 \
        --mode read -b 4M \
        --output usb-JetFlash_Transcend_32GB_8GB
グラフ生成コマンド
$ fio-plot \
    -i *_8GB/*/4M/ \
    --loggraph --type bw --rw read \
    --title 'sequential read bandwidth of 8GB' \
    --xlabel-depth 2 --xlabel-parent 0 -w 2

それでは、結果をご覧ください図8図9⁠。

図8 8GBシーケンシャル読み込みパフォーマンス
図8

ここから読み取れることは、書き込み時には速度が安定せず苦しんでいた従来型USBメモリが、読み込み時には約100MB/sではあるものの安定した走行を見せ、約83秒でゴールできていることです。書き込み時には完敗してしまったmicroSDカードに対しても、読み込み時には若干ではありますが逆転できています。

図9 8GB読み込みパフォーマンス拡大図
図9

NVMeとUSBメモリ型SSDに関してはそこまでの差はつかず、平均349MB/sから376MB/s、完了時間は約21秒から23秒とどれも優秀な結果でした。

選手たちの熱き戦いは続く

インストールメディアの作成とそこからの起動というここまでの競技結果で言えることは、筆者が惰性で使ってきた9年前発売の従来型USBメモリと比べると、最近のUSBメモリ型SSDは別格のパフォーマンスを見せてくれています。読み込みでは3.5倍程度、書き込みでは4倍から10倍程度と今すぐ買い換えを検討するに値します。

次回第801回「選手権第二弾種目」では、USB 3.2 Gen 2対応デバイスがGen 1ポートの帯域に性能が制限されている可能性も含めて、上限速度の限界突破に挑戦します。さらに、現状USB接続のNVMe SSDとあまり差がついていないように見えますが、マラソン種目となる250GB走を開催し、インストールメディアとして使う以外のシナリオでの特性や注意点も見ていきます。

  • 第三種目 限界突破8GB走(書き込み部門)
  • 第四種目 限界突破8GB走(読み込み部門)
  • 第五種目 250GB走(書き込み部門)

お楽しみに。

おすすめ記事

記事・ニュース一覧