linux中级
该文档使用的操作系统为:RockyLinux8.8,安装在VMware虚拟机内
硬盘管理
为虚拟机准备三块硬盘
同样操作,执行两次
计算机容量单位
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
…
计算机使用1024换算,硬盘厂商使用1000换算
硬盘的最小单位是扇区,一个扇区的大小是512字节
识别硬盘 => 分区规划 => 格式化 => 挂载使用
两种分区模式:MBR和GPT
MBR分区(主分区)
最大支持2.2TB以内的硬盘
固定大小64字节,一个分区16,64÷16=4
主分区的读写效率高于逻辑分区
扩展分区不能格式化,空间不能直接存储数据,扩展分区里面的逻辑分区,才能存储数据
能存储数据就是:主分区,逻辑分区
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 11.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part├─rl-root 253:0 0 17G 0 lvm /└─rl-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
nvme0n3 259:4 0 20G 0 disk
fdisk
对硬盘进行划分的命令:fdisk
输入 | 说明 |
---|---|
n | 创建新的分区 |
p | 查看分区 |
Ctrl+C | 取消 |
w | 保存并退出 |
[root@localhost ~]# fdisk /dev/nvme0n2欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x1f47a342 的新 DOS 磁盘标签。命令(输入 m 获取帮助):
分区步骤
n 新建分区
p 选择分区类型(最后一个分区要注意)
回车 分区号
回车 第一个扇区
+5G 设置分区容量,之间回车,会把剩下空间,全给它
p 查看,确认
w 保存,退出
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 11.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part├─rl-root 253:0 0 17G 0 lvm /└─rl-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
├─nvme0n2p1 259:7 0 3G 0 part
└─nvme0n2p2 259:8 0 6G 0 part
nvme0n3 259:4 0 20G 0 disk
刚刚对 nvme0n2
硬盘做了分区,分了两个区,nume0n2p1
和 nume0n2p2
刷新分区表
partprobe
格式化(二选一)
赋予空间,文件系统的过程
[root@localhost ~]# mkfs.
mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
.ext4
是 6
系列的,适合单个数据比较小,数量多;
.xfs
是 7
系列的,适合单个数据比较大,数量少
使用ext4文件系统
[root@localhost ~]# ls /dev/nvme0n2*
/dev/nvme0n2 /dev/nvme0n2p1 /dev/nvme0n2p2
[root@localhost ~]# mkfs.ext4 /dev/nvme0n2p1
mke2fs 1.45.6 (20-Mar-2020)
创建含有 786432 个块(每块 4k)和 196608 个inode的文件系统
文件系统UUID:5feedc43-6476-498a-bbc4-1382a385b51c
超级块的备份存储于下列块:32768, 98304, 163840, 229376, 294912正在分配组表: 完成
正在写入inode表: 完成
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成
格式化完成,就可以查看到UUID
,以及TYPE可以看到类型
[root@localhost ~]# blkid /dev/nvme0n2p1
/dev/nvme0n2p1: UUID="5feedc43-6476-498a-bbc4-1382a385b51c" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="9cb4a00d-01"
如果想再次格式化,继续执行同样的命令,根据提示输入y
[root@localhost ~]# mkfs.ext4 /dev/nvme0n2p1
mke2fs 1.45.6 (20-Mar-2020)/dev/nvme0n2p1 有一个 ext4 文件系统创建于 Mon Oct 21 18:37:37 2024
Proceed anyway? (y,N) y
......
使用xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/nvme0n2p2
meta-data=/dev/nvme0n2p2 isize=512 agcount=4, agsize=393216 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1572864, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
blkid
[root@localhost ~]# blkid /dev/nvme0n2p2
/dev/nvme0n2p2: UUID="abbe7b3a-ba8e-4c1c-8605-f2e9e68f5633" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="9cb4a00d-02"
如果想再次格式化,需加 -f
选项
[root@localhost ~]# mkfs.xfs -f /dev/nvme0n2p2
-f
强制格式化
挂载使用
[root@localhost ~]# mkdir mydvd1
[root@localhost ~]# mount /dev/nvme0n2p1 mydvd1/
查看 df -h
[root@localhost ~]# df -h mydvd1/
文件系统 容量 已用 可用 已用% 挂载点
/dev/nvme0n2p1 2.9G 24K 2.8G 1% /root/mydvd1
[root@localhost ~]# mkdir mydvd2
[root@localhost ~]# mount /dev/nvme0n2p2 mydvd2/
[root@localhost ~]# df -h mydvd2/
文件系统 容量 已用 可用 已用% 挂载点
/dev/nvme0n2p2 6.0G 76M 6.0G 2% /root/mydvd2
如果有挂载的硬件存储,就会存储在当前挂载的硬盘内,如果没有指定,就默认和/
根分区放在同一个硬盘。
假设/opt
这个目录,占用了太多的空间,我想用nvme0n2p2
来存/opt
的数据。
步骤
1,先创建一个目录
2,挂载nvme0n2p2
3,把/opt
原来的数据全部移动到挂载目录
4,清空/opt
5,卸载nvme0n2p2
6,把nvme0n2p2
,挂载到/opt
目录
7,设置开机自动挂载
[root@localhost ~]# echo '测试数据,2024年10月21日18:18' > /opt/demo.txt
[root@localhost ~]# cat /opt/demo.txt
测试数据,2024年10月21日18:18
[root@localhost ~]# mv /opt/demo.txt mydvd2
[root@localhost ~]# cat mydvd2/demo.txt
测试数据,2024年10月21日18:18
[root@localhost ~]# rm -rf /opt/*
[root@localhost ~]# umount mydvd2
[root@localhost ~]# mount /dev/nvme0n2p2 /opt/
[root@localhost ~]# cat /opt/demo.txtf
测试数据,2024年10月21日18:18
开机自动挂载 /etc/fstab
设备路径 挂载点目录 文件系统类型 参数 备份标记 检查顺序
/dev/mapper/rl-root / xfs defaults 0 0
[root@localhost ~]# tail -2 /etc/fstab
/dev/nvme0n2p1 /root/mydvd1 ext4 defaults 0 0
/dev/nvme0n2p2 /root/mydvd2 xfs defaults 0 0
验证,执行下面命令,没有报错,就表示成功
[root@localhost ~]# mount-a
[root@localhost ~]# df -h | grep mydvd
/dev/nvme0n2p1 4.9G 24K 4.6G 1% /root/mydvd1
/dev/nvme0n2p2 6.0G 76M 6.0G 2% /root/mydvd2
/etc/fstab文件错误,开机失败,修复
输入root密码
使用vim把写错的行,改正
保存之后,重启
把UUID改为决定路径(方便做镜像)
[root@localhost ~]# df -h /boot/
文件系统 容量 已用 可用 已用% 挂载点
/dev/nvme0n1p1 1014M 220M 795M 22% /boot
[root@localhost ~]# blkid /dev/nvme0n1p1
/dev/nvme0n1p1: UUID="1863454a-df9f-4d60-8d1d-60af5fcb575f" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="05e05c06-01"
通过查询得到 UUID
对应的 绝对路径是 /dev/nvme0n1p1
[root@localhost ~]# cat /etc/fstab
......
/dev/nvme0n1p1 /boot xfs defaults 0 0
MBR分区(逻辑分区)
[root@localhost ~]# fdisk /dev/nvme0n3
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x4f4fca4b 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n
分区类型p 主分区 (0个主分区,0个扩展分区,4空闲)e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G
创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):n
分区类型p 主分区 (1个主分区,0个扩展分区,3空闲)e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (2-4, 默认 2):
第一个扇区 (4196352-41943039, 默认 4196352):
上个扇区,+sectors 或 +size{K,M,G,T,P} (4196352-41943039, 默认 41943039): +2G
创建了一个新分区 2,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):n
分区类型p 主分区 (2个主分区,0个扩展分区,2空闲)e 扩展分区 (逻辑分区容器)
选择 (默认 p):
将使用默认回应 p。
分区号 (3,4, 默认 3):
第一个扇区 (8390656-41943039, 默认 8390656):
上个扇区,+sectors 或 +size{K,M,G,T,P} (8390656-41943039, 默认 41943039): +2G
创建了一个新分区 3,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):n
分区类型p 主分区 (3个主分区,0个扩展分区,1空闲)e 扩展分区 (逻辑分区容器)
选择 (默认 e):e <--------------------
已选择分区 4
第一个扇区 (12584960-41943039, 默认 12584960):
上个扇区,+sectors 或 +size{K,M,G,T,P} (12584960-41943039, 默认 41943039):
创建了一个新分区 4,类型为“Extended”,大小为 14 GiB。
命令(输入 m 获取帮助):n
所有主分区都在使用中。
添加逻辑分区 5
第一个扇区 (12587008-41943039, 默认 12587008):
上个扇区,+sectors 或 +size{K,M,G,T,P} (12587008-41943039, 默认 41943039): +2G <---------
创建了一个新分区 5,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):n
所有主分区都在使用中。
添加逻辑分区 6
第一个扇区 (16783360-41943039, 默认 16783360):
上个扇区,+sectors 或 +size{K,M,G,T,P} (16783360-41943039, 默认 41943039):
创建了一个新分区 6,类型为“Linux”,大小为 12 GiB。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
......
nvme0n3 259:6 0 20G 0 disk
├─nvme0n3p1 259:9 0 2G 0 part
├─nvme0n3p2 259:10 0 2G 0 part
├─nvme0n3p3 259:11 0 2G 0 part
├─nvme0n3p4 259:12 0 1K 0 part
├─nvme0n3p5 259:13 0 2G 0 part
└─nvme0n3p6 259:14 0 12G 0 part
查看分区类型 parted /dev/** print
[root@localhost ~]# parted /dev/nvme0n3 print
Model: NVMe Device (nvme)
Disk /dev/nvme0n3: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:Number Start End Size Type File system 标志1 1049kB 2149MB 2147MB primary2 2149MB 4296MB 2147MB primary3 4296MB 6443MB 2147MB primary4 6443MB 21.5GB 15.0GB extended5 6445MB 8592MB 2147MB logical6 8593MB 21.5GB 12.9GB logical
GPT分区
最大支持128分区,最大支持18EB的容量
虚拟机还原快照,准备硬盘资源
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 11.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part├─rl-root 253:0 0 17G 0 lvm /└─rl-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
使用命令fdisk
分区,进入之后输入g
,就是GPT
分区模式
[root@localhost ~]# fdisk /dev/nvme0n2
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xf6a23c8c 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):g
已创建新的 GPT 磁盘标签(GUID: C0452C94-7A10-1F43-97A2-117515378953)。
命令(输入 m 获取帮助):n
分区号 (1-128, 默认 1):
第一个扇区 (2048-41943006, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943006, 默认 41943006): +3G
创建了一个新分区 1,类型为“Linux filesystem”,大小为 3 GiB。
命令(输入 m 获取帮助):n
分区号 (2-128, 默认 2):
第一个扇区 (6293504-41943006, 默认 6293504):
上个扇区,+sectors 或 +size{K,M,G,T,P} (6293504-41943006, 默认 41943006): +4G
创建了一个新分区 2,类型为“Linux filesystem”,大小为 4 GiB。
命令(输入 m 获取帮助):n
分区号 (3-128, 默认 3):
第一个扇区 (14682112-41943006, 默认 14682112):
上个扇区,+sectors 或 +size{K,M,G,T,P} (14682112-41943006, 默认 41943006):
创建了一个新分区 3,类型为“Linux filesystem”,大小为 13 GiB。
命令(输入 m 获取帮助):p
Disk /dev/nvme0n2:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:C0452C94-7A10-1F43-97A2-117515378953
设备 起点 末尾 扇区 大小 类型
/dev/nvme0n2p1 2048 6293503 6291456 3G Linux 文件系统
/dev/nvme0n2p2 6293504 14682111 8388608 4G Linux 文件系统
/dev/nvme0n2p3 14682112 41943006 27260895 13G Linux 文件系统
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
格式化
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
......
nvme0n2 259:3 0 20G 0 disk
├─nvme0n2p1 259:4 0 3G 0 part
├─nvme0n2p2 259:5 0 4G 0 part
└─nvme0n2p3 259:6 0 13G 0 part
[root@localhost ~]# mkfs.xfs /dev/nvme0n2p1
meta-data=/dev/nvme0n2p1 isize=512 agcount=4, agsize=196608 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=786432, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
开机自动挂载
[root@localhost ~]# mkdir mydvd1
[root@localhost ~]# tail -1 /etc/fstab
/dev/nvme0n2p1 /root/mydvd1 xfs defaults 0 0
交换空间(虚拟内存)
缓解物理内存的压力,由硬盘提供一部分空间给内存使用
创建 mkswap
[root@localhost ~]# mkswap /dev/nvme0n2p2
正在设置交换空间版本 1,大小 = 4 GiB (4294963200 个字节)
无标签,UUID=b8065dfb-55ca-44e0-8be3-6d6fb917cf29
查看类型 blkid
[root@localhost ~]# blkid /dev/nvme0n2p2
/dev/nvme0n2p2: UUID="b8065dfb-55ca-44e0-8be3-6d6fb917cf29" TYPE="swap" PARTUUID="d60bdcb2-db3a-9644-afe7-4fd826371196"
启用 swapon
[root@localhost ~]# swapon /dev/nvme0n2p2
查看交换空间 swapon
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 0B -2
/dev/nvme0n2p2 partition 4G 0B -3
swapon:查看交换空间组成员信息
swapon -a
查看内存大小 free -h
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 3.5Gi 250Mi 3.1Gi 8.0Mi 221Mi 3.1Gi
Swap: 6.0Gi 0B 6.0Gi
停用 swapoff
[root@localhost ~]# swapoff /dev/nvme0n2p2
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 3.5Gi 247Mi 3.1Gi 8.0Mi 221Mi 3.1Gi
Swap: 2.0Gi 0B 2.0Gi
[root@localhost ~]# swapon /dev/nvme0n2p2
[root@localhost ~]# free -htotal used free shared buff/cache available
Mem: 3.5Gi 250Mi 3.1Gi 8.0Mi 221Mi 3.1Gi
Swap: 6.0Gi 0B 6.0Gi
开机自动挂载
[root@localhost ~]# tail -1 /etc/fstab
/dev/nvme0n2p2 swap swap defaults 0 0
使用parted命令进行分区(fdisk更好用)
[root@localhost ~]# parted /dev/nvme0n3
......
(parted) mktable gpt
(parted) mkpart
起始点? 0
结束点? 5G
忽略/Ignore/放弃/Cancel? Ignore
(parted) mkpart
分区名称? []?
文件系统类型? [ext2]?
起始点? 5G
结束点? 100%
(parted) quit
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
......
nvme0n3 259:7 0 20G 0 disk
├─nvme0n3p1 259:10 0 4.7G 0 part
└─nvme0n3p2 259:11 0 15.4G 0 part
格式化
挂载
逻辑卷管理
还原镜像,准备一块80G硬盘(MBR分区,3个10G主分区,2个20G逻辑分区)
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 11.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
└─ ......
nvme0n2 259:3 0 80G 0 disk
├─nvme0n2p1 259:4 0 10G 0 part
├─nvme0n2p2 259:5 0 10G 0 part
├─nvme0n2p3 259:6 0 10G 0 part
├─nvme0n2p4 259:7 0 1K 0 part
├─nvme0n2p5 259:8 0 20G 0 part
└─nvme0n2p6 259:9 0 20G 0 part
新建逻辑卷
逻辑卷:可以把分散的空间整合到一起
逻辑卷制作流程:将众多的物理卷(PV),组建成卷组(VG),再从卷组中划分出逻辑卷(LV)
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 Scan | pvs | vgs | lvs |
创建 Create | pvcreate | vgcreate | lvcreate |
显示 Display | pvdisplay | bgdisplay | lvdisplay |
删除 Remove | pvremove | vgremove | lvremove |
扩展 Extend | / | vgextend | lvextend |
命令参考帮助
man vgcreate // 查看帮助信息
/example 例子
按 q 退出
创建卷组
单位 PE(扩展单元) 4M
先创建物理卷,再创建逻辑卷,但是可以直接使用 vgcreate
既创建物理卷,也创建逻辑卷,类似git的-am
选项
vgcreate systemvg /dev/nvme0n2p[1-2]卷组名 硬件设备路径
[root@localhost ~]# vgcreate systemvg /dev/nvme0n2p[1-2]Physical volume "/dev/nvme0n2p1" successfully created.Physical volume "/dev/nvme0n2p2" successfully created.Volume group "systemvg" successfully created
查看
pvs // 查看所有物理卷信息
vgs // 查看系统卷组信息
[root@localhost ~]# pvsPV VG Fmt Attr PSize PFree/dev/nvme0n1p2 rl lvm2 a-- <19.00g 0/dev/nvme0n2p1 systemvg lvm2 a-- <10.00g <10.00g/dev/nvme0n2p2 systemvg lvm2 a-- <10.00g <10.00g
[root@localhost ~]# vgsVG #PV #LV #SN Attr VSize VFreerl 1 2 0 wz--n- <19.00g 0systemvg 2 0 0 wz--n- 19.99g 19.99g
创建逻辑卷
[root@localhost ~]# lvcreate -L 15G -n vo systemvgLogical volume "vo" created.
-L
指定逻辑卷大小
-l
PE的数量
-n
逻辑卷名称
lvcreate -l 15 -n myvo systemvg
格式化
[root@localhost ~]# ls /dev/dm-*
/dev/dm-0 /dev/dm-1 /dev/dm-2
[root@localhost ~]# ls -l /dev/systemvg/vo
lrwxrwxrwx. 1 root root 7 10月 22 16:02 /dev/systemvg/vo -> ../dm-2
格式化为xfs
文件系统类型
[root@localhost ~]# mkfs.xfs /dev/systemvg/vo
查看文件系统类型
[root@localhost ~]# blkid /dev/systemvg/vo
/dev/systemvg/vo: UUID="b24b772a-5c48-4e4d-ad68-2b3f7689b0f2" BLOCK_SIZE="512" TYPE="xfs"
开机自动挂载
[root@localhost ~]# mkdir myvg
[root@localhost ~]# tail -1 /etc/fstab
/dev/systemvg/vo /root/myvg xfs defaults 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# df -h myvg/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/systemvg-vo 15G 140M 15G 1% /root/myvg
逻辑卷扩展 lvextend
前提是卷组有剩余空间,如果卷组不够大,需要先准备硬盘空间,加入卷组
[root@localhost ~]# lvextend -L 16G /dev/systemvg/voSize of logical volume systemvg/vo changed from 15.00 GiB (3840 extents) to 16.00 GiB (4096 extents).Logical volume systemvg/vo successfully resized.
-L 16G
扩展到16G
-L +1G
在原基础上加1G
格式扩展的文件系统 xfs_growfs
ext4:resize2f
xfs:xfs_growfs
[root@localhost ~]# xfs_growfs /dev/systemvg/vo
[root@localhost ~]# df -h | grep vo
/dev/mapper/systemvg-vo 16G 147M 16G 1% /root/myvg
扩展卷组 vgextend
将其余分区加入systemvg卷组
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
......
nvme0n2 259:3 0 80G 0 disk
├─nvme0n2p1 259:4 0 10G 0 part
│ └─systemvg-vo 253:2 0 16G 0 lvm /root/myvg
├─nvme0n2p2 259:5 0 10G 0 part
│ └─systemvg-vo 253:2 0 16G 0 lvm /root/myvg
├─nvme0n2p3 259:6 0 10G 0 part
├─nvme0n2p4 259:7 0 1K 0 part
├─nvme0n2p5 259:8 0 20G 0 part
└─nvme0n2p6 259:9 0 20G 0 part
[root@localhost ~]# vgextend systemvg /dev/nvme0n2p{3,5,6}Physical volume "/dev/nvme0n2p3" successfully created.Physical volume "/dev/nvme0n2p5" successfully created.Physical volume "/dev/nvme0n2p6" successfully created.Volume group "systemvg" successfully extended
[root@localhost ~]# vgsVG #PV #LV #SN Attr VSize VFreerl 1 2 0 wz--n- <19.00g 0systemvg 5 1 0 wz--n- 69.98g 53.98g
扩展逻辑卷
[root@localhost ~]# lvextend -L 25G /dev/systemvg/voSize of logical volume systemvg/vo changed from 16.00 GiB (4096 extents) to 25.00 GiB (6400 extents).Logical volume systemvg/vo successfully resized.
[root@localhost ~]# xfs_growfs /dev/systemvg/vo
......
data blocks changed from 4194304 to 6553600
[root@localhost ~]# df -h | grep vo
/dev/mapper/systemvg-vo 25G 211M 25G 1% /root/myvg
修改逻辑卷PE的大小
此题曾经出现在红帽考试
卷组的单位,PE,默认大小是4M,但是可以改
vgchange -s 1M systemvg
如果现有的逻辑卷,可以整除,就可以改
vgdisplay systemvg
[root@localhost ~]# vgdisplay systemvg--- Volume group ---VG Name systemvgSystem IDFormat lvm2Metadata Areas 5Metadata Sequence No 5VG Access read/writeVG Status resizableMAX LV 0Cur LV 1Open LV 1Max PV 0Cur PV 5Act PV 5VG Size 69.98 GiBPE Size 4.00 MiBTotal PE 17915Alloc PE / Size 6400 / 25.00 GiBFree PE / Size 11515 / 44.98 GiBVG UUID rdE9UM-298J-5nQ3-a3ws-jJlZ-Qjfc-GqiuC0
[root@localhost ~]# vgchange -s 1M systemvgVolume group "systemvg" successfully changed
[root@localhost ~]# vgdisplay systemvg
......PE Size 1.00 MiB
......
创建逻辑卷时 lvcreate -l
来指定PE的个数
删除逻辑卷 lvremove
1,卸载
2,删除
[root@localhost ~]# df -h myvg/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/systemvg-vo 25G 211M 25G 1% /root/myvg
[root@localhost ~]# umount myvg/
[root@localhost ~]# lvremove /dev/mapper/systemvg-vo
Do you really want to remove active logical volume systemvg/vo? [y/n]: yLogical volume "vo" successfully removed.
[root@localhost ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot rl -wi-ao---- <17.00gswap rl -wi-ao---- 2.00g
lvremove
命令加上 -y
选项,就会直接删除,不再需要交互式输入y
删除开机自启文件
[root@localhost ~]# vim /etc/fstab
删除卷组 vgremove
[root@localhost ~]# vgsVG #PV #LV #SN Attr VSize VFreerl 1 2 0 wz--n- <19.00g 0systemvg 5 0 0 wz--n- 69.98g 69.98g
[root@localhost ~]# vgremove systemvgVolume group "systemvg" successfully removed
[root@localhost ~]# vgsVG #PV #LV #SN Attr VSize VFreerl 1 2 0 wz--n- <19.00g 0
删除物理卷 pvremove
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 11.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part├─rl-root 253:0 0 17G 0 lvm /└─rl-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 80G 0 disk
├─nvme0n2p1 259:4 0 10G 0 part
├─nvme0n2p2 259:5 0 10G 0 part
├─nvme0n2p3 259:6 0 10G 0 part
├─nvme0n2p4 259:7 0 1K 0 part
├─nvme0n2p5 259:8 0 20G 0 part
└─nvme0n2p6 259:9 0 20G 0 part
[root@localhost ~]# pvremove /dev/nvme0n2p{1,2,3,5,6}Labels on physical volume "/dev/nvme0n2p1" successfully wiped.Labels on physical volume "/dev/nvme0n2p2" successfully wiped.Labels on physical volume "/dev/nvme0n2p3" successfully wiped.Labels on physical volume "/dev/nvme0n2p5" successfully wiped.Labels on physical volume "/dev/nvme0n2p6" successfully wiped.
[root@localhost ~]# pvsPV VG Fmt Attr PSize PFree/dev/nvme0n1p2 rl lvm2 a-- <19.00g 0
[root@localhost ~]#
进程管理
进程:内存中正在运行的代码,占用CPU与内存的资源
PID:标识进程
[root@localhost ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]├─VGAuthService├─agetty├─auditd───{auditd}├─crond├─dbus-daemon───{dbus-daemon}├─firewalld───{firewalld}├─irqbalance───{irqbalance}├─polkitd───7*[{polkitd}]├─rsyslogd───2*[{rsyslogd}]├─sshd─┬─sshd───sshd───bash───pstree│ └─sshd───sshd───sftp-server├─systemd───(sd-pam)├─systemd-journal├─systemd-logind├─systemd-udevd├─tuned───4*[{tuned}]└─vmtoolsd───3*[{vmtoolsd}]
systemd 上帝进程,PID 为1
查看进程
pstree
-p
:列出对应的进程PID
-a
:显示完整的命令
pstree -ap admin // 显示用户admin的进程
[root@localhost ~]# useradd yunos // 新开一个窗口登录
[root@localhost ~]# echo 123456 | passwd --stdin yunos
更改用户 yunos 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# pstree -pa yunos
sshd,2145└─bash,2147└─vim,2213 demo.txt
sshd,2159└─sftp-server,2181
systemd,2135 --user└─(sd-pam),2138
ps aux
列出正在运行的所有进程,显示非常详细的进程信息
[root@localhost ~]# ps aux
......
root 5723 0.0 0.0 47848 3700 pts/0 R+ 10:54 0:00 ps aux
用户,进程ID,%CPU,%内存,虚拟内存,固定内存,终端,状态,起始时间,CPU时间,程序指令
ps -elf
[root@localhost ~]# ps -elf
0 R root 5741 3707 0 80 0 - 11962 - 11:01 pts/0 00:00:00 ps -elf
列出正在运行的所有进程,显示进程的父进程信息
PPID为进程的父进程PID
动态查看进程 top
-d 1
每隔一秒刷新
-P 按CPU排序
-M 按进程排序
查看进程 过滤进程名字
pgrep a
查找名字带a的进程,输出进程PID
-x
严格匹配
pgrep -l a
-l
输出更完整的信息,输出进程PID,以及进程名字
pgrep -u yunos
输出用户 yunos
的进程PID
pgrep -lu yunos
输出用户 yunos
的进程PID和进程名字
pstree -p yunos
[root@localhost ~]# pgrep -lu yunos
5782 systemd
5786 (sd-pam)
5793 sshd
5796 sshd
5797 bash
5806 sftp-server
[root@localhost ~]# pstree -p yunos
sshd(5793)───bash(5797)
sshd(5796)───sftp-server(5806)
systemd(5782)───(sd-pam)(5786)
睡觉 sleep
sleep 5 让当前的程序暂停5秒钟
进程前后台切换
Ctrl + Z
把当前运行的进程,暂停,放入后台
jobs
jobs
:查看后台进程
bg 1
bg
运行后台进程,bg 1
运行后台编号为1的进程,进程编号,通过jobs
命令查询
fg 1
fg 1
把后台编号为1的进程放回前台运行
Ctrl + C
结束运行
[root@localhost ~]# sleep 3000
^Z
[1]+ 已停止 sleep 3000
[root@localhost ~]# jobs
[1]+ 已停止 sleep 3000
[root@localhost ~]# bg 1
[1]+ sleep 3000 &
[root@localhost ~]# jobs
[1]+ 运行中 sleep 3000 &
[root@localhost ~]# fg 1
sleep 3000
^C
[root@localhost ~]#
正在运行放入后台 &
[root@localhost ~]# sleep 3000 &
[1] 5872
[root@localhost ~]# jobs
[1]+ 运行中 sleep 3000 &
[root@localhost ~]# fg 1
sleep 3000
^C
[root@localhost ~]#
杀死进程
Ctrl + C 结束当前命令程序
kill -9 PID
kill -9 %后台任务编号
killall -9 进程名
pkill -9 查找条件 // 包含就算,容易误杀
-9
选项是强制的意思,(比如电脑关机,不加-9
就是点关机,系统完成一些结束操作,就关机,加-9
就好比拔电源)
[root@localhost ~]# sleep 3000&
[1] 6154
[root@localhost ~]# jobs
[1]+ 运行中 sleep 3000 &
[root@localhost ~]# killall -9 sleep
[1]+ 已杀死 sleep 3000
[root@localhost ~]# sleep 3000&
[1] 6157
[root@localhost ~]# jobs
[1]+ 运行中 sleep 3000 &
[root@localhost ~]# killall sleep
[1]+ 已终止 sleep 3000
sudo提权
/etc/sudoers
使用vim编辑这个文件,没有语法检查,建议使用visudo
编辑
让普通用户以root
身份执行某些程序
查看当前用户的sudo提权 sudo -l
[yunos@localhost ~]$ sudo -l我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:#1) 尊重别人的隐私。#2) 输入前要先考虑(后果和风险)。#3) 权力越大,责任越大。[sudo] yunos 的密码:
对不起,用户 yunos 不能在 localhost 上运行 sudo。
为用户设置提权
visudo
yunos ALL=(root) /usr/bin/mkdir,/usr/bin/cat
#用户名 主机名=变成的身份 可以执行的命令
ALL 表示所有的主机名
可以执行的命令,用逗号分隔,也可以写ALL,表示全部的命令
yunos ALL=(root) NOPASSWD:/usr/bin/mkdir,/usr/bin/cat
#用户名 主机名=变成的身份 免密:可以执行的命令
NOPASSWD:
使用sudo提权的时候,用户不需要再输入密码
%yunos ALL=(root) NOPASSWD:/usr/bin/mkdir,/usr/bin/cat
#用户名 主机名=变成的身份 免密:可以执行的命令
%
最前面加% 表示授权的是一个组
[yunos@localhost ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 yunos 可以在 localhost 上运行以下命令:(root) NOPASSWD: /usr/bin/mkdir, /usr/bin/cat
RAID磁盘阵列
RAID0
条带模式
至少2个盘,将文件分成两份,并行写入硬盘,可提高效率
如果是5块盘,数据就会分成5份
RAID0只是效率高,没有数据的冗余,随便坏一块,数据就损坏了
工作中,用来存放缓存数据,
RAID1
镜像模式
一个文档复制成多份,分别写入不同磁盘
多份拷贝,提高可靠性,效率无提升
RAID5
高性价比模式
相当于RAID0和RAID1的则中方案
至少需要一块磁盘来存校验数据
至少需3块盘
RAID6
至少需要4块盘,至少需要二块磁盘来存校验数据
金融行业
RAID0+1(RAID01)
现做RAID0 ,再做RAID1
RAID1+0(RAID10)
现做RAID1,再做RAID0
总结
对比项 | RAID0 | RAID1 | RAID10 | RAID5 | RAID6 |
---|---|---|---|---|---|
磁盘数 | ≥2 | ≥2 | ≥4 | ≥3 | ≥4 |
存储利用率 | 100% | ≤50% | ≤50% | n-1/n | n-2/n |
校验盘 | 无 | 无 | 无 | 1 | 2 |
容错性 | 无 | 有 | 有 | 有 | 有 |
IO性能 | 高 | 低 | 中 | 较高 | 较高 |
修改网卡命名规则
不同类型,不同品牌的网卡,命名规则可能不相同,改为统一的命名规则,eth0、eeh1、……
网卡的内核引导文件:/boot/grub2/grub.cfg
/etc/default/grub
[root@RockyLinux ~]# 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/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
修改后
[root@RockyLinux ~]# 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/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet net.ifnames=0 biosdevname =0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
添加的内容
net.ifnames=0 biosdevname =0
根据修改的文件,重新生成内核引导文件/boot/grub2/grub.cfg
[root@RockyLinux ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done
重启生效
reboot
IP地址的配置
三种方式:nmcli、nmtli、修改网卡配置文件
nmcli
nmcli connection show
nmcli connection delete
添加新的网络命名
nmcli connection add type ethernet ifname eth0 con-name eth0
nmcli connection 添加 类型 以太网设备 设备名 eth0 外号名 eth0
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
配置IP地址
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.126.10/24 autoconnect yes
nmcli connection 修改 外号 ipv4.方法 手工配置 ipv4.地址 192.168.126.10/24 每次开机自动启用以上的所有参数
ipv4.网关
激活
nmcli connection up eth0
查看网关
route -n
nmtui
[root@RockyLinux ~]# nmtui
通过上下键移动,回车确认,红色代表选中
*
表示已连接,通过回车切换
添加临时ip
ip address add 192.168.126.15/24 dev eth0
简写:ip a a 192.168.126.15/24 dev eth0
查看临时ip
ip a s
删除临时ip
ip a d 192.168.126.15/24 dev eth0
远程管理
linux远程管理linux
SSH协议
需要安装的软件
[root@RockyLinux ~]# rpm -qa | grep openssh
openssh-clients-8.0p1-17.el8_7.x86_64
openssh-8.0p1-17.el8_7.x86_64
openssh-server-8.0p1-17.el8_7.x86_64
安装
yum -y install openssh*
[root@RockyLinux ~]# rpm -qa | grep openssh
openssh-clients-8.0p1-17.el8_7.x86_64
openssh-cavs-8.0p1-17.el8_7.x86_64
openssh-8.0p1-17.el8_7.x86_64
openssh-server-8.0p1-17.el8_7.x86_64
openssh-askpass-8.0p1-17.el8_7.x86_64
openssh-ldap-8.0p1-17.el8_7.x86_64
openssh-keycat-8.0p1-17.el8_7.x86_64
如果没有安装,是可以远程管理别人,安装了openssh
是可以被别人远程管理,如果不想被远程管理,可以卸载这些包,或者把这个进程杀了
pgrep -l sshd
远程的命令
ssh root@192.168.126.11
回答:yes
密码:*****
ssh 192.168.126.11 // 如果不写用户名,默认以当前登入系统的用户为准
[root@RockyLinux ~]# ssh root@192.168.126.11
The authenticity of host '192.168.126.11 (192.168.126.11)' can't be established.
ECDSA key fingerprint is SHA256:0/8hGvIvOZHJ2tEBKLpikWWIPwxBWYlJB4BOD67s4/A.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.126.11' (ECDSA) to the list of known hosts.
root@192.168.126.11's password:
Last login: Thu Oct 24 08:48:58 2024 from 192.168.126.1
[root@yunos ~]#
退出
exit
或者
Ctrl + D
[root@yunos ~]# exit
注销
Connection to 192.168.126.11 closed.
/root/.ssh/known_hosts
记录曾经远程管理过的机器
[root@RockyLinux ~]# cat /root/.ssh/known_hosts
192.168.126.11 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMzmAAFF5QeWl30yzPUrjWxMDq4N9OZnPANJQQFo/uVCEQQ+MO9KAcPUKnl0QOnOMUlBlE6BuszBDqvXskjQicY=
传递数据 scp
scp 本机文件 root@192.168.126.11:/root // 传递文件到对方机器root目录下
scp -r 目录 root@192.168.126.11:/opt // 将本机目录传递到对方机器opt目录下
-r
目录
scp root@192.168.126.11:/etc/fstab /root // 把对方机器/etc/fstab,拿到本机root目录下
scp -r root@192.168.126.10:/root/demo /opt // 把对方机器/root/demo目录,拿到本机opt目录下
免密远程
[root@yunos opt]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 存放位置
Enter passphrase (empty for no passphrase): 是否加密
Enter same passphrase again: 确认不加密?
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xNXtTfFCMhQR6VoSfK2Vsn8fdP8xNzaIvEW5T5vmKbo root@yunos
The key's randomart image is:
+---[RSA 3072]----+
| ..oBB.o.|
| . .o =+= o|
| o + *oo.|
| . . =o.oo|
| S .+o.+ o|
| .o +.O+|
| o +.%|
| . . =+|
| Eo +o |
+----[SHA256]-----+
[root@yunos opt]#
[root@RockyLinux ~]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
id_rsa 私钥
id_rsa.pub 公钥
known_hosts 记录曾经远程管理过的机器
authorized_keys 别人传递给我的公钥
传递公钥
ssh-copy-id root@192.168.126.11
[root@RockyLinux ~]# ssh-copy-id root@192.168.126.11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.126.11's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@192.168.126.11'"
and check to make sure that only the key(s) you wanted were added.
[root@yunos opt]# ls /root/.ssh/
authorized_keys known_hosts
authorized_keys 里面一行代表一个公钥
windows远程管理linux
MobaXtem
WindTerm
DNS服务器
将域名解析为对应的IP地址
寻找DNS服务器
1.使用dhcp服务器自动获取
2.手工指定,配置文件在:/etc/resolv.conf
ping -c 192.168.126.11
-c
指定ping的次数
日志管理
常见的日志文件
日志文件 | 主要用途 |
---|---|
/var/log/messages | 记录内核消息,各种服务公共消息 |
/var/log/dmesg | 记录系统启动过程的各种消息 |
/var/log/cron | 记录cron计划相关的消息 |
/var/log/maillog | 记录邮件收发相关消息 |
/var/log/secure | 记录与访问限制相关的安全消息 |
/var/log/lastlog | 记录最近的用户登录事件 |
/var/log/wtmp | 记录成功的用户登录/注销事件 |
/var/log/btmp | 记录失败的用户登录事件 |
/var/run/utmp | 记录当前登录的每个用户的相关信息 |
tail -f 时时更新显示,会占用前台
查看当前用户登录的信息
users who w
[root@RockyLinux ~]# users
root
[root@RockyLinux ~]# who
root pts/1 2024-10-24 08:49 (192.168.126.1)
[root@RockyLinux ~]# w16:07:09 up 4:44, 1 user, load average: 0.01, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.126.1 08:49 5.00s 0.13s 0.00s w
last lastb
[root@RockyLinux ~]# last // 成功输入对密码的
root pts/0 192.168.126.12 Thu Oct 24 15:58 - 15:59 (00:00)
wtmp begins Thu Oct 17 12:28:31 2024
[root@RockyLinux ~]# lastb // 输错密码的
root ssh:notty 192.168.126.1 Thu Oct 24 08:48 - 08:48 (00:00)
btmp begins Thu Oct 24 08:48:35 2024
日志消息优先级
0 | EMERG | 紧急 | 会导致系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
SELinux
SELinux运行模式 | ||
---|---|---|
enforcing | 强制 | 1 |
permissive | 宽松 | 0 |
disabled | 彻底禁用 | 修改配置文件,重启 |
切换运行模式
临时修改:setenforce 0 或 1
固定配置:/etc/selinux/config
查看当前运行模式:getenforce
破解root密码
进入救援模式
通过上下键,选择第一个,再按 e
键
把光标移动到ro,o的下面,按Delete键,把o改成w,是可读可写的意思
空格 输入 rd.break
Ctrl + X 进入救援模式
chroot /sysroot
切换至硬盘操作系统环境
改密码 echo 123456 | passwd --stdin root
reboot -f
加上 -f
选项是强制重启的意思
如果SElinux是强制模式
在设置完密码。还需要执行
sh-4.4# touch /.autorelabel
让SElinux失忆
设置救援模式的密码
grub2-setpassword
存放救援模式密码的地方
/boot/grub2/user.cfg