BeagleBoneGreenのfile server化

fileserveをなぜつくるか

前記事 BeagleBoneGreenのdebian versionup と wireguard client設定 で更新したBBGをfile serverにします。

これはDropbox脱出計画でして、いままでつかっていた3TBのDropboxProfessional契約を近々解約して、複数拠点間のファイルストレージを、VPNセグメント内で扱えるようにするためです。

なぜ脱出するのかは、いろいろ理由がありますが、それは別記事で。

BBGのファイルストレージ環境

BBGで外部HDDを扱うとすれば、USB接続となります。 USB 2.0なのでファイル転送速度はたいしたことありませんが、 いままでローカルHDD作業したものを、結局同期が遅いDropboxで共有して作業していたので、 かわったからといって、拠点間の作業ストレスはないだろうという判断です。

電流負荷による動作不安定を回避するために、セルフパワーのUSBハブは必須となります。

まずは下のような一種のバラックで動作させます。

BBGにはcape用ユニバーサル基板を使って定格1.1Aポリスイッチ経由で電源供給。下段はACアダプタを置いている。

写真の右側にあるのが2.5HDDです。

lsblk -o NAME,MODEL,VENDOR,SERIAL,TRAN,SIZE
NAME         MODEL              VENDOR   SERIAL     TRAN   SIZE
sda          ST2000LM015-2E8174 ST2000LM WY2051CX   usb    1.8T
└─sda1                                                   1.8T

まあ、以前つかっていた2TBを差し込んでこうなってるのだけれど、 フォーマットをしなおす必要があります。

HDDフォーマットとマウント

フォーマット

OS依存なしに見られるように、exfatにしておく。

sudo mkfs.exfat -n ラベル名 /dev/sda1
sudo blkid /dev/sda1
[sudo] debian のパスワード:
/dev/sda1: LABEL="ラベル名" UUID="FBE7-EC77" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="0a4975b9-01"

HDDチェック

udo fsck.exfat -v /dev/sda1
exfatprogs version : 1.2.9
label: ラベル名
sector size:  512.00 B
cluster size: 128.00 KB
volume size:  3.01 GB
/dev/sda1: clean. directories 353, files 11995
debian@BeagleBoneGreen:~$ sudo dd if=/dev/sda1 of=/dev/null bs=1M count=1024 status=progress
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 156 s, 6.9 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 156.432 s, 6.9 MB/s
  • fsck.exfat:clean
  • dd:1GB を 6.9 MB/s で読めている(USB2 ならこの速度は普通)
  • セクターエラー無し

マウントポイントをつくる

sambaで共有するので、debianユーザ(なんでもいいけど、とりあえずはデフォルトユーザ)

sudo mkdir -p /mnt/マウントパス
sudo chmod 777 /mnt/マウントパス
id debian
uid=1000(debian) gid=1000(debian) groups=1000(debian),
sudo mount -t exfat -o uid=1000,gid=1000,umask=0022 /dev/sda1 /mnt/マウントパス

これで ls -ld /mnt/マウントパス が debian:debian で drwxr-xr-x になる。

fstab マウント

fstabに

/dev/sda1  /mnt/マウントパス  exfat  uid=1000,gid=1000,umask=0022,nofail  0  0

を書き込んで、 とりあえずリブート。

ログイン後/mnt/マウントパスにマウントされていればOK

samba設定

sudo apt install samba で、インストール。

cat /etc/smb/samba.conf
[global]
   workgroup = WORKGROUP
   server string = BBG File Server
   security = user
   map to guest = Bad User
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   server min protocol = SMB2
   server max protocol = SMB3
   client min protocol = SMB2
   socket options = TCP_NODELAY IPTOS_LOWDELAY
   read raw = yes
   write raw = yes
   max xmit = 65535
   dead time = 15
   getwd cache = yes
[共有名前ーなんでもいい]
   path = /mnt/マウントパス
   browseable = yes
   read only = no
   guest ok = yes
   force user = debian
   force group = debian
   create mask = 0664
   directory mask = 0775

NetBIOSによる名前解決はしないので、

systemctl list-unit-files --type=service --state=enabled

で、nmbd.serviceがあるなら、これは停止します(sudo sytemctl disable nmbd)。

smbdが起動していないなら、もちろんsudo systemctl start smbd

まず、LAN内で接続できるかどうかチェック。

クライアントOSによりますが、Macなら、finder->移動->サーバーへ接続で、 smb://IPアドレス だけで、接続できるはず(smb.confで、guest OKとしているので)。

実際に利用にあたっては、ユーザ管理なども考えるがとりあえず、この状態で フォルダができたりファイルをいじれるなら、とりあえずOKとしておきます。

VPNセグメントでのfile server利用については、別記事にて。