それまで外付けHDD2台だったのだけど、3台にしょうと ORICO ハードディスクケース 6558US3を購入して、それぞれ4GB, 8GB, 8GBのHDDを差している。すると、マウントが外れることが起きるようになってしまった…
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
tmpfs tmpfs 804568 3036 801532 1% /run
/dev/mapper/ubuntu--vg-root ext4 52167452 21977904 27513836 45% /
tmpfs tmpfs 4022824 4 4022820 1% /dev/shm
tmpfs tmpfs 804564 268 804296 1% /run/user/1000
/dev/sda2 ext2 481642 249351 207306 55% /boot
/dev/sda1 vfat 523248 6228 517020 2% /boot/efi
/dev/sdc1 xfs 3905108984 2328275560 1576833424 60% /mnt/hdd1
/dev/sdd1 xfs 7811938628 6903331852 908606776 89% /mnt/hdd2
/dev/sdb1 xfs 7811938304 54499176 7757439128 1% /mnt/hdd3
マウントが外れると、nextcloud
とかnavidrome
が動かなくなるので困る。なので、マウントが外れたら、検知させないとなぁ、メールでやるか、slackでやるかLINEでやるかとか思っていた。
というか、検知したら通知なんてせずそのままマウントすればいいのでは?バカだねー、そうじゃん。ということでGoogle Geminiに聞いて原型シェルを作ってもらって以下のようにした。
remount.sh
#!/bin/bash
# マウント
MOUNT_POINT="/mnt/hdd1"
# マウントポイント
if [ ! -d "$MOUNT_POINT" ]; then
echo "$MOUNT_POINT is not found."
exit 1
fi
# マウントされ
if ! mountpoint -q "$MOUNT_POINT"; then
# マウントされ
echo "$MOUNT_POINT is not mounted. Remounting..."
mount -a
else
# マウントされ
echo "$MOUNT_POINT is already mounted."
fi
mountpointというコマンドがあることを初めて知る。これが使えそうだ。
$ mountpoint /mnt/hdd1
/mnt/hdd1 はマウントポイントです
$ echo $?
0
$ sudo umount /mnt/hdd1
[sudo] arimasou16 のパスワード:
$ mountpoint /mnt/hdd1
/mnt/hdd1 はマウントポイントではありません
$ echo $?
32
そして、管理者sudo
で実行させたいので、sudo crontab -u root -e
でcron
登録する。
0-55/5 * * * * /home/arimasou16/remount.sh >> /home/arimasou16/remount.log 2>&1
上手くいった。本当はマウントが解除されないようにしたらいいんだろうけど、原因はなんだろうなぁ。スペックの問題なのか、ケースなのか、OSもしくは設定の問題なのか。