電源ぶち切りでもデータベースを保持する方法

「Voyage MPD Starter Kit」で電源ぶち切りで終了するとデータベースが失われるという「現象」に困っている方が多いようです。私も同様で、仕方がないのでデータベースを更新したときは行儀よくシャットダウンをしていました。(ssh接続で#shutdown -h now)

<電源スイッチのない「Voyage MPD Starter Kit」>

しかし、面倒くさいことは面倒くさいので、「常に電源オン」が基本かな・・・と書いたところ、早速にyamさんからサポートを頂きました。コメント欄に埋もれさせておくのはもったいないので、こちらで紹介させてもらいます。

yanさんからのサポート

まず、電源ぶち切りでデータベースが失われる現象ですが、私は全くの勘で「Voyage MPDはその結果をメモリ上に保存しているだけのようなのです。」と書いたのですが、yanさんの方できちんと解説してくれています。

「mpdのデフォルトではtag_cacheは/var/lib/mpd/tag_cacheですが、/var/lib/mpd というディレクトリはtmpfsというファイルシステム上にマウントされています。df コマンドで ファイルシステムがtmpfsに成っているはずです。tmpfsはファイルの実体をメモリ上に置きます。従って、電源offとともに内容は消えてしまいます。(by yan)」

なるほどね・・・。
早速「dfコマンド」で「Voyage MPD」のファイルシステムを探ってみます。

# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 3861508 571668 3093684 16% /
none 125928 140 125788 1% /dev
/dev/disk/by-label/ROOT_FS
3861508 571668 3093684 16% /
tmpfs 127716 2196 125520 2% /lib/init/rw
varrun 127716 52 127664 1% /var/run
varlock 127716 0 127716 0% /var/lock
tmpfs 127716 4 127712 1% /dev/shm
tmpfs 127716 0 127716 0% /tmp
tmpfs 127716 2196 125520 2% /var/log
tmpfs 127716 2196 125520 2% /var/tmp
tmpfs 127716 2196 125520 2% /var/lib/mpd
tmpfs 127716 2196 125520 2% /var/lib/alsa

確かに、太字で示したように「/var/lib/mpd」のファイルシステムは「tmpfs」になっています。
さて、「tmpfs」とは何かというと「Linuxが稼働しているマシンのメモリー上に作成できるファイル・システムです。」ということになります。
メモリ上に作成されるシステムですから「マシンの電源を落としたり,マシンを再起動したりすると書き込んだファイルは消えてしまいます。」
これが、電源ぶち切りでデータベースが失われる原因です。

では、どうして「#shutdown -h now」で行儀よく終了するとデータベースが保持されるのかというと、

「これでは困るのでvoyageではshutdown 時に /var/lib/mpdの内容をdiskに保存し、起動時にdiskに保存した/var/lib/mpdの内容をtmpfsにマウントされた/var/lib/mpdにコピーします。(by yan)」

らしいのです。
これで、電源ぶち切りでデータベースが失われる理由と、行儀よく終了したときに保持される理由がクリアになりました。

賢い対処法(NASの上にデータベースを置く)

これで、原因が分かったものの、かといって度々にssh接続をして「#shutdown -h now」とするのはやはり面倒くさい。
しかし、yanさんから「賢い対処法」が示されています。

私はtag_cacheをnas上においています。nasのファイルシステムが/musicにマウントされている場合、tag_cacheが/music/mpd/tag_cacheとなるうようにmpd.confを設定しています。(by yan)

なるほど、その手があったのですね。
具体的には次のように操作します。なお、NASは「/music」にマウントしていると仮定します。

#/etc/init.d/mpd stop //MPDを停止します。

#vi /etc/mpd.conf //mpd.confを編集する

db_file “/var/lib/mpd/tag_cache”

db_file “/music/tag_cache”

#/etc/init.d/mpd start //MPDを起動します。

これで起動すると、当然データベースが存在しないのでwarningが出ますが大丈夫です。MPDは自動的にデータベースを作成ししてNAS上に「tag_cache」を作成してくれます。

これで、今後はいつでも「電源ぶち切り」でVoyage MPDを終了できます。
もしもプレイリストもきちんと保持したいのならば、同じように「playlists」もNASの上に保持したらいいはずです。

#/etc/init.d/mpd stop //MPDを停止します。

#vi /etc/mpd.conf //mpd.confを編集する

playlist_directory “/var/lib/mpd/playlists”

db_file “/music/playlists”

#cd /music //「/music」に移動する

#mkdir playlists”

#/etc/init.d/mpd start //MPDを起動します。

私の場合はこれで上手く動作しています。

<その後分かったことの追記>

これ以外に、少し設定を変更することでVoyage本体に電源ぶち切りでもデータベースが保存できるようです。
# crontab -e

# m h dom mon dow command
#*/5 * * * * ( /etc/init.d/voyage-sync sync )

と出ますので、

#*/5 * * * * ( /etc/init.d/voyage-sync sync )
    ↓
*/5 * * * * ( /etc/init.d/voyage-sync sync )

と、コメントアウトはずして、有効にする。

次に

# vi /etc/default/voyage-util

として、行末に

VOYAGE_SYNC_RECOVER=”YES” VOYAGE_SYNC_RECOVER_DIRS=”var/lib/mpd”

と追記します。

これで、電源をぶち切りでもデータベースが保存されますので、「/etc/mpd.conf」の編集は不要です。
NASに対して書き込み権源を設定しなくてもいいので、こちらの方がお洒落で安心でしょう。


17 comments for “電源ぶち切りでもデータベースを保持する方法

  1. 田中 一壽
    2011年8月13日 at 11:33 PM

    つながりましたあ!
    ヒントはjuubeeさんのアドバイスにあったNTTのサイトでした。
    そこにはIPアドレスは「192.168.24.52」以降に割り振られる
    という記述があり,末尾の52からひとつづつ確認していくと
    まもなく当たりました!まだ音は出ていませんが,とにかく
    ひとハードル越えてうれしいです。この乗り越えていく快感
    がたまりませんね。ありがとうございました。そして今後とも
    みなさんよろしくお願いします。

  2. ユング君
    2011年8月14日 at 9:38 AM

    >末尾の52からひとつづつ確認していくとまもなく当たりました!

    意外とこの「原始的」な方法が効果的なのかもしれませんね。ただし、そのアドレスはDHCPサーバーから動的に割り振られていますから、Web GUIにアクセスして、そのアドレスを静的に割り振った方がいいと思います。

    ネットワーク設定が完了すればほぼ8合目まで上っていますから、音が出るまではあと一歩です。
    頑張ってください。

  3. 2011年8月15日 at 10:13 AM

    田中様

    よかったですね。
    NetEnum4で探すほうがもっと簡単だとは思うのですけどね。
    ということは、パソコンは固定IPなのでしょうね。

  4. 田中 一壽
    2011年8月15日 at 11:27 AM

    悪戦苦闘のお盆です。私の場合NASに楽曲を集めているので,fstabにNASのIPアドレスとNASのフォルダ等を追記しました。

    //192.168.24.67/share/music cifs username=yyyy,password=voyage,uid=root,iocharset=utf8 0 0

    NASフォルダ名が「share」

    root@voyage:~# mkdir /music 
    root@voyage:~# mount -a
    のところで,

    mount: mount point cifs does not exist

    が出て進めません。お助けを。

  5. ユング君
    2011年8月15日 at 8:03 PM

    >mount: mount point cifs does not exist

    マウントするためのディレクトリがないと言っていますね。
    「//192.168.24.67/share」と「/music」の間には半角スペースが必要ですが、上の記述ではそれがないような・・・。

    //192.168.24.67/share/music

    //192.168.24.67/share /music

    確認をしてください。

    それから、もうひとつ。
    linuxは上手く動作しているときは黙って何も言いませんが、上手くいっていないときは必ずエラーログをはき出します。今回であれば「mount: mount point cifs does not exist」がそれにあたります。そして、これを見ることで私も原因が推測できるのですが、出来れば自分で推測できればもっと便利です。
    ただし、これもある程度慣れないと、何を言っているのか見当がつかないと思います。

    そんなときの有効な方法として「Google先生に聞く」という方法があります。

    やり方は簡単で、Googleの「検索窓」にエラーログを放り込みます。(今回であれば、「mount point cifs does not exist」)
    そうすると、

    http://www.google.co.jp/search?hl=ja&q=mount+point+cifs+does+not+exist&sourceid=navclient-ff&rlz=1B3GGLL_jaJP384JP385&ie=UTF-8

    と言うページが表示されます。
    実に多くの人がマウントできずに困っていることが分かります。(^^;みんな困っているのです。
    そして、たとえば、一番先頭の

    mount のエラーメッセージ

    を見るだけでも、多くの有効な情報が得られると思います。
    これは、自分が困ったことは世界のどこかで同じように多くの人が困った経験があり、その困ったことを解決する方法は必ず誰かがネット上で発信しているという「真実」を教えてくれます。

    頑張ってください。

  6. 田中 一壽
    2011年8月15日 at 9:52 PM

    音が出ましたあ!
    まさに「shaer」のあとのスペース挿入であとはとんとんと進み,
    E-MU0404のオーディオインターフェイスから音が出ました。
    そういえば,このインターフェースもユング君さんのサイトを参考に
    米国から輸入したのでした。ほんとにお世話になりっきりです。
    ありがとうございました。
    あとは,iphoneでのコントロールができるようにするだけです。
    がんばります。
    それから,google先生活用します!

  7. KIF1208
    2011年8月16日 at 3:04 PM

    Voyage-MPD starter Kit恐るべし!

    Voyage-MPDを何度かトライして、挫折したまま放置していた
    のですが、その後Voyage-MPD starter kitのことを知って、
    7月はじめに注文しました。

    あいにく在庫切れだったため、8月まだ待たされましたが、
    ようやく届きました。都合よくお盆休みだったので、早速netに
    つないだところ、Windows7機からいとも簡単に認識されました。
    今までの苦労は何だったんだろうと言う気持ちです。

    そこで、つぎにクライアントソフトとしてGMPCをWin7にインス
    トールして(最新のFirefox5に現時点でMinionが対応していない
    ため)、MPDにアクセスしてみたところ、これも一回でつながり
    ました。拍子抜けです。

    そして、どきどきしながら再生すると、えーっと思わず声が
    出てしまいました。
    今まで私なりに色々と工夫してきて、結構いい音になったと
    思っていたWindowsやUbuntuによるPCオーディオの音が一気に
    色あせてしまうような奥行きと臨場感、そしてつやのある音が
    するではないですか。

    いや、参りました。1万そこそこのアルミのボックスが恐ろしい
    実力を見せてくれました。
    ユング君さんが力説するVoyage-MPDの魅力がようやく分かりました。

  8. ユング君
    2011年8月16日 at 3:51 PM

    みなさん、次々とチャレンジしていますね。

    >いや、参りました。1万そこそこのアルミのボックスが恐ろしい
    実力を見せてくれました。

    この「1万そこそこのアルミのボックス」がどうやらベストのようなんですね。世間では10万円以上もずる音楽再生専用のPCなんてのも売っていますが、あんなのに「Voyage MPD」をインストールしてもダメなんです。
    このシンプル極まりない基盤一枚で出来ているPCこそが音楽再生にもっとも相応しい仕様なんですね。

    さらに振動対策と電源強化で化けますので、まだまだお楽しみは終わりません。

  9. フリップ^2
    2011年9月6日 at 11:20 PM

    電源が落ちてもDBを保存する方法は、Voyage スターターキットのマニュアルの巻末のトラブルシューティング5.3に記述されています。

    まずWebguiで、Cronを編集し、
    */5 * * * * ( /etc/init.d/voyage-sync sync )の
    コメントアウトはずして、有効にする。

    次に、nano か viで /etc/default/voyage-util を編集し、
    VOYAGE_SYNC_RECOVER=”YES” VOYAGE_SYNC_RECOVER_DIRS=”var/lib/mpd”

    とするか、SSHで、コマンドラインで、

    # echo “VOYAGE_SYNC_RECOVER=”YES”” >> /etc/default/voyage-util
    # echo “VOYAGE_SYNC_RECOVER_DIRS=”var/lib/mpd”” >> /etc/default/voyage-util

    とする。

    これでやってみましたが、うまくいっています。

  10. ユング君
    2011年9月7日 at 8:05 PM

    >電源が落ちてもDBを保存する方法は、Voyage スターターキットのマニュアルの巻末のトラブルシューティング5.3に記述されています。

    マニュアルにあったんですね(^^;
    私も一度試してみたいと思います。

  11. 田中 一壽
    2011年9月20日 at 1:19 PM

    電源ぶちきりで,DB保存。NAS上にファイルを書き込むことが出来ず,まだ実現できていません。フィリップ~2さんの書き込みで,希望の光を見ましたが,この操作が具体的にどうするのかわからずに,ほぞをかんでいます。Linux素人なもので,お手数でなかったら,教えてくださいませ。

  12. visioman
    2011年9月23日 at 6:17 PM

    田中さん
    フリップさんのひとつめの方法(これが簡単そうです)
    voyageのWeb GUIで設定する作業とsshでvoyageの画面を開いてエディタで設定ファイルを編集する作業のふたつの手順が必要です。

    ブラウザのURL入力ボックスにalixのアドレスを入力
    例 192.168.?.?
    voyageのWeb GUIがブラウザに表示される。
    上の方にボタンが5個並んでる内のSystemというボタンをクリック
    縦に4個ボタンが出てきます。その中のCronというボタンを
    クリック あとはフリップさんのご教示のとおり

    sshを立ち上げalixのアドレスを入力してvoyageのログイン画面を表示する。
    エディタで/etc/default/voyage-util を編集する。

    root@voyage:~# vi /etc/default/voyage-util
    エディタnanoを使う場合 viのところnanoにします。
    ファイルが開いたら変更する場所を探します。カーソルで移動
    あとはフリップさんのご教示のとおり

  13. 田中 一壽
    2011年9月26日 at 12:28 PM

    visiomanさん DBの保存うまくいきました!

    これで電源切れます。ほんとうにありがとうございます。
    やはり,Linuxは敷居が高いです。
    でも,こうやって教えてくださる方がいらっしゃるので,
    助かります。この助け合い教えあいはネット社会の美点ですよね。
    今後ともよろしくお願いします。

  14. visioman
    2011年9月26日 at 7:27 PM

    うまくいきましたか、良かった良かった。
    実は、私は手順を試しただけでNASも繋いでいません。
    USBでHDDを繋いで終了時には、netbookでSSHを開いて
    shutdown -h now か poweroffと打ち込んで終了しています。

    人それぞれスキルは、違います。結果良ければ全て良しです。
    田中さんも もう初心者じゃないかも(^^)

  15. Phoenicia
    2011年9月26日 at 8:28 PM

    田中さん
    おめでとうございます。

    私はNAS接続で、電源ぶち切りではDBは保存できてますが、GMPCで見えるPlay Queueや音量等の再現が出来てないので、仕方なくshutdown -h nowです。

    編集をミスってるのかなあ。
    NASには書き込みを許可したくないし、困ったものです。

  16. 田中 一壽
    2011年9月30日 at 10:58 PM

    visiomanさんおほめのことばありがとうごじます。
    Phoeniciaさんこんばんは。
    まだまだ私は初心者です。こんな問題が発生。
    お気に入りのCDをEACでリッピング。FLACファイルとCUEファイルを作り,NASに置きましたが,MPODで見えません。DBのアップデートやリフレッシュもやったのですが,このフォルダを表示してくれません。個々の楽曲が日本語名のため?どなたかHELPを

  17. ユング君
    2011年9月30日 at 11:26 PM

    >個々の楽曲が日本語名のため?

    おそらく、ファイル名が日本語であることが原因かと思います。
    「/etc/fstab」に「iocharset=utf8」を追記すればキット幸せになるかと思います。

Comments are closed.