day26 lvm逻辑卷管理

为什么学lvm

参考博客

http://apecome.com:9494/03系统服务篇/3-14-lvm逻辑卷管理.html#逻辑卷(lv)管理相关命令

250GB

虚拟机



试想,企业里的生产服务器,一开始没有规划好磁盘容量,随着用户增长,磁盘可能会逐渐填满
这时候你只能添加新硬盘,新分区
但是旧的数据还在旧的磁盘分区上,你就只能停止业务进行数据迁移了。

lvm也是吧多个磁盘,化成一个大硬盘,但是特点是,后期可以继续加入新硬盘,这个逻辑卷组的容量就扩大了,等于这个大硬盘容量更大
使用这个逻辑卷组(500G+100G=600G)(大硬盘500G)
↓
获取部分的容量,化为一个逻辑卷(分区)
↓
逻辑卷进行格式化(分区进行格式化)
↓
挂载使用


但是如果你用了lvm,你可以将多个物理分区、抽象为一个逻辑卷组,并且这个逻辑卷组是可以动态扩容、缩容的。
当逻辑卷组容量不够了,只需要买新硬盘,通过命令再添加到这个指定的逻辑卷组中,可以在不停机的情况下,立即实现扩容,且被linux识别,那可是太巴适了。

什么是LVM

图解lvm工作流程

image-20220408092605474


image-20220408093204416

lvm原理名词记忆

image-20220408093631282


image-20220408094231373

lvm重点名词

普通磁盘
↓
格式化文件系统、block=4KB ,有N个block
↓
挂载分区使用


lvm磁盘
↓
磁盘、格式化为PV(磁盘的容量被分为N个PE) ,PE默认单位是4MB,等于1024个block
↓
PV加入卷组VG(动态伸缩的大磁盘)
↓
创建逻辑卷LV(等于创建了分区)
↓
格式化文件系统xfs (sdb sdc sdd),逻辑卷
↓
挂载使用


lvm扩容原理

增减PE

LVM优点

lvm常用命令

再次通过lsblk查看磁盘信息

image-20220408100829210

pv命令

