Linux Namespace和Cgroup

2017-06-10
阅读 1 分钟
30k
为了方便阅读,将自己写的所有关于namespace和cgroup的文章统一列在这里,希望对有需要的人有所帮助,后续有新的内容后将会更新这里的列表。

Linux虚拟网络设备之bridge(桥)

2017-05-20
阅读 21 分钟
105.8k
首先,bridge是一个虚拟网络设备,所以具有网络设备的特征,可以配置IP、MAC地址等;其次,bridge是一个虚拟交换机,和物理交换机有类似的功能。

Linux虚拟网络设备之veth

2017-05-01
阅读 8 分钟
73.9k
有了上一篇关于tun/tap的介绍之后,大家应该对虚拟网络设备有了一定的了解,本篇将接着介绍另一种虚拟网络设备veth。 veth设备的特点 veth和其它的网络设备都一样,一端连接的是内核协议栈。 veth设备是成对出现的,另一端两个设备彼此相连 一个设备收到协议栈的数据发送请求后,会将数据发送到另一个设备上去。 下面这...

Linux虚拟网络设备之tun/tap

2017-04-30
阅读 6 分钟
99.8k
在现在的云时代,到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,所以了解虚拟网络设备有利于我们更好的理解云时代的网络结构。从本篇开始,将介绍Linux下的虚拟网络设备。

Linux session和进程组概述

2017-04-21
阅读 5 分钟
15.8k
session的主要特点是当session的leader退出后,session中的所有其它进程将会收到SIGHUP信号,其默认行为是终止进程,即session的leader退出后,session中的其它进程也会退出。

Linux TTY/PTS概述

2017-04-16
阅读 14 分钟
50.9k
当我们在键盘上敲下一个字母的时候,到底是怎么发送到相应的进程的呢?我们通过ps、who等命令看到的类似tty1、pts/0这样的输出,它们的作用和区别是什么呢?

netfilter/iptables简介

2017-04-12
阅读 9 分钟
19.3k
netfilter和iptables是什么关系?常说的iptables里面的表(table)、链(chain)、规则(rule)都是什么东西?本篇将带着这些疑问介绍netfilter/iptables的结构和相关概念,帮助有需要的同学更好的理解netfilter/iptables,为进一步学习使用iptables做准备。

SSL/TLS及证书概述

2017-04-09
阅读 10 分钟
25.6k
每次配置HTTPS或者SSL时,都需要指定一些cacert,cert,key之类的东西,他们的具体作用是什么呢?为什么配置了他们之后通信就安全了呢?怎么用openssl命令来生成它们呢?程序中应该如何使用这些文件呢?

Linux网络 - 数据包的发送过程

2017-04-02
阅读 7 分钟
37.9k
socket(...): 创建一个socket结构体,并初始化相应的操作函数,由于我们定义的是UDP的socket,所以里面存放的都是跟UDP相关的函数

Linux网络 - 数据包的接收过程

2017-03-26
阅读 8 分钟
73.1k
本示例里列出的函数调用关系来自于kernel 3.13.0,如果你的内核不是这个版本,函数名称和相关路径可能不一样,但背后的原理应该是一样的(或者有细微差别)

IPv6简介

2017-03-22
阅读 13 分钟
19.1k
全球的IP地址由一个名字叫IANA(Internet Assigned Numbers Authority)的机构管理,在它下面有5个分管机构,名字叫分别叫AFRINIC、APNIC、ARIN、PIPE NCC和LACNIC,他们分别负责全球五个不同地区的IP地址分配,中国就归APNIC管。

网络分层概述

2017-03-18
阅读 11 分钟
8.1k
市面上有很多介绍网络是怎么分层的,及每层负责些什么的书,但很少看到有书介绍为什么要这么多分层。 本篇将试着从分层是怎么来的这个角度分析一下网络是如何一步一步发展到今天这样的,希望对网络初学者有所帮助。 注意:内容是根据自己已有的网络知识构思出来的,可能跟实际情况有出入,仅供参考。 本文采用TCP/IP详解...

Btrfs文件系统之subvolume与snapshot

2017-03-07
阅读 7 分钟
14.7k
对于大部分文件系统来说,在磁盘上创建好文件系统,然后再挂载到系统中去就完事了。但对于Btrfs来说,除了在格式化和挂载的时候指定不同的参数外,还支持很多其他的功能,比如管理多块硬盘,支持LVM和RAID等,具体的可以参考它的官方文档或者Linux下常见文件系统对比

Linux文件系统之aufs

2017-02-26
阅读 6 分钟
24.7k
aufs的全称是advanced multi-layered unification filesystem,主要功能是把多个文件夹的内容合并到一起,提供一个统一的视图,主要用于各个Linux发行版的livecd中,以及docker里面用来组织image。

Linux下常见文件系统对比

2017-02-25
阅读 4 分钟
20.4k
本文将对Linux下常见的几种文件系统进行对比,包括ext2、ext3、ext4、XFS和Btrfs,希望能帮助大家更好的选择合适的文件系统。

