Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例


有很多文章都介绍了在应用层面怎么调用 CLONE 的参数来进行 namespace 隔离,于是好奇 namespace 在 kernel 层面是怎么实现的,比如 kernel 需要做哪些改动来提供 namespace 的功能。


应用层面进行namespace隔离的方法

对于应用程序,例如 docker, 可以通过调用 clone(), unshare(), setns() 来对 namespace 进行操作。Coolshell 有几篇通俗易懂的文章可供详细了解[1].
继续阅读“Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例”

2018曼谷 - 带我妈去旅行


由于工作变动,空出来一周的时间,决定回趟家顺便带我妈去趟旅游。之前我妈说想去泰国,而我也想找个温暖点的地方。所以临时制定泰国旅行计划。

机票

要带家人出去旅游,就不能用穷游的那一套了。有这么些限制条件:
1. 我要先回家,跟我妈一起去。
2. 有行李箱托运,廉航可能会更贵。
3. 避开红眼航班。
继续阅读“2018曼谷 - 带我妈去旅行”

EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?

问题


- 一个有两张网卡的 EC2 instance (RHEL7.5),每个网卡分别对应一个public subnet, 每个网卡也关联一个 Public IP.
- 从其他网络 ping 这两个 IP 地址,发现其中一个IP能ping通,另一个IP不能ping通。

[ec2-user@ip-172-31-30-14 ~]$ ping 52.80.82.70 -c2
PING 52.80.82.70 (52.80.82.70) 56(84) bytes of data.
64 bytes from 52.80.82.70: icmp_seq=1 ttl=63 time=1.71 ms
64 bytes from 52.80.82.70: icmp_seq=2 ttl=63 time=1.80 ms

[ec2-user@ip-172-31-30-14 ~]$ ping 52.81.2.166 -c2
PING 52.81.2.166 (52.81.2.166) 56(84) bytes of data.

--- 52.81.2.166 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1004ms

继续阅读“EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?”

为什么 EC2 上的根文件系统在启动时会自动扩大到 EBS 的大小?

问题

- 在 Launch 一个新的 instance 的时候,默认根盘的大小是8G。如果指定更大的大小,比如20G,在启动系统时,我们可以发现根文件系统的大小会自动变成 20G,而无需手动执行 resizefs/xfs_grow 之类的操作。
- 如果后期加大根盘EBS的大小,重新启动系统时,根文件系统也会自动扩大。
- 为什么?是什么软件或者机制实现的这个效果?
继续阅读“为什么 EC2 上的根文件系统在启动时会自动扩大到 EBS 的大小?”