前言

在服务器交付、系统初始化或数据盘扩容场景中,经常需要对新增硬盘进行分区、格式化并挂载到指定目录。

本文以一块 8TB 数据盘 /dev/sdb 为例,介绍 Linux 服务器中常见的数据盘挂载方式,包括:

  1. Linux 磁盘分区简介
  2. 标准分区方式挂载数据盘
  3. LVM 方式挂载数据盘
  4. UUID 挂载与盘符漂移问题
  5. 标准分区与 LVM 对比
  6. 生产环境建议

本文示例环境:

系统盘:/dev/sda
数据盘:/dev/sdb
挂载目录:/data
文件系统:xfs

需要注意:以下操作涉及分区和格式化,会清空目标磁盘数据。执行前必须确认 /dev/sdb 是目标数据盘,并确认盘内无重要数据。


一、Linux 磁盘分区简介

Linux 服务器中,常见的磁盘使用方式主要有两种:

Standard Partition:标准分区
LVM:Logical Volume Manager,逻辑卷管理

一般情况下:

系统盘常用标准分区
数据盘常用 LVM

当然,这不是绝对要求,而是服务器运维中的常见习惯。


1. Standard Partition 标准分区

标准分区是最传统、最直接的磁盘使用方式。

结构通常如下:

/dev/sdb
└── /dev/sdb1

也就是:

物理磁盘 → 普通分区 → 文件系统 → 挂载目录

例如:

/dev/sdb1 → xfs → /data

标准分区的特点:

配置简单
结构直观
排障方便
性能开销低
后期扩容不如 LVM 灵活

系统盘通常会使用标准分区,例如:

/boot
/boot/efi
swap
/

2. LVM 逻辑卷管理

LVM 是 Linux 中常用的逻辑卷管理方式。

结构通常如下:

/dev/sdb
└── /dev/sdb1
    └── PV
        └── VG
            └── LV

也就是:

物理磁盘 → 普通分区 → PV → VG → LV → 文件系统 → 挂载目录

例如:

/dev/sdb1 → PV → datavg → datalv → xfs → /data

其中:

PV:Physical Volume,物理卷
VG:Volume Group,卷组
LV:Logical Volume,逻辑卷

LVM 的特点:

支持灵活扩容
支持多块磁盘组成一个卷组
支持逻辑卷管理
适合数据盘
结构比标准分区复杂

在生产环境中,如果数据盘后续可能扩容,通常建议使用 LVM。


二、挂载数据盘 Standard Partition

本部分介绍如何使用标准分区方式将 /dev/sdb 挂载到 /data

最终结构如下:

/dev/sdb
└── /dev/sdb1    xfs    /data

1. 查看磁盘

作用:确认当前服务器磁盘情况,找到需要挂载的数据盘。

执行命令:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb

从输出可以看到:

/dev/sda 是系统盘
/dev/sdb 没有分区
/dev/sdb 没有文件系统
/dev/sdb 没有挂载点

因此可以确认 /dev/sdb 是待配置的数据盘。


2. 创建 GPT 分区表

作用:初始化磁盘分区表,为创建分区做准备。

执行命令:

parted -s /dev/sdb mklabel gpt

说明:

/dev/sdb:目标数据盘
mklabel gpt:创建 GPT 分区表

对于 2TB 以上的大容量磁盘,建议使用 GPT 分区表。


3. 创建标准分区

作用:在 /dev/sdb 上创建一个占用整块磁盘空间的普通分区。

执行命令:

parted -s /dev/sdb mkpart primary xfs 0% 100%

说明:

primary:创建主分区
xfs:分区用途标记为 xfs
0% 100%:使用整块磁盘空间

查看分区结果:

lsblk

示例输出:

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 446.6G  0 disk
├─sda1   8:1    0     1G  0 part /boot/efi
├─sda2   8:2    0     1G  0 part /boot
├─sda3   8:3    0 316.6G  0 part /
└─sda4   8:4    0   128G  0 part [SWAP]
sdb      8:16   0     8T  0 disk
└─sdb1   8:17   0     8T  0 part

