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  

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

相关推荐
CC.GG7 分钟前
【Linux】倒计时和进度条实现
linux
从零开始学习人工智能11 分钟前
Apache Airflow:让复杂工作流自动化变得简单优雅
运维·自动化·apache
Code Warrior35 分钟前
【Linux】库的制作与原理(1)
linux
生涯にわたる学び42 分钟前
关于之前知识的一些补充 02
linux·arm开发
汐汐咯1 小时前
linux上安装minconda
linux·运维·服务器
小波小波轩然大波1 小时前
Linux服务器配置(mariadb服务器)
linux·服务器·mariadb
忧郁的橙子.1 小时前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维1 小时前
Apache介绍和安装
linux·运维·apache
半梦半醒*2 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
1024find2 小时前
Jenkins与GitLab-CI的技术对比分析
运维·devops