USB-HDDで長寿命サーバを設計する

投稿者: | 2017年9月10日

一般的なSBC(シングルボードコンピュータ)は、microSD / SDカードで起動・運用するものが多いように感じます。
実際に私の所有しているSBCは以下のようになっています。

SBC ブート装置
Banana Pi M1 Classic SD
Orange Pi One microSD
NanoPi NEO microSD
Raspberry Pi 3 Model B microSD

メディアに対して読み出しが中心になる場合は、さほどに気に留めなくて良い問題ですが、フラッシュメモリは書き込みに対する耐久性が一般的なSSD / HDDに対して低い傾向があります。
(参考:フラッシュストレージの種類・選び方まとめ

通常は、システム運用中に各種データ(スプールやキャッシュ・ログファイルなど)が上書き・追記されることになります。
これはOSが導入されているフラッシュメモリに対して行われるものであり、ウェアレベリングなどを実装していないメディアでは劣化が心配されます。
当然、長時間の運用を想定したサーバにとっては都合の良いものではありません。

“Raspberry Pi”の中でも”Raspberry Pi 3″以降のモデルは、USBブート対応ファームウェアを使用することでmicroSDカードを使わずに(USB-HDDのみで)起動ができるようです。
※初期作業にはmicroSDカードが必要です

また、その他のSBCについても、USB-HDDから起動するように変更することが可能です。
この場合、microSD自体は起動に必要ですが、OS領域がUSB-HDD側に展開されるため、フラッシュメモリの寿命を伸ばすことが可能になります。

microSDが起動に必要なのは、電源投入後に読み込まれる”ブートストラップ“を、各SBC上のファームウェアがmicroSDから読み込むからです。
microSDからブートストラップを読み込むと、以降の処理はUSB-HDDに引き継がれます。

※”Raspberry Pi 3″以降のファームウェアで可能になるUSB-HDDの直起動については、後日検証してみたいと思います

各OSでの対応について

実際にUSB-HDDでの起動について、積極的に対応している2つのOS(Armbian, DietPi)について紹介したいと思います。

Armbianの場合

“nand-sata-install”コマンドを使用して、ルートディレクトリの変更が可能です。

sudo nand-sata-install

先に現在のルートディレクトリが表示されます。
通常は1つしか表示されないはずなので、そのまま[OK]を選択して進みます。
次にデバイス名の一覧が表示されるので、USB-HDDを選択して[OK]すれば変更されます。

DietPiの場合

DietPiの場合は、初回ログイン時とそれ以降の2種類の変更手順が用意されています。
最初からUSB-HDDにルートディレクトリを変更する場合は、初回起動時にUSB-HDDを挿入しておいて設定してしまうのも手間がなくて良いと思います。

初回ログイン時に変更するパターン

OS起動後に最新バージョンへのアップデートの実行画面が表示され、一度再起動します。
その後、ログインすると「Setup USB Dedicated Drive?」(起動専用USBデバイスをセットアップするか?)と聞かれますので、[OK]を選択すると変更することができます。

If you choose to setup a dedicated USB drive, DietPi will automatically configure your future software installations to utilize the USB drive for user data storage. Instead of SD.
専用のUSBドライブを選択(しセットアップ)する場合、DietPiは将来のソフトウェアインストールを自動的に設定して、SDの代わりにUSBドライブをユーザデータストレージに使用します。

AS USB hard drives can be faster than most SD cards, using a USB drive can vastly improve system performance.
USBハードドライブは、多くのSDカードよりも高速です。
USBドライブを使用すると、システムのパフォーマンスが大幅に向上します。

初回ログイン時以外で変更するパターン

“dietpi-software”コマンドを使います。

DietPi-Software

“User Data Location”から変更します。
(初期値は「SD/EMMC | /mnt/dietpi_userdata」になっています)。

“User Data Location”を選ぶと、以下の3つの選択肢が表示されますが、いずれを選んでも変更可能です。

項目名 説明
Drive Manager Launches DietPi-Drive Manager
List Select from a list of available mounts/drives, to move user data
Custom Input a manual location to move user data

※”Drive Manager”か”List”が簡単です(Customはパスを手入力)