此时已经生成:

/dev/sdb1

4. 格式化文件系统

作用:为 /dev/sdb1 创建文件系统,使其可以被 Linux 正常挂载和读写。

本文使用 XFS 文件系统:

mkfs.xfs -f /dev/sdb1

说明:

mkfs.xfs:创建 xfs 文件系统
-f:强制格式化
/dev/sdb1:目标分区

格式化完成后,再次查看:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1 xfs          3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2

此时可以看到 /dev/sdb1 已经是 xfs 文件系统。


5. 创建挂载目录

作用:创建数据盘在系统中的访问路径。

执行命令:

mkdir -p /data

说明:

/data 是后续访问数据盘的目录
-p 表示目录不存在则创建,存在则不报错

6. 立即挂载数据盘

作用:将 /dev/sdb1 挂载到 /data,使数据盘立即可用。

执行命令:

mount /dev/sdb1 /data

验证挂载结果:

df -h /data

示例输出:

[root@localhost ~]# df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       8.0T   56G  8.0T   1% /data

也可以使用:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1 xfs          3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2 /data

7. 配置开机自动挂载

作用:将挂载配置写入 /etc/fstab,使服务器重启后自动挂载 /data

方式一:手动编辑 /etc/fstab

vi /etc/fstab

在文件末尾添加:

/dev/sdb1    /data    xfs    defaults    0 0

字段说明:

/dev/sdb1:要挂载的设备
/data:挂载目录
xfs:文件系统类型
defaults:默认挂载参数
0:不进行 dump 备份
0:开机不进行 fsck 检查

方式二:使用 echo 追加配置。

echo "/dev/sdb1 /data xfs defaults 0 0" >> /etc/fstab

注意:使用 echo 追加前,建议先检查 /etc/fstab,避免重复写入相同挂载项。

查看配置:

cat /etc/fstab

8. 测试 fstab 配置

作用:验证 /etc/fstab 配置是否正确,避免服务器重启后挂载失败。

先卸载:

umount /data

再重新加载 /etc/fstab

mount -a

检查挂载结果:

df -h /data

示例输出:

[root@localhost ~]# df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       8.0T   56G  8.0T   1% /data

如果可以正常挂载,说明 /etc/fstab 配置正确。


9. 已格式化磁盘快速挂载

如果 /dev/sdb1 已经创建好分区,并且已经格式化为 xfs,只是需要挂载到 /data,可以直接执行以下命令:

mkdir -p /data

mount /dev/sdb1 /data

echo "/dev/sdb1 /data xfs defaults 0 0" >> /etc/fstab

mount -a

df -h /data

这种方式适合以下场景:

磁盘已经分区
磁盘已经格式化
只需要重新挂载
需要配置开机自动挂载

三、挂载数据盘 LVM

本部分介绍如何使用 LVM 方式将 /dev/sdb 挂载到 /data

最终结构如下:

/dev/sdb
└── /dev/sdb1
    └── datavg-datalv    xfs    /data

LVM 的完整链路为:

/dev/sdb1 → PV → VG(datavg) → LV(datalv) → xfs → /data

1. 查看磁盘

作用:确认当前服务器磁盘情况,找到需要配置为 LVM 的数据盘。

执行命令:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb

从输出可以看到:

/dev/sda 是系统盘
/dev/sdb 没有分区
/dev/sdb 没有文件系统
/dev/sdb 没有挂载点

因此可以确认 /dev/sdb 是待配置的数据盘。


2. 创建 GPT 分区表

作用:初始化磁盘分区表,为创建 LVM 分区做准备。

执行命令:

parted -s /dev/sdb mklabel gpt

说明:

/dev/sdb:目标数据盘
mklabel gpt:创建 GPT 分区表

