LVM 原理及动态调整空间使用

lvm 原理

===================

lvm 逻辑卷技术
RAID磁盘阵列技术,提高硬盘的读写效率,以及数据的安全,RAID 的缺点在于
-当你配置好了 RAID 磁盘阵列组,容量的大小,已经是限定了,如果你存储的业务非常多,磁盘容量不够用的问题就会出现,你想就会非常痛苦,麻烦。
-不同的磁盘分区,相对都是独立的,没有任何的联系,可能空间利用率很低。
- 如果某一个分区满了,默认磁盘管理是无法扩容的,只能重新的分区,重新分配容量大小,创建文件系统,很是麻烦。
- 如果你要合并分区,还是得重新格式化磁盘分区,还得进行数据备份,麻烦!
lvm (logical volume manager) 逻辑卷管理技术
lvm技术他是将一个或多个硬盘在逻辑上进行了合并,相当于一个大的硬盘去使用,当你的硬盘空间不够了的话,可以直接去其他硬盘中拿来容量去使用,这就是一个动态的磁盘容量管理技术。
lvm相对于普通的磁盘分区,有较大的灵活性,当一个磁盘空间不够了,可能就会造成很多的麻烦。

lvm 的使用方法

- 基于分区形式创建 lvm
硬盘的多个分区,由 lvm 统一进行管理为卷组,可以弹性的调整卷组大小,加入新硬盘,可以充分的利用磁盘容量。
文件系统是创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)
- 基于硬盘创建 lvm
多块硬盘做成逻辑卷,将整个逻辑卷统一管理,对分区进行动态的扩容,

lvm 的常见名词:

PP (physical partition),物理分区,lvm 直接创建在物理分区之上
PV (physical volume) , 物理卷,处于 lvm 的最底层,一般一个 PV 对应一个 PP
PE (physical extends) , 物理区域,PV中可以用于分配的最小存储单位,同一个VG所有的PV中的PE大小相同,例如 1M, ,2M
VG (volume group) , 卷组,卷组创建在PV之上,可以划分为多个PV,
LE(logical extends) , 逻辑扩展单元,LE是组成LV的基本单元,一个LE对应一个PE
LV(logical volume) , 逻辑卷,创建在VG之上,是一个可以动态扩容的分区概念

LVM 原理

- lvm 动态扩容大小,其实就是通过互相交换 PE 的过程,达到能够弹性扩容分区大小
- 想要减少空间容量,就是剔除 PE 的大小
- 想要扩大容量,就是把其他的 PE 添加到自己的 LV当中
- PE 默认大小一般都是 4M,LVM最多是可以创建出 65534 个 PE ,因此 LVM最大的 VG 卷组单位是 256GB
- PE 其实是 LVM最小的存储单位,类似于操作系统的 block (4k)
- LV逻辑卷的概念 (理解为普通的分区概念,/dev/sda /dev/sdb )

LVM 动态调整空间使用

==========

实际创建 LVM 的过程

lvm 优点:

- lvm 的文件系统可以跨越多个磁盘,分区大小不受磁盘容量限制
- lvm 可以在系统运行中,直接动态扩容文件系统大小
- lvm 可以直接增加新的硬盘,到 lvm 的 VG 卷组中

lvm 创建流程:

1.物理分区阶段,针对物理磁盘或者分区,进行 fdisk 格式化,修改系统的 id ,默认是 83 (十六进制类型) ,改为8e (动态)类型 ,是 lvm 类型
2. PV 阶段,通过 pvcreate(创建),pvdisplay(显示) 将 linux 分区改为物理卷 PV
3. 创建 VG 的阶段,通过 vgcreate(创建),vgdisplay(显示),将创建好的物理卷 PV 改为 物理卷组 VG
4. 创建 LV 的阶段,通过 lvcreate(创建),lvdisplay(显示),将 物理卷组 VG,分为若干个 LV 逻辑卷

转化为命令操作就是这样的过程:

1. 使用 fdisk 命令,修改磁盘的系统 id
2. 创建 PV,pvcreate(创建),以及显示 PV 信息 pvdisplay 也可以直接输入 pvs 查看简单 pv 的信息。
3. 创建 VG 卷组,vgcreate(创建),vgs 显示 VG 卷组信息
4. 创建 LV 逻辑卷,lvcreate(创建),lvs 显示 LV 逻辑卷信息
5. 开始格式化文件系统,使用 LV 分区了

