在CentOS系统中,我们如果想组建一个小型局域网,设定某些虚拟机是开启路由功能,但是重启以后路由转发功能失效并不能永久有效。linux一切皆文件正说明了这一点。下面说下如果更改内核参数。
一、/proc目录
内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出。
1、使用命令修改
(1)sysctl命令
sysctl - configure kernel parameters at runtime
使用格式
sysctl [options] [variable[=value]] [...]
sysctl -p [file or regexp] [...]
选项
-a,--all 显示可值
-p [FILE] --load[=FILE] 通过读取配置文件设置参数
-w,--write 设置某参数
注意:这样直接使用命令修改并不能永久生效。
示例:
[root@localhost~]#sysctl -a #查看所有参数
[root@localhost~]#sysctl -p #读取配置文件
/etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
修改内核参数
[root@localhost~]#cat /proc/sys/net/ipv4/ip_forward
0
[root@localhost~]#sysctl -w net.ipv4.ip_forward=1
[root@localhost~]#sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
注意:修改内核参数必须是proc/sys目录下的文件“/”–>”.” 然后赋值。
[root@localhost~]#echo 1 > /proc/sys/net/ipv4/ip_forward
注意:上述两种方法都不能永久有效。
(2)修改配置文件/etc/sysctl.conf 使其永久有效。
注意:修改完配置文件并不能立即生效,可以使用命令sysctl -p /etc/sysctl.conf
读取配置文件,使其生效。如果删除修改内核参数内容,重新读取,还是原来的配置信息,并不能生效;如果想使其生效,可以重新启动操作系统。
二、/sys目录
sysfs:为用户使用的伪文件系统,输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性。
udev通过此路径下输出的信息动态为个设备创建所需要设备文件,运行用户空间程序。
udev规则:
ACTION 事件的行为 例如add(添加设备)、
remove(删除设备)
KERNEL 在内核里看到的设备名字,比如sd*表示SCSI磁盘设备
DEVPATH 内核设备路径 比如/dev/*
SUBSYSTEM 子系统名字 例如sda的子系统为block
BUS 总线的名字,比如IDE ,USB
DEIVER 设备驱动的名字,比如ide-cdrom
ENV{key} 环境变量,可以表示任意
NAME 根据这个规则创建的设备文件的文件名
SYMLINK 为/dev/下设备文件产生符号链接
注意:只有第一行的NAME描述是有效,后面的均忽略;如果想要使用两个以上的名字来访问一个设备,可以使用SYMLINK键
(2)专用工具
udevadm - udev management tool
udev info -a -p /sys/* #查看设备内核基本信息
如果想更改设备信息,可以使用上述命令查询内核参数,然后在/etc/udev/rules.d、/usr/lib/udev/rules.d(CentOS7)下进行编辑文件
示例:
SUBSYSTEM=="block",KERNEL=="sdb",NAME="myusb",SYMLINK="wangusb"
注意:修改文件并不能立即生效。
udevadm trigger #使配置文件生效