V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
leimbag
V2EX  ›  Linux

linux 同一分区是否可挂载多个目录

  •  
  •   leimbag · 2016-09-10 20:19:37 +08:00 · 22353 次点击
    这是一个创建于 2785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有 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 下,难道只能一个目录一个分区吗?

    31 条回复    2017-03-18 23:31:23 +08:00
    k9982874
        1
    k9982874  
       2016-09-10 20:23:00 +08:00 via iPad
    1 、不可以
    2 、 ln
    leimbag
        2
    leimbag  
    OP
       2016-09-10 20:28:32 +08:00
    @k9982874 呃,没懂啥意思,能说具体点吗
    ahcat
        3
    ahcat  
       2016-09-10 20:32:39 +08:00 via iPhone
    可以。使用 mount --bind 可以将一个分区挂载在多个目录下。
    wwqgtxx
        4
    wwqgtxx  
       2016-09-10 20:33:25 +08:00 via iPhone
    用软连接就行了
    ahcat
        5
    ahcat  
       2016-09-10 20:33:48 +08:00 via iPhone
    看错了。 不可以直接挂载。但是可以将目录 mount 到目录。
    jyf007
        6
    jyf007  
       2016-09-10 20:37:30 +08:00 via Android
    aufs
    leimbag
        7
    leimbag  
    OP
       2016-09-10 20:41:04 +08:00
    @ahcat 呃,你的意思是 mount /data /home ?
    leimbag
        8
    leimbag  
    OP
       2016-09-10 20:43:41 +08:00
    @wwqgtxx 大侠,如果是软连接, data 和 home 都想用 /dev/sdb1 ,该如何操作?
    orzfly
        9
    orzfly  
       2016-09-10 21:03:33 +08:00
    Tink
        10
    Tink  
       2016-09-10 21:08:00 +08:00
    这样不行吗?
    mount /dev/sdb1/home /home
    mount /dev/sdb1/data /data
    leimbag
        11
    leimbag  
    OP
       2016-09-10 21:48:36 +08:00
    @Tink 这样不行,/dev/sdb1/home 和 /dev/sdb1/data 不存在(路径前缀不是目录)
    orzfly
        12
    orzfly  
       2016-09-10 21:52:35 +08:00   ❤️ 1
    @leimbag 唉,你为什么无视了我的回复……

    我想说,你有一种选择是:
    mount /dev/sdb1 /mnt/sdb1
    Tink
        13
    Tink  
       2016-09-10 21:52:38 +08:00
    @leimbag 这两个目录手动创建啊!
    orzfly
        14
    orzfly  
       2016-09-10 21:53:19 +08:00
    上面没发完……

    我想说,你有一种选择是:
    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
    orzfly
        15
    orzfly  
       2016-09-10 21:53:41 +08:00
    @Tink /dev/sdb1 是个设备文件,不是挂载点。
    Tink
        16
    Tink  
       2016-09-10 22:05:41 +08:00
    @orzfly 哦对,表达错了,意思就是让他挂到 sdb1 下的两个目录里
    leimbag
        17
    leimbag  
    OP
       2016-09-10 22:35:37 +08:00
    @orzfly 不好意思,谢谢你的回复,刚才在看你发的那个链接, 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 下做永久启动绑定了吧?
    leimbag
        18
    leimbag  
    OP
       2016-09-10 22:37:52 +08:00
    还有其他更优雅高级的方式吗?解决同分区下多个独立目录的情况。 LVM 是否可行?单加 /dev/sdb1 作为独立物理卷,然后建各种分区再做挂载,是否有这个必要?求大神 指点
    leimbag
        19
    leimbag  
    OP
       2016-09-10 22:46:51 +08:00
    @orzfly 如果 按你说的 /mnt/sdb1 这种方式,整个 HDD 硬盘采用一个分区足够了吧,都挂载到 /mnt/sdb1 这个目录下。在纠结要不要用 LVM 建多个逻辑分区的方式。求指教。
    wwqgtxx
        20
    wwqgtxx  
       2016-09-10 23:16:22 +08:00 via iPhone
    @leimbag 把 data 给 ln -s 到 home 不就行了
    leimbag
        21
    leimbag  
    OP
       2016-09-10 23:37:30 +08:00
    @wwqgtxx 感谢,可以,只不过在 home 下会有个 data->/data 的软连,感觉不是很优雅。
    orzfly
        22
    orzfly  
       2016-09-10 23:47:51 +08:00 via Android
    @wwqgtxx 不是所有的程序都可以和软连接很好的工作……
    wwqgtxx
        23
    wwqgtxx  
       2016-09-10 23:51:11 +08:00 via iPhone
    @orzfly 貌似还没遇到对软连接支持不好的程序
    guizer
        24
    guizer  
       2016-09-11 01:19:59 +08:00 via iPhone   ❤️ 1
    mount /dev/sdb1/ /mnt
    mkdir /mnt/{data,home}
    mount /mnt/data /data
    mount /mnt/hone /home


    这样或许可以
    ryd994
        25
    ryd994  
       2016-09-11 03:37:15 +08:00 via Android
    @orzfly 那就用硬链啊,或者 bind mount ,直接在底层,和普通文件一样
    Arthur2e5
        26
    Arthur2e5  
       2016-09-11 06:04:21 +08:00
    @leimbag 同分区多个独立目录哪里不优雅了?没有多余分区,可以共享存储……高级? Linux 平常不吃那套,你真高兴可以玩 btrfs-subvolume 。

    > 其他的不用在 /etc/fstab 下做永久启动绑定了吧?

    你的 bind 也需要 fstab 作绑定啊。 https://serverfault.com/questions/613179/how-do-i-do-mount-bind-in-etc-fstab
    leimbag
        27
    leimbag  
    OP
       2016-09-11 11:15:30 +08:00
    @Arthur2e5 感谢, 目录的 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 这样的,感觉上会好的。我也很喜欢同分区多独立目录方式,只是不想让目录交叉混乱而已,希望有个清晰的目录结构和分区挂载 情况。
    leimbag
        28
    leimbag  
    OP
       2016-09-11 11:16:20 +08:00
    @guizer 感谢,采用了类似的方式,只是 df 无法正常显示。
    skydiver
        29
    skydiver  
       2016-09-11 12:37:12 +08:00 via Android
    @leimbag df 是按照分区显示的…你这样当然显示不了
    guizer
        30
    guizer  
       2016-09-12 12:23:36 +08:00 via iPhone
    @leimbag
    哈哈,我瞎蒙的,能用就好
    cheek
        31
    cheek  
       2017-03-18 23:31:23 +08:00
    我的树莓 就把同一分区挂到 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
    有遇到类似的情况吗?不知道怎么解决了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   880 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:04 · PVG 05:04 · LAX 14:04 · JFK 17:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.