问题说明

用机械硬盘给树莓派做smb服务器硬盘,但是发现挂载的硬盘经常消失,需要重新挂载。

原因

树莓派的usb3.0供电不足,所以机械硬盘会出现断联问题。

解决方法

方法一

购买双usb的硬盘接口线,一根用于供电一根用于数据传输。

方法二

写一个shell脚本,定期自动检测硬盘自动挂载。

shell如何检测硬盘是否挂载

使用命令 ls /mnt/data 可以查看挂载文件夹,如果未挂载则会出现错误提示。
shell中使用 $? 可以得到上一条命令的返回值,默认正常情况下返回值为0,异常状态则不为0.
因此可以通过判断该命令的返回值,确定硬盘是否挂载。

file=`ls /mnt/data`
flag=$?
if [ $flag == 0 ]
then
        echo "已挂载"
else
        echo "未挂载"
fi

如何挂载硬盘

linux挂载硬盘有两种方式,一种是直接写硬盘目录挂载,另一种则是用UUID的方式挂载,由于机械硬盘总是会断联,每次硬盘目录都会发生变化,因此选用UUID的方式挂载。
查看硬盘UUID

blkid

挂载

sudo mount UUID=9a13874f-40f0-0747-aa7e-88f484803037 /mnt/data

shell脚本

#!/bin/bash
file=`ls /mnt/data`
flag=$?
if [ $flag == 0 ]
then
        echo "OK" >> /home/ubuntu/Pi/log.txt
else
        sudo mount UUID=9a13874f-40f0-0747-aa7e-88f484803037 /mnt/data
fi

定时启动脚本

使用crontab定时启动脚本,详见这篇文章Linux使用crontab定期执行脚本

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