欢迎光临
我们一直在努力

【Linux RH134】一些常用知识点汇总合集续

目录

管理存储堆栈(LVM+VDO)

LVM 核心概念 & 关系

LVM 创建步骤

LVM 的 – l 和 – L

VDO

访问网络附加存储(NFS)

NFS 核心功能

NFS 安装配置

NFS 手动挂载

NFS 自动挂载

NFS 自动挂载:间接映射 vs 直接映射

控制启动过程(RHEL9)

RHEL9 启动过程

系统重启 / 关机命令

Systemd target

重置丢失的 root 密码

让系统日志持久保留


管理存储堆栈(LVM+VDO)

LVM 核心概念 & 关系

物理卷(PV):把物理磁盘 / 分区 “打标” 成 LVM 能识别的设备,相当于给普通磁盘办了 LVM 的 “身份证”,会写元数据记录设备信息,没打标的盘 LVM 不认。

物理区块(PE):LVM 的 “最小积木块”(默认 4M),所有 PV 都会被拆成大小一样的 PE,一块 PE 只能给一个 LV 用,是 LVM 分配空间的唯一单位,没有 PE 就没法分配空间。

卷组(VG):把多个 PV 的 PE “堆成一个大积木池”,不管底层是几块盘、什么型号,VG 里只认 PE,屏蔽了物理设备的差异,上层 LV 直接从池里拿积木。

逻辑卷(LV):从 VG 的 PE 池里 “挑几块积木拼出的逻辑分区”,格式化后和普通分区用起来没区别,核心优势是能随时从 VG 池里加 / 减 PE,实现扩容 / 缩容,不用像普通分区一样重新分区。

核心关系:物理盘 / 分区 → pvcreate 打标成 PV → 拆成 PE → 多个 PV 的 PE 合并成 VG 池 → 从池里取 PE 拼成 LV

易错点:创建 PV 前如果是新磁盘,用 fdisk/parted 分区时,分区类型必须改成 8e(LVM 专用),否则 pvcreate 会识别失败。

LVM 创建步骤

