Part1ではRaspberry Pi 4 Model Bのご紹介と簡単な確認/ベンチマークテストなどを行なったが、Part2では実践編として、パワーアップしたUSBとネットワークを使ってNASを構築してみたい。

Part1での積み残し、USB 3.0接続のストレージをベンチマークテスト Part1はプロセッサとネットワークに関してベンチマークテストを行なったが、USB 3.0へストレージを接続してのベンチマークテストは手持ちの機材の関係で試していなかった。 入稿後、「たしか昔USB 3.0対応のケース使ってたなぁ……」と、押入れを探したところ、古いノートPCの3.5インチ500GB HDD、およびIntelの初期型SSDが出てきたので、今回はこれを使用することにした。もちろんUSBケーブルも3.0対応のものだ。 最新鋭の機材ではないが、お試しで古い機材を引っ張り出すのもありだろう。確認して本格的に使うなら新品を用意し組み直せばよい。 なお、以降の解説は、Raspbian Buster with desktopをインストール、sshの設定などPart1での処理は終えていることを想定している。 まずストレージのベンチマークテスト前に、基本設定としてフォーマット、マウント、動作確認を行なう。手順は以下のとおり。入力が要求される場所は基本Default([Enter])でよい。 パーティション作成 $ sudo fdisk /dev/sda



Command (m for help): p ※パーティション確認(既に1度フォーマットしている)

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors

Disk model: Ext Hard Disk

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: gpt

Disk identifier: 00002576-1990-0000-1A49-00003C2E0000



Device Start End Sectors Size Type

/dev/sda1 2048 976773134 976771087 465.8G Linux filesystem



Command (m for help): d ※パーティション削除

Selected partition 1

Partition 1 has been deleted.



Command (m for help): n ※パーティション作成

Partition number (1-128, default 1):

First sector (34-976773134, default 2048):

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-976773134, default 976773134):



Created a new partition 1 of type 'Linux filesystem' and of size 465.8 GiB.

Partition #1 contains a ext4 signature. ※一度フォーマットしているため



Do you want to remove the signature? [Y]es/[N]o: y



The signature will be removed by a write command.



Command (m for help): p ※パーティション再度確認

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors

Disk model: Ext Hard Disk

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: gpt

Disk identifier: 00002576-1990-0000-1A49-00003C2E0000



Device Start End Sectors Size Type

/dev/sda1 2048 976773134 976771087 465.8G Linux filesystem



Filesystem/RAID signature on partition 1 will be wiped.



Command (m for help): w ※保存

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

ext4でフォーマット $ sudo mkfs.ext4 /dev/sda1

mke2fs 1.44.5 (15-Dec-2018)

Creating filesystem with 122096385 4k blocks and 30531584 inodes

Filesystem UUID: 8ab76e87-5756-4e65-82c9-43d8ea7463e2

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000



Allocating group tables: done

Writing inode tables: done

Creating journal (262144 blocks):

done

Writing superblocks and filesystem accounting information: done

マウントポイント作成/マウント/確認 $ sudo mkdir /mnt/hdd

$ sudo mount /dev/sda1 /mnt/hdd

$ df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/root 15075480 3220824 11191000 23% /

devtmpfs 1867796 0 1867796 0% /dev

tmpfs 1999892 0 1999892 0% /dev/shm

tmpfs 1999892 8644 1991248 1% /run

tmpfs 5120 4 5116 1% /run/lock

tmpfs 1999892 0 1999892 0% /sys/fs/cgroup

/dev/mmcblk0p1 258095 53782 204314 21% /boot

tmpfs 399976 0 399976 0% /run/user/1000

/dev/sda1 479669932 73756 455160516 1% /mnt/hdd ※追加されている