LVM 的管理常见命令:

PV 物理卷
pvcreate 创建 PV 物理卷
pvscan 扫描 PV 物理卷信息
pvs 查看 PV 物理卷简单的信息
pvdisplay 显示 PV 各个物理卷详细参数
pvremove 删除 PV 物理卷

LV 逻辑卷
lvcreate 创建 LV 逻辑卷
lvscan 扫描 LV 逻辑卷信息
lvs 查看 LV 逻辑卷简单的信息
lvdisplay 显示 LV 各个逻辑卷详细参数
lvremove 删除 LV 逻辑卷
lvreduce 缩小 LV 逻辑卷,把 VG 逻辑卷组从 LV 逻辑卷中移除
lvextend 扩容 LV 逻辑卷,把某个新的 VG 逻辑卷组,加入到 LV 逻辑卷中

VG 逻辑卷组
vgcreate 创建 VG 逻辑卷组
vgscan 扫描 VG 逻辑卷组信息
vgs 查看 VG 逻辑卷组简单的信息
vgdisplay 显示 VG 各个逻辑卷组详细参数
vgremove 删除 VG 逻辑卷组 删除整个 VG 逻辑卷组
vgreduce 缩小 VG 逻辑卷组,把物理卷从逻辑卷组中移除
vgextend 扩容 VG 逻辑卷组,把某个新的 PV 物理卷,加入到 VG 逻辑卷组中

========

实际创建 lvm 命令笔记:

挑选 /dev/sdf /dev/sdg 两块硬盘,创建物理卷,然后添加至逻辑卷组
1. 创建 PV 物理卷
2. 创建 VG 逻辑卷组
3. 可以分别查看 PV 和 VG 的信息 pvs pvscan pvdisplay vgs vgscan vgdisplay
4. 尝试扩容,或者缩小 vg 逻辑卷组
扩容命令:
第一步:买来一块新硬盘,然后创建物理卷 命令 pvcreate /dev/sdh 检查一下物理卷的信息 命令 pvs
第二步:把新创建的 sdh 物理卷,加入扩容到逻辑卷组 longchivg1 中 命令 vgextend longchivg1 /dev/sdh
5. 显示一下卷组的信息,容量等 命令 vgdisplay
6. 还可以缩小卷组的大小,剔除 /dev/sdh 命令 vgreduce longchivg1 /dev/sdh
7. 删除 /dev/sdh 的物理卷 命令 pvremove /dev/sdh
8. 使用此时的卷组(longchivg1),创建逻辑卷,进行使用 /dev/sdf /dev/sdg
命令:lvcreate -n lv1 -L +2000M longchivg1
参数详解:
'-n ' 指定创建 LV 逻辑卷名称
'-L' 指定创建 LV 逻辑卷大小
9. 检查 LV 的信息 lvs lvdisplay
10. 对刚创建的 lv1 逻辑卷进行格式化文件系统
命令 mkfs.xfs /dev/longchivg1/lv1 (centos7) mkfs.ext4 /dev/longchivg1/lv1(ubuntu)
11. 向 lv1 逻辑卷中,进行挂载,以及数据写入 (就可以当一个普通分区来使用了) mkdir longchi_lv1
命令 root@longchi:~# mkdir /longchi_lv1 root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1
echo "/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0" >> /etc/fstab
将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了
root@longchi:~# tail -1 /etc/fstab
/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0
通过命令,直接读取 /etc/fstab ,自动挂载所有设备
root@longchi:~# mount -l | grep lv1
12. 向磁盘中写入数据,查看空间容量 echo {1..10000000} > /longchi_lv1/test.txt
root@longchi:~# ls /longchi_lv1/
lost+found test.txt test.txt.1 test.txt.2 test.txt.3
root@longchi:~# df -hT
向 /etc/fstab 文件中写入 开机自动挂载 命令
echo "/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0" >> /etc/fstab
# 查看本机上包含sd的磁盘
root@longchi:~# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde  /dev/sdf  /dev/sdg  /dev/sdh  /dev/sdi

