技术解析

linux 同一分区是否可挂载多个目录
0
2021-07-02 19:02:39
idczone

目前有 2 个硬盘, SSD 和 HDD , SSD 作为 /的系统盘,现在想把 /home 单独挂载到 HDD 上,同时还想建立一个 /data 目录,也是挂载到 HDD 硬盘上。 HDD 只建了一个分区 /dev/sdb1 , mount /dev/sdb1 /home 后,是否可以再通过执行 mount /dev/sdb1 /data 挂载。 我自己试了下,发下 data 和 home 目录是一样的内容。有无办法让 data 也挂载在 HDD 下,但是和 home 目录内容是独立的。 目的:统一使用 HDD 盘做数据盘,保存所有的数据,比如 /var 目录也挂载 HDD 下,难道只能一个目录一个分区吗?


1 、不可以
2 、 ln

呃,没懂啥意思,能说具体点吗

可以。使用 mount --bind 可以将一个分区挂载在多个目录下。

用软连接就行了

看错了。 不可以直接挂载。但是可以将目录 mount 到目录。

aufs

呃,你的意思是 mount /data /home ?

大侠,如果是软连接, data 和 home 都想用 /dev/sdb1 ,该如何操作?

http://unix.stackexchange.com/questions/198590/what-is-a-bind-mount
mount --bind /home/data /data

这样不行吗?
mount /dev/sdb1/home /home
mount /dev/sdb1/data /data

这样不行,/dev/sdb1/home 和 /dev/sdb1/data 不存在(路径前缀不是目录)

唉,你为什么无视了我的回复……
我想说,你有一种选择是:
mount /dev/sdb1 /mnt/sdb1

这两个目录手动创建啊!

上面没发完……
我想说,你有一种选择是:
mount /dev/sdb1 /mnt/sdb1
mount --bind /mnt/sdb1/data /data
mount --bind /mnt/sdb1/home /home
也有一种选择是:
mount /dev/sdb1 /home
mount --bind /home/data /data

/dev/sdb1 是个设备文件,不是挂载点。

哦对,表达错了,意思就是让他挂到 sdb1 下的两个目录里

不好意思,谢谢你的回复,刚才在看你发的那个链接, mount --bind /home/data /data 这个试过了,可以用,就是感觉有点不优雅。你说的
mount /dev/sdb1 /mnt/sdb1
mount --bind /mnt/sdb1/data /data
mount --bind /mnt/sdb1/home /home
意思是在 /mnt 下建个目录,再分别建 bind ? 那在 /etc/fstab 里面是否需要永久绑定 /mnt/sdb1 的 uuid 就行了?其他的不用在 /etc/fstab 下做永久启动绑定了吧?

还有其他更优雅高级的方式吗?解决同分区下多个独立目录的情况。 LVM 是否可行?单加 /dev/sdb1 作为独立物理卷,然后建各种分区再做挂载,是否有这个必要?求大神 指点

如果 按你说的 /mnt/sdb1 这种方式,整个 HDD 硬盘采用一个分区足够了吧,都挂载到 /mnt/sdb1 这个目录下。在纠结要不要用 LVM 建多个逻辑分区的方式。求指教。

把 data 给 ln -s 到 home 不就行了

感谢,可以,只不过在 home 下会有个 data->/data 的软连,感觉不是很优雅。

不是所有的程序都可以和软连接很好的工作……

貌似还没遇到对软连接支持不好的程序

mount /dev/sdb1/ /mnt
mkdir /mnt/{data,home}
mount /mnt/data /data
mount /mnt/hone /home

这样或许可以

那就用硬链啊,或者 bind mount ,直接在底层,和普通文件一样

同分区多个独立目录哪里不优雅了?没有多余分区,可以共享存储……高级? Linux 平常不吃那套,你真高兴可以玩 btrfs-subvolume 。
> 其他的不用在 /etc/fstab 下做永久启动绑定了吧?
你的 bind 也需要 fstab 作绑定啊。 https://serverfault.com/questions/613179/how-do-i-do-mount-bind-in-etc-fstab

感谢, 目录的 bind 确实需要在 fstab 做绑定
UUID=56239839-fd52-4b2c-b14a-7c653cef0707 /mnt/sdb1 xfs defaults 0 0
/mnt/sdb1/home /home none bind 0 0
/mnt/sdb1/data /data none bind 0 0
采用以上方式修改 fstab ,重启也能发现 home 和 data
通过 mount 可以看到 home 和 data 都挂载 /dev/sdb1 下面,但是 通过 df 命令,无法查看到 home 的挂载情况,只有 data 的挂载,如下:
/dev/sdb1 1905108984 80788 1905028196 1% /data
有什么办法能 使用 df 显示 home 和 /mnt/sdb1 的 df 情况呢?
我说的不优雅, 主要之前在 home 下建立一个 data 然后挂载 data 到 /home/data,或使用 ln 会产生软连接,或使用 bind 会影响 home 的内容,当然可以换个目录不在 home 下,比如 mnt/sdb1 这样的,感觉上会好的。我也很喜欢同分区多独立目录方式,只是不想让目录交叉混乱而已,希望有个清晰的目录结构和分区挂载 情况。

感谢,采用了类似的方式,只是 df 无法正常显示。

df 是按照分区显示的…你这样当然显示不了


哈哈,我瞎蒙的,能用就好

我的树莓 就把同一分区挂到 2 个目录上了,系统基本正常
/dev/root 15G 8.4G 5.6G 60% /
/dev/root 15G 8.4G 5.6G 60% /mnt/thunder
/dev/root 连接的是 /dev/mmcblk0p2 分区,
不知道怎么就成这样了,导到迅雷下载时 有时文件会丢失,应该是被覆盖了,
其实第二条绑定的命令是用 mount --bind /root/thunder /mnt/thunder ,但 df 显示是 /dev/root 绑到了 /mnt/thunder
有遇到类似的情况吗?不知道怎么解决了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服