🏆服务管理系统和内核调优与磁盘
systemd 守护进程管理linux启动。它可在系统引导时以及运行中单独系统激活系统资源,服务器守护经常和其他进程
守护经常时在执行各种任务的后台等待或运行的进程。一般情况下在系统应道时自动启动并持续运行,至关机或手动停止,大多数守护进程都是以d结尾
在红帽中第一个启动的进程PID 为 1,也就是systemd
描述服务单元
systemd使用单元来管理不同类型的对象
使用systemctl -t [type] && systemctl list-units --type=[type] 显示可用的单元类型服务
type:
serivce 定系统服务
target 模拟运行界别
device 定义内核识别的设备
mount 定义文件系统挂载点
socket 用于标识进程间通讯
swap 用于管理swap设备
automount 用于实现文件系统自动挂载
path 定义文件系统的文件和目录
[root@abc ~]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
LOAD systemd是否正确接卸了单元的配置,并将该单元加载到内存中
ACTIVE 单元的高级别激活状态,此信息表明单元是否已经成功
SUB 单元的低级别激活状态,信息视单元类型、状态以及单元的执行方式而异
systemctl list-unit-files 查看所有已安装单元文件下次开机的状态
stat类型:
enabled 系统引导时启动
disabled 未设置未系统应道时启动
static 无法启动,但是可用由其他启动等待单元引导启动
masked 无法启动,也无法被其他单元引导启动
屏蔽服务设置访问开机时启动或不启动
mask 和disable 区别在于disable 只是在开启时不会自动启动,但是还是可手动启动,但是mask不能手动启动也无法开机启动
systemctl mask [service] 为了防止系统服务之间冲突,可用屏蔽某个服务,防止管理意外启动与其他服务冲突
systemctl unmask [service] 取消屏蔽服务
列出服务的依赖性
systemctl list-dependencies [service]
[root@abc ~]# systemctl list-dependencies sshd
sshd.service
● ├─system.slice
● ├─sshd-keygen.target
● │ ├─sshd-keygen@ecdsa.service
● │ ├─sshd-keygen@ed25519.service
● │ └─sshd-keygen@rsa.service
● └─sysinit.target
● ├─dev-hugepages.mount
● ├─dev-mqueue.mount
target-systemd目标
target用来模拟运行级别,
以前运行级别 :
0 关机
1 单用户【找回丢失密码】
2 多用户状态没有网络服务
3 多用户状态有网络服务
4 系统未使用保留给用户
5 图形界面
6 系统重启
graphical.target 系统支持多用户、图形和基于文本的登录
multi-user.target 系统支持多用户、基于文本的登录
rescue.target 系统初始化已经完成,需要root账户登录
emergency.target 只读挂载根文件系统,需要root账户登录
poweroff.target 关机
reboot.target 重启
切换运行级别 systemctl isolate [target]
runlevel 查看当前运行级别
设置下次开机的启动级别
systemctl set-default [target]
systemctl get-default 下课下次开机的级别
系统启动
系统启动流程
一、BIOS开机自检POST,初始化部分硬件
1.硬件检测
2.选择合适的引导设备
二、引导部分 GRUB2
1.读取引导设备的启动扇区
MBR模式 + BIOS
GPT模式 (大于硬盘2TB就使用GPT模式) + UEFI
1扇区=512Byte字节
446字节引导程序+16*4分区表+2个字节的结束位 = 512Byte
2. Grub2读取引导程序的配置文件boot loader,将系统权限交给boot loader, Grub2,引导程序是系统的固定的代码
/boot/grub2/grub.cfg
grub2-install 在磁盘中安装grub2作为boot loader
grub.cfg配置文件由/etc/grub.d/、/etc/default/grub和grub-mkconfig命令配置
3. 根据配置文件,加载内核,加载ramdisk文件或者initramfs文件,并放入内存中
4. boot loader将控制权交给内核,内核在initramfs/ramdisk 中找到所有硬件驱动程序,并初始化这些硬件,/sbin/init 以PID 1 来启动,/sbin/init是指向systemd的链接
5. initramfs 中的systemd会执行initrd.target目标所有单元,将文件系统挂载至/sysroot
6. 内核将文件系统切换至/sysroot中的根文件系统,随后systemd会使用磁盘中安装完成的systemd来重新执行
7. systemd会查找默认启动目标,还会启动一个基于文件登录或者图像登录的jie'mian
initramfs :
Initramfs 原理和实践 - wipan - 博客园 (cnblogs.com)
Grub2
查看默认启动内核
[root@abc ~]# grubby --default-kernel
/boot/vmlinuz-4.18.0-80.el8.x86_64
[root@abc ~]# grubby --info=/boot/vmlinuz-4.18.0-80.el8.x86_64
index=0
kernel="/boot/vmlinuz-4.18.0-80.el8.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet $tuned_params"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-4.18.0-80.el8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (4.18.0-80.el8.x86_64) 8.0 (Ootpa)"
id="ca9f6f36b2e34d40819f1773bbb639c3-4.18.0-80.el8.x86_64"
内核参数定义在/etc/default/grub中
[root@abc ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
修改后,需要更新grub2的配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
也可以使用命令修改
grubby
--args= 添加参数
--remove= 删除参数
内核
修改内核文档可用下载kernel-doc
多个内核版本可用共存
/boot/vmlinuz-version 启动时用到的内核
/boot/initramfs-version.img 启动时提供必要的内核
/lib/modules/version 内核模块
proc 目录
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。
为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。
大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。
/porc/[PID号] 进程信息
/proc/cpuinfo cpu信息
/proc/meninfo 内存信息
/proc/partition 磁盘信息
如果需要修改内核参数由以下几种办法:
sysctl修改
-w [参数] 临时修改
1.当前生效的内核参数文件在/proc/sys下,也就是说你想临时生效可用使用echo > 重定向来修改,不嫩使用vim直接修改
[root@abc sys]# pwd
/proc/sys
[root@abc sys]# ls
abi crypto debug dev fs kernel net user vm
2.sysctl -a 命令可用查看所有可配置的内核参数
3.如果想要长期生效,休要配置/etc/sysctl.conf和/etc/sysctl.d/内的配置文件,其中后者是可以自己配置定义配置的
[root@abc ~]# cat /etc/sysctl.conf
修改完成使用sysctl -p /etc/sysctl.conf 或者 /etc/sysctl.d/*.conf
tunned
tuned也可以做性能你调优他的文件唯有/usr/lib/tunned下
tuned-adm recommend 查看推挤的调优配置文件
tunned-adm profile [参数] 修改调优配置文件
磁盘
linux系统中提供一个可访问这些设备的目录/dev,下面有访问各个设备的接口,里面并不是存放设备的驱动和真正的磁盘
使用ll /dev/ 查看dev目录下的设备
crw-------. 1 root root 243, 0 Sep 14 02:13 nvme0
一般文件 所属用户和组后面接的是文件的大小如果是设备后面显示的就是
major 主版本号 标识设备类型
243
245
8
4
minor 次版本号 文件编号
分区编号,假如你电脑有3块硬盘,那么第一块硬盘为0、第二块为16、第三块为31,也就是说一块硬盘支持15给个分区
实验1:
把/dev/下的磁盘文件删除了,不可以分区了,怎么恢复?
[root@abc ~]# rm -rf /dev/nvme0n2
[root@abc ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 100G 0 disk
├─nvme0n1p1 259:1 0 300M 0 part /boot
└─nvme0n1p2 259:2 0 99.7G 0 part
├─rhel-root 253:0 0 75.8G 0 lvm /
├─rhel-swap 253:1 0 4G 0 lvm [SWAP]
└─rhel-home 253:2 0 20G 0 lvm /home
nvme0n2 259:3 0 5G 0 disk
[root@abc ~]# mknod /dev/nvme0n2 b 259 3
[root@abc ~]# mkfs.xfs -f /dev/nvme0n2
破解密码
1. 开机菜单按e
2.再到linux哪一行,在末尾加上rd.break 安装ctrl+x
3.以读写方式重新挂载根
mount -o remount,rw /sysroot
4.切换到真正的根下面
chroot /sysroot
5.修改密码
passwd
6创建一个隐藏文件
touch /.autorelabel
.autorelable文件 下次重启系统时,它会自动重新标记SElinux的文件系统.
这通常在首次为SELinux标记文件系统时,或者在不同类型的策略之间切换时发生,例如从目标策略更改为严格策略.
一般用在shell层,重新定义selinux为非启动状态,否则重置ROOT密码无法生效。
纯手打希望采纳。
修复 grub.cfg
grub.cfg文件损坏或者丢失,导致系统无法正常启动:
重启系统进入grub视图
set root = "hd0 msdosl"
linux /[内核文件](一般未boot目录下 ro(只读) root=目录所在磁盘
initrd /boot/[ramdisk/initrd文件].img
boot
grub2-mkconfig -o /boot/grub2/grub.cfg