类别:Ubantu / 日期:2026-08-25 / 浏览:98 / 评论:0

以下是目前硬盘情况:

PixPin_2026-08-25_22-21-19.jpg

要求:

新增了一个20G的硬盘sdb,现在需要分10G到/home

一、基本概念:

1.1  物理卷 Physical  Volume (PV)
可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的 header,其余部分被切割为一块块物理区域(physical extents)
1.2 卷组 Volume group (VG): 将一组物理卷收集为一个管理单元
1.3 逻辑卷 Logical volume (LV): 虚拟分区,由物理区域(physical extents)组成
1.4 物理区域 Physical extent (PE): 硬盘可供指派给逻辑卷的最小单位(通常为 4MB)

二、实践

2.1 基础命令及解析

# 查看挂载点
df -h 

# 查看逻辑卷( logical volume)
lvdisplay
#简单点的命令
lvs

# 查看当前的卷组(volume group),输出结果中的VG Size表示当前卷组总大小
vgdisplay
#简单命令
vgs

# 查看当前的物理卷组(physical volume)
pvdisplay
#简单命令
pvs

# 执行fdisk /dev/sdb给vdb磁盘创建分区
fdisk /dev/sdb

# 格式化分区
mkfs -t xfs /dev/sdb1 # 一般用于centos7及以上
# mkfs -t ext4 /dev/sdb1 # 一般用于centos6

# 创建pv,方便将pv交给vg管理
pvcreate /dev/sdb1

# 给centos这个VG扩容
vgextend centos /dev/sdb1

# 给LV扩容 
lvextend -l +100%FREE /dev/vg0/lv_home

# 刷新分区
# resize2fs /dev/vg0/lv_home # 适用于centos6
xfs_growfs /dev/vg0/lv_home # centos7及以后

2.2 开始给LVM扩容

1. 查看fdisk:fdisk -l

root@ubuntu:~# fdisk -l
Disk /dev/loop0: 63.91 MiB, 67014656 bytes, 130888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 86.99 MiB, 91213824 bytes, 178152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 40.43 MiB, 42393600 bytes, 82800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 63.78 MiB, 66879488 bytes, 130624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CAF901CA-F2DC-411C-A787-BA8835CA65EE

Device       Start       End   Sectors Size Type
/dev/sda1     2048      4095      2048   1M BIOS boot
/dev/sda2     4096   2101247   2097152   1G Linux filesystem
/dev/sda3  2101248 125827071 123725824  59G Linux filesystem


Disk /dev/mapper/vg0-lv_root: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/vg0-lv_swap: 4 GiB, 4294967296 bytes, 8388608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/vg0-lv_var: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/vg0-lv_data: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/vg0-lv_home: 20 GiB, 21470642176 bytes, 41934848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

以上可以看到我们当前磁盘的基础信息,以及挂载情况。

查询挂载点情况:df -h

root@ubuntu:~# df -h
Filesystem               Size  Used Avail Use% Mounted on
tmpfs                    388M  1.6M  387M   1% /run
/dev/mapper/vg0-lv_root   20G  2.6G   16G  14% /
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    5.0M     0  5.0M   0% /run/lock
/dev/mapper/vg0-lv_data  9.8G   24K  9.3G   1% /data
/dev/sda2                974M  133M  774M  15% /boot
/dev/mapper/vg0-lv_home   20G   56K   19G   1% /home
/dev/mapper/vg0-lv_var   4.9G  784M  3.9G  17% /var
tmpfs                    388M  4.0K  388M   1% /run/user/1000
root@ubuntu:~#

2.查看所有存储设备:

# 查看当前所有的存储设备
# fdisk -l |grep '/dev'
# 查看当前所有磁盘
fdisk -l |grep '/dev/sd'

PixPin_2026-08-25_22-47-48.jpg

3. 给磁盘创建分区:fdisk /dev/sdb

root@ubuntu:~# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xede50d76.

Command (m for help): n    //new 新创建分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p    // p 是主分区(只能4个),e 是扩展分区
Partition number (1-4, default 1):     //默认为1,回车即可
First sector (2048-41943039, default 2048):   //默认从2048开始
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +10G    //如果想全部创建,默认回车即可。这里我创建10G

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): w    //w 写入write到硬盘
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

查看是否分区成功

