冬休みの自由研究~ラズパイで遊ぶ その4・NAS 運用開始編

動き出したシステムの構成

前回 冬休みの自由研究~ラズパイで遊ぶ その3・NAS 構築できたぞ編 で構築した NAS は以下のような構成になっています。

  • 本体:Raspberry Pi 4B (8GB)
  • OS:Raspberry Pi OS 11 (bullseye)
  • NAS ソリューションソフトウェア:openmediavault 6.0.7-1 (Shaitan)
  • ストレージ:バッファロー HD-AD4U3 (USB HDD 4TB)
  • ネットワーク:WiFi 接続、固定 IP
  • ホスト名:rsp-nas
  • 提供サービス:SMB/CIFS

openmediavault のドキュメントでは、前回の記事で引用したように WiFi はあまりおすすめではないと書かれていますが、設置場所の問題からとりあえず WiFi でつないでいます。固定 IP も avahi-daemon のおかげで不要である可能性は高いものの、既に設定済みなのでそのまま運用しています。

クライアントは PC が Windows 10、スマホが Xperia XZ3 で Android 10 です。

以下、実際に運用を開始してみての経緯を書いてみます。今回はラズパイの話よりもクライアントのスマホの話の方が多いかも。

早速ファイルコピーしてみたら

まずはスマホ (Android) のストレージ逼迫をどうにかするのが最優先だったので、スマホ内で容量を食っている写真・動画ファイルを NAS に移してみることにしました。

これまで使っていたファイルマネージャアプリ File Commander は SMB2.0 非対応でサーバ側のセキュリティを下げなければならないので却下して、SMB2.0 対応のファイルマネージャアプリ X-plore をインストール。サーバ追加は LAN → サーバー追加 → スキャン で見つけてくれるので、タップして認証情報を入れれば OK。

追加できたらスマホ内の画像フォルダを NAS にコピー。しかし、数時間かけてコピーしている最中にラズパイ側の WiFi 接続が切れてしまったらしく、途中で止まってしまいました (ディスプレイをつなぐと本体は普通に稼働しており、WiFi だけが停止していた)。再起動してから残りのファイルコピーを完了、スマホ側のファイルは削除してストレージ逼迫状況を回避することができました。

WiFi 再接続の設定

度々 WiFi が切れてもらっては NAS として使い勝手が悪すぎるので、ラズパイ側で WiFi が切れたら再接続するように設定してみました。参考にしたのはこれらのページ。

ホームディレクトリに bin ディレクトリを作成して、下記のシェルスクリプトファイルを置きます。処理内容は、ゲートウェイに ping を1回打って、終了ステータスが1だったら (エラーだったら) WiFi がつながっていないと判断して wlan0 を立ち上げる、というだけです。

#!/bin/sh

gateway=192.168.1.1
ifname=wlan0
action_wpa=/etc/ifplugd/action.d/action_wpa

ping -c 1 $gateway
test $? -eq 1 && sudo ${action_wpa} $ifname up

実行権限を与えて cron で毎分実行するように設定します。

$ chmod 755 bin/wifi_reconnect.sh
$ crontab -e

crontab には下記を追加

* * * * * ~pi/bin/wifi_reconnect.sh

これで毎分 wifi_reconnect.sh が実行されます。

皮肉なことに、設定して以降 /var/log/syslog を見ても cron のログは残っているものの wlan0 を起動した形跡はないのですが、まあそれならそれで OK。

SD カード大丈夫なんだっけ?

…ん?cron のログ?毎分書き込まれる?SD カードに 1,440回/日の書き込み?ヤバい!

ということで /var/log をどうにかしなければと対策を調べてみたら、openmediavault は既に対策済みであることがわかりました。

Banana Pi + OMV : RAMディスクされていた

これは Banana Pi (っていうのもあるのか!) での話ですが、ラズパイでも同様で、確かに folder2ram が使われています。