对于 2TB 以上的大容量磁盘,建议使用 GPT 分区表。


3. 创建数据分区

作用:在 /dev/sdb 上创建一个占用整块磁盘空间的分区,后续作为 LVM 的 PV 使用。

执行命令:

parted -s /dev/sdb mkpart primary 0% 100%

查看分区结果:

lsblk

示例输出:

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 446.6G  0 disk
├─sda1   8:1    0     1G  0 part /boot/efi
├─sda2   8:2    0     1G  0 part /boot
├─sda3   8:3    0 316.6G  0 part /
└─sda4   8:4    0   128G  0 part [SWAP]
sdb      8:16   0     8T  0 disk
└─sdb1   8:17   0     8T  0 part

此时已经生成:

/dev/sdb1

4. 创建 PV 物理卷

作用:将 /dev/sdb1 初始化为 LVM 可以识别和管理的物理卷。

执行命令:

pvcreate /dev/sdb1

查看 PV:

pvs

示例输出:

[root@localhost ~]# pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1    lvm2 ---  8.00t 8.00t

此时 /dev/sdb1 已经成为 LVM 物理卷。


5. 创建 VG 卷组

作用:创建一个卷组,用来统一管理一个或多个 PV 的空间。

执行命令:

vgcreate datavg /dev/sdb1

说明:

datavg:卷组名称
/dev/sdb1:加入该卷组的物理卷

查看 VG:

vgs

示例输出:

[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize VFree
  datavg   1   0   0 wz--n- 8.00t 8.00t

此时已经创建卷组:

datavg

6. 创建 LV 逻辑卷

作用:从卷组 datavg 中划分一个逻辑卷,作为最终要格式化和挂载的设备。

执行命令:

lvcreate -l 100%FREE -n datalv datavg

说明:

-l 100%FREE:使用卷组中全部剩余空间
-n datalv:逻辑卷名称为 datalv
datavg:从 datavg 卷组中创建

查看 LV:

lvs

示例输出:

[root@localhost ~]# lvs
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  datalv datavg -wi-a----- 8.00t

逻辑卷路径为:

/dev/datavg/datalv

也可以看到映射路径:

/dev/mapper/datavg-datalv

这两个路径通常都可以使用。


7. 格式化文件系统

作用:为 LVM 逻辑卷创建文件系统,使其可以被 Linux 正常挂载和读写。

本文使用 XFS 文件系统:

mkfs.xfs -f /dev/datavg/datalv

说明:

mkfs.xfs:创建 xfs 文件系统
-f:强制格式化
/dev/datavg/datalv:目标逻辑卷

格式化完成后,查看磁盘结构:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME              FSTYPE      LABEL UUID                                 MOUNTPOINT
sda
├─sda1            vfat              B054-FD9E                            /boot/efi
├─sda2            ext4              9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3            ext4              d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4            swap              74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1            LVM2_member       h2U2wb-nLwJ-qeM9-pFO4-xbSO-NuQo-5Cx2Fp
  └─datavg-datalv xfs               8bde6b73-25db-41fa-a73b-91f989a6d7c9

从输出可以看到:

/dev/sdb1 是 LVM2_member
/dev/datavg/datalv 是 xfs

8. 创建挂载目录

作用:创建数据盘在系统中的访问路径。

执行命令:

mkdir -p /data

说明:

/data 是后续访问数据盘的目录
-p 表示目录不存在则创建,存在则不报错

9. 立即挂载数据盘

作用:将 LVM 逻辑卷 /dev/datavg/datalv 挂载到 /data,使数据盘立即可用。

执行命令:

mount /dev/datavg/datalv /data

验证挂载结果:

df -h /data

示例输出:

[root@localhost ~]# df -h /data
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/datavg-datalv  8.0T   56G  8.0T   1% /data

也可以使用:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME              FSTYPE      LABEL UUID                                 MOUNTPOINT
sda
├─sda1            vfat              B054-FD9E                            /boot/efi
├─sda2            ext4              9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3            ext4              d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4            swap              74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1            LVM2_member       h2U2wb-nLwJ-qeM9-pFO4-xbSO-NuQo-5Cx2Fp
  └─datavg-datalv xfs               8bde6b73-25db-41fa-a73b-91f989a6d7c9 /data

10. 配置开机自动挂载

作用:将挂载配置写入 /etc/fstab,使服务器重启后自动挂载 /data

方式一:手动编辑 /etc/fstab

vi /etc/fstab

在文件末尾添加:

/dev/datavg/datalv    /data    xfs    defaults    0 0

字段说明:

/dev/datavg/datalv:要挂载的逻辑卷
/data:挂载目录
xfs:文件系统类型
defaults:默认挂载参数
0:不进行 dump 备份
0:开机不进行 fsck 检查

方式二:使用 echo 追加配置。

echo "/dev/datavg/datalv /data xfs defaults 0 0" >> /etc/fstab

也可以使用 mapper 路径:

echo "/dev/mapper/datavg-datalv /data xfs defaults 0 0" >> /etc/fstab

注意:使用 echo 追加前,建议先检查 /etc/fstab,避免重复写入相同挂载项。

查看配置:

cat /etc/fstab

11. 测试 fstab 配置

作用:验证 /etc/fstab 配置是否正确,避免服务器重启后挂载失败。

先卸载:

umount /data

再重新加载 /etc/fstab

mount -a

检查挂载结果:

df -h /data

示例输出:

[root@localhost ~]# df -h /data
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/datavg-datalv  8.0T   56G  8.0T   1% /data

如果可以正常挂载,说明 /etc/fstab 配置正确。


12. 已格式化磁盘快速挂载

如果 LVM 已经创建完成,并且 /dev/datavg/datalv 已经格式化为 xfs,只是需要挂载到 /data,可以直接执行以下命令:

mkdir -p /data

mount /dev/datavg/datalv /data

echo "/dev/datavg/datalv /data xfs defaults 0 0" >> /etc/fstab

mount -a

df -h /data

这种方式适合以下场景:

PV 已经存在
VG 已经存在
LV 已经存在
逻辑卷已经格式化
只需要重新挂载
需要配置开机自动挂载

四、UUID 挂载与盘符漂移问题

前面两种方式中,/etc/fstab 使用的是设备名挂载,例如:

/dev/sdb1 /data xfs defaults 0 0

或者:

/dev/datavg/datalv /data xfs defaults 0 0

在普通测试环境中,这种写法比较直观,也方便理解。

但在生产服务器中,尤其是带 RAID 卡、HBA 卡、多块硬盘、多控制器的服务器中,更推荐使用 UUID 进行挂载。


1. 什么是盘符漂移

盘符漂移指的是 Linux 系统启动后,磁盘设备名发生变化。

例如第一次安装系统时:

/dev/sda    系统盘
/dev/sdb    数据盘

重启后可能变成:

/dev/sda    数据盘
/dev/sdb    系统盘

或者:

/dev/sda    系统盘
/dev/sdc    数据盘

也就是说,/dev/sda/dev/sdb/dev/sdc 这类设备名,并不一定永久固定。

如果 /etc/fstab 中写的是:

/dev/sdb1 /data xfs defaults 0 0

一旦数据盘从 /dev/sdb 变成 /dev/sdc,系统启动时就可能无法正确挂载 /data


2. 为什么会发生盘符漂移

Linux 启动时会扫描存储设备,并按照发现顺序生成设备名。

在以下场景中,磁盘发现顺序可能发生变化:

服务器存在 RAID 卡
服务器存在 HBA 直通盘
服务器有多个存储控制器
服务器同时存在 SATA、SAS、NVMe 设备
RAID 组和直通盘同时存在
BIOS 或 RAID 卡启动顺序变化
系统内核扫描顺序变化

因此,/dev/sdb 这种名称更适合作为临时识别方式,不适合作为长期稳定的挂载依据。


3. RAID 卡和 BIOS 层面的解决方式

如果服务器使用 RAID 卡,可以先在 RAID 卡 BIOS 或服务器 BIOS 中确认系统盘启动顺序。

常见做法包括:

在 RAID 卡中设置系统盘 VD 为 Boot Drive
在 BIOS 中设置系统盘为第一启动项
确认 RAID1 系统盘优先于数据盘
确认 HBA 直通盘不在系统盘之前启动

不同 RAID 卡界面名称可能不同,常见选项包括:

Set Boot Drive
Boot Virtual Drive
Select Boot VD
Controller Boot Order
BIOS Boot Device

在 BIOS Boot中设置系统盘先启动
在这里插入图片描述

在RAID卡中设置 Fireware Device Order 为 Enable
在这里插入图片描述

在RAID中确认是系统从RAID 1的VD中启动
在这里插入图片描述

这样做的作用是:

保证服务器优先从系统盘启动
降低系统盘和数据盘顺序变化的概率
减少因启动设备变化导致的系统异常

但是需要注意:

RAID 卡和 BIOS 设置只能优化启动顺序
不能完全保证 Linux 中 /dev/sdX 名称永远不变

因此,生产环境中更稳妥的方式,仍然是使用 UUID 挂载。


4. UUID 挂载的作用

UUID 是文件系统的唯一标识。

相比 /dev/sdb1,UUID 更稳定。

即使磁盘设备名发生变化:

/dev/sdb1 变成 /dev/sdc1

只要文件系统没有重新格式化,它的 UUID 一般不会变化。

因此,把 /etc/fstab 从设备名挂载改成 UUID 挂载,可以避免盘符漂移导致的挂载失败。


5. 查看标准分区 UUID

如果是标准分区方式,查看命令如下:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1 xfs          3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2 /data

其中 /dev/sdb1 的 UUID 是:

3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2

也可以使用:

blkid /dev/sdb1

示例输出:

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2" TYPE="xfs"

6. 修改标准分区 fstab 为 UUID 挂载

原来的配置是:

/dev/sdb1 /data xfs defaults 0 0

修改为:

UUID=3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2 /data xfs defaults 0 0

可以手动编辑:

vi /etc/fstab

也可以先备份:

cp /etc/fstab /etc/fstab.bak

然后修改 /etc/fstab/data 对应的挂载行。

修改完成后测试:

umount /data

mount -a

df -h /data

验证:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 vfat         B054-FD9E                            /boot/efi
├─sda2 ext4         9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3 ext4         d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4 swap         74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1 xfs          3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2 /data

7. 查看 LVM 逻辑卷 UUID

如果是 LVM 方式,需要查看最终文件系统所在的逻辑卷 UUID,而不是 PV 的 UUID。

执行命令:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME              FSTYPE      LABEL UUID                                 MOUNTPOINT
sda
├─sda1            vfat              B054-FD9E                            /boot/efi
├─sda2            ext4              9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3            ext4              d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4            swap              74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1            LVM2_member       h2U2wb-nLwJ-qeM9-pFO4-xbSO-NuQo-5Cx2Fp
  └─datavg-datalv xfs               8bde6b73-25db-41fa-a73b-91f989a6d7c9 /data

这里要使用的是:

datavg-datalv 这一行的 UUID

也就是:

8bde6b73-25db-41fa-a73b-91f989a6d7c9

不要使用 /dev/sdb1 这一行的 LVM2_member UUID。

也可以执行:

blkid /dev/datavg/datalv

示例输出:

[root@localhost ~]# blkid /dev/datavg/datalv
/dev/datavg/datalv: UUID="8bde6b73-25db-41fa-a73b-91f989a6d7c9" TYPE="xfs"

8. 修改 LVM fstab 为 UUID 挂载

原来的配置是:

/dev/datavg/datalv /data xfs defaults 0 0

修改为:

UUID=8bde6b73-25db-41fa-a73b-91f989a6d7c9 /data xfs defaults 0 0

建议先备份:

cp /etc/fstab /etc/fstab.bak

编辑配置:

vi /etc/fstab

修改完成后测试:

umount /data

mount -a

df -h /data

验证:

lsblk -f

示例输出:

[root@localhost ~]# lsblk -f
NAME              FSTYPE      LABEL UUID                                 MOUNTPOINT
sda
├─sda1            vfat              B054-FD9E                            /boot/efi
├─sda2            ext4              9776d1fe-9f2c-4513-902e-1f42ca233fdd /boot
├─sda3            ext4              d3037b53-210d-4590-bd5d-f87360a35efd /
└─sda4            swap              74dfddcb-7819-46dc-899f-8baf442f9280 [SWAP]
sdb
└─sdb1            LVM2_member       h2U2wb-nLwJ-qeM9-pFO4-xbSO-NuQo-5Cx2Fp
  └─datavg-datalv xfs               8bde6b73-25db-41fa-a73b-91f989a6d7c9 /data

9. UUID 挂载配置总结

标准分区:

UUID=3f60b2df-6a2d-4f21-b9de-4d750ad7b7a2 /data xfs defaults 0 0

LVM 逻辑卷:

UUID=8bde6b73-25db-41fa-a73b-91f989a6d7c9 /data xfs defaults 0 0

生产环境建议优先使用 UUID 挂载,而不是直接使用:

/dev/sdb1
/dev/sdc1

五、标准分区与 LVM 对比

对比项 标准分区 LVM
结构 简单 较复杂
配置难度 中等
排障难度 较低 较高
扩容能力 一般
多盘合并 不方便 支持
在线扩容 不如 LVM 灵活 支持
快照能力 不支持 支持
适合系统盘 适合 一般
适合数据盘 可以使用 更推荐
生产环境灵活性 一般 较高

简单理解:

标准分区:简单、直接、适合系统盘或固定容量磁盘
LVM:灵活、方便扩容、适合数据盘和生产环境

六、生产环境建议

在服务器交付和运维场景中,建议遵循以下原则。


1. 系统盘建议使用标准分区

系统盘通常包含:

/boot
/boot/efi
swap
/

建议结构简单,方便启动和排障。

例如:

/dev/sda1    /boot/efi
/dev/sda2    /boot
/dev/sda3    /
/dev/sda4    swap

如果系统盘使用 RAID1,可以先在 RAID 卡中创建 RAID1 逻辑盘,然后安装系统时再进行标准分区。


2. 数据盘建议使用 LVM

数据盘通常用于:

业务数据
日志数据
数据库文件
备份文件
应用目录

这类磁盘后续可能存在扩容需求,因此更推荐使用 LVM。

推荐结构:

/dev/sdb1 → PV → VG → LV → xfs → /data

3. 文件系统建议使用 XFS

在服务器数据盘场景中,XFS 是比较常见的选择。

特点:

适合大容量磁盘
适合大文件场景
性能稳定
在线扩容方便

如果使用 LVM + XFS,后续扩容也比较方便。


4. fstab 建议使用 UUID

不建议生产环境长期使用:

/dev/sdb1 /data xfs defaults 0 0

更建议使用:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0

原因是:

/dev/sdb 可能变化
UUID 更稳定
可以避免盘符漂移导致挂载失败

5. 修改 fstab 后必须测试

每次修改 /etc/fstab 后,都建议执行:

mount -a

如果没有报错,再检查:

df -h /data
lsblk -f

不要只修改 /etc/fstab 后直接重启。

如果 /etc/fstab 配置错误,严重时可能导致系统启动异常或进入紧急模式。


6. 操作前必须确认目标磁盘

执行以下危险操作前:

parted -s /dev/sdb mklabel gpt
mkfs.xfs -f /dev/sdb1
pvcreate /dev/sdb1

一定要确认 /dev/sdb 是目标数据盘。

建议至少执行:

lsblk -f
fdisk -l

确认磁盘容量、分区情况和挂载情况。


七、常用命令汇总

查看磁盘和文件系统:

lsblk -f

查看磁盘结构:

lsblk

查看 UUID:

blkid

查看挂载情况:

df -h

查看 /data 挂载情况:

df -h /data

创建挂载目录:

mkdir -p /data

挂载标准分区:

mount /dev/sdb1 /data

挂载 LVM 逻辑卷:

mount /dev/datavg/datalv /data

测试 /etc/fstab

mount -a

卸载 /data

umount /data

查看 PV:

pvs

查看 VG:

vgs

查看 LV:

lvs

八、总结

Linux 服务器挂载数据盘时,常见方式有两种:

标准分区
LVM

标准分区适合结构简单、容量固定的场景:

/dev/sdb1 → xfs → /data

LVM 适合生产环境和后续可能扩容的场景:

/dev/sdb1 → PV → VG → LV → xfs → /data

在实际服务器环境中,还需要注意盘符漂移问题。

因此,最终生产建议是:

系统盘使用标准分区
数据盘使用 LVM
文件系统使用 XFS
/etc/fstab 使用 UUID 挂载
修改 fstab 后执行 mount -a 测试

这样可以兼顾配置清晰度、后期扩容能力和系统稳定性。


说明

免责声明与版权声明

本文内容由个人发布,仅用于学习、技术研究与经验交流。

文中涉及的软件(包括正版及第三方版本)仅供测试与学习用途,不构成任何形式的分发、破解、商业使用或侵权行为的鼓励。若您需要长期使用或商业部署,请前往官方网站购买或获取正版授权。

作者不对任何软件的使用、修改、传播及由此产生的后果承担法律责任。读者应自行判断、下载与使用软件,并遵守所在地法律法规及相关许可协议。

部分内容参考或摘录自公开资料、官方文档或其他技术文章,均已尽可能注明原作者及来源链接。若原作者或版权方认为本文存在不当引用或侵权内容,请联系作者处理,作者将在核实后及时修改或删除相关内容。


知识共享许可声明

除特别说明外,本文中的原创文字、图片、图表及资料均依据:

CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享)

