day26 lvm逻辑卷管理
为什么学lvm
参考博客
http://apecome.com:9494/03系统服务篇/3-14-lvm逻辑卷管理.html#逻辑卷(lv)管理相关命令
250GB
虚拟机
试想,企业里的生产服务器,一开始没有规划好磁盘容量,随着用户增长,磁盘可能会逐渐填满
这时候你只能添加新硬盘,新分区
但是旧的数据还在旧的磁盘分区上,你就只能停止业务进行数据迁移了。
lvm也是吧多个磁盘,化成一个大硬盘,但是特点是,后期可以继续加入新硬盘,这个逻辑卷组的容量就扩大了,等于这个大硬盘容量更大
使用这个逻辑卷组(500G+100G=600G)(大硬盘500G)
↓
获取部分的容量,化为一个逻辑卷(分区)
↓
逻辑卷进行格式化(分区进行格式化)
↓
挂载使用
但是如果你用了lvm,你可以将多个物理分区、抽象为一个逻辑卷组,并且这个逻辑卷组是可以动态扩容、缩容的。
当逻辑卷组容量不够了,只需要买新硬盘,通过命令再添加到这个指定的逻辑卷组中,可以在不停机的情况下,立即实现扩容,且被linux识别,那可是太巴适了。
什么是LVM
图解lvm工作流程
lvm原理名词记忆
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查看磁盘信息
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命令
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}