# 安装 lvm2 的命令:   apt install lvm2
root@longchi:~# pvcreate /dev/sdf /dev/sdg
Command 'pvcreate' not found, but can be installed with:
apt install lvm2
root@longchi:~# apt install lvm2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
  crda
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  dmeventd libaio1 libdevmapper-event1.02.1 liblvm2cmd2.03 thin-provisioning-tools
The following NEW packages will be installed:
  dmeventd libaio1 libdevmapper-event1.02.1 liblvm2cmd2.03 lvm2 thin-provisioning-tools
0 upgraded, 6 newly installed, 0 to remove and 29 not upgraded.
Need to get 2395 kB of archives.
After this operation, 8959 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libaio1 amd64 0.3.112-13build1 [7176 B]
Get:2 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libdevmapper-event1.02.1 amd64 2:1.02.175-2.1ubuntu4 [12.6 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 liblvm2cmd2.03 amd64 2.03.11-2.1ubuntu4 [756 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 dmeventd amd64 2:1.02.175-2.1ubuntu4 [38.4 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 lvm2 amd64 2.03.11-2.1ubuntu4 [1154 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 thin-provisioning-tools amd64 0.9.0-2ubuntu1 [426 kB]
Fetched 2395 kB in 4s (660 kB/s)                 
Selecting previously unselected package libaio1:amd64.
(Reading database ... 222217 files and directories currently installed.)
Preparing to unpack .../0-libaio1_0.3.112-13build1_amd64.deb ...

Progress: [  0%] [........................................................................................................] 
Unpacking libaio1:amd64 (0.3.112-13build1) ...............................................................................] 

Selecting previously unselected package libdevmapper-event1.02.1:amd64....................................................] 
Preparing to unpack .../1-libdevmapper-event1.02.1_2%3a1.02.175-2.1ubuntu4_amd64.deb ...

Unpacking libdevmapper-event1.02.1:amd64 (2:1.02.175-2.1ubuntu4) .........................................................] 

Selecting previously unselected package liblvm2cmd2.03:amd64..............................................................] 
Preparing to unpack .../2-liblvm2cmd2.03_2.03.11-2.1ubuntu4_amd64.deb ...

Unpacking liblvm2cmd2.03:amd64 (2.03.11-2.1ubuntu4) ......................................................................] 

Selecting previously unselected package dmeventd..........................................................................] 
Preparing to unpack .../3-dmeventd_2%3a1.02.175-2.1ubuntu4_amd64.deb ...

Unpacking dmeventd (2:1.02.175-2.1ubuntu4) ...#...........................................................................] 

Selecting previously unselected package lvm2.######.......................................................................] 
Preparing to unpack .../4-lvm2_2.03.11-2.1ubuntu4_amd64.deb ...

Unpacking lvm2 (2.03.11-2.1ubuntu4) ...################...................................................................] 

Selecting previously unselected package thin-provisioning-tools...........................................................] 
Preparing to unpack .../5-thin-provisioning-tools_0.9.0-2ubuntu1_amd64.deb ...

Unpacking thin-provisioning-tools (0.9.0-2ubuntu1) ...#########...........................................................] 

Setting up libdevmapper-event1.02.1:amd64 (2:1.02.175-2.1ubuntu4) ........................................................] 