许可协议发布。

您可以在遵守本协议的前提下:

  • 复制、转载和分享本文内容;
  • 对本文内容进行修改、改编和二次创作;
  • 将本文内容用于个人学习、研究和非商业用途。

同时必须满足以下条件:

  • 保留原作者署名及原文链接;
  • 明确标注内容来源;
  • 不得将本文及其衍生作品用于任何商业用途;
  • 基于本文进行修改、改编或再创作的作品,必须继续采用相同协议进行发布。

特别声明

未经作者书面授权,禁止以下行为:

  • 将本文原创内容用于商业培训、付费课程、付费社群、收费咨询等商业活动;
  • 将本文原创内容转载至以盈利为目的的网站、平台、出版物或知识付费平台;
  • 将本文原创内容批量采集、镜像、聚合或作为数据库内容进行商业运营;
  • 将本文原创内容用于人工智能模型训练、知识库构建、数据集整理或其他商业化用途;
  • 删除、修改或隐藏原作者署名、原文链接及版权声明。

对于违反上述声明的行为,作者保留依法追究相关责任的权利。


AI 辅助生成声明

本文部分内容在撰写、整理、润色或结构优化过程中使用了 AI 工具进行辅助生成。

AI 生成内容仅作为写作辅助参考,最终内容已由作者进行人工审阅、修改、校对与确认。本文观点、技术步骤、命令示例及相关说明均以作者最终发布版本为准。

读者在参考本文内容进行实际操作前,应结合自身环境进行验证,作者不因 AI 辅助生成内容可能存在的遗漏、错误或不适用情况承担额外责任。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