LVM

LVM l(logical volume manager)

术语:

物理块PE(Physical Extent) 是对pv的分割,单个pe大小默认4M。

物理卷PV(Physical Volume) 是物理设备可以是磁盘或分区。如/dev/sdb /dev/sdc1

卷组VG(Volume Group) 对pe的组合。

逻辑卷LV(Logical Volume) 对vg 的分割

新建逻辑卷管理的步骤

第一步: 把物理磁盘初始化为物理卷(pv),实质是把物理磁盘分割成4M大小的pe

pvcreate /dev/sdb
pvcreate /dev/sdc /dev/sdd

第二步:把分割好的pe 组合起来 为 vg

vgcreate 卷组名称 /dev/sdb /dev/sdc

第三步: 从vg 中指定大小创建lv。

lvcreate -n lv名称 -L 2G 卷组名称
# 选做有兴趣的可以查阅文档
# 在centos pv中 创建类型为thin-pool,名称为thin01 的 lv
lvcreate -n thin01 --type thin-pool --size 10m centos

lvcreate -n test --virtualsize 1G --thinpool thin01 centos

第四步: 检查系统中存在的lv。 例如:/dev/mapper/ubuntu--vg-ubuntu--lv

/dev/vgname/lvname

管理LVM

查看物理卷 pv

pvs  命令查看pv 的简要信息
pvdisplay  命令查看pv的详细信息

查看卷组 vg

vgs
vgdisplay

查看逻辑卷 lv

lvs
lvdispaly
# 指定显示单位
lvs --units k
# 不显示标头
lvs --nohead
# 查看指定lv
lvs --select lv_name="mysql"

删除

lvremove 逻辑卷名
vgremove  卷组名
pvremove 分区名

扩展lv

root@test:/opt# fdisk /dev/sda


Command (m for help): n
Partition number (4-128, default 4):
First sector (41940992-83886046, default 41940992):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-83886046, default 83886046):

Created a new partition 4 of type 'Linux filesystem' and of size 20 GiB.

Command (m for help): p
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 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: FA434BAF-ED49-4ECB-A107-F075A0E33870

Device        Start      End  Sectors  Size Type
/dev/sda1      2048     4095     2048    1M BIOS boot
/dev/sda2      4096  3719167  3715072  1.8G Linux filesystem
/dev/sda3   3719168 41940991 38221824 18.2G Linux filesystem
/dev/sda4  41940992 83886046 41945055   20G Linux filesystem

Command (m for help): w
The partition table has been altered.
Syncing disks.
root@test:/opt# pvcreate /dev/sda4
  Physical volume "/dev/sda4" successfully created.
root@test:/opt# vgextend ubuntu-vg /dev/sda4
  Volume group "ubuntu-vg" successfully extended
root@test:/opt# lvextend -L +20G /dev/ubuntu-vg/ubuntu-lv
  Insufficient free space: 5120 extents needed, but only 5119 available
root@test:/opt# lvresize -L +20g /dev/mapper/ubuntu--vg-ubuntu--lv

动态调整文件系统大小

resize2fs /xfs_growfs

场景举例

场景:磁盘空间马上要满,很着急

第一步:扩展磁盘或增加一块硬盘

vmware 扩展磁盘分区

第二步:给刚才扩展的磁盘分配一个分区

查看磁盘有多少未分区空间

[root@lvm ~]# parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 69.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  标志
        32.3kB  1049kB  1016kB           Free Space
 1      1049kB  1075MB  1074MB  primary  xfs          启动
 2      1075MB  21.5GB  20.4GB  primary               lvm
        21.5GB  64.4GB  42.9GB           Free Space

创建分区

[root@lvm ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3):
First sector (41943040-125829119, default 41943040):
Using default value 41943040
Last sector, +sectors or +size{K,M,G} (41943040-125829119, default 125829119):
Using default value 125829119
Partition 3 of type Linux and of size 40 GiB is set
Command (m for help): w

通知内核分区变动

[root@lvm ~]# partprobe

第三步:把分区转换为pv

[root@lvm ~]# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.
[root@lvm ~]# pvs
  PV         VG                                        Fmt  Attr PSize   PFree
  /dev/sda2  centos                                    lvm2 a--  <19.00g     0
  /dev/sda3                                            lvm2 ---   40.00g 40.00g

第四步:扩展所在vg

[root@lvm ~]# vgextend centos /dev/sda3
  Volume group "centos" successfully extended
[root@lvm ~]# vgs centos
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   2   2   0 wz--n- 58.99g <40.00g

第四步:调整lv的空间大小

[root@lvm ~]# lvresize -L  +39g /dev/centos/root
  Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <56.00 GiB (14335 extents).
  Logical volume centos/root successfully resized

第五步:通知文件系统调整文件系统大小

[root@lvm ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4455424, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               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 4455424 to 14679040

完成

[root@lvm ~]# df -HT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.5G     0  1.5G    0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G    0% /dev/shm
tmpfs                   tmpfs     1.5G   11M  1.5G    1% /run
tmpfs                   tmpfs     1.5G     0  1.5G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        61G   15G   46G   25% /
/dev/sda1               xfs       1.1G  224M  840M   22% /boot
tmpfs                   tmpfs     1.5G   25k  1.5G    1% /var/lib/ceph/osd/ceph-1
tmpfs                   tmpfs     1.5G   25k  1.5G    1% /var/lib/ceph/osd/ceph-0
tmpfs                   tmpfs     1.5G   25k  1.5G    1% /var/lib/ceph/osd/ceph-2
tmpfs                   tmpfs     297M   13k  297M    1% /run/user/42
tmpfs                   tmpfs     297M     0  297M    0% /run/user/0
[root@lvm ~]# lsblk -f /dev/sda
NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1          xfs               2698408f-1135-4c91-b11c-02892e5208f8   /boot
├─sda2          LVM2_member       eZESEK-nJJ1-UvCV-x3st-lJKM-m3Zx-JZNvWO
│ ├─centos-root xfs               e011e279-e5c9-4dfd-87e9-ecfc7e46bccd   /
│ └─centos-swap swap              e14f66e7-6647-486f-a9d7-acc044d455a1
└─sda3          LVM2_member       ugnjZw-FN0H-V8vi-acLb-D6sC-YB1f-CtZIF7
  └─centos-root xfs               e011e279-e5c9-4dfd-87e9-ecfc7e46bccd   /

缩小lv

  1. 卸载umount
  2. resize2fs /xfs_growfs
  3. lvresize -L
  4. 从新挂载

这些指令在做自定义监控时非常有用
参考博文

# 以4m位单位显示
lvs --units 4m
lvs -o lv_name,lv_size
lvs -o +lv_uuid,lv_name,lv_size,lv_attr
lvs -o -lv_uuid,lv_name,lv_size,lv_attr
lvs -v
lvs -v -o lv_name,lv_uuid
lvs --nohead -o lv_name
pvs --nohead -o pv_name
lvs -o pv_name,pv_size --units k
posted @ 2022-06-11 18:03  mingtian是吧  阅读(107)  评论(0编辑  收藏  举报