Pi ZERO NFS & Sambaサーバーを構築

当サイトのファイルサーバーはMoOde Audio(3.1)で運用していました。

しかしRaspbianもstretchになり特に最近のupdateによりpi3からのアクセスは入出力エラー、ファイルマネージャー(pcmanfm)のクラッシュに見舞われるようになってしまいました。

現在のmoode audio

$ uname -a
Linux moode 4.4.50+ #970 Mon Feb 20 19:12:50 GMT 2017 armv6l GNU/Linux

kernel 4.9にアップするとmoode playerに不具合が生じてしまいます。

pi3に2017-09-07-raspbian-stretchをインストールした時点では正常に動作しますがapt updateを実行後は上記の現象が頻発してしまいます。

そこでRaspbeery Pi zeroにstretchをインストールして専用のファイルサーバーとして運用することにしました。

用意したもの

Pi Zero + USB-HUB
WiFiアダプタ RTL8188CUS 802.11n WLAN Adapter
HDD MQ01ABD100 東芝 1TB
HDDケース ORICO 2.5インチ HDDケース USB3.0 TO SATAⅢ

インストール 2017-09-07-raspbian-stretch-lite
作業マシン Raspberry Pi3 stretch

# dd if=2017-09-07-raspbian-stretch-lite.img of=/dev/sda bs=1M

ネットワークにはWiFiアダプタを使用することにしました。書き込んだカードのdhcpcd.confとwpa_supplicant.confに設定を書き込んでおきます。またbootにはsshのファイル名で空ファイルを作っておきます。ホスト名はpiz0に変更

/etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

/etc/wpa_supplicant/wpa_supplicant.conf
country=JP 変更
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
追加
network={
        ssid="Buffalo-N-Yasui"
        psk="xx1xxx2xxxx3"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        priority=2
}

/etc/hostname
piz0 変更

/etc/hosts
127.0.1.1 piz0 変更

準備ができたらSDカードを差し込んでPi3からsshで接続します。
Lan内で名前解決ができない時はクライアントの/etc/hostsに登録しておきます。
192.168.0.115 piz0

ssh pi@piz0
接続できたらとりあえずraspi-configからLocaleとTimezoneを変更
$ sudo su
# raspi-config
4 Localisation Options

再ログインすると日本語メッセージになります。

なにはともあれuser piのパスワードを変更しておきます。

$ passwd
pi 用にパスワードを変更中
現在の UNIX パスワード:
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

apt update

$ sudo su
# apt update && apt upgrade

HDDはext4でフォーマットしています。Piからはsdbで認識しています。

$ dmesg | grep sdb
[    4.631529] sd 0:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[    4.632659] sd 0:0:0:0: [sdb] Write Protect is off
[    4.632692] sd 0:0:0:0: [sdb] Mode Sense: 43 00 00 00
[    4.633678] sd 0:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    4.649766]  sdb: sdb1
[    4.664025] sd 0:0:0:0: [sdb] Attached SCSI disk
[    9.802647] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null)

マウントする位置はOSの流儀や使い勝手でいろいろですが当サイトは/home/xxxにマウントしています。
デバイスはSDカードに習ってPARTUUIDで指定しています。

# blkid /dev/sdb1
/dev/sdb1: UUID="1d402e29-277b-47a5-90b2-ff3b02e853d6" TYPE="ext4" PARTUUID="c0b17145-01"
/etc/fstab
# mkdir /home/hda
/etc/fstab
PARTUUID=c0b17145-01  /home/hda ext4 defaults,noatime 0 0
# mount -a

NFSサーバー

# apt install nfs-kernel-server
/etc/exports
/home/hda 192.168.0.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)
# systemctl restart nfs-server rpcbind

nfs-kernel-serverをインストールするとserviceは自動で立ち上がっています。

$ systemctl status nfs-server
$ systemctl status rpcbind

ここでクライアントのPi3から確認してみます。設定に間違いが無ければ以下のように表示されるはずです。

$ showmount -e piz0
Export list for piz0:
/home/hda  192.168.0.0/24

NFSクライアント

クライアントに必要なものはnfs-commonとrpcbindですがstretchでは両者ともデフォルトでインストールされています。またstretchではnfs-commonはservicesとして起動する必要も無くなっています。
rpcbindが起動してあればいい(デフォルトで起動しているはずです)

# systemctl start nfs-common
Failed to start nfs-common.service: Unit nfs-common.service is masked.

maskされていますね unmaskしても解除できないので実質nfs-commonはservicesとしては無効になっているようです。
起動時にマウント
クライアントもサーバーと同じディレクトリ位置にすると使い勝手が良くなります。

# mkdir /home/hda
/etc/fstab
piz0:/home/hda /home/hda       nfs     rw,defaults   0  0

# mount -a を実行して/home/hdaにアクセスするとファイルが見えてきます。
ここで再起動すると/home/hdaにマウント・・・されていませんね (・・;)
どうもserviceの起動とfstabを読み込むタイミングが合ってないようです。
mount -aではマウントは成功するので起動の最終あたりでmount -aを実行するようcrontabに追記登録をしてみます。

/etc/crontab
@reboot /bin/mount --all

これでクライアント側も起動時にマウントできるようになりました。
# オプションを修正しました。”mount –all”

Sambaサーバー

# apt install samba
/etc/samba/smb.conf
# systemctl restart smbd nmbd

smb.confは適宜公開するディレクトリを設定します。

クライアントのPi3にもsambaをインストールしておきます。(設定はデフォルト)

Pi3を再起動するとネットワークからコンピュータアイコンが見えてきます。
反映されるまで少し時間がかかることもあります。

初回の接続時に認証がありますがセキュリティの観点からほかにもキーリングにもパスワードが必要になっています。

moode playerも全く今までどおり使用できます。


stretchはむろんこれまでのjessieからも問題なくファイルの読み書きができるようになりました。
但しファイルマネージャーのクラッシュは頻度は少なくなりましたがまだ発生しています。
ホームディレクトリ内の設定に問題があるかもしれませんがpcmanfmのアップデート直後からの現象なのでなんとか改善を待ってみようと思います。