Progress: [ 52%] [######################################################..................................................] 
Setting up libaio1:amd64 (0.3.112-13build1) ...#############################..............................................] 

Progress: [ 60%] [##############################################################..........................................] 
Setting up thin-provisioning-tools (0.9.0-2ubuntu1) ...#############################......................................] 

Progress: [ 68%] [######################################################################..................................] 
Setting up liblvm2cmd2.03:amd64 (2.03.11-2.1ubuntu4) ...####################################..............................] 

Progress: [ 76%] [###############################################################################.........................] 
Setting up dmeventd (2:1.02.175-2.1ubuntu4) ...######################################################.....................] 

Created symlink /etc/systemd/system/sockets.target.wants/dm-event.socket → /lib/systemd/system/dm-event.socket............] 
dm-event.service is a disabled or a static unit, not starting it.

Setting up lvm2 (2.03.11-2.1ubuntu4) ...#####################################################################.............] 

update-initramfs: deferring update (trigger activated)###########################################################.........] 
Created symlink /etc/systemd/system/sysinit.target.wants/blk-availability.service → /lib/systemd/system/blk-availability.service.
Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-monitor.service → /lib/systemd/system/lvm2-monitor.service.
Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket → /lib/systemd/system/lvm2-lvmpolld.socket.

Processing triggers for initramfs-tools (0.140ubuntu13.4) ...########################################################.....] 
update-initramfs: Generating /boot/initrd.img-6.5.0-18-generic
Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
Processing triggers for man-db (2.10.2-1) ...
root@longchi:~# 

# 创建 PV 物理卷
root@longchi:~# pvcreate /dev/sdf /dev/sdg
  Physical volume "/dev/sdf" successfully created.
  Physical volume "/dev/sdg" successfully created.
root@longchi:~# 
    
# 创建 VG 逻辑卷组
root@longchi:~# vgcreate longchivg1 /dev/sdf /dev/sdg
  Volume group "longchivg1" successfully created
# 扫描一下 pv
root@longchi:~# pvs
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sdf   longchivg1 lvm2 a--  <50.00g <50.00g
  /dev/sdg   longchivg1 lvm2 a--  <50.00g <50.00g
# 扫描一下详细信息 pv
root@longchi:~# pvscan
  PV /dev/sdf   VG longchivg1      lvm2 [<50.00 GiB / <50.00 GiB free]
  PV /dev/sdg   VG longchivg1      lvm2 [<50.00 GiB / <50.00 GiB free]
  Total: 2 [99.99 GiB] / in use: 2 [99.99 GiB] / in no VG: 0 [0   ]
# 扫描一下 vg
root@longchi:~# vgs
  VG         #PV #LV #SN Attr   VSize  VFree 
  longchivg1   2   0   0 wz--n- 99.99g 99.99g
# 扫描一下详细信息 vg
root@longchi:~# vgscan
  Found volume group "longchivg1" using metadata type lvm2    
# 显示 PV 的详细信息
root@longchi:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdf
  VG Name               longchivg1
  PV Size               50.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12799
  Free PE               12799
  Allocated PE          0
  PV UUID               elO3gs-Wp6T-16vO-813s-0RuF-zOUK-UO2wpL
   
  --- Physical volume ---
  PV Name               /dev/sdg
  VG Name               longchivg1
  PV Size               50.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12799
  Free PE               12799
  Allocated PE          0
  PV UUID               Hi2Fdu-OP7S-nZKD-Yq0v-DBDC-ofxf-NCXBXf
   
root@longchi:~# 

# 显示 VG 详细信息
root@longchi:~# vgdisplay
  --- Volume group ---
  VG Name               longchivg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               99.99 GiB
  PE Size               4.00 MiB
  Total PE              25598
  Alloc PE / Size       0 / 0   
  Free  PE / Size       25598 / 99.99 GiB
  VG UUID               c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
   
#  创建 PV 物理卷  
root@longchi:~# pvcreate /dev/sdh
  Physical volume "/dev/sdh" successfully created.
root@longchi:~# pvs
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sdf   longchivg1 lvm2 a--  <50.00g <50.00g
  /dev/sdg   longchivg1 lvm2 a--  <50.00g <50.00g
  /dev/sdh              lvm2 ---   50.00g  50.00g
# 扩容,将 /dev/sdh 添加到 longchivg1 逻辑卷组中
root@longchi:~# vgextend longchivg1 /dev/sdh
  Volume group "longchivg1" successfully extended
    
# 显示一下卷组的信息,容量等  命令  vgdisplay
root@longchi:~# vgdisplay
  --- Volume group ---
  VG Name               longchivg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <149.99 GiB
  PE Size               4.00 MiB
  Total PE              38397
  Alloc PE / Size       0 / 0   
  Free  PE / Size       38397 / <149.99 GiB
  VG UUID               c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
   
#  还可以缩小卷组的大小,剔除 /dev/sdh  命令 vgreduce longchivg1 /dev/sdh  
root@longchi:~# vgreduce longchivg1 /dev/sdh
  Removed "/dev/sdh" from volume group "longchivg1"
# 删除 /dev/sdh 的物理卷   命令 pvremove  /dev/sdh 
root@longchi:~# pvremove /dev/sdh
  Labels on physical volume "/dev/sdh" successfully wiped.
# 显示一下物理卷信息  pvs    
root@longchi:~# pvs
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sdf   longchivg1 lvm2 a--  <50.00g <50.00g
  /dev/sdg   longchivg1 lvm2 a--  <50.00g <50.00g
#  使用此时的卷组,创建逻辑卷 LV,进行使用 /dev/sdf  /dev/sdg     
# 查看一下此时的 VG 逻辑卷组  命令 vgs  vgdisplay
root@longchi:~# vgs
  VG         #PV #LV #SN Attr   VSize  VFree 
  longchivg1   2   0   0 wz--n- 99.99g 99.99g
root@longchi:~# vgdisplay
  --- Volume group ---
  VG Name               longchivg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               99.99 GiB
  PE Size               4.00 MiB
  Total PE              25598
  Alloc PE / Size       0 / 0   
  Free  PE / Size       25598 / 99.99 GiB
  VG UUID               c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
# 使用此时的卷组(longchivg1),创建逻辑卷 lv1,进行使用 /dev/sdf  /dev/sdg 
root@longchi:~# lvcreate -n lv1 -L +2000M longchivg1
  Logical volume "lv1" created.
root@longchi:~# 
# 查看 LV 逻辑卷
root@longchi:~# lvs
  LV   VG         Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  longchivg1 -wi-a----- 1.95g     
root@longchi:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/longchivg1/lv1
  LV Name                lv1
  VG Name                longchivg1
  LV UUID                ybbxnA-Xq66-vjhX-CKUb-mJFu-e0jX-2l0pkW
  LV Write Access        read/write
  LV Creation host, time longchi, 2024-02-22 23:22:01 -0800
  LV Status              available
  # open                 0
  LV Size                1.95 GiB
  Current LE             500
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
 # 对刚创建的 lv1 逻辑卷进行格式化文件系统
root@longchi:~# mkfs.ext4 /dev/longchivg1/lv1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 512000 4k blocks and 128000 inodes
Filesystem UUID: d20c97ba-258d-47a4-a94c-890c314650f4
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

root@longchi:~# lsblk -f | grep sd 
sda                                                                                                                          
|-sda1                                                                                                                       
|-sda2 vfat FAT32     FEB1-E722                               505.9M     1% /boot/efi
`-sda3 ext4 1d8e3f92-eeaf-4cde-a566-1c7eea428509 81.5G /var/snap/firefox/common/host-hunspell
sdb linux_raid_member 1.2  longchi:0          e79936a0-022f-080e-fcfc-7e5ff2114b46                  
sdc linux_raid_member 1.2  longchi:0          e79936a0-022f-080e-fcfc-7e5ff2114b46                  
sdd linux_raid_member 1.2  longchi:0          e79936a0-022f-080e-fcfc-7e5ff2114b46                  
sde linux_raid_member 1.2  longchi:0          e79936a0-022f-080e-fcfc-7e5ff2114b46                  
sdf   LVM2_member       LVM2 001             elO3gs-Wp6T-16vO-813s-0RuF-zOUK-UO2wpL                
sdg   LVM2_member       LVM2 001             Hi2Fdu-OP7S-nZKD-Yq0v-DBDC-ofxf-NCXBXf                
sdh                                                                                                                          
sdi                                                                                                                          
#  向磁盘中写入数据,查看空间容量

#  向 lv1 逻辑卷中,进行挂载,以及数据写入 (就可以当一个普通分区来使用了)
root@longchi:~# mkdir /longchi_lv1
root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1
root@longchi:~# 
# 查看所有的挂载信息
root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G   24K  1.8G   1% /longchi_lv1
# 向磁盘中写入数据,查看空间容量    
root@longchi:~# echo {1..10000000} > /longchi_lv1/test.txt
root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G   76M  1.7G   5% /longchi_lv1
root@longchi:~# cd /longchi_lv1
root@longchi:/longchi_lv1# ls
lost+found  test.txt
root@longchi:/longchi_lv1# cp test.txt test.txt.1
root@longchi:/longchi_lv1# cp test.txt test.txt.2
root@longchi:/longchi_lv1# cp test.txt test.txt.3
root@longchi:/longchi_lv1# 
root@longchi:/longchi_lv1# df -hT
文件系统    				类型	  容量   已用 可用   已用% 挂载点
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G  301M  1.5G  17% /longchi_lv1
root@longchi:/longchi_lv1# cd	# 退出 /longchi_lv1/ 目录
root@longchi:~# umount /longchi_lv1/	# 取消挂载
root@longchi:~# ls /longchi_lv1/
root@longchi:~# 
    
# 取消挂载后,已经看不到 /longchi_lv1/ 挂载信息    
root@longchi:~# df -hT	
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs  790M  1.9M  788M   1% /run
/dev/sda3      ext4    98G   11G   82G  12% /
tmpfs          tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2      vfat   512M  6.1M  506M   2% /boot/efi
tmpfs          tmpfs  790M   72K  790M   1% /run/user/126
root@longchi:~# 
# 向 /etc/fstab 文件中写入 开机自动挂载 命令
echo "/dev/longchivg1/lv1  /longchi_lv1  ext4  defaults  0 0" >> /etc/fstab 
# 将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了    
root@longchi:~# vim /etc/fstab
root@longchi:~# tail -1 /etc/fstab
/dev/longchivg1/lv1             /longchi_lv1    ext4    defaults        0       0
root@longchi:~# 
root@longchi:~# mount -l | grep lv1

# 'mount -a'去执行 /etc/fstab 文件中所有的挂载信息    读取 /etc/fstab 文件中所有挂载信息
root@longchi:~# mount -a
root@longchi:~# mount -l | grep lv1
/dev/mapper/longchivg1-lv1 on /longchi_lv1 type ext4 (rw,relatime)
root@longchi:~# 
# 将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了

root@longchi:~# tail -1 /etc/fstab

/dev/longchivg1/lv1             /longchi_lv1    ext4    defaults        0       0

# 通过命令,直接读取 /etc/fstab ,自动挂载所有设备

root@longchi:~# mount -l | grep lv1
/dev/mapper/longchivg1-lv1 on /longchi_lv1 type ext4 (rw,relatime)    
# 通过 mount 数据又回来了
    
root@longchi:~# ls /longchi_lv1/
lost+found  test.txt  test.txt.1  test.txt.2  test.txt.3
 
#  向磁盘中写入数据,查看空间容量
root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G  301M  1.5G  17% /longchi_lv1
root@longchi:~# 

 # 针对 lv 逻辑卷的扩容操作,只要卷组中的容量够用,就可以对 lv 逻辑卷扩容
 root@longchi:~# vgdisplay
  --- Volume group ---
  VG Name               longchivg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               99.99 GiB
  PE Size               4.00 MiB
  Total PE              25598
  Alloc PE / Size       500 / 1.95 GiB
  Free  PE / Size       25098 / <98.04 GiB
  VG UUID               c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
   
13. 针对 lv 逻辑卷的扩容操作,只要卷组中的容量够用,就可以对 lv 逻辑卷扩容
第一步,先卸载 lv 的设备 umount /longchi_lv1
root@longchi:~# umount /longchi_lv1/
第二步,命令扩容逻辑卷大小 lvextend -L +10G /dev/longchivg1/lv1
root@longchi:~# lvextend -L +10G /dev/longchivg1/lv1
  Size of logical volume longchivg1/lv1 changed from 1.95 GiB (500 extents) to 11.95 GiB (3060 extents).
  Logical volume longchivg1/lv1 successfully resized.
root@longchi:~# 
root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G  301M  1.5G  17% /longchi_lv1
 # 刷新命令 (centos7  文件系统为 xfs) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小 
root@longchi:~# xfs_growfs /dev/mapper/longchivg1-lv1  # 刷新命令
 # 刷新命令 (ubuntu  文件系统为 ext4) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小
root@longchi:~# resize2fs /dev/mapper/longchivg1-lv1  # 刷新命令
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/longchivg1-lv1 is mounted on /longchi_lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/longchivg1-lv1 is now 3133440 (4k) blocks long.

root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4    12G  301M   11G   3% /longchi_lv1
root@longchi:~# 
第三步,挂载逻辑卷,开始使用
root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1/
14. 还得调整 xfs(centos7),ext4(ubuntu)文件系统的大小,否则读取不到容量
root@longchi:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/longchivg1/lv1
  LV Name                lv1
  VG Name                longchivg1
  LV UUID                ybbxnA-Xq66-vjhX-CKUb-mJFu-e0jX-2l0pkW
  LV Write Access        read/write
  LV Creation host, time longchi, 2024-02-22 23:22:01 -0800
  LV Status              available
  # open                 0
  LV Size                11.95 GiB
  Current LE             3060
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
  
root@longchi:~# df -hT
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4   1.9G  301M  1.5G  17% /longchi_lv1

 # 刷新命令 (ubuntu  文件系统为 ext4) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小
 # 调整 ext4 文件系统
root@longchi:~# resize2fs /dev/mapper/longchivg1-lv1
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/longchivg1-lv1 is mounted on /longchi_lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/longchivg1-lv1 is now 3133440 (4k) blocks long.

root@longchi:~# df -hT	# 查看 lv1 是否正确调整了空间容量
Filesystem                 Type   Size  Used Avail Use% Mounted on
tmpfs                      tmpfs  790M  1.9M  788M   1% /run
/dev/sda3                  ext4    98G   11G   82G  12% /
tmpfs                      tmpfs  3.9G     0  3.9G   0% /dev/shm
tmpfs                      tmpfs  5.0M  4.0K  5.0M   1% /run/lock
/dev/sda2                  vfat   512M  6.1M  506M   2% /boot/efi
tmpfs                      tmpfs  790M   72K  790M   1% /run/user/126
/dev/mapper/longchivg1-lv1 ext4    12G  301M   11G   3% /longchi_lv1
root@longchi:~# 
15. 当你不想用 lvm 之后,就得删除逻辑卷了
第一步,卸载 lvm 设备
# 查看 /longchi_lv1 挂载目录数据
root@longchi:~# ls /longchi_lv1
lost+found  test.txt  test.txt.1  test.txt.2  test.txt.3
# 取消挂载
root@longchi:~# umount /longchi_lv1
# 取消挂载后,再次查看 /longchi_lv1 挂载目录数据,已经看不到数据了
root@longchi:~# ls /longchi_lv1
root@longchi:~# 
第二步,删除逻辑卷 lvremove /dev/longchivg1/lv1
root@longchi:~# lvremove /dev/longchivg1/lv1
Do you really want to remove and DISCARD active logical volume longchivg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
root@longchi:~# 
第三步,删除逻辑卷组 vgremove longchivg1
root@longchi:~# vgremove longchivg1
  Volume group "longchivg1" successfully removed
root@longchi:~# 
第四步,删除物理卷设备 pvremove /dev/sdf /dev/sdg
# 扫描一下有哪些物理卷设备
root@longchi:~# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdf      lvm2 ---  50.00g 50.00g
  /dev/sdg      lvm2 ---  50.00g 50.00g
root@longchi:~# 
# 删除物理卷设备 /dev/sdf  /dev/sdg
root@longchi:~# pvremove /dev/sdf /dev/sdg
  Labels on physical volume "/dev/sdf" successfully wiped.
  Labels on physical volume "/dev/sdg" successfully wiped.
root@longchi:~# 
16. 最后一步,检查 lvm 相关信息 pvs vgs lvs 均没有相关信息,表示 lvm 彻底被删除了
# 扫描 PV
root@longchi:~# pvs
root@longchi:~# pvdisplay
root@longchi:~# pvscan
  No matching physical volumes found
root@longchi:~# 

# 扫描 VG
root@longchi:~# vgs
root@longchi:~# vgdisplay
root@longchi:~# vgscan
root@longchi:~#

# 扫描 LV
root@longchi:~# lvs
root@longchi:~# lvdisplay
root@longchi:~# lvscan
root@longchi:~# 

 总结,以上检查 lvm 相关信息     pvs vgs lvs 均没有相关信息,表示 lvm 彻底被删除了

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值