簡単なベンチマークテスト 簡単なベンチマークテストとしてhdparmコマンドを使用した。もともとこのコマンドは、ストレージのパラメータを設定/取得するものだが、-Tオプション(キャッシュ読み込み)/-tオプション(デバイス読み込み)を指定すればシーケンシャルリードの速度を測定できる。標準では入っていないため、apt-getでインストールする。 $ sudo apt-get install hdparm

$ sudo hdparm -tT /dev/sda1



/dev/sda1:



※3.5インチHDDの場合の転送速度



Timing cached reads: 1856 MB in 2.00 seconds = 928.28 MB/sec

Timing buffered disk reads: 216 MB in 3.03 seconds = 71.35 MB/sec



※Intelの初期型SSDの場合の転送速度



Timing cached reads: 2042 MB in 2.00 seconds = 1022.43 MB/sec

Timing buffered disk reads: 764 MB in 3.00 seconds = 254.40 MB/sec



結果は、HDDがキャッシュ読み込み速度928.28MB/s、デバイス読み込み速度71.35MB/s。SSDがキャッシュ読み込み速度が1,022.43MB/s、デバイス読み込み速度で254.4MB/sだった。ちなみに各値は、前者はキャッシュありなので、実際の速度は後者だ。 いずれも古いストレージということもあり速度は望めないものの、それでもUSB 2.0の限界は越えているため、USB 3.0で作動しているのは間違いない。

openmediavault上でDocker / Portainerを使って遊ぶ NAS化が思ったより簡単だったので、少しほかのことでも遊んでみたい。openmediavaultのメニューには、OMV-Extrasという項目がある(ちなみにOMVとはopenmediavaultの略)。これを見ると[Dockerのインストール]ボタンがある。 このOMV-Extrasではサービスなどを追加できるのだが、以前のバージョン4.x系は、たとえばMySQLなどをプラグイン形式でダイレクトにシステムへインストールしていた。しかし5.x系では多くをDockerで代用するように変わっている。 システムへ入れると、いろいろゴチャゴチャになってしまい、NASとは無関係な部分でトラブってシステムが停止するパターンなどを防ぐためだろう。 早速[Dockerのインストール]ボタンを押し、Dockerをインストール。終了後、Web UIでDockerを操作できる「Portainer」もインストールする。どちらもワンクリックで完全にオートだ。 インストール後、http://割り当てられたIPアドレス:9000で、Portainerのログイン画面となる。初期起動時、適当なユーザー名 / パスワードを設定しログイン、endpointの指定が4択になっているので「Local / Manage the local Docker environment」を選ぶとHome画面を表示、localでDockerが動いているのでクリックするとDashboardが現れる。 App Templatesをながめると、Nginx、Httpd(Apache)、MySQL/MariaDB、Wordpressなど、楽しそうなものがいっぱいだ。 ここでは動きが分かりやすいHttpdを入れてみる。参考までにopenmediavaultのWeb UIは、Nginx 1.14.2+PHP 7.3.11が使われており、Apacheは入っていない。 ポイントとして、ApacheはDefaultで80/tcpだが、openmediavaultと被っているため、host 8080→container 80/tcpへ変更し再Deployする。これでhttp://割り当てられたIPアドレス:8080でApacheのhtdocs/index.htmlが表示される。 次に、App Templatesにはないubuntu、つまりOSそのものを入れてみた。手順はContainer > [+add container]で、Nameは適当(ubuntu)、Imageにubuntuを指定し、[Deploy the container]を実行すればOKだ。 こうしておけば、フルのubuntuを、システム側を汚さずいろいろ遊ぶことができ、不要になったり、グチャグチャになったらContainerを削除して再度Deployすればよくなる。 ただ、今の状態ではmicroSDカードにシステムが乗っていることもあり、時々引っかかるような動きをする。USBからSSDでブートできればいいのだが、どうもまだPi 4ではUSBブートができないようなので、microSDカードでブート(Bootloaderと/boot)し、/にSSDを割り当てたほうが良さそうだ。 この辺りは興味のある人は検索しながら試して欲しい。