前提是需要安装lvm命令
yum install lvm2 -y
安装该工具后,方可使用lvm的命令
pvcreate
pvs
[root@client-242 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   40.00g 40.00g
[root@client-242 ~]# 


pvscan
[root@client-242 ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]
  PV /dev/sdb                       lvm2 [40.00 GiB]
  Total: 2 [<59.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [40.00 GiB]
[root@client-242 ~]# 


[root@client-242 ~]# pvdisplay 



1.准备好硬盘
/dev/sdb

2.对硬盘进行pv化,然后查看pv的信息

3.删除pv
[root@client-242 ~]# pvremove /dev/sdb
  Labels on physical volume "/dev/sdb" successfully wiped.


vg命令

vgs 查看机器上现有的卷组信息

来自于sda硬盘,创建的pv,加入的卷组,名字是centos

[root@client-242 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 



1.将2块硬盘 sdb sdc 创建为 vg-0224

第一件事 pv化
[root@client-242 ~]# pvcreate  /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.


2.加入卷组
[root@client-242 ~]# vgcreate vg-02241  /dev/sdb /dev/sdc
  Volume group "vg-0224" successfully created


vgs
vgscan
vgdisplay
删除vg
[root@client-242 ~]# vgremove vg-0224
  Volume group "vg-0224" successfully removed



lv命令

image-20220408101907848

lv的参数选项
lvcreate 
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(PE个数)
-n 后面跟逻辑卷名 
-s 创建快照


查看当前机器的逻辑卷信息
lvs

根据卷组,创建逻辑卷
[root@client-242 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   40.00g 40.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgcreate vg-0224  /dev/sdb /dev/sdc
  Volume group "vg-0224" successfully created
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  centos    1   2   0 wz--n- <19.00g     0 
  vg-0224   2   0   0 wz--n-  59.99g 59.99g


创建lv,设定为卷组容量的一半
[root@client-242 ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  centos    1   2   0 wz--n- <19.00g     0 
  vg-0224   2   0   0 wz--n-  59.99g 59.99g
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvcreate -n 0224lv1 -l 50%VG vg-0224
  Logical volume "0224lv1" created.
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    centos  -wi-ao---- <17.00g                                                    
  swap    centos  -wi-ao----   2.00g                                                    
  0224lv1 vg-0224 -wi-a----- <30.00g                                                    
[root@client-242 ~]# 
[root@client-242 ~]# 


删除逻辑卷
[root@client-242 ~]# lvremove /dev/vg-0224/0224lv1 
Do you really want to remove active logical volume vg-0224/0224lv1? [y/n]: y
  Logical volume "0224lv1" successfully removed
[root@client-242 ~]# 


指定逻辑卷大小
[root@client-242 ~]# lvcreate -n lv1-0224 -L 20G vg-0224
  Logical volume "lv1-0224" created.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV       VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos  -wi-ao---- <17.00g                                                    
  swap     centos  -wi-ao----   2.00g                                                    
  lv1-0224 vg-0224 -wi-a-----  20.00g   
  

清空lvm的环境

1.删逻辑卷 lv
2. 删卷组 vg
3. 删pv  

还原了硬盘的本质,普通硬盘
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV       VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     centos  -wi-ao---- <17.00g                                                    
  swap     centos  -wi-ao----   2.00g                                                    
  lv1-0224 vg-0224 -wi-a-----  20.00g                                                    
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvremove /dev/vg-0224/lv1-0224 
Do you really want to remove active logical volume vg-0224/lv1-0224? [y/n]: y
  Logical volume "lv1-0224" successfully removed
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgremove vg-0224
  Volume group "vg-0224" successfully removed
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 

课堂练习

参考课堂笔记,完成

1.创建2块硬盘,分别是10G,20G

3.练习pv、vg、lv的增删改查,以及环境清理

lvm创建流程(重点)

要求

  • 使用2块硬盘,容量分别是30G,30G

  • 创建卷组,名字是vg0224

  • 创建3个lv,名字依次是0224-lv1,0224-lv2,0224-lv3,容量分别是10G,15G,25G

  • 3个逻辑卷,挂载点分别是/test1 /test2 /test3,文件系统分别是xfs、xfs、ext4

  • 要求分别查看3个逻辑卷的文件系统信息

  • 要求扩容0224-lv1,扩大到30G容量

1.安装lvm
yum install lvm2 -y

2.查看pv
pvs

3.创建pv
[root@client-242 ~]# pvcreate /dev/sdb /dev/sdc



4.查看创建后的pv
[root@client-242 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   40.00g 40.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g


5.查看vg
[root@client-242 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 



6.创建vg sdb sdc创建为卷组,名字是 vg1-0224
注意语法

[root@client-242 ~]# vgcreate vg1-0224  /dev/sdb /dev/sdc
  Volume group "vg1-0224" successfully created
[root@client-242 ~]# 
[root@client-242 ~]# 



7.查看创建后的vg

[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   0   0 wz--n-  59.99g 59.99g




8.查看lv
lvs


9.创建lv(创建分区)
一个lv1  20G
lv2  15G 

[root@client-242 ~]# lvcreate -n lv1  -L 20G  vg1-0224
  Logical volume "lv1" created.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvcreate -n lv2  -L 10G  vg1-0224
  Logical volume "lv2" created.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos   -wi-ao---- <17.00g                                                    
  swap centos   -wi-ao----   2.00g                                                    
  lv1  vg1-0224 -wi-a-----  20.00g                                                    
  lv2  vg1-0224 -wi-a-----  10.00g                                                    
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# ls /dev/vg1-0224/
lv1  lv2




10.查看lv
lvs



11.查看磁盘设备信息
通过如下命令,查看lvm设备的信息

[root@client-242 ~]# blkid |grep 'sd[bc]'
/dev/sdb: UUID="O5ueJC-Tbd2-qab2-kx6U-Z2dD-y4od-tjosy3" TYPE="LVM2_member" 
/dev/sdc: UUID="uygL2d-owAr-NCoC-j6Ml-dHrT-QbSh-DjABxZ" TYPE="LVM2_member" 




查看/dev/卷组/

ls /dev/vg1-0224/


12.给lv格式化文件系统
lv1  20G ---xfs
lv2  15G  ----ext4

[root@client-242 ~]# mkfs.xfs /dev/vg1-0224/lv1

[root@client-242 ~]# mkfs.ext4 /dev/vg1-0224/lv2




13.挂载lv
mount 设备名   挂载点

[root@client-242 ~]# mount /dev/vg1-0224/lv1 /t1
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# mount /dev/vg1-0224/lv2 /t2




14.查看挂载

[root@client-242 ~]# mount -l |grep t1
/dev/mapper/vg1--0224-lv1 on /t1 type xfs (rw,relatime,attr2,inode64,noquota)
[root@client-242 ~]# mount -l |grep t2
/dev/mapper/vg1--0224-lv2 on /t2 type ext4 (rw,relatime,data=ordered)

[root@client-242 ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/centos-root     17G  1.5G   16G   9% /
devtmpfs                   899M     0  899M   0% /dev
tmpfs                      911M     0  911M   0% /dev/shm
tmpfs                      911M  9.6M  902M   2% /run
tmpfs                      911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 1014M  142M  873M  14% /boot
tmpfs                      183M     0  183M   0% /run/user/0
/dev/mapper/vg1--0224-lv1   20G   33M   20G   1% /t1
/dev/mapper/vg1--0224-lv2  9.8G   37M  9.2G   1% /t2


[root@client-242 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   40G  0 disk 
├─vg1--0224-lv1 253:2    0   20G  0 lvm  /t1
└─vg1--0224-lv2 253:3    0   10G  0 lvm  /t2
sdc               8:32   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

尝试写入数据

[root@client-242 ~]# touch /t1/今天也是美好的一天
[root@client-242 ~]# touch /t2/明天更是美好的一天
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# ls /t1
今天也是美好的一天
[root@client-242 ~]# ls /t2
lost+found  明天更是美好的一天



15.开机自动挂载
一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab
否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
重启即可

把t1 t2设置为开机自动挂载
[root@client-242 ~]# tail -2 /etc/fstab 
UUID="04fda700-511c-43d4-ae9a-d87d72ee7175"  /t1  xfs  defaults 0 0 
/dev/mapper/vg1--0224-lv2 /t2  ext4  defaults 0 0 




16.重启
reboot


lvm扩容(重点)

需求

先查看当前机器的lv情况,确定你要扩容的设备
[root@client-242 ~]# df -h |grep t2
/dev/mapper/vg1--0224-lv2  9.8G   37M  9.2G   1% /t2

扩容到20G需求
1. 你的卷组,容量还够不够
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组就好了

方案1,卷组容量够

1.确认vg够不够
[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 29.99g


2.确认够用,直接lvextend扩容lv逻辑卷即可
给lv2增加10G
[root@client-242 ~]# lvextend -L +10G  /dev/vg1-0224/lv2
  Size of logical volume vg1-0224/lv2 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
  Logical volume vg1-0224/lv2 successfully resized.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos   -wi-ao---- <17.00g                                                    
  swap centos   -wi-ao----   2.00g                                                    
  lv1  vg1-0224 -wi-ao----  20.00g                                                    
  lv2  vg1-0224 -wi-ao----  20.00g      
  
  
用法2,直接,调整到25G大小
[root@client-242 ~]# lvextend -L 25G /dev/vg1-0224/lv2
  Size of logical volume vg1-0224/lv2 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
  Logical volume vg1-0224/lv2 successfully resized.
[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos   -wi-ao---- <17.00g                                                    
  swap centos   -wi-ao----   2.00g                                                    
  lv1  vg1-0224 -wi-ao----  20.00g                                                    
  lv2  vg1-0224 -wi-ao----  25.00g      

3.虽然你调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量

ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小


4.调整lv ext4文件系统的大小
[root@client-242 ~]# resize2fs /dev/mapper/vg1--0224-lv2
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1--0224-lv2 is mounted on /t2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1--0224-lv2 is now 6553600 blocks long.



[root@client-242 ~]# df -hT
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   xfs        17G  1.6G   16G   9% /
devtmpfs                  devtmpfs  899M     0  899M   0% /dev
tmpfs                     tmpfs     911M     0  911M   0% /dev/shm
tmpfs                     tmpfs     911M  9.6M  902M   2% /run
tmpfs                     tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  142M  873M  14% /boot
/dev/mapper/vg1--0224-lv1 xfs        20G   33M   20G   1% /t1
/dev/mapper/vg1--0224-lv2 ext4       25G   44M   24G   1% /t2
tmpfs                     tmpfs     183M     0  183M   0% /run/user/0
[root@client-242 ~]# 


5.调整lv1的文件系统,调整到50G

看看卷组还剩下多少,不够用了,就得扩大卷组了
[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 14.99g
[root@client-242 ~]# 
[root@client-242 ~]# 


情况2,卷组容量不够了

1.创建新物理卷,pv
步骤
关机、添加硬盘,开机
添加一个50G硬盘
[root@client-242 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd

给硬盘pv化
[root@client-242 ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.

2.查看pv
pvs


3.查看vg
vgs

[root@client-242 ~]# pvs
  PV         VG       Fmt  Attr PSize   PFree 
  /dev/sda2  centos   lvm2 a--  <19.00g     0 
  /dev/sdb   vg1-0224 lvm2 a--  <40.00g     0 
  /dev/sdc   vg1-0224 lvm2 a--  <20.00g 14.99g
  /dev/sdd            lvm2 ---   50.00g 50.00g
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0224   2   2   0 wz--n-  59.99g 14.99g


4.vg扩容

[root@client-242 ~]# 
[root@client-242 ~]# vgextend vg1-0224  /dev/sdd
  Volume group "vg1-0224" successfully extended
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize    VFree  
  centos     1   2   0 wz--n-  <19.00g      0 
  vg1-0224   3   2   0 wz--n- <109.99g <64.99g


5.再次查看vg
[root@client-242 ~]# vgs
  VG       #PV #LV #SN Attr   VSize    VFree  
  centos     1   2   0 wz--n-  <19.00g      0 
  vg1-0224   3   2   0 wz--n- <109.99g <64.99g





6.扩容lv

[root@client-242 ~]# 
[root@client-242 ~]# lvextend -L 50G /dev/vg1-0224/lv1
  Size of logical volume vg1-0224/lv1 changed from 20.00 GiB (5120 extents) to 50.00 GiB (12800 extents).
  Logical volume vg1-0224/lv1 successfully resized.
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# 




7.再次查看lv

[root@client-242 ~]# 
[root@client-242 ~]# lvs
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos   -wi-ao---- <17.00g                                                    
  swap centos   -wi-ao----   2.00g                                                    
  lv1  vg1-0224 -wi-ao----  50.00g                                                    
  lv2  vg1-0224 -wi-ao----  25.00g                                                    
[root@client-242 ~]# 




8.调整xfs文件系统
[root@client-242 ~]# xfs_growfs /t1
meta-data=/dev/mapper/vg1--0224-lv1 isize=512    agcount=4, agsize=1310720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5242880, 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 5242880 to 13107200




9.查看磁盘挂载容量情况
[root@client-242 ~]# 
[root@client-242 ~]# df -hT
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   xfs        17G  1.6G   16G   9% /
devtmpfs                  devtmpfs  899M     0  899M   0% /dev
tmpfs                     tmpfs     911M     0  911M   0% /dev/shm
tmpfs                     tmpfs     911M  9.6M  902M   2% /run
tmpfs                     tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  142M  873M  14% /boot
/dev/mapper/vg1--0224-lv1 xfs        50G   33M   50G   1% /t1
/dev/mapper/vg1--0224-lv2 ext4       25G   44M   24G   1% /t2
tmpfs                     tmpfs     183M     0  183M   0% /run/user/0
[root@client-242 ~]# 
[root@client-242 ~]# 


删除lvm

严谨考虑,确保别出问题

删除lvm

1.考虑/etc/fstab,清除开机自动挂载的配置

2.取消挂载
[root@client-242 ~]# umount /t1
[root@client-242 ~]# umount /t2


3.依次删除lvm的组件
[root@client-242 ~]# 
[root@client-242 ~]# lvremove /dev/vg1-0224/lv1
Do you really want to remove active logical volume vg1-0224/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
[root@client-242 ~]# 
[root@client-242 ~]# lvremove /dev/vg1-0224/lv2
Do you really want to remove active logical volume vg1-0224/lv2? [y/n]: y
  Logical volume "lv2" successfully removed
[root@client-242 ~]# 

删除vg
[root@client-242 ~]# vgremove vg1-0224
  Volume group "vg1-0224" successfully removed
[root@client-242 ~]# 
[root@client-242 ~]# 
[root@client-242 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 


删除pv,还原磁盘原本类型
[root@client-242 ~]# 
[root@client-242 ~]# pvremove /dev/sdb /dev/sdc /dev/sdd
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped.
[root@client-242 ~]# 


最后,磁盘就还原为了不可动态调整的磁盘了,你可以格式化后,挂载使用该设备
[root@client-242 ~]# mount /dev/sdd /t1
[root@client-242 ~]# 
[root@client-242 ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        17G  1.6G   16G   9% /
devtmpfs                devtmpfs  899M     0  899M   0% /dev
tmpfs                   tmpfs     911M     0  911M   0% /dev/shm
tmpfs                   tmpfs     911M  9.6M  902M   2% /run
tmpfs                   tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  142M  873M  14% /boot
tmpfs                   tmpfs     183M     0  183M   0% /run/user/0
/dev/sdd                xfs        50G   33M   50G   1% /t1
[root@client-242 ~]# 



大练习

要求

  • 使用2块硬盘,容量分别是30G,30G

  • 创建卷组,名字是vg0224

  • 创建3个lv,名字依次是0224-lv1,0224-lv2,0224-lv3,容量分别是10G,15G,25G

  • 3个逻辑卷,挂载点分别是/test1, /test2 ,/test3,文件系统分别是xfs、xfs、ext4

  • 要求分别查看3个逻辑卷的文件系统信息

    • xfs,xfs_info
    • etx4,dumpe2fs
  • 要求扩容0224-lv1,扩大到30G容量

    • xfs_growfs
  • 要求扩容0224-lv3,扩容到,也扩容到30G

    • resize2fs

整理磁盘管理篇的学习笔记

  • 笔记
  • 脑图
  • 博客

通配符和特殊符号

什么是通配符

通配符语法、作用

通配符用于搜索、匹配文件名

字符 说明 示例
* 匹配任意字符数。 您可以在字符串中使用星号 (*****)。 wh*”将找到 what、white 和 why,但找不到 awhile 或 watch。
? 在特定位置中匹配单个字母。 b?ll ”可以找到 ball、bell 和 bill。
[ ] 匹配方括号中的字符。 b[ae]ll”将找到 ball 和 bell,但找不到 bill。
! 在方括号中排除字符。 b[!ae]ll”将找到 bill 和 bull,但找不到 ball 或 bell。“Like “[!a]*””将找到不以字母 a 开头的所有项目。
- 匹配一个范围内的字符。 记住以升序指定字符(A 到 Z,而不是 Z 到 A)。 b[a-c]d”将找到 bad、bbd 和 bcd。
# 匹配任意单个数字字符。 1#3”将找到 103、113 和 123。
^ 同感叹号、在方括号中排除字符 b[^ae]ll,找不到ball,找不到bell,能找到bcll
* 匹配任意(0或多个)字符串,包括空字符串
? 匹配任意1个字符,且只有一个字符
[abcd] 匹配方括号里的abcd任意一个字符,abcd可以是其他不连续的字符如[aqwd]
[a-z] 匹配方括号里a到z之间的任意一个字符,也可以是连续的数字[1-9]
[!abcd] 不匹配方括号里的任意字符,也可以写为连续的字符,如[!a-z],也就是不匹配a到z任意的一个字符,且!符可以用^替代,写成[^abcd]

练习通配符

创建测试数据

[yuchao-linux-242 root /tmp]#mkdir /test ;cd /test
[yuchao-linux-242 root /test]#
[yuchao-linux-242 root /test]#touch yuchao.txt yuc.txt cc.txt yuchao01.log yuyu.log cc.sh

* 匹配任意字符

找出所有txt结尾的文件


查看以sh结尾的文件


查看以yu开头、txt结尾的文件


查看以yu开头、log结尾的文件


查看所有以yu开头的文件


找出以c开头的文件

? 匹配任意一个字符(用得少)

[yuchao-linux-242 root /test]#ls ?.sh
ls: cannot access ?.sh: No such file or directory
这个报错了,为什么?



如何查找特定字符数量的文件?
比如找出sh脚本文件


你只能多写几个问号


再比如找出所有txt


[] 匹配方括号里的内容

语法

[a,b,c]
[a-z]
[A-Z]
[a-zA-Z]
[1,3,4,7]
[0-9]
[a-zA-Z0-9]

实践

创建测试数据,如
[yuchao-linux-242 root /test]#touch {a..g}.log
[yuchao-linux-242 root /test]#ls
a.log  b.log  cc.sh  cc.txt  c.log  c.sh  d.log  e.log  f.log  g.log  yuchao01.log  yuchao.txt  yuc.txt  yuyu.log
[yuchao-linux-242 root /test]#


找出文件名是a-z之间任意一个字符的txt
为什么出错?
[yuchao-linux-242 root /test]#ls [a-z].txt
ls: cannot access [a-z].txt: No such file or directory



找出a-z之间任意一个字符的log


找出a-c之间任意一个字符的log



创建测试数据
touch yu{1..5}.log
touch yc{1..5}.log



找出以yu1  yu2 yu3 相关的log文件



找出以y开头相关的log


找出所有yu、yc相关的log文件

[!abcd] 取反方括号的内容

语法

[!a,b,c,d]
同上
[^abcd]

练习

[yuchao-linux-242 root /test]#ls
a.log  cc.sh   c.log  d.log  f.log  yc1.log  yc3.log  yc5.log  yu2.log  yu4.log  yuchao01.log  yuc.txt
b.log  cc.txt  c.sh   e.log  g.log  yc2.log  yc4.log  yu1.log  yu3.log  yu5.log  yuchao.txt    yuyu.log


找出除了以abcd开头的所有log文件


找出除了abcd开头的单个字母的log文件



排除所有以yu开头的文件

排除所有以yu开头的sh文件

2.通配符 find 综合练习

搜索/etc下所有包含hosts相关字符的文件



搜索/etc下的以ifcfg开头的文件(网卡配置文件)



只查找以数字结尾的网卡配置文件


找到系统中的第一块到第四块磁盘,注意磁盘的语法命名


找找sdb硬盘有几个分区,2种写法

注意*是和上面不同的

3.通配符练习二

测试数据源准备
[yuchao-linux01 root ~/test_shell]$touch {a..h}.log
[yuchao-linux01 root ~/test_shell]$touch {1..10}.txt




找出a到e的log文件



找出除了3到5的txt文件


找出除了2,5,8,9的txt文件

使用! 和^ 两个写法




找出除了a,e,f的log文件


4.特殊符号

什么是特殊符号

比起通配符来说,linux的特殊符号更加杂乱无章,但是一个专业的linux运维
孰能生巧,这些都不是问题

路径相关

符号 作用
~ 当前登录用户的家目录
- 上一次工作路径
. 当前工作路径,或表示隐藏文件 .yuchao.linux
.. 上一级目录

引号相关

'' 单引号、所见即所得
"" 双引号、可以解析变量及引用命令
`` 反引号、可以解析命令
     无引号,一般我们都省略了双引号去写linux命令,但是会有歧义,比如空格,建议写引号

重定向符号

>          stdout覆盖重定向
>>         stdout追加重定向

<            stdin重定向

2>   stderr重定向
2>>  stderr追加重定向

命令执行

command1 && command2      #  command1成功后执行command2
command1 || command2      #  command1失败后执行command2
command1 ; command2         #  无论command1成功还是失败、后执行command2
\                # 转义特殊字符,还原字符原本含义
$()            # 执行小括号里的命令
``     # 反引号,和$()作用一样
|             # 管道符
{}         # 生成序列

5.引号练习

单引号

例如使用date练习

单引号是无法识别date命令的


反引号

反引号中的linux命令是可以执行的,且反引号中只能写可执行的命令


双引号

当输出双引号内的内容是,如果内容里有linux命令、或者变量、特殊转义符等

会优先解析变量、命令、转义字符,然后得到最终的内容


无引号

没有引号、很难确定字符串的边界,很容易出现各种故障


6.特殊符号练习

重定向符号

之前讲过重定向符号、以及数据流的结合用,这里就不重复了。

; 分号

  • 表示命令的结束
  • 多个命令之间的分隔符
  • 某些配置文件的注释符

# 符


| 管道符

如生活中的管道,能够传输物质

Linux管道符 | 用于传输数据,对linux命令的处理结果再次处理,直到得到最终结果


&& 符

前面成功、继续后面


|| 符

只有前面命令失败、才执行后面命令


$() 符

创建文件,以及系统时间命名

{} 符

生成序列符号


拷贝文件的便捷写法


变量分隔符

${var_name}
posted @ 2024-02-13 19:21  凫弥  阅读(8)  评论(0编辑  收藏  举报