Linux的内核

内核时操作系统的核心部分
内核的功能:

  • 系统初始化:检测硬件资源并启动
  • 进度调度
  • 内存管理:给运行的进程分配内存
  • 安全:支持权限,selinux和防火墙规则
  • 提供buffers和cache加速硬件访问
  • 支持标准网络协议和文件系统

    虚拟文件系统显示信息

    进程信息:/proc/PID
    cpu信息:/proc/cpuinfo
    内存资源:/proc/meminfo
    磁盘信息:/proc/partition

    内核的组成

    image.png

    sysctl配置内核参数

    当前生效的内核参数在/proc/sys下
    内核参数配置文件/etc/syctl.conf和/etc/sysctl.d/*.conf,系统启动时读取
    sysctl命令使用:

  • 列出当前生效的所有内核参数:sysctl -a

  • 临时修改内核参数:sysctl -w net.ipv4.ip_forward=1
  • 使用配置文件生效:sysctl -p
  • image.png

    内存调优

    不能用vim来该内存中的数据,只能用echo来直接改
    /proc/sys
    sysctl -a 查看所有的可调优参数
    sysctl -w vm.drop_cacahes = 3
    echo 3 > /proc/sys/vm/drop_caches

    调优参数永久生效

    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 0
    sysctl -p /etc/sysctl.conf 使配置文件立即生效

Linux 本身可以作为路由器,来转发数据包
开启sysctl中的net.ipv4.op_forward = 1就能打开这个功能

调整调优配置文件

查看所有的调优配置文件 tuned-adm list
配置文件位于/usr/lib/tuned 目录下tuned.conf,修改配置文件后需要重启tuned服务
常用命令:

  • tuned-adm recommend 查看推荐的调优配置文件
  • tuned-adm profile virtual-guest 修改调优配置文件

    /dev/下面的设备

    /dev/目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,实际上是一个访问这些外部设备的接口。驱动都放在内核里面
    两种设备文件:

  • 块设备(b):/dev/sda,/dev/sdb,/dev./nvme0n1,/dev/nvme1n1

  • 字符设备(c) :/dev/null, /dev/zero

块设备的版本号

  • major:主版本号,表示设备类型
  • minor:次版本号,文件编号

创建设备文件:

  • mknod name type major minor

    内核模块

    linux内核时模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码。这些代码被一并组合在一个单独的二进制镜像,简称为模块。模块位于/lib/modules/version/

    模块机制的优点:

  • 减小基本内核镜像大小,可选的功能和驱动程序可以利用模块的形式再提供,增加系统的灵活性

  • 动态加载内核模块,扩展内核功能,不需要时卸载模块
  • 节省开发时间,修改内核,不必重新编译内核

    模块机制的缺点:

  • 使用不当会导致系统崩溃

    内核模块相关命令

    lsmod 查看系统已经加载的内核模块
    modinfo 模块名 查看内核模块的信息
    modprobe 模块名 加载内核模块
    modprobe -r 模块名 卸载内核模块