跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    磁盘与分区

    磁盘与分区管理是 Linux 系统管理员的核心技能。本文将从查看磁盘信息开始,涵盖 MBR/GPT 分区创建、文件系统格式化、挂载操作以及通过 /etc/fstab 实现开机自动挂载。

    lsblk 以树形结构列出所有块设备及其挂载点:

    Terminal window
    lsblk

    输出示例:

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
    sda 8:0 0 50G 0 disk
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 49G 0 part
    ├─rl-root 253:0 0 45G 0 lvm /
    └─rl-swap 253:1 0 4G 0 lvm [SWAP]
    sdb 8:16 0 100G 0 disk

    查看更详细的信息,包括文件系统类型和 UUID:

    Terminal window
    lsblk -f
    Terminal window
    sudo fdisk -l /dev/sdb
    Terminal window
    sudo blkid

    fdisk 用于管理 MBR(Master Boot Record)分区表,支持最多 4 个主分区或 3 个主分区加 1 个扩展分区。MBR 最大支持 2TB 磁盘。

    1. 启动 fdisk 交互模式:

      Terminal window
      sudo fdisk /dev/sdb
    2. 在交互界面中创建新分区:

      Command (m for help): n
      Partition type
      p primary (0 primary, 0 extended, 4 free)
      e extended (container for logical partitions)
      Select (default p): p
      Partition number (1-4, default 1): 1
      First sector (2048-209715199, default 2048): 直接回车
      Last sector ... (default 209715199): +20G
    3. 查看已创建的分区:

      Command (m for help): p
    4. 写入分区表并退出:

      Command (m for help): w
    命令说明
    n新建分区
    d删除分区
    p打印分区表
    t更改分区类型
    l列出已知分区类型
    w写入并退出
    q不保存退出

    GPT(GUID Partition Table)突破了 MBR 的限制,支持超过 2TB 的磁盘和多达 128 个分区。现代服务器强烈推荐使用 GPT。

    fdisk(util-linux 2.23+,EL8/9/10 都满足)自 2013 年起就支持 GPT,新建磁盘默认就是 GPT;gdisk 仍可用但不是必须。下面用 gdisk 演示,用 fdisk 做同样的事也可以。

    1. 安装 gdisk(如未安装):

      Terminal window
      sudo dnf install gdisk -y
    2. 启动 gdisk 交互模式:

      Terminal window
      sudo gdisk /dev/sdb
    3. 创建新的 GPT 分区:

      Command (? for help): n
      Partition number (1-128, default 1): 1
      First sector (34-209715166, default = 2048): 直接回车
      Last sector ... (default = 209715166): +50G
      Current type is 8300 (Linux filesystem)
      Hex code or GUID (L to show codes, Enter = 8300): 直接回车
    4. 查看分区布局:

      Command (? for help): p
    5. 写入并退出:

      Command (? for help): w
    特性fdisk (MBR)gdisk (GPT)
    最大磁盘容量2TB9.4ZB
    最大分区数4 主分区128 分区
    分区表备份无磁盘头尾各一份
    适用场景旧系统兼容现代服务器推荐

    在创建或修改分区后,如果系统未自动识别新分区表,需要使用 partprobe 通知内核重新读取分区信息:

    Terminal window
    sudo partprobe /dev/sdb

    验证内核已识别新分区:

    Terminal window
    lsblk /dev/sdb
    cat /proc/partitions | grep sdb

    分区创建后需要格式化才能使用。

    创建 XFS 文件系统(RHEL/CentOS 默认)

    Section titled “创建 XFS 文件系统(RHEL/CentOS 默认)”
    Terminal window
    sudo mkfs.xfs /dev/sdb1

    强制覆盖已有文件系统:

    Terminal window
    sudo mkfs.xfs -f /dev/sdb1
    Terminal window
    sudo mkfs.ext4 /dev/sdb1
    Terminal window
    # XFS 设置标签
    sudo mkfs.xfs -L mydata /dev/sdb1
    # EXT4 设置标签
    sudo mkfs.ext4 -L mydata /dev/sdb1
    Terminal window
    sudo mkswap /dev/sdb2
    sudo swapon /dev/sdb2

    创建挂载点并挂载分区:

    Terminal window
    sudo mkdir -p /mnt/data
    sudo mount /dev/sdb1 /mnt/data

    使用 UUID 挂载(推荐):

    Terminal window
    sudo mount UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" /mnt/data

    查看当前挂载情况:

    Terminal window
    mount | grep sdb
    df -hT /mnt/data
    Terminal window
    sudo umount /mnt/data

    如果提示设备正忙,查找占用进程:

    Terminal window
    sudo lsof +D /mnt/data
    sudo fuser -mv /mnt/data

    延迟卸载(等待使用者释放后自动卸载):

    Terminal window
    sudo umount -l /mnt/data

    临时挂载在系统重启后会丢失。要实现开机自动挂载,需要编辑 /etc/fstab。

    Terminal window
    sudo blkid /dev/sdb1

    输出示例:

    /dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="xfs"
    Terminal window
    # 务必先备份
    sudo cp /etc/fstab /etc/fstab.bak
    sudo vi /etc/fstab

    添加如下行:

    UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data xfs defaults 0 0
    字段说明示例
    设备标识UUID 或设备路径UUID=xxxx
    挂载点挂载目标目录/mnt/data
    文件系统类型xfs、ext4、swap 等xfs
    挂载选项逗号分隔的选项列表defaults
    dump 备份0 表示不使用 dump 备份0
    fsck 检查顺序0 不检查,1 根分区,2 其他0
    选项说明
    defaults等同于 rw,suid,dev,exec,auto,nouser,async
    noexec禁止执行二进制文件
    nosuid禁止 SUID/SGID 位生效
    nodev禁止解释字符或块设备
    ro只读挂载
    noatime不更新访问时间,提升 I/O 性能
    nofail设备不存在时不阻止系统启动

    不重启即可测试所有 fstab 中的挂载项:

    Terminal window
    sudo mount -a

    检查是否挂载成功:

    Terminal window
    df -hT /mnt/data

    设备名(如 /dev/sdb1)可能因为添加或移除硬盘而发生变化,UUID 是分区的唯一标识,不受设备顺序影响。

    Terminal window
    # 方法一:blkid
    sudo blkid
    # 方法二:lsblk -f
    lsblk -f
    # 方法三:查看 by-uuid 符号链接
    ls -l /dev/disk/by-uuid/
    Terminal window
    # 推荐:使用 UUID,加 nofail 防止启动失败
    UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data xfs defaults,nofail 0 0
    # 不推荐:使用设备名,设备名可能变化
    /dev/sdb1 /mnt/data xfs defaults 0 0

    完整实战:新磁盘分区并自动挂载

    Section titled “完整实战:新磁盘分区并自动挂载”

    以下演示将一块全新的 100G 磁盘 /dev/sdb 创建 GPT 分区、格式化并配置自动挂载的完整流程。

    1. 确认磁盘状态:

      Terminal window
      lsblk
      sudo fdisk -l /dev/sdb
    2. 使用 gdisk 创建 GPT 分区:

      Terminal window
      sudo gdisk /dev/sdb
      # 交互操作: n -> 1 -> 回车 -> +80G -> 回车 -> w -> Y
    3. 通知内核识别新分区:

      Terminal window
      sudo partprobe /dev/sdb
      lsblk /dev/sdb
    4. 格式化为 XFS 文件系统:

      Terminal window
      sudo mkfs.xfs /dev/sdb1
    5. 创建挂载点并临时挂载:

      Terminal window
      sudo mkdir -p /data
      sudo mount /dev/sdb1 /data
      df -hT /data
    6. 获取 UUID 并配置 fstab:

      Terminal window
      # 获取 UUID
      UUID=$(sudo blkid -s UUID -o value /dev/sdb1)
      echo "UUID: $UUID"
      # 备份 fstab
      sudo cp /etc/fstab /etc/fstab.bak
      # 写入 fstab
      echo "UUID=$UUID /data xfs defaults,nofail 0 0" | sudo tee -a /etc/fstab
    7. 验证自动挂载配置:

      Terminal window
      sudo umount /data
      sudo mount -a
      df -hT /data

    至此,磁盘分区和挂载配置完成。系统重启后 /data 目录将自动挂载。