namespace与mount namespace

Linux Mount Namespace分析 Mount Namepsace简介 Mount Namepsace是Linux提供的进程文件隔离机制,通过隔离挂载点的方式,使得不同Namespace下的进程拥有不同的文件系统视图。下面将从设备挂载的例子出发,介绍Linux文件挂载(Mount)、Linux Mount Namespace等技术的实现机制。 磁盘设备挂载示例 使用unshare命令,在不同的namespace下的shell中执行挂载动作,观察可以发现: 可以在一个挂载点重复执行挂载 挂载点之前的文件被“隐藏” 挂载点可被子. 阅读详情

原文:《Namespaces in operation, part 1: namespaces overview》
部分译文:

namspaces(命名空间)

目前,Linux实现了六种不同的namespaces。每一种namespace的目的是为了抽象地包装出某种特定的全局系统资源,来让在对应namespace下的进程中,看起来像是拥有自己的独立全局资源实例。namespaces的一个主要目的之一就是支持容器的实现,容器是一种轻量的虚拟化工具,这种工具提供了一种对外呈现为一个进程是系统上唯一一个进程的能力。
在接下来的讨论中,我们将按照他们的实现顺序描述这些namespaces。CLONE_NEW*这些在括号中列出的标示符,会被用在下文中将被描述的namespace-related APIs(clone(), unshare()和setns())中,作为不同namespace类型的常量名称。

Mount namespaces(CLONE_NEWNS, Linux 2.4.19)

独立出来一组可以被一组进程看到的文件系统挂载点。因此,处在不同mount namespace的进程族,会看到不同层次结构的文件系统。添加了mount namespace之后,mount()和unmount()的系统调用就不再操作可以被全局进程看到的挂载点了,而是去操作仅影响与调用进程相关联的挂载点。
一种是用mount namespaces的方式是创造一个类似于chroot jails的环境。同时,对于同一个task而言,和单纯是用chroot系统调用相比,mount namespaces是一种更加安全和灵活的工具。当然,mount namespace 其他更加复杂的用途的用途也是可以的。比如,mount namespace可以被用在主备关系上,mount时间就可以自动从一个namespace传播到另一个namespace;举个例子,这就允许挂载在一个namespace下的光盘设备出现在其他的namespace中。
Mount namespace是Linux上在2002年,第一个被实现的namespace。这也解释了相当通用的“NEWS”的绰号(“new namespace的缩写”):当时并没有人意识到,会有其他不同类型的namesapce可能会在将来被用到。

Refs:
DOCKER基础技术:LINUX NAMESPACE

基础补充

挂载

每个文件系统都有独立的inode、block,super block等信息,这些文件系统要链接到目录树才能够被使用。将文件系统与目录树结合的操作被称为挂载。其中,挂载点是目录,该目录是进入文件系统的入口。

告别编译报错!手把手教你用VS2022命令行编译curl静态库(附完整测试代码) 本文详细介绍了如何在VS2022环境下通过命令行编译curl静态库,从环境准备、编译实战到项目集成,提供了完整的避坑指南和测试代码。特别针对常见的编译报错如LNK2019等给出了具体解决方案,帮助开发者高效完成网络库的静态编译与集成。 阅读详情

相关推荐

【新手必看】蓝牙的HOGP和HID、GATT有什么区别和联系

让新手宏观了解蓝牙HOGP、HID、GATT这三个协议的区别和联系

qq_51976334的博客 1565

Linux namespace之:mount namespace

理解mount namespace 用户通常使用mount命令来挂载普通文件系统,但实际上mount能挂载的东西非常多,甚至连现在功能完善的Linux系统,其内核的正常运行也都依赖于挂载功能,比如挂载根文件系统/。其实所有的挂载功能和挂载信息都由内核负责提供和维护,mount命令只是发起了mount()系统调用去请求内核。 mount namespace可隔离出一个具有独立挂载点信息的运行环境,内核知道如何去维护每个namespace的挂载点列表。即「每个namespace之间的挂载点列表是独立的,各自

小胡子 5667

智慧加油站小程序数据库设计文档

【代码】智慧加油站小程序数据库设计文档。

低代码布道师的博客 1402

【Docker】资源隔离(四):Mount namespace & Network namespace

mount namespace 通过隔离文件系统挂载点对隔离文件系统提供支持,它是历史上第一个 Linux namespace,所以标识位比较特殊,就是 CLONE_NEWNS。隔离后,不同 mount namespace 中的文件结构发生变化也互不影响。可以通过 /proc/[pid]/mounts 查看到所有挂载在当前 namespace 中的文件系统,还可以通过 /proc/[pid]/mountstats 看到 mount namespace 中文件设备的统计信息,包括挂载文件的名字、文件系统类型、

Data · Model · Agent · Repeat 1665

MicroCap声学仿真介绍(一)

