• liunx mnt命名空间


    Mount namespace的作用是隔离mount point,每个mnt namespace内的文件结构可以单独修改,互不影响。

    当前进程所在的mnt namespace的所有挂载点信息记录在以下三个文件中

    为接下来的操作准备两个目录,每个目录下一个文件

    启一个终端

    [root@k8s-nginx1 ~]# ll /proc/$$/mount*
    -r--r--r-- 1 root root 0 Nov 26 13:45 /proc/4433/mountinfo
    -r--r--r-- 1 root root 0 Nov 26 13:45 /proc/4433/mounts
    -r-------- 1 root root 0 Nov 26 13:45 /proc/4433/mountstats

    创建新的mount namespace和uts namespace并运行bash ###

    [root@k8s-nginx1 ~]# unshare --mount --uts bash
    ### 设置hostname以便于观察 ### [root@k8s
    -nginx1 ~]# hostname namespace-01 && exec bash
    ### 查看对应namespace的inode number ### [root@namespace
    -01 ~]# readlink /proc/$$/ns/{uts,mnt} uts:[4026532431] mnt:[4026532430]
    ### 将上面创建的namespace01目录挂在到/mnt ###
    [root@namespace-01 ~]# mount --bind namespace01/ /mnt/

    1

    ### 查看/mnt目录下的文件 ###
    [root@namespace-01 ~]# ll /mnt/
    total 0
    -rw-r--r-- 1 root root 0 Nov 26 13:46 namespace01.txt

    另启动一个终端

    创建新的mount namespace和uts namespace,执行bash ###

    [root@k8s-nginx1 ~]# unshare --mount --uts bash
    [root@k8s-nginx1 ~]# hostname namespace-02 && exec bash
    [root@namespace-02 ~]# readlink /proc/$$/ns/{uts,mnt}
    uts:[4026532433]
    mnt:[4026532432]
    [root@namespace-02 ~]# ll /mnt/
    total 0
    drwxr-xr-x. 2 root root 6 Nov  6 13:52 cdrom
    [root@namespace-02 ~]# mount --bind namespace02/ /mnt/
    [root@namespace-02 ~]# ll /mnt/
    total 0
    -rw-r--r-- 1 root root 0 Nov 26 13:46 namespace02.txt

    当新的mount namespace创建时,会从创建进程所在的namespace复制挂载点信息,所以namespace01和namespace02都可以看到相同的文件视图

    [root@namespace-01 ~]# unshare --mount --uts bash
    [root@namespace-01 ~]# hostname namespace-03 && exec bash
    [root@namespace-03 ~]# readlink /proc/$$/ns/{uts,mnt}
    uts:[4026532435]
    mnt:[4026532434]
    [root@namespace-03 ~]# ll /mnt/
    total 0
    -rw-r--r-- 1 root root 0 Nov 26 13:46 namespace01.txt
  • 相关阅读:
    绝对有效 IntelliJ IDEA2019.2下载、安装及破解教程
    SpringBoot 打包成war包,部署到tomcat
    Spring Boot 项目实战(一)Maven 多模块项目搭建
    ImportBeanDefinitionRegistrar接口实现bean动态注入
    FactoryBean的实现原理与作用
    ClassPathBeanDefinitionScanner 说明
    InstantiationAwareBeanPostProcessor 分析
    Google Guava Cache 全解析
    二十三、并发编程之深入解析Condition源码
    InheritableThreadLocal详解
  • 原文地址:https://www.cnblogs.com/caonw/p/11935104.html
Copyright © 2020-2023  润新知