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 彻底被删除了