当前位置:首页 > CN2资讯 > 正文内容

linux namespaces 详解 linux namespace技术

1天前CN2资讯


操作系统通过虚拟内存技术,使得每个用户进程都认为自己拥有所有的物理内存,这是操作系统对内存的虚拟化。操作系统通过分时调度系统,每个进程都能被【公平地】调度执行,即每个进程都能获取到CPU,使得每个进程都认为自己在进程活动期间拥有所有的CPU时间,这是操作系统对CPU的虚拟化。

从这两种虚拟化方式可推知,当使用某种虚拟化技术去管理进程时,进程会认为自己拥有某种物理资源的全部。

虚拟内存和分时系统均是对「物理资源」进行虚拟化,其实操作系统中还有很多「非物理资源」,比如用户权限系统资源、网络协议栈资源、文件系统挂载路径资源等。通过Linux的namespace功能,可以对这些非物理全局资源进行虚拟化。

Linux namespace是在当前运行的系统环境中创建(隔离)另一个进程的运行环境出来,并在此运行环境中将一些必要的系统全局资源进行【虚拟化】。进程可以运行在指定的namespace中,因此,namespace中的每个进程都认为自己拥有所有这些虚拟化的全局资源。

目前,Linux已经支持8种全局资源的虚拟化(每种资源都是随着Linux内核版本的迭代而逐渐加入的,因此有些内核版本可能不具备某种namespace):

  • cgroup namespace:该namespace可单独管理自己的cgroup
  • ipc namespace:该namespace有自己的IPC,比如共享内存、信号量等
  • network namespace:该namespace有自己的网络资源,包括网络协议栈、网络设备、路由表、防火墙、端口等
  • mount namespace:该namespace有自己的挂载信息,即拥有独立的目录层次
  • pid namespace:该namespace有自己的进程号,使得namespace中的进程PID单独编号,比如可以PID=1
  • time namespace:该namespace有自己的启动时间点信息和单调时间,比如可设置某个namespace的开机时间点为1年前启动,再比如不同的namespace创建后可能流逝的时间不一样
  • user namespace:该namespace有自己的用户权限管理机制(比如独立的UID/GID),使得namespace更安全
  • uts namespace:该namepsace有自己的主机信息,包括主机名(hostname)、NIS domain name

用户可以同时创建具有多种资源类型的namespace,比如创建一个同时具有uts、pid和user的namespace。

理解Linux namespace

用户可以创建指定类型的namespace并将程序放入该namespace中运行,这表示从当前的系统运行环境中隔离一个进程的运行环境,在此namespace中运行的进程将认为自己享有该namespace中的独立资源。

实际上,即使用户没有手动创建Linux namespace,Linux系统开机后也会创建一个默认的namespace,称为「root namespace」,所有进程默认都运行在root namespace中,每个进程都认为自己拥有该namespace中的所有系统全局资源。

回顾一下Linux的开机启动流程,内核加载成功后将初始化系统运行环境,这个运行环境就是root namespace环境,系统运行环境初始化完成后,便可以认为操作系统已经开始工作了。

「每一个namespace都基于当前内核」,无论是默认的root namespace还是用户创建的每一个namespace,都基于当前内核工作。所以可以认为namespace是内核加载后启动的一个特殊系统环境,用户进程可以在此环境中独立享用资源。更严格地说,「root namespace直接基于内核,而用户创建的namespace运行环境基于当前所在的namespace」。之所以用户创建的namespace不直接基于内核环境,是因为每一个namespace可能都会修改某些运行时内核参数。

比如,用户创建的uts namespace1中修改了主机名为ns1,然后在namespace1中创建uts namespace2时,namespace2默认「将共享namespace1的其他资源并拷贝namespace1的主机名资源」,因此namespace2的主机名初始时也是ns1。当然,namespace2是隔离的,可以修改其主机名为ns2,这不会影响其他namespace,修改后,将只有namespace2中的进程能看到其主机名为ns2。

可以通过如下方式查看某个进程运行在哪一个namespace中,即该进程享有的独立资源来自于哪一个namespace。

