Linux服务器数据盘初始化与盘符漂移解决方案:标准分区、LVM逻辑卷、XFS格式化、fstab配置与UUID持久化挂载实战
本文以 Linux 服务器新增 8T 数据盘挂载到 /data 为示例,整理数据盘初始化、分区、格式化与持久化挂载的完整流程。内容包括标准分区与 LVM 逻辑卷的概念区别、适用场景,以及两种方式下创建 GPT 分区、格式化 XFS、配置 /etc/fstab 和验证挂载结果的具体命令。同时介绍生产环境常见的盘符漂移问题,说明 /dev/sdX 设备名不稳定的原因,并给出 RAID 卡 BIOS 启
前言
在服务器交付、系统初始化或数据盘扩容场景中,经常需要对新增硬盘进行分区、格式化并挂载到指定目录。
本文以一块 8TB 数据盘 /dev/sdb 为例,介绍 Linux 服务器中常见的数据盘挂载方式,包括:
- Linux 磁盘分区简介
- 标准分区方式挂载数据盘
- LVM 方式挂载数据盘
- UUID 挂载与盘符漂移问题
- 标准分区与 LVM 对比
- 生产环境建议
本文示例环境:
系统盘:/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 辅助生成内容可能存在的遗漏、错误或不适用情况承担额外责任。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)