$ df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  2.0G   55G   4% /
devtmpfs        3.7G     0  3.7G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           1.6G  8.0M  1.6G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G   68K  3.9G   1% /tmp
/dev/mmcblk0p1  253M   49M  204M  20% /boot
folder2ram      3.9G  120M  3.8G   4% /var/log
folder2ram      3.9G     0  3.9G   0% /var/tmp
folder2ram      3.9G  408K  3.9G   1% /var/lib/openmediavault/rrd
folder2ram      3.9G  1.2M  3.9G   1% /var/spool
folder2ram      3.9G   12M  3.9G   1% /var/lib/rrdcached
folder2ram      3.9G  4.0K  3.9G   1% /var/lib/monit
folder2ram      3.9G   32K  3.9G   1% /var/cache/samba
/dev/sda        3.6T  125G  3.3T   4% /srv/dev-disk-by-uuid-xxxxxxxx
tmpfs           790M     0  790M   0% /run/user/1000

至れり尽くせりですね。

なお、openmediavault を入れていない素の Raspberry Pi OS で上述の WiFi 再接続を行う場合は自力で対策する必要があります。ご注意を。

音楽ファイルもコピーしてスマホから再生してみる

音楽ファイルは PC から。Windows 10 のエクスプローラでネットワークを開くと、しばらくして NAS が表示されます。クリックして認証情報を入れればローカルのフォルダと同等にアクセスできるので、音楽ファイルをフォルダごとドン!とコピー。

コピーした音楽ファイルにスマホからアクセスしてみます。Xperia 標準アプリのミュージックは LAN 上のストレージには対応していないので、ひとまず X-plore でアクセス。普通にフォルダを開いて音楽ファイルをタップするとプレーヤーが立ち上がって再生が始まります。かんたーん!

ただ、無料版では曲のスキップができない等の機能制限があるんですよね。ちゃんとお金払うのも開発者のためには大事なことですが、ファイルマネージャとしてもちょっと UI にクセがあったりしてこれを使い続ける決心がつかず、一旦保留。他のアプリを探します。

NAS 対応の音楽プレーヤーアプリも試したりしたのですが、最終的に行き着いたのはファイルマネージャー+というアプリでした。

接続はスキャンでの発見はしてくれないものの、情報を入力すればOK。

リモート → リモートロケーションを追加する で下記ダイアログが出るので、SMB をタップして必要な情報を入力します。

順次フォルダを開いて音楽ファイルをタップすれば再生されます。

一番下のミニプレーヤー領域をタップすると全画面のプレーヤーが立ち上がります。

いい感じです。

音楽ファイルの拡張子変更等、ATRAC の遺産の整理

MP3 でエンコードした音楽ファイルについては以上で問題ないのですが、ウォークマンユーザーだった私の音楽ファイルには Sonic Stage で取り込んだ ATRAC の音楽ファイルと、それを Music Center で AAC に変換した音楽ファイルが大量にあります。AAC ならスマホの音楽プレーヤーでも再生できるはずなのですが、Music Center は変換したファイルの拡張子を .mp4 にしているので、多くのアプリはこれを動画ファイルだと認識してしまいます。

ファイルマネージャー+の場合は動画プレーヤーが立ち上がって音楽再生できるものの、音楽プレーヤーアプリでは再生対象にならないケースもあります。対策は簡単で、ファイル名の拡張子を .m4a にするだけ。ファイル本体には何も手を加えなくても音楽ファイルだと認識されるようになります。

AAC データに対する拡張子 .mp4/.m4a を巡る事情については検索するといろいろ出てきますが、Yahoo! 知恵袋の下記質問へのベストアンサーが正確だと思います。

なお、