# ls -l /proc/<PID>/ns $ ls -l /proc/$$/ns | awk '{print $1,$(NF-2),$(NF-1),$NF}' lrwxrwxrwx cgroup -> cgroup:[4026531835] lrwxrwxrwx ipc -> ipc:[4026531839] lrwxrwxrwx mnt -> mnt:[4026531840] lrwxrwxrwx net -> net:[4026531992] lrwxrwxrwx pid -> pid:[4026531836] lrwxrwxrwx pid_for_children -> pid:[4026531836] lrwxrwxrwx user -> user:[4026531837] lrwxrwxrwx uts -> uts:[4026531838] $ sudo ls -l /proc/1/ns | awk '{print $1,$(NF-2),$(NF-1),$NF}' lrwxrwxrwx cgroup -> cgroup:[4026531835] lrwxrwxrwx ipc -> ipc:[4026531839] lrwxrwxrwx mnt -> mnt:[4026531840] lrwxrwxrwx net -> net:[4026531992] lrwxrwxrwx pid -> pid:[4026531836] lrwxrwxrwx pid_for_children -> pid:[4026531836] lrwxrwxrwx user -> user:[4026531837] lrwxrwxrwx uts -> uts:[4026531838]

这些文件表示当前进程打开的namespace资源,每一个文件都是一个软链接,所指向的文件是一串格式特殊的名称。冒号后面中括号内的数值表示该namespace的inode。如果不同进程的namespace inode相同,说明这些进程属于同一个namespace。

从结果上来看,每个进程都运行在多个namespace中,且pid=1和pid=$$(当前Shell进程)两个进程的namespace完全一样,说明它们运行在相同的环境下(root namespace)

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25830.html

    分享给朋友:

    “linux namespaces 详解 linux namespace技术” 的相关文章

    如何利用Gcore CDN自选IP优化网站访问速度与安全性

    Gcore CDN的基本功能 Gcore CDN是一种全球知名的内容分发网络服务,它为用户提供了强大的加速和保护功能。通过Gcore CDN,用户可以轻松实现网站的全球加速,确保内容能够快速、稳定地传递给终端用户。Gcore CDN的免费套餐包括每月1TB流量、10亿次请求,覆盖了140多个官方节点...

    探索宝塔的历史与文化:传承与创新的结合

    宝塔,这种在中国传统文化中扮演着重要角色的建筑,具有悠久而丰富的历史。我曾在一次旅行中惊叹于那些巍峨耸立的宝塔,仿佛它们在诉说着古老的故事。它们的起源可以追溯到佛教传入中国之前,实际上,宝塔最早的样式源自印度,梵语中称之为“窣堵坡”,主要用于供奉佛陀的舍利和进行宗教仪式。 在东汉时期,佛教逐步传入中...

    AS4837和AS9929线路在国际通信中的优势与应用分析

    在了解AS4837线路的历史背景时,回顾其起源与发展非常重要。AS4837线路,通常被称为中国联通的骨干网线路,最早始建于20世纪90年代。那时,随着互联网的兴起,全球对网络基础设施的需求不断增加,中国决定建立更强大的国际连接,通过AS4837将中国大陆与香港、美国、日本、韩国等多地紧密相连。这个决...

    RackNerd黑五促销活动详解:超值套餐与刺激抽奖

    RackNerd黑五促销活动概述 RackNerd,成立于2017年,以其出色的虚拟主机、VPS主机和独立服务器服务,在国外主机商领域占有一席之地。随着公司不断壮大,RackNerd在全球20个国家设立了数据中心,涵盖美加、欧洲和亚洲,提供多样化的服务方案。我一直很欣赏他们采用的当下流行的KVM虚拟...

    IP检测服务:简化网络体验与保护用户隐私

    IP检测服务是当今网络环境中不可或缺的一部分。简单来说,它帮助用户或开发者迅速获取他们的设备公网IP地址,同时提供各种网络信息。这项服务以其高效、便捷和免费的特点,吸引了众多用户和企业进行使用。 想获取公网IP地址往往需要复杂的步骤,而IP检测服务的出现使这个过程变得轻松。它支持多种返回格式,包括纯...

    Digital-VM评测:性价比高的VPS主机服务与全球数据中心优势分析

    Digital-VM是一家在2018年成立于美国的主机商,专注于提供VPS主机服务。自成立以来,Digital-VM致力于为全球用户提供高效、低价的云计算解决方案。随着虚拟主机市场的快速发展,Digital-VM不断扩展其服务和产品线,逐渐成长为一家具备竞争力的主机商。在技术方面,Digital-V...