5-频率上下限选择,需要注意的是,第一个数字是上限,第二个数字是下限,如果填反了,会有报错提示;下三角可以选择“Auto”、“linear”、“log”和“list”,设置的是频率点之间的距离和频率点的数量。Component是用来选择部件的模块,如上图所示,声学仿真常用到的是“Electroacoustic Macros AC”、“Electroacoustic Macros TR”、“NXP Transducers”以及“NXP HD components”。3是声学部件,是声学仿真中常用的部件。

山无忧的博客 5089

【Transformer】小白入门指南

Transformer是起源于NLP领域,然后在图像、视频、声音等领域都得到了广泛应用的基础架构,是继MLP、CNN、RNN’后的公认的第四大基础模型结构。Transformer技术凭借其卓越的表现和广泛的应用前景,已经成为了机器学习领域的一个关键技术。自从2017年Google提出》一文以来,Transformer架构的出现彻底改变了机器学习和深度学习的格局,尤其是在处理语言模型、生成模型以及多模态学习等领域,Transformer几乎成为了不可或缺的技术基石。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 2522

Docker 学习笔记11 容器技术原理 Mount Namespace

Docker 学习笔记11 容器技术原理 Mount Namespace一、Mount Namespace作用二、通过ios文件挂载来演示mount namespace1. 安装 mkisofs2. 演示过程3. 演示 shared subtree 功能三、使用clone 实现 Mount Namespace 一、Mount Namespace作用 Mount Namespace为进程提供独立的文件系统视图。 进程的mount namespace中的挂载点信息可以在/proc/[pic]/mounts ,/

猿来这样-谢厂节的博客 1611

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 763

mount在namespace中应用的四种不同特性

实验环境 内核版本:3.10.0-957.27.2.el7.x86_64 系统版本:CentOS Linux release 7.6.1810 (Core) 创建新的mnt namespace的命令:unshare -m --propagation unchanged sh 实验内容 --make-shared --make-shared:共享挂载,不同namespace的进程对同一个目录进行挂载、卸载等操作时,会相互影响。比如说在主机上新建一个目录/home/mnt_test,这时..

qq_40345614的博客 1318

4.26华为OD机试真题 新系统 - 端口流量统计 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2333

【参数配置】OpenClaw 的破解之道(Doom Loop)

本文深入解析了OpenClaw中的Doom Loop(死循环)问题及其应对策略。主要内容包括: Agent Loop的核心概念:基于ReAct范式,OpenClaw通过"思考-行动-观察"循环执行任务,但可能陷入无进展的死循环。 Doom Loop现象:Agent持续执行但任务进度为零,常见于四种工具调用场景:相同调用重复执行、调用不存在工具、轮询工具卡死、操作交替振荡。 OpenClaw的防御机制: 第一道防线:重试端断路器,通过上下文压缩熔断(最多3次)和总重试次数熔断(32-160次)防止无限重试。

海兰 4040

挂载名称空间(Mount Namespace)

linux mount namespace

tangzhangyin的专栏 1042

算法 | A*算法实现最优路径规划

启发式探索是利用问题拥有的启发信息来引导搜索,达到减少探索范围、降低问题复杂度的目的。A*寻路算法是启发式探索的一个典型实践,在寻路搜索的过程中,给每个节点绑定了一个估计值(即启发式),在对节点的遍历过程中采取估计值优先原则,估计值更优的节点会被优先遍历。...

不断学习,不断进步,提高自己 6630

Linux系统Namespace隔离实战:dd/mkfs/mount/unshare命令组合应用

本文介绍了Linux系统管理和隔离相关的重要命令与概念: Namespace:Linux内核资源隔离机制,通过不同namespace实现进程间的资源独立,支持IPC、网络、PID等隔离类型,提供API如clone()、setns()和unshare()。 dd命令:数据转换工具,支持文件复制、格式转换及大小写转换,常用参数包括if(输入文件)、of(输出文件)和bs(块大小)。 mkfs命令:用于格式化存储设备为指定文件系统(如ext4),示例演示了镜像文件的格式化操作。 df命令:查看磁盘使用情况,支持按

2302_80105876的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

对比 chroot 和 Mount Namespace

