linux命名空间及底层原理的简单释义

一、简述

Linux命名空间(Linux Namespaces)是Linux内核提供的一种隔离机制,用于将系统资源(如进程、网络、文件系统、用户等)隔离成不同的视图,使得不同的进程组在不同的命名空间中具有独立的资源视图。
命名空间提供了一种轻量级的虚拟化解决方案,可以在不增加额外的系统资源开销的情况下,实现多租户、安全隔离和资源共享等功能。
一个命名空间里有一个进程及所需资源。

二、网络隔离

网络命名空间(Network Namespaces):用于隔离网络资源,包括网络接口、IP地址、路由表等,使得不同命名空间中的进程可以拥有独立的网络栈。

底层原理

1、网络协议栈:每个网络命名空间都有一份独立的网络协议栈,包括网络设备、网络接口、路由表、防火墙规则等。 协议栈的差异导致不同的网络命名空间中的进程无法直接通信,只能通过相应的网关或路由规则进行数据传输。
2、路由表:每个网络命名空间都有自己的路由表,用于指定数据包的传输路径。 不同命名空间中的路由表是相互独立的,进程只能访问自己的路由表,而无法访问其他命名空间中的路由表。
3、网络设备:每个网络命名空间都可以有自己独立的网络设备,如虚拟网桥、虚拟路由器等。 这些设备只对当前命名空间中的进程可见,不同命名空间中的进程无法直接访问彼此的网络设备。
4、网络命名空间的创建与销毁:网络命名空间的创建和销毁需要通过特定的系统调用(如ip netns add、ip netns delete等)来完成。创建网络命名空间时,需要指定其ID、协议栈类型、路由表等信息;销毁网络命名空间时,需要清理其相关的网络设备和资源。
5、网络命名空间的父子关系:每个网络命名空间都有一个父进程,默认情况下,一个进程所属的网络命名空间是其父进程的子命名空间。子命名空间可以访问父命名空间中的网络设备和资源,但父命名空间无法访问子命名空间中的网络设备和资源。

三、进程隔离

1、PID命名空间(PID Namespaces):用于隔离进程ID,使得不同命名空间中的进程可以拥有独立的PID空间,从而实现多租户隔离。它可以将不同PID命名空间中的进程具有相同的进程ID。PID命名空间可以用于在主机之间迁移容器,并保持容器内进程的相同进程ID。 当创建一个新的PID命名空间时,会使用“CLONE_NEWPID”标志来创建一个新的PID命名空间。

  • 多租户隔离:
    1、独立数据库:每个租户一个数据库。
    2、共享数据库,独立Schema:多个或所有租户共享Database,但一个租户一个表。
    3、共享数据库,共享Schema:租户共享同一个Database、同一个Schema,但在表中增加TenantID多租户的数据字段。

2、用户命名空间(User Namespaces):用于隔离用户和组ID,使得不同命名空间中的进程可以有不同的用户和组权限。

3、IPC命名空间(IPC Namespaces):用于隔离System V IPC对象(如消息队列、信号量等),使得不同命名空间中的进程可以有独立的IPC资源视图。

  • IPC资源是Linux操作系统中提供的用于进程间通信的机制。IPC资源包括信号量、消息队列和共享内存等,它们都可以用于进程之间的数据传输和同步。
  • IPC命名空间的控制是通过三个宏来实现的,这些宏分别是:
    ipc_ns_init:用于初始化IPC命名空间。
    ipc_ns_register:用于在IPC命名空间中注册一个IPC资源。
    ipc_ns_unregister:用于在IPC命名空间中注销一个IPC资源。

4、UTS命名空间(UTS Namespaces):用于隔离主机名和域名,使得不同命名空间中的进程可以有独立的主机名和域名视图。UTS命名空间通过在命名空间中创建一个虚拟时间和日历来实现隔离。 种隔离机制可以防止不同进程之间的同步问题,增强了系统的可靠性和安全性。

四、 文件隔离

文件系统命名空间(Mount Namespaces):用于隔离文件系统挂载点,使得不同命名空间中的进程可以拥有独立的文件系统视图。

  • 文件系统挂载点是Linux和Unix等操作系统中用于组织和管理文件系统的一种方式。挂载点实际上是文件系统的入口目录,类似于Windows中的磁盘分区盘符。
  • 挂载点作为文件系统的根目录,可以包含多个子目录和文件。通过将不同的文件系统挂载到不同的挂载点,可以组织和管理文件系统中的目录结构。

底层原理

1、文件系统的数据结构:文件系统使用特定的数据结构来组织和管理文件和目录。这些数据结构包括目录树、索引节点(inode)、超级块(superblock)等,用于存储文件的元数据(如权限、创建时间、修改时间等)和数据。
2、目录结构的虚拟化:文件系统命名空间通过虚拟化技术将物理文件系统的目录结构映射到逻辑上的命名空间中,使得用户可以以更直观的方式来访问和管理文件和目录。这种虚拟化是基于文件系统的数据结构实现的。
3、文件和目录的访问控制:文件系统通过访问控制列表(ACL)或权限位等方式来实现对文件和目录的访问控制。不同用户和组拥有不同的权限,可以执行不同的操作,从而保证了文件系统的安全性和完整性。
4、文件系统的缓存机制:文件系统使用缓存技术来提高文件和目录的访问速度。在缓存中,常用的文件和目录被保存在内存中,以便更快地被访问和使用。
5、文件系统的持久化存储:文件系统将数据存储在硬盘或其他持久化存储设备中,以便在系统重启后仍能继续使用。文件系统负责维护和管理存储设备的空间,包括分区、格式化、挂载等操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值