openmediavaultを使えば、Raspberry Pi 4を高機能NASに、簡単に仕立て上げることができます。ところが、SeagateのUSB HDDを接続したところ、このHDDについては、障害予測機能であるSMART(Self-Monitoring, Analysis and Reporting Technology)の情報がうまく取得できません。NASなのに、HDDの状態を把握できないのは問題です。そこで、色々と調べてみました。
インストール
Raspberry Pi 4へのopenmediavaultのインストールは、次のような方法で行いました。
- Raspberry Pi Imagerを使って、micro SDにRaspberry Pi OS Liteを書き込む
- bootパーティションにsshという名前の空のファイルを作成
- sshで”(ホスト名).local”(初期状態では”raspberrypi.local”)に接続(ID/パスワードはpi/raspberry)
- 次のコマンドで設定メニューを起動し、パスワードの変更(1)、ホスト名(2-N1)やタイムゾーン(4-I2)の設定などを行う
1 | $ sudo raspi-config |
- 次のコマンドでOSを最新にする
1 | $ sudo apt update |
- 次のコマンドでopenmediavaultをインストールする
1 | $ wget https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install |
- ブラウザで”http://(ホスト名).local”に接続(ID/パスワードはadmin/openmediavault)。Web管理画面が現れる
以上で、NASの一丁上がりです。簡単です。
Raspberry Pi 4は、USB 3.0/Gigabit Ethernet対応のため、それなりの性能が期待できます。
Seagate HDDのSMART情報が取得できない
openmediavaultのWeb管理画面で、「ストレージ」→「SMART」→「デバイス」とクリックし、デバイス(HDDやSSD)を選択して「情報」ボタンをクリックすると、そのデバイスのSMART情報が表示されるはずですが、Seagate Expansion Portable HDD 2TB STEA2000304を接続した場合、正しく表示されませんでした。
sshで接続して、smartctlコマンドを実行してもエラーになります。
1 | $ sudo smartctl -i /dev/sda |
色々と調べたところ、USB→Serial ATA変換チップに原因があり、カーネルパラメーターを調整することで、解決できることがわかりました。
◎参考にしたページ
smartmontools / wiki / SAT with UAS under Linux
https://www.smartmontools.org/wiki/SAT-with-UAS-Linux
解決方法は
- 次のコマンドで、対象のSeagate HDDのデバイスIDを調べる
1 | $ lsusb |
※出力結果の先頭行「Bus 002 Device 002: ID 0bc2:2322 Seagate RSS LLC SRD0NF1 Expansion Portable (STEA) 」の太字部分がデバイスIDです。
- 下記のように
/boot/cmdline.txt
の最後にusb-storage.quirks=0x0bc2:0x2322:
を追加して、再起動する
1 | console=serial0,115200 console=tty1 root=PARTUUID=9170dd17-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait usb-storage.quirks=0x0bc2:0x2322: |
※デバイスIDは各自の環境にあわせて変更してください。2つの16進数の前に0xをつけて 0x0bc2:0x2322 のように記述します。最後はコロン( : )で終わりです。
以上で、Seagate HDDでもSMARTが取得できるようになりました。
smartctlコマンドを実行しても正しく情報を取得できました。
1 | $ sudo smartctl -i /dev/sda |
もう1つのトラブル:ルーターでIPアドレスを固定しても、IPアドレスが変化する
IPアドレスを固定する必要はありませんが、私の場合、ルーターのDHCPサーバーで、IPアドレスとMACアドレスを紐づける機能を使って、IPアドレスを固定化していたにも関わらず、openmediavaultをインストールした途端、IPアドレスが変わってしまいました。
openmediavaultではネットワークの設定にnetplanを使うため、初期設定が変わってしまい、DHCP取得時に識別子としてMACアドレスを使わなくなってしまったのが原因です。
/etc/netplan/20-openmediavault-eth0.yaml
に、下記のように dhcp-identifier: mac
を追加したところ、解決しました。
1 | network: |
設定反映は、以下のコマンドです。なお、反映後、IPアドレスが変わって、sshが切断する場合がありますが、TeraTermの場合、”(ホスト名).local”で接続しておくと自動再接続するようで、IPアドレスが変わっても切断しませんでした。
1 | $ sudo netplan apply |
今後の目標は画像検索機能
openmediavaultは、dockerを使って機能を追加することも可能で、拡張性にも優れています。今回、画像保存用のNASとして用意したので、今後、画像検索の機能を追加したいと考えています。