是两个用于文件系统隔离的技术,它们的目标类似——为进程提供独立的文件系统视图,但实现方式和功能差别很大。一样改变进程的根目录,还可以为每个进程创建一个独立的“挂载点空间”(Mount Table)。则是真正为进程创建了一个独立的“文件系统世界”。即使是有权限的进程,想要突破隔离也极为困难。:只能改变“入口”目录,让进程从新的根目录开始访问文件系统,但其他挂载点的结构保持不变。是一种简单的文件系统隔离技术,它将一个进程的“根目录”(:可以为整个容器或一组进程创建一个独立的文件系统视图。

pumpkin84514的博客 918

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Docker底层-Mount Namespace

pivot_root 是 Linux 系统调用,用于切换根文件系统(root filesystem)。Mount Namespace 让每个进程看到独立的文件系统挂载视图,实现文件系统隔离。问题:如何让容器看到独立的根文件系统?

lcadna的博客 258

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Mount Namespace 与父进程隔离失效

问题

ch717828的专栏 740

mount namespace

[root@dock01 C]# cat ns.c #define _GNU_SOURCE #include <sys/types.h> #include <sys/wait.h> #include <stdio.h> #include <sched.h> #include <signal.h> #include <unistd.h> /* 定义一个给 clone 用的栈,栈大小1M */ #define STACK_SIZE (10

zhaoyangjian724的专栏 191

MOUNT Namespace

Mount Namespace 用来隔离各个进程看到的挂载点视图 package main import ( "os" "os/exec" "syscall" ) func main() { cmd := exec.Command("sh") cmd.SysProcAttr = &syscall.SysProcAttr{ Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC | syscall.CLONE_NEW

Go的全部 296

pid/fd/mount namespace:Linux命名空间的隔离机制实战与容器的底层真相

PID namespace通过树形结构实现进程ID空间的多层隔离,容器内进程的局部PID与其在宿主机上的全局PID由内核自动映射。Mount namespace控制文件系统挂载点的可见性和传播行为——OverlayFS的分层镜像技术正是构建在Mount namespace的private传播模式之上。文件描述符通过SCM_RIGHTS机制跨namespace传递,这一机制对PID namespace透明,是容器Sidecar模式中流量拦截的底层基础。

jiang_style的博客 3357

mount挂载时 no such device_mount namespace 真正隔离了你的mount信息吗?

在写所有内容内容之前,我想先说一句:知乎,垃圾首先给出结论:mount NS的确隔离mount信息,在不同的mount NS中,系统拥有自己独立的VFS目录树及挂载点信息,但是由于shared subtree机制,使用clone系统调用和CLONE_NEWNS参数,可能会得到和你预期不同的结果在很多docker的入门书籍中,都会讲到namespace的内容,在介绍mount ns时,往往会通过在新...

weixin_39970994的博客 569

容器内文件改了却没生效,可能是你没看懂 Mount Namespace

这种机制导致了一个常见的误区:工程师试图在容器内修改被卷遮挡的底层文件,结果发现无论怎么改,重启容器(重新挂载)后,文件内容又变回了镜像里的原始版本。压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。毕竟,在容器的多维空间里,眼见未必为实,只有看懂了内核的映射规则,才能真正掌控数据的流向。,你以为自己修改了镜像里的文件,或者至少写入了容器层。

2501_90744270的博客 284

【Docker入门系列】:从 Namespace 到 unshare:一文理解容器隔离机制与 PID、Mount 实战

本文介绍了Docker容器隔离的核心原理:容器并非虚拟完整机器,而是共享宿主机Linux内核;真正实现隔离的是Linux Namespace机制,它像“VR眼镜”一样为进程呈现独立的PID、网络、

努力努力再努力wz的博客 335

第三章:rootfs、chroot 与 Mount namespace——容器为什么会觉得自己有独立的根目录

容器实现独立文件系统的关键在于为进程提供隔离的根目录视图。通过rootfs为容器准备独立目录结构,结合chroot或pivot_root切换根目录,并利用Mount namespace实现挂载隔离。此外,必须重新挂载/proc等特殊文件系统,确保容器内工具正常工作。Docker镜像本质上是可分层分发的rootfs模板,为容器提供基础文件系统内容。这些机制共同构建了容器的文件系统隔离环境。

冲击 416

mount namespace与pathname walk:容器路径隔离的底层原理

路径解析是操作系统中最基础却最容易被忽略的机制之一,尤其在容器场景下,同一个路径可能因mount namespace的不同而指向完全不同的对象。理解pathname walk,即内核按dentry逐分量遍历并识别挂载点的过程,是掌握容器文件系统隔离的关键。内核通过挂载树和vfsmount实例,让不同进程看到独立的目录视图,bind mount和挂载传播则进一步增加了复杂度。实际排查“容器内路径找不到文件”等问题时,常用findmnt和mountinfo定位真实挂载关系,而openat2提供更安全的解析控制。

weixin_32612263的博客 103

user namespace和mount

嗯,关注user namespace,总结来说,如果用user namespace,进行mount时,需要满足1,当前进程(执行mount的进程)对当前mnt ns有sys_admin权限2,当前进程对当前user ns有sys_admin权限3,mount的文件系统支持FS_USERNS_MOUNT或者当前进程对init user ns有sys_admin权限4,mount的block dev(...

tanzhe2017的博客 655
上一篇: Docker(1)Docker与Kubernetes的兴起史
下一篇: Docker(2)容器技术基本概念理解
逐风的小哈
博客等级 码龄10年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值