Linux虚拟文件系统简介

2017-02-24
阅读 10 分钟
6.4k
对应用层来说,只要和VFS打交道就可以了,VFS对外提供了read,write等接口,应用层程序不需要关心底层具体的的文件系统是怎么实现的。

Linux Cgroup系列(05):限制cgroup的CPU使用(subsystem之cpu)

2017-02-12
阅读 4 分钟
45.4k
其中cpuset主要用于设置CPU的亲和性,可以限制cgroup中的进程只能在指定的CPU上运行,或者不能在指定的CPU上运行,同时cpuset还能设置内存的亲和性。设置亲和性一般只在比较特殊的情况才用得着,所以这里不做介绍。

Linux CPU使用率

2017-02-11
阅读 4 分钟
11.1k
这里的load average以及缩写的us、sy、ni、id、wa、hi、si、st都是些什么意思呢?这些值在一个什么样的区间比较合理呢?如果值超过了合理区间,应该怎么处理呢?这篇将来聊聊这些问题。

Linux OOM killer

2017-02-06
阅读 5 分钟
23.2k
作为Linux下的程序员,有时不得不面对一个问题,那就是系统内存被用光了,这时当进程再向内核申请内存时,内核会怎么办呢?程序里面调用的malloc函数会返回null吗?

Linux Cgroup系列(04):限制cgroup的内存使用(subsystem之memory)

2017-01-15
阅读 14 分钟
63k
代码总会有bug,有时会有内存泄漏,或者有意想不到的内存分配情况,或者这是个恶意程序,运行起来就是为了榨干系统内存,让其它进程无法分配到足够的内存而出现异常,如果系统配置了交换分区,会导致系统大量使用交换分区,从而系统运行很慢。

Linux交换空间(swap space)

2017-01-15
阅读 9 分钟
52.4k
每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的知识。

Linux进程的内存使用情况

2017-01-15
阅读 8 分钟
24.9k
在linux下,使用top,ps等命令查看进程的内存使用情况时,经常看到VIRT,RES,SHR等,他们都代表什么意思呢?不同的大小对进程有什么影响呢?这篇文章将来聊一聊这个问题。阅读本篇前建议先阅读Linux内存管理,了解一些Linux下内存的基本概念,如什么是anonymous和file backed映射等。

Linux内存管理

2017-01-15
阅读 8 分钟
25.2k
在linux下,使用top,vmstat,free等命令查看系统或者进程的内存使用情况时,经常看到buff/cache memeory,swap,avail Mem等,他们都代表什么意思呢?这篇文章将来聊一聊Linux下的内存管理并解答这个问题。

Linux Cgroup系列(03):限制cgroup的进程数(subsystem之pids)

2016-11-13
阅读 6 分钟
19.1k
注意:这里的task指通过fork和clone函数创建的进程,由于clone函数也能创建线程(在Linux里面,线程是一种特殊的进程),所以这里的task也包含线程,本文统一以进程来代表task,即本文中的进程代表了进程和线程 本篇所有例子都在ubuntu-server-x86_64 16.04下执行通过

Linux Cgroup系列(02):创建并管理cgroup

2016-10-21
阅读 7 分钟
29.4k
本文将创建并挂载一颗不和任何subsystem绑定的cgroup树,用来演示怎么创建、删除子cgroup,以及如何往cgroup中添加和删除进程。

Linux Cgroup系列(01):Cgroup概述

2016-09-16
阅读 10 分钟
47.5k
cgroup和namespace类似,也是将进程进行分组,但它的目的和namespace不一样,namespace是为了隔离进程组之间的资源,而cgroup是为了对一组进程进行统一的资源监控和限制。

Linux Namespace系列(09):利用Namespace创建一个简单可用的容器

2016-09-15
阅读 5 分钟
11.4k
本文将演示如何利用namespace创建一个完整的容器,并在里面运行busybox。如果对namespace不是很熟悉,请先参考前面几遍介绍不同类型namespace的文章。

Linux Namespace系列(08):user namespace (CLONE_NEWUSER) (第二部分)

2016-09-15
阅读 9 分钟
10.6k
权限涉及的范围非常广,所以导致user namespace比其他的namespace要复杂; 同时权限也是容器安全的基础,所以user namespace非常重要。

Linux Namespace系列(07):user namespace (CLONE_NEWUSER) (第一部分)

2016-09-15
阅读 11 分钟
14.4k
user namespace可以嵌套(目前内核控制最多32层),除了系统默认的user namespace外,所有的user namespace都有一个父user namespace,每个user namespace都可以有零到多个子user namespace。 当在一个进程中调用unshare或者clone创建新的user namespace时,当前进程原来所在的user namespace为父user namespace,新的us...

Linux Namespace系列(06):network namespace (CLONE_NEWNET)

2016-09-15
阅读 6 分钟
14k
network namespace用来隔离网络设备, IP地址, 端口等. 每个namespace将会有自己独立的网络栈,路由表,防火墙规则,socket等。