Linux NFS、自动挂载与系统启动管理指南

1. NFS客户端挂载导出的目录的方式

NFS(网络文件系统) 允许将远程服务器的目录挂载到本地,像访问本地文件一样操作远程文件。挂载方式主要有两种:

  • 手动挂载 :使用 mount 命令(临时生效,重启后丢失)。

    bash 复制代码
    mount -t nfs server_ip:/shared_dir /local/mount_point  
  • 自动挂载 :通过 /etc/fstab 配置(永久生效)。

    bash 复制代码
    # 编辑 /etc/fstab  
    server_ip:/shared_dir /local/mount_point nfs defaults 0 0  
    # 执行挂载  
    mount -a  

通俗比喻

  • 手动挂载像临时租用仓库,用完即还。

  • 自动挂载像买下仓库,随时可用。


2. NFSv4 与 NFSv3 的区别
特性 NFSv3 NFSv4
协议状态 无状态(服务端不记录会话) 有状态(服务端维护会话)
安全性 依赖防火墙和额外工具(如 Kerberos) 内置强加密和身份验证
文件锁定 需要额外协议(NLM) 内置文件锁定机制
性能 较低(多端口通信) 更高(单端口 TCP 通信)
兼容性 广泛支持旧系统 需要较新内核和客户端

核心区别:NFSv4 更安全、高效,适合现代网络环境。


3. 卸载导出的 NFS 目录

使用 umount 命令卸载:

bash 复制代码
umount /local/mount_point  

若提示"设备繁忙"

  1. 查找占用进程

    bash 复制代码
    lsof /local/mount_point   # 查看正在使用文件的进程  
    fuser -mv /local/mount_point  # 显示进程 PID  
  2. 终止进程或强制卸载

    bash 复制代码
    kill -9 PID               # 终止进程  
    umount -f /local/mount_point  # 强制卸载(慎用)  

4. 自动挂载器(Autofs)及其优势

Autofs 是"智能管家",按需自动挂载目录,无访问时自动卸载。

  • 优势

    • 节省资源:空闲时卸载,减少网络和内存占用。

    • 无缝体验:用户访问目录时自动挂载,无需手动操作。

配置示例

  1. 安装并启动服务:

    bash 复制代码
    sudo yum install autofs  
    systemctl start autofs  
  2. 编辑主映射文件 /etc/auto.master

    bash 复制代码
    /mnt/nfs  /etc/auto.nfs  # 挂载点 -> 子映射文件 
  3. 创建子映射文件 /etc/auto.nfs

    bash 复制代码
    data  -rw,sync  server_ip:/shared_data  

5. 直接映射与间接映射
  • 直接映射:挂载点路径在映射文件中明确指定。

    bash 复制代码
    /mnt/remote  -rw  server_ip:/remote_dir  
  • 间接映射:挂载点位于父目录下,路径更灵活。

    bash 复制代码
    # 主映射文件  
    /mnt/auto  /etc/auto.indirect  
    # 子映射文件 /etc/auto.indirect  
    docs  -ro  server_ip:/docs  

通俗理解

  • 直接映射像固定地址送货。

  • 间接映射像快递柜,按需取件。


6. 主映射文件的作用与创建
  • 主映射文件/etc/auto.master,定义自动挂载的根目录和子映射文件。

  • 作用:告诉 Autofs 哪些目录需要自动挂载,以及如何查找配置规则。

创建步骤

bash 复制代码
# 编辑主映射文件  
vim /etc/auto.master  
# 添加条目:挂载点 子映射文件  
/mnt/autofs  /etc/auto.custom  

7. 映射文件条目的格式与命名规则

条目格式

bash 复制代码
挂载点名称  [挂载选项]  服务器:导出目录  
  • 示例

    bash 复制代码
    backup  -rw,sync  nfs_server:/backups  
  • 命名规则

    • 挂载点名称对应自动挂载目录下的子目录(如 /mnt/autofs/backup)。

    • 选项需符合 NFS 协议(如 ro 只读,rw 读写)。


8. RHEL 的启动过程
  1. BIOS/UEFI:初始化硬件,加载引导程序(GRUB)。

  2. GRUB:选择内核并加载到内存。

  3. 内核初始化 :挂载根文件系统,启动 systemd(PID=1)。

  4. systemd:按目标(target)启动服务,进入系统。

通俗流程:开机自检 → 选择系统 → 加载核心 → 启动服务 → 用户登录。


9. systemd 目标(Target)及常用目标

目标:相当于旧版的"运行级别",定义系统启动状态。

目标 作用
multi-user.target 多用户命令行模式(无图形界面)
graphical.target 图形界面模式
rescue.target 单用户救援模式
emergency.target 紧急 Shell(最简环境)

切换目标

bash 复制代码
systemctl isolate multi-user.target  # 切换到命令行模式  

设置默认目标

bash 复制代码
systemctl set-default graphical.target  

10. 启动时选择其他目标
  1. 在 GRUB 菜单界面按 e 进入编辑模式。

  2. 找到以 linux 开头的行,末尾添加:

    bash 复制代码
    systemd.unit=multi-user.target  
  3. Ctrl+X 启动,系统将进入指定目标。


11. 从启动加载器重置 root 密码

步骤

  1. 重启系统,在 GRUB 菜单按 e 进入编辑模式。

  2. 找到 linux 行,附加rd.break,该选项会中断系统从initramfs镜像向实际系统移交控制权

  3. Ctrl+X 启动进入单用户模式。

  4. 重新挂载根目录并修改密码:

    bash 复制代码
    chroot /sysroot  
    passwd root  
    touch /.autorelabel  # 重置 SELinux 上下文  
    exit  
    reboot  

注意:此方法适用于物理机或具有控制台的虚拟机。

相关推荐
孤客网络科技工作室1 小时前
每天学一个 Linux 命令(6):shutdown
linux·运维·服务器
kfepiza1 小时前
systemd-networkd 的 /etc/systemd/network/*.network 的配置属性名称是不是严格区分大小写?是
linux·运维·网络·tcp/ip
嶔某1 小时前
Linux:进程信号
linux·运维·服务器
十夫长1 小时前
docker速通
运维·docker·容器
h^hh1 小时前
linux下基本命令和扩展命令(安装和登录命令、文件处理命令、系统管理相关命令、网络操作命令、系统安全相关命令、其他命令)欢迎补充噢
linux
火烧屁屁啦2 小时前
【JavaEE进阶】Linux搭建Java部署环境
linux·运维·服务器
孤独打铁匠Julian2 小时前
【Linux】Ubuntu 24.04 LTS 安装 Hadoop-3.4.1
linux·hadoop·ubuntu
X-future4262 小时前
Conda常用命令汇总(持续更新中)
linux·运维·conda
m0_738754362 小时前
防火墙虚拟系统实验
运维·服务器·网络
企鹅侠客2 小时前
shell流程控制
运维·shell