实际操作中不会直接用裸盘建 PV,完整步骤是:

  • 分区:fdisk/parted 给磁盘分区,改类型为 8e,保存生效;

  • 建 PV:pvcreate 分区名(如 /dev/sdb1),可加 – pvdisplay 验证;

  • 建 VG:vgcreate VG 名 PV 列表(如 vgcreate vg01 /dev/sdb1 /dev/sdc1),vgdisplay 看剩余 PE;

  • 建 LV:lvcreate 定大小 -n LV 名 VG 名,格式化(mkfs.xfs/ext4)+ 挂载(临时 mount / 永久 fstab);

    • 易错点:建 LV 后必须格式化,否则无法挂载,新手容易忘这一步。

    LVM 的 – l 和 – L

    两者都是给 LV 指定大小,核心区别是是否和 PE 绑定,实操中根据场景选:

    • -L:指定绝对容量(G/M/T/K),和 PE 大小无关。例:lvcreate -L 10G -n lv01 vg01 → 直接创建 10G 的 LV,LVM 会自动计算需要多少 PE。

    • -l:指定PE 数量 / 百分比,必须和 PE 大小联动,最终大小 = PE 数 ×VG 的 PE 大小(默认 4M)。常用写法:-l 256(256×4M=1G)、-l 50% VG(占 VG 总 PE 的 50%)、-l 100% FREE(用 VG 剩余所有 PE)。

    • 易错点:用 – l 时如果手动输 PE 数,要算准数值,输错会导致 LV 大小不符合预期;百分比只支持 % VG 和 % FREE,其他写法(如 % PV)无效。

    VDO

    VDO 不是独立的存储设备,而是块级的 “存储优化插件”,可以装在物理盘、LVM、RAID 上,上层系统看到的是 VDO 虚拟出的块设备,实际数据会被 VDO 优化后再写入底层,核心解决 “存储利用率低” 的问题,适合虚拟机、日志服务器、大数据场景。VDO 的 3 个核心优化:

  • 先去重:给每个数据块算哈希值,重复的块不重复写,只加一个 “引用指针”,比如多台虚拟机的 CentOS 镜像,实际只存一份;

  • 后压缩:对非重复的块用 LZ4 算法实时压缩(兼顾速度和压缩率),读取时自动解压,不影响上层使用;

  • 精简配置(瘦分配):虚拟出比底层物理存储更大的空间,按需分配物理块,比如 1T 物理盘可以虚拟 5T 空间,只有实际写入数据时才占用物理空间。 

    • 个人理解:VDO 的优化顺序是 “去重→压缩”,因为如果先压缩再去重,重复数据的哈希值会不一样,就没法去重了,这是设计的关键,也是考点。

    • 易错点:VDO 对小文件的优化效果有限,甚至可能有轻微性能损耗,别在小文件密集的场景(如小图片服务器)强行部署 VDO。

    访问网络附加存储(NFS)

    NFS 核心功能

    NFS 是 Linux/Unix 专属的 **“网络文件夹” 协议 **,让一台服务器的目录变成 “网络共享盘”,其他 Linux 主机可以把这个共享盘挂载到本地,像操作本地文件夹一样读写,核心实现多主机文件共享和统一管理,比如集群服务器共享配置文件、日志文件。

    个人理解:NFS 适合 Linux 集群内部共享,不适合跨系统(如 Linux 和 Windows),跨系统用 Samba 更合适,别搞混使用场景。

    NFS 安装配置

    NFS 依赖 rpcbind(端口映射),配置的核心是 **/etc/exports** 文件,一步错就会挂载失败,完整步骤:

  • 安装:dnf install -y nfs-utils rpcbind;

  • 启动:systemctl enable –now rpcbind nfs-server(先启动 rpcbind,再启动 nfs-server);

  • 建共享目录:mkdir -p /data/nfs && chown nfsnobody:nfsnobody /data/nfs(目录权限必须给 nfsnobody,否则客户端挂载后无法读写);

  • 配置 exports:/data/nfs 192.168.1.0/24 (rw,sync,no_root_squash)(格式:共享目录 允许访问的网段 / 主机 (权限选项));

  • 生效配置:exportfs -rv(改完 exports 必须执行,否则配置不生效);

  • 防火墙 + SELinux:开放 nfs、rpc-bind、mountd 服务;SELinux 如果没做策略,临时关闭 setenforce 0(生产环境建议配 SELinux 策略,不建议直接关)

  • 易错点

    • 服务端必须启动 rpcbind,否则客户端无法获取 NFS 端口,挂载时报错;

    • exports 的权限选项里,no_root_squash 表示客户端 root 用户在共享目录有 root 权限,生产环境如果不需要,别开,用 root_squash 更安全;

    • 客户端只需要装 nfs-utils,不用启动 nfs-server 服务。

    NFS 手动挂载

    手动挂载是基础,临时使用,重启后失效,步骤:

  • 查看服务端共享:showmount -e NFS 服务端 IP;

  • 创建本地挂载点:mkdir -p /mnt/nfs(挂载点必须是空目录,且提前创建,否则挂载失败);

  • 执行挂载:mount -t nfs NFS 服务端 IP:/data/nfs/mnt/nfs(必须指定 – t nfs,告诉系统挂载的是 NFS 文件系统);

  • 验证:df -h(看是否挂载成功)。

    • 易错点:创建挂载点时,别用系统已有目录(如 /root、/home),否则挂载后原目录的内容会被隐藏,卸载后才会恢复。

    NFS 自动挂载

    autofs 是 **“懒人挂载”,解决手动挂载重启失效、一直挂载占用资源的问题,核心是“按需挂载”**:访问挂载点时自动挂载,长时间不访问自动卸载,步骤核心是 “配主映射文件 + 配子映射文件”。

  • 安装:dnf install -y autofs;

  • 建主映射文件:在 /etc/auto.master.d/ 下建 xxx.autofs 文件(后缀必须是.autofs,否则 autofs 不认),内容:/mnt/etc/auto.nfs(格式:挂载根目录 子映射文件路径);

  • 建子映射文件:按主映射文件的路径创建(如 /etc/auto.nfs),内容:nfs -rw 192.168.1.100:/data/nfs(格式:挂载点子目录 挂载选项 NFS 服务端共享路径);

  • 启动:systemctl enable –now autofs;

  • 验证:cd /mnt/nfs(访问挂载点,自动挂载,df -h 看结果)。

    • 个人理解:autofs 的核心是 “主映射定根目录,子映射定具体挂载规则”。

    NFS 自动挂载:间接映射 vs 直接映射

    两者是 autofs 的两种挂载方式,核心区别在挂载点的定义方式,实操中间接映射更常用,易管理:

    特性间接映射直接映射
    主配置标识 挂载根目录(如 /mnt) 固定为 /-
    实际挂载路径 根目录的子目录(/mnt/nfs) 任意绝对路径(/data/nfs)
    管理性 挂载点统一,易维护 挂载点分散,灵活性高
    常用场景 集群共享、常规 NFS 挂载 特殊业务,需要自定义挂载路径

    控制启动过程(RHEL9)

    RHEL9 启动过程

    RHEL9 的启动是 **“固件→GRUB2→内核 + initramfs→systemd”** 的流程,不用死记每一步,记关键节点和核心文件即可,步骤拆解:

  • 通电自检:UEFI/BIOS 做 POST,检查硬件,找可启动设备;

  • 加载 GRUB2:从可启动设备读取启动引导器 GRUB2,配置文件是 /boot/grub2/grub.cfg(BIOS)、/boot/efi/EFI/redhat/grub.cfg(UEFI);

  • 加载内核 + initramfs:GRUB2 加载内核和初始化镜像 initramfs(包含启动所需的驱动和脚本,没有它内核识别不了硬盘);

  • 启动 systemd:内核把控制权交给 initramfs 中的 /sbin/init(软链接到 systemd,PID=1,系统第一个进程);

  • 挂载根文件系统:initramfs 中的 systemd 把磁盘根目录挂载到 /sysroot,然后切换到实际的根文件系统;

  • 启动默认 target:systemd 读取默认目标(multi-user.target/graphical.target),启动对应的服务和单元,系统启动完成。

    • 个人理解:initramfs 是启动的 “关键桥梁”,如果它损坏,系统会启动失败,因为内核无法识别底层硬件和根文件系统;GRUB2 的配置文件是自动生成的,别手动改,改 /etc/default/grub 后用 grub2-mkconfig 生成。

    • 易错点:UEFI 和 BIOS 的 GRUB2 配置文件路径不一样,别搞混。

    系统重启 / 关机命令

    RHEL9 推荐用 systemctl 命令,传统命令是软链接,功能一致,核心命令:

    • 关机:systemctl poweroff 或 poweroff(停止所有服务→卸载文件系统→关机,安全关机);

    • 重启:systemctl reboot 或 reboot(停止所有服务→卸载文件系统→重启);

    • 个人理解:别用 kill -9 强制关机 / 重启,会导致文件系统损坏、数据丢失,只有系统卡死时才考虑用硬重启。

    Systemd target

    target 是 systemd 对 **“系统运行模式”** 的定义,替代了传统 Linux 的运行级别,核心是把功能相近的服务(如网络服务、登录服务)整合在一起,启动一个 target 就会启动对应的所有服务,实现系统状态的切换。核心 target 及对应传统运行级别:

  • multi-user.target:多用户命令行模式,对应运行级别 3,生产服务器默认用这个,轻量、稳定;

  • graphical.target:图形化模式,对应运行级别 5,桌面版用,服务器不建议装,占资源;

  • rescue.target:救援模式,系统轻度故障时用(如配置文件错误),需要 root 密码;

    • emergency.target:紧急模式,系统严重故障时用(如根文件系统损坏),无需密码,功能极简。

    • 易错点:切换默认 target 用命令systemctl set-default 目标名,比如systemctl set-default multi-user.target,改完后重启生效,别用 ln 手动创建软链接。

    重置丢失的 root 密码

    核心是通过 rd.break 进入紧急模式,重新挂载根目录为可读写,修改密码后修复 SELinux 上下文,步骤拆解:

  • 重启系统,在 GRUB2 菜单按e编辑内核条目;

  • 找到 linux 开头的行,在末尾添加rd.break,按 Ctrl+x 启动;

  • 重新挂载根目录为可读写:mount -o rw,remount /sysroot(默认是只读,无法改密码);

  • 切换到 chroot 环境:chroot /sysroot(让 /sysroot 成为临时根目录,否则无法执行 passwd);

  • 修改 root 密码:passwd,输入新密码(注意密码复杂度,简单密码可能不通过);

  • 修复 SELinux 上下文:touch /.autorelabel(关键步骤,否则重启后密码不生效,因为 /etc/shadow 没有 SELinux 标签);

  • 退出 chroot:exit,再退出紧急模式:exit,系统会自动重新标记 SELinux,然后重启,新密码生效。

    • 易错点:

    • 必须添加 rd.break,别输错成 rd-break,否则无效;

    • 一定要执行 touch /.autorelabel,修复 SELinux 上下文;

    • 进入紧急模式后,系统没有网络,无法远程操作,只能本地操作。

    让系统日志持久保留

    RHEL9 的系统日志由 journald 管理,默认日志存在 /run/log/journal,重启后删除,要让日志持久保留,核心是修改 journald 的配置文件,步骤:

  • 编辑配置文件:vim /etc/systemd/journald.conf;

  • 找到Storage= 这一行,把注释去掉,改成Storage=persistent;

  • 重启 journald 服务:systemctl restart systemd-journald;

  • 验证:日志会自动存到 /var/log/journal,重启后不会丢失,用journalctl –list-boots可以看所有启动的日志。

    • 个人理解:Storage 参数有三个值,别搞混:

    • persistent:持久保留,存 /var/log/journal;

    • volatile:临时保留,存 /run/log/journal,重启删除;

    • none:不保存日志,只输出到控制台。

    • 实操易错点:改完配置后必须重启 journald 服务,否则配置不生效;/var/log/journal 目录会自动创建,不用手动建。

    赞(0)
    未经允许不得转载:171主机测评 » 【Linux RH134】一些常用知识点汇总合集续
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址