Linux 系统配置

2019-09-27 linux

一些与 Linux 系统配置相关的介绍。

Swap

在 Linux 中的 swap 分区就是交换分区,当物理内存不够用时,操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区,从而为当前运行的程序留出足够的物理内存空间。

而在此阶段性能表现会变差,减慢程序执行的速度,所以,有些软件就不想使用 swap 分区,例如 kubelet 在 1.8 版本以后强制要求 swap 必须关闭,否则会有类似 running with swap on is not supported. Please disable swap 的报错。

----- 在CentOS中默认包含在util-linux包
# yum install util-linux

----- 查看当前Swap的使用情况
# free -g
----- 确认当前swap是否开启以及磁盘位置
# swapon -v
----- 临时开启、关闭swap
# swapon -a
# swapoff -a

如果要永久关闭,那么查看 /etc/fstab 中与 swap 相关的记录注释掉即可。

Sysctl

很多的内核参数可以通过 sysctl 进行配置,如下是常用的命令。

----- 查看当前某个参数值
$ sysctl vm.max_map_count
$ cat /proc/sys/vm/max_map_count

----- 临时修改,重启后会失效
# sysctl -w vm.max_map_count=2000000
# echo "2000000" > /proc/sys/vm/max_map_count

----- 修改配置文件持久化,再通过 sysctl -p 加载
# cat /etc/sysctl.conf
vm.max_map_count=2000000

也就是说,如果要持久化参数,那么可以先修改 /etc/sysctl.conf 配置,然后再通过 sysctl -p 加载,不过有些发行版本引入了 systemd-sysctl 用来管理系统配置,例如 CentOS7 。

这样就需要通过 /etc/sysctl.d 目录下的文件修改用户配置,会按照文件名的顺序优先级加载,所以通常以 00-vm.conf 类似的命令方式,可以类似如下方式指定。

# echo "vm.max_map_count = 2000000" > /etc/sysctl.d/00-vm.conf

从 2013 年左右,原 /etc/sysctl.conf 就被废弃了,此时 systemd-sysctl 服务会无视该选项,一般为了兼容会将 99-sysctl.con 符号链接到了 /etc/sysctl.conf 配置文件,也就是其优先级最高。另外,在 /etc/sysctl.d/ /run/sysctl.d/ /usr/lib/sysctl.d/ 三个目录中都可以保存配置文件,如果不重名则统一按照优先级加载,如果重名则前面的配置文件会覆盖后面的配置文件。

修改完之后可以通过 systemctl restart systemd-sysctl 命令重新加载验证是否生效。

注意,仍然可以通过 sysctl --system 使用 /etc/sysctl.conf 配置项。