一、1、内核的功能
系统初始化:检测硬件资源并启动
系统进程调度:决定进程什么时候运行以及运行多久
内存管理:给运行的进程分配内存
安全:支持权限,selinux和防火墙规则
提供 buffers和cache 加速硬件访问
支持标准网络协议和文件系统
2、内核的组成
在 Linux中多个版本的内核是可以共存的在/boot 目录下
内核以vmlinuz-xxx 开头 主文件
initramfs-xxx 内核启动过程中所需要驱动和模块
因此 vmlinuz-5.14、iniramfs-5.14 是成对出现的
内核模块存放的路径/usr/lib/modules/version
内核模块的文件通常以 .ko.xz 或者是 .ko 结尾
3、系统运行中的状态:
/proc 虚拟文件系统
/proc/PID 查看进程的PID
/proc/cpuinfo 查看CPU 的信息
/proc/partitions 查看磁盘信息
调整内核参数:
调整内核参数,可以让内核更好的实现某一类功能,或者让一个程序的运行状态更优
sysctl-a 查询已经生效的内核参数
临时修改内核参数:
sysctl net.ipv4.ip_forward=1
永久修改内核参数:
vim /etc/sysctl.d 或者是 /etc/sysctl.conf
net.ipv4.ip_forward=1
调整内核参数是可以达到优化系统的目的
一键调整内核参数的工具(系统优化工具):
tuned 一键按场景调优工具
yum install tuned -y 安装
将 tuned 预定义的应用场景称为调优配置集
tuned-adm list 列出所有的配置集
tuned-adm recommend 用来查看tuned推荐的调优配置集
tuned-adm profile virtual-host 设置为指定的调优配置集
4、定制调优配置集
cp -r /usr/lib/tuned/virtual-guest /usr/lib/tuned/rhce-test
修改目录下的 tuned.conf
文件调优的核心思想:
调优的效果与成本成反比???钱花的越多,效果越好???
架构调整 ——> 效果最好最明显 成本最高
硬件升级 ——> 效果较好 成本较高
优化代码 ——> 效果较差 成本较低
优化配置 ——> 效果最差 成本最低
5、系统的设备文件:
/dev 目录存放的不是真正的设备,存放的是设备的接口文件,系统是通过dev下的文件来进行设备的访问
例如块设备 主版本号 次版本号
主版本号 可以帮助系统确定设备的类型
次版本号 通常是序列也就是文件的编号
mknod 接口文件的名称 类型 主版本号 次版本号
内核模块:
将内核动态加载的功能称为模块,内核模块可以给内核提供特定的能力,通过模块化,可以最大限度的避免,因为模块冲突造成的内核崩溃的问题;并且内核模块可以减少内核的空间占用,用时加载
查看系统正在使用的模块 lsmod
查看模块的详细信息 modinfo
手动加载模块 modprobe
手动卸载模块 modprobe -r
二、磁盘管理:
磁盘分区有两种分区方案:
基于MBR 分区表:
分区类型:主分区 扩展分区 逻辑分区
容量大小:单块磁盘或者阵列不能超过 2T
分区数量:主分区+扩展分区不能超过4个
常规业务网站、数据库
分区技巧:先分主分区,前面三个都是主分区;最后分扩展分区,然后从扩展分区中分出逻辑驱动器;逻辑驱动器的所有容量都来自于扩展分区,对于 MBR,如果最后一个扩展分区,没有将容量分完,则剩余的容量浪费了,无法创建新的分区
分区表:存放在硬盘的前512字节中
基于 GPT分区表:
分区类型:主分区
容量大小:最大支持 8z
分区数量:支持 128 个分区
应用场景:图片、监控视频、非结构化数据
分区表: 分区表 备份
分区工具:
parteo 最好不要使用
parted 对于分区做出的修改是立即生效的
交互式分区:
parted /dev/nvme0n2
mklabel 创建分区表
mkpart 创建分区
免交互分区:
parted /dev/nvme0n2 mkpart primary xfs 2G 5G
fdisk 通常只能分MBR的分区,从RHEL8开始也可以分GPT
fdisk
-l 查看磁盘的分区情况
-n 创建分区
-p 打印分区
-d 删除分区
-o 创建MBR的分区表
M 将GPT转成MBR
w 保存
q 退出
gdisk 只创建GPT的分区表
专门用来给 GPT磁盘进行分区
操作和 fdisk 类似
注意:如果 fdisk和 gdisk分完区后看不到磁盘,则使用磁盘分区表刷新工具,让内核读取新的分区表,这是因为内核在系统中读取的是硬盘旧的分区表,将导致新的分区在系统中无法识别,因此要刷新磁盘分区表让内核重新读取
partprobe 将系统中所有块设备的分区表更新
partx /dev/nvme0n2 单独刷新某一个磁盘的分区表
重启操作系统让内核重新读取分区表
三、1、文件系统的创建:
mkfs ——> make filesystem 格式化就是在创建文件系统
mkfs.文件系统类型 设备
mkfs -t 文件系统类型 设备
2、文件系统的挂载:
mount 设备挂载点
如果将某一个目录作为挂载点,则该目录下最好不要存放文件,存放也没有意义因为该文件会失去访问入口(原来目录中的文件,不会删除也不会覆盖,只是无法访问)
mount UUlD 挂载点
UUID是文件系统的标识符,只有当设备上存在文件系统时,才会有UUID;也就是格式化会产生UUID,查看系统中块设备 UUID,使用 blkid 命令
mount -L 卷标 挂载点
xfs的文件系统卷标
设置 xfs_admin -L“卷标名称” 文件系统
删除 xfs admin -L“__”文件系统
ext的文件系统卷标
设置: e2label 文件系统 卷标
删除: e2label 文件系统 ' '
挂载选项:
mount
-r 只读挂载
-t 文件系统的类型网络文件系统 nfs、cifs 其他文件系统 nfsx
-w 读写挂载默认就是读写挂载\
-a 将/etc/fstab中允许自动挂载的条目且当前没有挂载的进行挂载
-o 指定额外的挂载选项
async:异步模式了
sync:同步模式
atime/noatime: 是否更新 atime,包含目录和文件
auto/noauto: 是否支持自动挂载
exec/noexec: 是否支持文件系统上的可执行文件运行
dev/nodev: 是否支持在此文件系统上使用设备文件
suid/nosuid: 是否支持suid 的权限
remount: 重新挂载
ro/rw: 只读或者读写挂载
user/nouser: 是否允许普通用户挂载此设备
defaults: 默认挂载选项,是rw, suid,dev,exec,auto,nouser, and async 的组合
3、通过 mount 查看挂载的选项
开机自动挂载:
/etc/fstab 在 fstab 文件中定义的条目将在开机时自动挂载
fstab 的格式:
文件系统 挂载点 文件系统类型 挂载选项 转存频率 是否检查文件系统的错误
/dev/nvme0n2p2 /test xfs defaults 00
文件系统:可以是UUID也可以是设备还可以是卷标
挂载点:挂载的目录
文件系统类型: 文件系统的类型比如xfs ext4、ext3
defaults:默认的挂载选项
0 : 转存频率 是否开启文件系统备份 0不备份 1备份
0 : 检查文件系统错误 只能检查ext的文件系统错误,因为使用的是fsck 扫描
测试挂载:
mount -a 将fstab中所有可以挂载但是当前没有挂载的文件系统挂载起来
mount 挂载点 将fstab中指定的条目进行挂载
卸载文件系统:
注意点: 卸载文件系统时,文件系统不能正在使用
查看正在使用文件系统的进程: fuser-v 挂载点
强制结束正在使用文件系统的进程:fuser -km 挂载点
卸载文件系统: umount 挂载点/文件系统
4、SWAP 交换分区:
交换分区,在操作系统中用来临时存储内存中的数据,操作系统会在硬盘上开辟一块区域,让其充当内存使用,以在系统资源紧张时;让用户运行更多的应用程序在 Linux 中将其称为 SWAP、在 windows 中将其称为虚拟内存
swap 的推荐大小:
2G 及2G 以下 设置为物理内存两倍
2G -8G之间 设置为同等的大小
8G-64G之间 至少要4G
大于 64G 4G 以上
配置 swap 的方式:
查看 swap:
free -m 查看当前生效的 swap 大小
swapon-s 查看提供swap的设备以及优先级
通过分区配置:
创建 2G的分区 ——>格式化为 swap——>挂载 swap
fdisk /dev/nvme0n2
mkswap /dev/nvme0n2p3
swapon UUD="391890e3-16de-4a37-8e4d-bb645a2568e6
通过文件配置:
在 opt 下创建一个 26 大小的 swap.img 文件
dd if=/dev/zero of=/opt/swap.img bs=1G count=2
格式化成 swap
mkswap /opt/swap.img
swapon /opt/swap.img