将 HFS+ 文件系统挂载到 Armbian
HFS+(Hierarchical File System Plus)是苹果公司开发的一种文件系统,主要是为传统机械硬盘设计的文件系统。我有一块本来在 MacOS 使用的移动硬盘,期望将其挂载到 Armbian Linux 服务器上,作为扩展存储。 HFS+ 并不是 Linux 系统原生支持的文件系统,因此有一些要点,本文是为记录。
检查磁盘的文件系统 🔗
在挂载到 Linux 服务器之前,首先确定一下当前磁盘的上的文件系统。为此,可使用 lsblk
命令,并使用 -f
选项使其输出文件系统信息:
lsblk -f
或者使其输入文件系统、大小和挂载点,以便进一步确认分区名称和文件系统:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINTS
我的移动磁盘分区名称为 sdb2
,文件类型为 hfsplus
,那么就是 HFS+ 了。
挂载 HFS+ 文件系统 🔗
首先安装 hfsprogs
:
apt install -y hfsprogs
然后创建挂载点目录:
mkdir -p /media/data
再使用 mount
命令挂载,将 sdb2
挂载到 /media/data
:
mount -t hfsplus -o force,rw /dev/sdb2 /media/data
如果没有报错,那么应该就可以挂载成功了。可以进入到 /media/data
目录,创建文件夹和文件,确保挂载的文件系统是可读且可写的。
自动挂载 HFS+ 分区 🔗
使用 mount
可以挂载文件系统。但是机器在重启后并不会自动挂载它们。为此还需要进一步设置。至少有两种方法:
- 使用
/etc/fstab
文件,在系统启动时挂载。 - 使用 Autofs 按需挂载。
使用 /etc/fstab
挂载 HFS+ 分区 🔗
使用块设备 UUID,在 /etc/fstab
文件中配置挂载信息。首先使用 blkid
命令列出所有块设备的UUID:
blkid
然后在 /etc/fstab
中添加一行记录:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /media/data hfsplus force,rw,nofail 0 2
保存 /etc/fstab
之后,务必验证一下,否则可能导致系统重启之后出错,无法连接!为此,可使用 mount
命令检查:
mount -a
注意,在以上的
/etc/fstab
文件示例中,挂载选项中包含了nofail
,这意味着在挂载出错时,系统的引导程序会继续执行。我的血泪教训是,在修改了/etc/fstab
文件后,我并没有验证,机器重启后,我却无法使用 SSH 连接机器了。最后只好给服务器连接了显示器,才修复问题。我的建议是:对于这种外置存储设备,我觉得可以加上nofail
,即使出错,也不影响系统正常启动。
使用 Autofs 挂载 HFS+ 分区 🔗
Autofs 是一种自动挂载文件系统的工具,它可以根据用户的访问需求动态地挂载和卸载文件系统,而不是在系统启动时就挂载所有可能用到的文件系统,从而节省系统资源。它主要通过配置文件定义挂载规则,当用户访问特定的挂载点路径时,Autofs 会按照规则自动挂载相应的文件系统,比如在访问网络共享文件或者光盘等存储介质时可以自动挂载。
我尝试使用 Autofs 挂载了 HFS+ 分区,并且可以使用
touch
、mkdir
创建文件和文件夹,也就是对文件系统有读写权限。但是,在我设置好 Sambda 服务,然后通过网络邻居访问位于 HFS+ 文件系统上的共享目录时,却只能读,无法创建和删除文件与文件夹。因时间有限,未能找到原因。以下简要记录配置的方法。可参考《使用autofs自动挂载移动设备》 一文。
首先安装 autofs
:
apt install -y autofs
编辑主配置文件 /etc/auto.master
,添加目标挂载的主目录及对应的子配置文件信息,在配置文件末尾添加一行:
/media /etc/auto.misc
编辑 /etc/auto.misc
文件,添加一行记录:
data -fstype=hfsplus,rw :/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
重启 autofs
服务:
service autofs restart
此时,如果使用 ls /media/
会发现并没有 /media/data
目录。但如果使用 cd /media/data
进入该目录,就会激活挂载。然后务必通过创建、修改、删除文件和文件夹,确定自动挂载成功。
注意:
autofs
还有更多的配置选项,比如设置timeout
可让在挂载点不活动一定时间后自动卸载。