created: 2022-09-19T04:57:14.591Z
RaspberryPI にて fstab によってマウントの設定をする
前回までのあらすじ。
RaspberryPI が落ちていたので再起動をした。
落ちる前に外付け HDD について fstab の設定をしていなかった。再起動後に再度マウントする必要があることは知っていたので、再度マウントをしようとして以下のコマンドを叩いたのだがエラーが返ってきた。
$ sudo mount /dev/sda1 /mnt/usbdisk
Mount is denied because the NTFS volume is already exclusively opened.
The volume may be already mounted, or another software may use it which
could be identified for example by the help of the 'fuser' command.
df で確認したところ、勝手に(前回とは違うパスに)マウントされているようだった。
$ df -k | grep /dev/sd
/dev/sdb2 488018940 1197716 486821224 1% /media/pi/hdd500GB
/dev/sda1 61587436 2117332 59470104 4% /media/pi/usbdisk
ただ、パーティションの設定は前回に切った通り ntfs になっている。
2 211MB 500GB 500GB ntfs HD-PNTU3 msftdata
$ sudo parted -l
Model: SanDisk' Cruzer Fit (scsi)
Disk /dev/sda: 63.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 16.4kB 63.1GB 63.1GB primary ntfs lba
Model: BUFFALO HD-PNTU3 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB ext4 EFI System Partition boot, esp
2 211MB 500GB 500GB ntfs HD-PNTU3 msftdata
つまり
fstab の設定をしなかったために(おそらくデフォルトの設定に従って)マウントがされてしまったということのようだ。
とりあえずの対抗としてはアンマウントしてマウントし直せばよさそうで、動作が確認できたら今回はちゃんと fstab の設定もしたほうがいいだろう。(月 1 回くらいで落ちるのなら絶対設定したほうがいい)
とりあえずの対応
まずはマウントをしなおしてアプリが従前の通り動作するのを確認する。
$ sudo umount /dev/sda1
$ sudo mount /dev/sda1 /mnt/usbdisk
$ sudo umount /dev/sdb2
$ sudo mount /dev/sdb2 /mnt/hdd500GB
EPGStation
問題なし
$ open http://raspberrypi.local:8888/#/
minidlna
問題なし
# IPアドレスで叩かないと404になるので
$ curl -I http://192.168.86.37:8200/
HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Content-Length: 698
Server: Raspbian DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.3.0
Date: Mon, 19 Sep 2022 04:53:25 GMT
EXT:
fstab の設定
UUID で指定したほうが固いそうなのでそうする。
$ sudo blkid /dev/sda1
/dev/sda1: LABEL="usbdisk" BLOCK_SIZE="512" UUID="xxxx5FF0CAC120B00123" TYPE="ntfs"
$ sudo blkid /dev/sdb2
/dev/sdb2: LABEL="hdd500GB" BLOCK_SIZE="512" UUID="xxxx44E0BDAA34D80123" TYPE="ntfs" PARTLABEL="HD-PNTU3" PARTUUID="6862845e-0e27-4df2-a070-7125b40a5b7a"
以下を fstab に追記する。
UUID="xxxx5FF0CAC120B00123" /mnt/usbdisk ntfs defaults 0 0
UUID="xxxx44E0BDAA34D80123" /mnt/hdd500GB ntfs defaults 0 0
echo 'UUID="xxxx5FF0CAC120B00123" /mnt/usbdisk ntfs defaults 0 0' | sudo tee -a /etc/fstab
echo 'UUID="xxxx44E0BDAA34D80123" /mnt/hdd500GB ntfs defaults 0 0' | sudo tee -a /etc/fstab
defaults?
「アクセス日時」という変数をどう更新するかについての設定のようだ。
relatime は、前回のアクセス日時が現在の変更日時よりも古い場合にのみ、アクセス日時を更新します。加えて、Linux 2.6.30 以降、前回のアクセス日時が 24 時間より古い場合は、アクセス日時は常に更新されます。defaults オプション (カーネルのデフォルト、つまり relatime を使うことを意味します。mount(8) と wikipedia:Stat (system call)#Criticism of atime を参照) や atime オプションが指定された場合、または何のオプションも指定されなかった場合、このオプションが使用されます。
0 0?
それぞれ dump
pass
という設定項目。
は dump(8) ユーティリティによってチェックされます。このフィールドは通常 0 にセットします。0 はチェックを無効化します。
バックアップをするのに dump コマンドを使うことはなさそうなので 0 でよい。
は、起動時にチェックするファイルシステムの順番を設定します。fsck(8) を見てください。ルートファイルシステムには 1 を設定するべきです。他のパーティションには 2 を設定するか、チェックを無効化する 0 を設定するべきです。
外付け HDD なのでシステム的なチェックは不要に思えるため 0 にする。
再起動
fstab の設定ができたら再起動。
$ sudo reboot
Connection to raspberrypi.local closed by remote host.
Connection to raspberrypi.local closed.