类别:Ubantu / 日期:2026-08-25 / 浏览:98 / 评论:0
以下是目前硬盘情况:
要求:
新增了一个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'
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'
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
5. 创建pv:pvcreate /dev/sdb1
# 创建pv,方便将pv交给vg管理 pvcreate /dev/sdb1 # pvscan查看卷组,观察是否创建成功 pvscan | grep /dev/sdb1
6. 扩容vg:vgextend vg0 /dev/sdb1
现在要给/扩容,所以要知道/属于哪个vg管理
# 查看lv lvdisplay
用命令:vgs 查看vg0组容量为约59g
所以我现在要给vg0这个VG扩展容量
# 将/dev/sdb1这个pv交给vg0这个vg管理 vgextend vg0 /dev/sdb1 # 查看vg状态 vgdisplay 或命令:vgs
7.扩容lv:lvextend -l +100%FREE /dev/vg0/lv_home
# 查看/挂载点对应的信息 df -h
# 查看LV虚拟卷信息,可以知道/home对应的LVPath为/dev/vg0/lv_home lvdisplay
下面就是给LV扩容:
# 按固定大小追加(追加10G给/dev/vg0/lv_home这个LVPath) lvextend -L +10G /dev/vg0/lv_home # 按百分比追加 lvextend -l +100%FREE /dev/vg0/lv_home
以百分比追加为例,我将vg中剩下的所有容量全部分配给/home
# 查看LV是否扩容成功 lvdisplay
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及以后
注意:
不要卸载扩容的磁盘,可能出现丢失数据或是系统无法启动。因为多个LV对外提供的是一个VG,如果你卸载了其中一个磁盘导致LV失效,部分数据就可能丢失。类比:ES中的Shard
2.3 总结
新增磁盘
fdisk给磁盘创建分区,fdisk /dev/sdb
mkfs格式化磁盘,mkfs -t ext4 /dev/sdb1
pvcreate创建pv,pvcreate /dev/sdb1
vgextend扩容vg,vgextend vg0 /dev/sdb1,给vg扩容(将/dev/sdb1交给vg0这个vg管理)
lvextend扩容lv,lvextend -l +100%FREE /dev/vg0/lv_home(将vg剩余的容量全部分配给/dev/vg0/lv_home这个lv)
xfs_growfs刷新分区, resize2fs /dev/vg0/lv_home # 适用于centos6
# xfs_growfs /dev/vg0/lv_home # centos7及以后df -h 查看挂载点大小变化,观察是否扩容成功















