最佳实践
概述
基本新硬盘操作
- 创建 GPT 格式的分区表
- parted /dev/vdb mktable gpt
- 为 /dev/vdb 创建一个主分区,大小是该磁盘的 0% 到 100%,设置名称为 data1
- parted /dev/vdb mkpart data1 0% 100%
- 注意:尽量使用
%
来标识磁盘分区大小,否则会提示磁盘分区未对齐。若是显示命令无法显示百分比,则通过unit
子命令将单位转换为%
- 为 /dev/vdb1 创建 xfs 文件系统
- mkfs.xfs /dev/vdb1
- 挂载文件系统
- mount /dev/vdb1 /mnt/test
为新磁盘创建 LVM
# 创建 GPT 格式的分区表
parted /dev/vdb mktable gpt
# 为/dev/vdb分一个主分区,大小是该磁盘的0%到100%
parted /dev/vdb mkpart lvm 0% 100%
# 创建 PV
pvcreate /dev/vdb1
# 创建 VG
vgcreate vg-data /dev/vdb1
# 创建 LV
lvcreate -l 100%FREE -n lv0 vg-data
# 为 /dev/mapper/vg--data-lv0 创建 xfs 文件系统
mkfs.xfs /dev/mapper/vg--data-lv0
# 挂载文件系统
mount /dev/mapper/vg--data-lv0 /mnt/test
为虚拟机磁盘扩容
参考:
前提条件
确保分区表正常
~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 100G 0 disk
└─vda1 252:1 0 100G 0 part /
vdb 252:16 0 30G 0 disk
└─vdb1 252:17 0 20G 0 part
└─vg--data-lv0 253:0 0 20G 0 lvm
[root@hw-cloud-xngy-jump-server-linux-2 ~]# parted /dev/vdb print
Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 20971520 blocks) or continue with the current setting?
警告:似乎并未使用 /dev/vdb 的所有可用空间,您可以修复 GPT 以使用所有空间(额外的 20971520 个块)还是继续当前设置?
Fix/Ignore?
注意:
- 虚拟机中的一个磁盘被扩容后,如果是 GPT 分区表的磁盘,当我们使用
parted DEVICE print
指令查看信息时,将会弹出警告- 这是因为 GPT 分区表信息存储在磁盘开头,为了减少分区表损坏的风险,同时在磁盘末尾会备份一份。当磁盘容量扩大后,末尾位置也会随之变化,因此需要根据系统提示输入“Fix”,将分区表信息的备份文件挪到新的磁盘末尾位置。
- 此时直接输入 Fix 即可自动修复
虚拟机磁盘使用 LVM 的扩容方案
# 扩容分区
$ growpart /dev/vdb 1
CHANGED: partition=1 start=2048 old: size=62912479 end=62914527 new: size=73398239 end=73400287
# 扩容分区对应的 PV
$ pvresize /dev/vdb1
Physical volume "/dev/vdb1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
# 扩容 LV
$ lvextend -l +100%FREE /dev/mapper/vg--data-lv0
Size of logical volume vg-data/lv0 changed from <30.00 GiB (7679 extents) to <35.00 GiB (8959 extents).
Logical volume vg-data/lv0 successfully resized.
# 扩容文件系统
$ xfs_growfs /dev/mapper/vg--data-lv0
meta-data=/dev/mapper/vg--data-lv0 isize=512 agcount=4, agsize=1310464 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=5241856, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5241856 to 9174016
虚拟机磁盘不使用 LVM 的扩容方案
比较简单,两步解决
- 扩容分区
- growpart /dev/vdb 1
- 扩容文件系统
- ext* 类型
- resize2fs /dev/vdb1
- xfs 类型
- xfs_growfs /dev/vdb1
- ext* 类型
这种方式通常都是在公有云上这么搞~
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.