MP4にはAACの他にAppleロスレス、MP3、MP2など色々な形式の音声を入れられます。従って拡張子をm4a→mp4に書き換えても問題ありませんが、逆はダメな場合もあります。

  • AACとMP4とM4Aってなんですか?なにかちがうのですか?
  • とありますが、今回の場合は AAC であることがわかっているので書き換え OK です。

    さて、やることは簡単とはいえ今回の対象ファイルは7,000個以上。さすがに手作業では無理なのでコマンドで処理します。方針は find で見つけたファイルを rename コマンドで名前変更、です。ラズパイに SSH でアクセスして、まず rename をインストール。

    $ sudo apt-get update
    $ sudo apt-get install rename

    NAS として公開しているディスクの音楽ファイルが格納されているフォルダに移動し、上記方針に従った処理を行います。

    $ cd /path/to/music_folder
    $ find . -name "*.mp4" -exec rename 's/\.mp4$/.m4a/' {} \;

    これでOK。もっとも、find というと京大の話も記憶に新しいところで (【エンジニアの悪夢】日本HPE、京大スパコンのデータ77TBをLOST、全面謝罪理由を読んだ皆さん「インタプリタ怖い」「胃が痛くなる」 – p.5 対策は?) 何か間違うと思わぬ事故を引き起こすこともありますので、同様のことを試す場合は一度小規模な対象でテストするなどしてくださいね。

    ついでに、ATRAC ファイル (拡張子 .oma) が残っているフォルダも結構あって表示上邪魔なので、アーカイブした上で消します。アーカイブ作成に関してはこちらを参考にしました。

    findの結果をtarでアーカイブしたい – 浦安市在住+デジカメ

    同じディレクトリで最初に対象ファイルの数を確認し、次にアーカイブファイル生成 (対象が音楽の圧縮データなので gzip をかけても容量削減はほとんど期待できないことから z オプションなしです)、アーカイブファイルの中に収められたファイルの数が最初に確認した数と一致していることを確認してから削除しています。

    $ find . -name "*.oma" | wc -l
    6518
    $ find . -name "*.oma" -print0 | tar -cv --null -T - -f ../oma_files.tar
    ...
    $ tar -tf ../oma_files.tar | wc -l
    6518
    $ find . -name "*.oma" -exec rm {} \;

    なお、アーカイブ作成時の –null オプションの位置が参考記事と異なりますが、参考記事の位置だと

    $ find . -name "*.oma" -print0 | tar -cv -T - --null -f ../oma_files.tar
    ...
    tar: The following options were used after any non-optional arguments in archive create or update mode.  These options are positional and affect only arguments that follow them.  Please, rearrange them properly.
    tar: --null has no effect
    tar: Exiting with failure status due to previous errors

    とエラーになってしまいました。しかも z オプションを加えるとエラーにならなかったので今一つ仕様が理解できない面もありますが、–null (リストファイルは null 文字区切り) は -T (アーカイブ対象のリストファイルを読み込む) を修飾するオプションなので -T より前になければならない、という理由は一応理解できます。

    いずれにせよ今度は削除を伴いますので、ますます事前テストは怠りなきよう…。

    以上で一段落、今後は?

    以上でスマホのストレージの逼迫も解消され、また音楽ファイルが NAS 上に乗っかっていつでもスマホでアクセスできるようになりました。長かった冬休みも終わりますので、今回の一連の記事もここで一段落とします。ただし、いくつか懸案が残っています。

    • 有線接続
      • 実は転送速度が 4MB/s (30Mbps 程度) しか出ていない
      • 多分 WiFi でつないでいるせいなので、設置場所を確保してルーター直結にしたい
    • メディアサーバとしての機能向上
      • DLNA 対応?
    • バックアップ
      • RAID 組んでる訳でもなく信頼性の面で心配なので、もうひとつ HDD をつないで定期バックアップしなければ…
    • 外からのアクセス
      • テレワークの日々が終われば外からアクセスしたくなるケースも生じるはず
      • VPN とか?ownCloud とか?

    この辺、進展があったらまたブログに書きます。あ、第2回で書いた下記も。

    本当は OS インストールでもっといろいろ試行錯誤したのですが、話がややこしくなるので脇道は端折ります (参考になりそうなノウハウは別途まとめて記事にするかもしれません)。

    冬休みの自由研究~ラズパイで遊ぶ その2・組み立てと OS インストール編

    ではでは。

    冬休みの自由研究~ラズパイで遊ぶ その4・NAS 運用開始編” に対して2件のコメントがあります。

    1. yoshimura-s より:

      音楽ファイルの拡張子変更等、ATRAC の遺産の整理 のセクションのアーカイブ作成に関して、参考にしたページのリンクを追加し、また tar の –null オプションの位置について説明を追記しました。

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です