fdisk -l | grep 'dev/sd'

PixPin_2026-08-25_23-00-29.jpg

4. 格式化 磁盘:mkfs -t ext4 /dev/sdb1

文件系统类型centos6文件系统是ext4,因为设计较早,对于现今动辄上T的海量数据处理,性能较低。 centos7和ubuntu文件系统是xfs,适用于海量数据。由于之前系统已格式化为ext4,所以一定要保持一致可以用df -Th查看当前的文件系统

#查看当前的文件系统
df -Th
#格式化分区
mkfs -t xfs /dev/sdb1 # 一般用于centos7及以上
mkfs -t ext4 /dev/sdb1 # 一般用于centos6

PixPin_2026-08-25_23-09-42.jpg

5. 创建pv:pvcreate /dev/sdb1

# 创建pv,方便将pv交给vg管理
pvcreate /dev/sdb1
# pvscan查看卷组,观察是否创建成功
pvscan |  grep /dev/sdb1

PixPin_2026-08-25_23-12-30.jpg

6. 扩容vg:vgextend vg0 /dev/sdb1

现在要给/扩容,所以要知道/属于哪个vg管理

# 查看lv
lvdisplay

PixPin_2026-08-25_23-16-18.jpg

用命令:vgs 查看vg0组容量为约59g

PixPin_2026-08-25_23-17-38.jpg

所以我现在要给vg0这个VG扩展容量

# 将/dev/sdb1这个pv交给vg0这个vg管理
vgextend vg0 /dev/sdb1
# 查看vg状态
vgdisplay
或命令:vgs

PixPin_2026-08-25_23-21-44.jpg

7.扩容lv:lvextend -l +100%FREE /dev/vg0/lv_home

# 查看/挂载点对应的信息
df -h

PixPin_2026-08-25_23-25-58.jpg

# 查看LV虚拟卷信息,可以知道/home对应的LVPath为/dev/vg0/lv_home
lvdisplay

PixPin_2026-08-25_23-27-47.jpg

下面就是给LV扩容:

# 按固定大小追加(追加10G给/dev/vg0/lv_home这个LVPath)
lvextend -L +10G /dev/vg0/lv_home

# 按百分比追加
lvextend -l +100%FREE /dev/vg0/lv_home

以百分比追加为例,我将vg中剩下的所有容量全部分配给/home

PixPin_2026-08-25_23-30-45.jpg

# 查看LV是否扩容成功
lvdisplay

PixPin_2026-08-25_23-31-47.jpg

8. 刷新分区:resize2fs /dev/vg0/lv_home

df 命令参看硬盘信息-T选项, 查看文件系统类 型centos6文件系统是ext4,因为设计较早,对于现今动辄上T的海量数据处理,性能较低。 centos7文件系统是xfs,适用于海量数据。

# xfs格式的硬盘使用xfs_growfs
# ext4用resize2fs命令,
# df -T # 查看文件系统类型(一般centos6是ext4,centos7及以后是xfs)
resize2fs /dev/vg0/lv_home # 适用于centos6
# xfs_growfs /dev/vg0/lv_home # centos7及以后

PixPin_2026-08-25_23-34-49.jpg

PixPin_2026-08-25_23-35-43.jpg

注意: 

不要卸载扩容的磁盘,可能出现丢失数据或是系统无法启动。因为多个LV对外提供的是一个VG,如果你卸载了其中一个磁盘导致LV失效,部分数据就可能丢失。类比:ES中的Shard

2.3 总结

  1. 新增磁盘

  2. fdisk给磁盘创建分区,fdisk /dev/sdb

  3. mkfs格式化磁盘,mkfs -t ext4 /dev/sdb1

  4. pvcreate创建pv,pvcreate /dev/sdb1

  5. vgextend扩容vg,vgextend vg0 /dev/sdb1,给vg扩容(将/dev/sdb1交给vg0这个vg管理)

  6. lvextend扩容lv,lvextend -l +100%FREE /dev/vg0/lv_home(将vg剩余的容量全部分配给/dev/vg0/lv_home这个lv)

  7. xfs_growfs刷新分区, resize2fs /dev/vg0/lv_home # 适用于centos6
    # xfs_growfs /dev/vg0/lv_home # centos7及以后

  8. df -h 查看挂载点大小变化,观察是否扩容成功

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章