免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3940 | 回复: 11
打印 上一主题 下一主题

[内核入门] linux的命名空间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-06-20 15:30 |只看该作者 |倒序浏览
大家好!
我有一个问题想请教一下各位。
linux的命名空间确切的说是什么意思?查了好多资料,都说是虚拟化的一种,为了更好的分配全局资源。我一直不理解这是什么意思,希望大家能解释一下。

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
2 [报告]
发表于 2016-06-20 17:36 |只看该作者
其实就是内核里面的数据结构。说白了就是内核里面的 cgroups.
也就是说,通过 cgroups, 内核将呈现不同的进程/进程组视图,当然,除了进程/进程组之外,还有其它的资源。
内核控制的一切都是资源。然后,通过 cgroups,内核将这些资源呈现为不同的视图。然后,《深入理解linux内核构架》一书中,将这种内核能够将所有的资源划分开,呈现不同视图的能力和机制,称为容器。一个视图就是一个容器。
也就是说,cgroups 企图将所有的资源进行划分和隔离。
那么内核既然提供了这种机制,就有系统调用来使用内核的这种机制/特性/能力。应用层通过系统调用,或者/proc /sys接口,来使用内核的这种机制。这也就使得,在应用层划分资源、隔离资源成为可能。所谓的 docker 就是干这件事情的。没看见现在的 docker 很火嘛。说白了docker是个使用内核 cgroups 能力的应用程序,它企图在应用层将系统的资源隔离,每个内核里面的视图映射为一个跑在 docker 上的虚拟机。由于没有 vmware 之类的虚拟层,当然性能就好;但是 cgroups 是有它的局限性的,很明显,cgroups 只是“企图”将所有的资源进行划分和隔离。

说真的我不喜欢 cgroups. 虚拟化什么的其实让 vmware 之类的去干就好了。企图在内核里面什么都搞定,个人觉得这是荒谬的。
麻烦的是,cgroups 明显让内核的数据结构复杂了。这不用说。这让内核的初学者,甚至有一些经验的老菜鸟(啊,其实我连菜鸟都不算。。。)在无关的数据结构上耗费精力。比如你明明只是想看进行 fork 怎么干的,它特么给你来插一段乱七八糟的 cgroups 代码。更麻烦的是,如果内核总是增加各种乱七八糟越来越复杂的机制和特性的话,会让内核成为一堆难以维护的 mess (当然现在已经是了,我这种菜鸟是搞不定的).

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
3 [报告]
发表于 2016-06-20 17:58 |只看该作者
哦,对了。docker还导致原来的init要换成systemd.
虽然虚拟化什么的大势所趋,不过 linux 作为一个 monothetic kernel, 真的不要干太多了,特性特么不要太丰富了好嘛!这特么让我这种怕麻烦的人怎么看kernel代码!
以后就让你几个黑客老爷子玩儿kernel去!玩儿蛋去!艹特么的。

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
4 [报告]
发表于 2016-06-21 11:31 |只看该作者
樓上觀點明確,鄙人不敢溝通。其實就是Docker火起來後才對這個進行優化的。

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
5 [报告]
发表于 2016-06-21 13:40 |只看该作者
回复 4# qianguozheng


    大哥,我就吐槽下。难道你不觉得 kernel 越来越复杂是坏事嘛。不先学个十年八年kernel,谁能维护那玩意。

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
6 [报告]
发表于 2016-06-21 16:35 |只看该作者
回复 5# captivated


    我覺得吧算法本來就複雜。其實,linux複雜了對你來說是個機會,你寫一個比Linux簡單的內核,你就出名啦,後半輩子就不用怎麼工作了。

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
7 [报告]
发表于 2016-06-22 19:07 |只看该作者
“命名空间”简单的可以理解为全局数据结构的局部化。
比如network namespace,之前的arp_tbl是个全局变量,现在变成了per namespace的变量了。

不过这跟cgroup不完全一样。

论坛徽章:
3
双鱼座
日期:2013-09-04 19:47:39天蝎座
日期:2013-12-11 20:30:532015年亚洲杯之澳大利亚
日期:2015-04-20 00:28:02
8 [报告]
发表于 2016-06-24 11:05 |只看该作者
回复 2# captivated


    不懂就不要胡说八道。链cgroup和ns都没分清楚,就老老实实去读代码去

论坛徽章:
3
双鱼座
日期:2013-09-04 19:47:39天蝎座
日期:2013-12-11 20:30:532015年亚洲杯之澳大利亚
日期:2015-04-20 00:28:02
9 [报告]
发表于 2016-06-24 11:07 |只看该作者
回复 1# 12MHz_CPU

https://lwn.net/Articles/531114/        看下这一系列的lwn文档,跟着实践一下。你就有一个深刻的理解。


   

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
10 [报告]
发表于 2016-06-28 11:28 |只看该作者
回复 8# kiongf


    不好意思记错了。不过也就是 struct nsproxy 而已么,还不是差不多。
    反正容器的实现在内核中就是 cgroup + ns 这两数据结构搞出来的,总没错吧。
    我干嘛要那么老实地读内核代码,我能找到我想看的代码在哪,知道大概的意思是那么个意思不就行了嘛。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP