Linux Centos系统硬盘分区扩容
2T与6T硬盘
前提准备
-
备份数据:所有磁盘操作有风险,务必备份服务器重要数据。
-
确认硬盘设备名
新硬盘接入服务器后,通过以下命令确认设备名,通常是/dev/sdb /dev/sdc等,系统盘一般是/dev/sda
bashfdisk -l # 列出所有磁盘(包括未分区的),注意看"Disk /dev/sdb: 2.0 TiB"这类信息 lsblk # 更直观的块设备列表,未分区的磁盘会显示"disk"类型,无分区(如sdb、sdc)
2T 硬盘设备名为
/dev/sdb
6T 硬盘为
/dev/sdc
(后续命令以此为例,实际请替换为你的设备名)。
方案一:使用 LVM 管理(推荐,灵活扩展)
LVM(逻辑卷管理)的优势:可动态调整分区大小、跨硬盘合并空间、方便未来扩容。适合需要灵活管理大容量存储的场景。
步骤 1:分区(2T 和 6T 硬盘均需分区)
(1)2T 硬盘分区(MBR 或 GPT 均可,推荐 GPT)
虽然 2T 以下可用 MBR,但 GPT 支持更大容量且更现代,统一用 GPT 更稳妥。
bash
# 进入parted工具(支持GPT),操作/dev/sdb(2T硬盘)
parted /dev/sdb
# 交互模式下输入以下命令(每行一个,按回车执行):
(parted) mklabel gpt # 初始化分区表为GPT(会清空磁盘,确认无数据)
(parted) mkpart primary 0% 100% # 创建一个主分区,占满整个磁盘(0%起始,100%结束)
(parted) name 1 sdb1_part # 给分区命名(可选,方便识别)
(parted) set 1 lvm on # 标记分区为LVM类型(便于后续加入LVM)
(parted) print # 查看分区结果(确认"Partition Table: gpt"和分区信息)
(parted) quit # 退出parted
# 验证分区是否成功:
lsblk /dev/sdb # 应显示/dev/sdb1(分区已创建)
(2)6T 硬盘分区(必须用 GPT,MBR 最大支持 2T)
bash
# 操作/dev/sdc(6T硬盘)
parted /dev/sdc
(parted) mklabel gpt # 强制用GPT(6T超MBR上限)
(parted) mkpart primary 0% 100% # 全磁盘分区
(parted) name 1 sdc1_part
(parted) set 1 lvm on
(parted) print # 确认分区大小和类型
(parted) quit
# 验证:
lsblk /dev/sdc # 应显示/dev/sdc1
步骤 2:创建 LVM 组件(PV→VG→LV)
(1)创建物理卷(PV,将分区转为 LVM 可识别的 "物理卷")
bash
# 为2T的分区/dev/sdb1创建PV
pvcreate /dev/sdb1
# 为6T的分区/dev/sdc1创建PV
pvcreate /dev/sdc1
# 验证PV是否创建成功:
pvdisplay # 查看所有PV,应显示/dev/sdb1和/dev/sdc1,以及各自的大小(约2T和6T)
# 关键信息:PV Name(设备名)、PV Size(容量)、Status(allocatable: yes)
- 若提示 "Device /dev/sdb1 is already in use",说明分区被占用,需确认是否误操作了系统盘,或用
wipefs -a /dev/sdb1
清除残留信息(谨慎,会清空数据)。
(2)创建卷组(VG,将多个 PV 合并为一个 "卷组",相当于一个 "大硬盘池")
bash
# 创建名为"vg_storage"的卷组,包含/dev/sdb1和/dev/sdc1
vgcreate vg_storage /dev/sdb1 /dev/sdc1
# 验证VG:
vgdisplay vg_storage # 查看卷组信息
# 关键信息:VG Name(vg_storage)、VG Size(约8T,2T+6T)、Free PE / Size(剩余空间,初始应为8T)
(3)创建逻辑卷(LV,从 VG 中划分空间,相当于 "可动态调整的分区")
需要将 8T 空间全部使用(也可预留部分后续扩展):
bash
# 从vg_storage中划分所有空间,创建名为"lv_data"的逻辑卷
lvcreate -l +100%FREE -n lv_data vg_storage
# 参数说明:
# -l +100%FREE:使用卷组中所有剩余空间
# -n lv_data:逻辑卷名称
# 验证LV:
lvdisplay /dev/vg_storage/lv_data # 查看逻辑卷信息
# 关键信息:LV Size(约8T)、LV Path(/dev/vg_storage/lv_data)
步骤 3:格式化逻辑卷(创建文件系统)
选择适合大容量存储的文件系统,推荐xfs
(CentOS 默认,支持动态扩展)或ext4
(兼容性好)。
(1)用 xfs 格式化(推荐)
bash
mkfs.xfs -f /dev/vg_storage/lv_data
# 参数说明:
# -f:强制格式化(若已有文件系统,会覆盖,谨慎!)
# xfs特点:高性能、支持大文件、可在线扩展(适合LVM动态调整)
(2)若选 ext4(兼容性更好,支持缩小)
bash
mkfs.ext4 -F /dev/vg_storage/lv_data
# 参数说明:
# -F:强制格式化
# ext4特点:支持最大1EB容量,可缩小(但缩小需卸载,不如xfs方便扩展)
验证格式化 :用blkid
查看文件系统类型:
bash
blkid /dev/vg_storage/lv_data # 应显示TYPE="xfs"或"ext4"
步骤 4:挂载逻辑卷(临时 + 永久)
(1)创建挂载点(目录)
bash
mkdir -p /data # 创建/data目录作为挂载点(可自定义路径,如/mnt/storage)
chmod 755 /data # 设置权限(根据需求调整,如777允许所有用户读写)
(2)临时挂载(重启后失效,用于测试)
bash
mount /dev/vg_storage/lv_data /data
# 验证挂载:
df -h /data # 显示挂载点和容量(约8T)
lsblk /dev/vg_storage/lv_data # 显示挂载到/data
(3)永久挂载(写入 /etc/fstab,开机自动挂载)
-
先获取逻辑卷的 UUID(比设备名更稳定,避免设备名变动导致挂载失败):
bashblkid /dev/vg_storage/lv_data # 输出类似:UUID="xxxx-xxxx-xxxx" TYPE="xfs"
-
编辑
/etc/fstab
:bashvim /etc/fstab # 在末尾添加一行(替换UUID和文件系统类型): UUID=xxxx-xxxx-xxxx /data xfs defaults 0 0 # 字段说明: # UUID=xxx:逻辑卷的UUID(从blkid获取) # /data:挂载点 # xfs:文件系统类型(和格式化时一致) # defaults:默认挂载选项(rw, suid, dev, exec, auto, nouser, async) # 0:dump备份(0=不备份) # 0:fsck检查(0=开机不检查,根分区一般为1)
-
验证
fstab
配置(避免语法错误导致开机失败):bashmount -a # 重新加载fstab,若无报错则配置正确 df -h /data # 确认仍挂载正常
方案二:不使用 LVM(直接分区挂载,适合固定空间需求)
若不需要动态扩展,可直接分区后挂载(2T 用 GPT 或 MBR,6T 必须 GPT)。
步骤 1:分区(同方案一的步骤 1,仅不标记为 LVM)
(1)2T 硬盘分区(以 GPT 为例,MBR 类似)
bash
parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) name 1 sdb1_data
(parted) print # 确认分区,无需set lvm on
(parted) quit
(2)6T 硬盘分区(同方案一,必须 GPT)
bash
parted /dev/sdc
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) name 1 sdc1_data
(parted) quit
步骤 2:格式化分区(分别格式化 2T 和 6T 的分区)
(1)格式化 2T 分区(/dev/sdb1)
bash
mkfs.xfs -f /dev/sdb1 # 或mkfs.ext4 -F /dev/sdb1
(2)格式化 6T 分区(/dev/sdc1)
bash
mkfs.xfs -f /dev/sdc1 # 或mkfs.ext4 -F /dev/sdc1
步骤 3:挂载(分别挂载到不同目录)
2T 挂载到/data2t
,6T 挂载到/data6t
。
(1)创建挂载点
bash
mkdir -p /data2t /data6t
chmod 755 /data2t /data6t
(2)临时挂载
bash
mount /dev/sdb1 /data2t
mount /dev/sdc1 /data6t
# 验证:
df -h /data2t /data6t # 分别显示2T和6T容量
(3)永久挂载(写入 /etc/fstab)
-
获取两个分区的 UUID:
bashblkid /dev/sdb1 # 2T分区UUID blkid /dev/sdc1 # 6T分区UUID
-
编辑/etc/fstab
bashvim /etc/fstab # 添加两行: UUID=xxx-sdb1 /data2t xfs defaults 0 0 UUID=xxx-sdc1 /data6t xfs defaults 0 0
-
验证:
bashmount -a # 无报错则成功
关键区别总结(LVM vs 直接分区)
对比项 | 使用 LVM | 直接分区 |
---|---|---|
空间管理 | 可合并多硬盘为一个逻辑空间(8T) | 各硬盘独立(2T 和 6T 分开) |
扩展性 | 动态扩展(无需卸载,在线调整) | 扩展需重新分区(风险高,操作复杂) |
灵活性 | 支持未来添加新硬盘扩容 | 硬盘容量固定,无法合并新硬盘 |
复杂度 | 步骤多(PV→VG→LV) | 步骤简单(分区→格式化→挂载) |
适用场景 | 需要灵活扩展、大容量合并存储 | 空间固定,无需扩展,追求简单 |
常见问题排查
- 分区后不显示分区 :执行
partprobe /dev/sdb
(刷新分区表)。 - 挂载失败 :检查
/etc/fstab
语法(UUID 是否正确、文件系统类型是否匹配),用mount -a
看错误提示。 - LVM 扩展空间 :若后续添加新硬盘,步骤为:分区→
pvcreate
→vgextend
→lvextend
→扩展文件系统(xfs 用xfs_growfs /data
,ext4 用resize2fs /dev/vg/lv
)。 - 误操作恢复 :若误删分区表,可用
testdisk
工具尝试恢复(需提前安装:yum install testdisk
)。
按以上步骤操作,即可完成硬盘的分区、格式化和挂载。每一步操作后建议用验证命令确认成功,再进行下一步,降低出错风险。