LVM 逻辑卷管理
PV(物理卷)
PV物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备不如RAID,是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区磁盘等)比较,却包含与LVM相关的管理参数。
VG(卷组)
LVM卷组类似与非LVM系统中的物理硬盘,其由物理卷组成,可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM逻辑卷是由一个或多个物理卷组成
LV(逻辑卷)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统。
总的来说LVM就是将一些零碎的磁盘分区(PV)合成一个较大的磁盘(VG).然后根据需要对这些较大的磁盘进行划分成不同的小分区(LV)需要注意的是,这些小的分区是可以动态扩展与缩小的。
pvcreate /dev/md0p1 /dev/md1
pvremove /dev/md0p1
pvs
pvs /dev/md0p1
pvdisplay
pvdisplay /dev/md0p1
vgcreate vgmage26 /dev/md0p1 /dev/md1
-s 8M 指定PE大小,默认4M
vgchange -s 8M 更改PE大小
vgreduce vgmage26 /dev/md1
vgextend vgmage26 /dev/md1
vgremove vgmage26
vgs
vgs vgmage26
vgdisplay
vgdislplay vgmage26
lvcreate
lvcreate -L 10G -n lvmage vgmage
lvreduce
lvmove 移动到同卷组其他PV上
lvremove 移除
1、实验:扩展逻辑卷
先检查需要扩展的大小,VG是否有足够可用空间
1.如果不够则
pvcreate /dev/md2
vgextend vgmage26 /dev/md2
2.如足够则扩展逻辑卷大小
lvextend -L 1G/+1G /dev/vgmage26/lvmage26_01
lvextend -l +100%FREE /dev/vgmage26/lvmage26_01
3.扩展文件系统大小
resize2fs /dev/vgmage26/lvmage26_01
或
resize2fs /dev/vgmage26/lvmage26_01 500M 只增加到500M的文件系统
如果是xfs文件系统 用xfs_growfs
xfs_growfs /dev/vg01/lv01
2、实验:减小逻辑卷大小 仅支持Ext文件系统
1.umount /mnt/lvmage26_01
2.e2fsck -f /dev/vgmage26/lvmage26_01
3.resize2fs /dev/vgmage26/lvmage26_01 300M
4.lvreduce -L 300M /dev/vgmage26/lvmage26_01
5.mount
3、实验:将某块盘从LVM中分离出来
1.先确保数据不在这块PV上
用pvs查看
2.如果在这块PV上,则将数据转移到同卷组的其他PV上
pvmove /dev/pv1名 /dev/pv2名(可以不指定)
3.将pv从Vg中移出
vgreduce vg名 /dev/pv名
4.删除该盘的pv属性
pvremove /dev/pv名
4、实验:将LVM迁移到其他主机
1.将数据移到目标磁盘对应的PV上。(该磁盘不要有其他与该PV无关的分区)
pvmove /dev/pv1名 /dev/pv2名
vgreduce vg名 /dev/pv(多余) 移动除要移动的PV以外的其他PV
2.确保要迁移的VG名与目的系统没有同名的VG
vgrename vgmage26 vg02
lvrename /dev/vg02/lvmage26_01 /dev/vg02/lv01 (非必须)
3.umount /mnt/lvmage26_01/
4.vgchange -an vg02 禁用VG上的所有LV
5.vgexport vg名
关机(如果支持热插排,则不用关机),拔硬盘,插到目标主机上。如果在虚拟机上则进行如下操作
把当前虚拟机的硬盘安装到另一台虚拟机,注意选择现有虚拟磁盘,两台虚拟机一台开机另一台就得关闭。
6.pvscan
vgscan
lvscan
vgimport vg名
vgchange -ay vg名
7.mount /dev/vg名/lv名 /mnt/
sed
sed是一种在线编辑器 、行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为“模式空间”接着用sed命令处理缓冲区中的内容把缓冲区的内容送到标准输出。
特点
sed可以进行数据的替换、删除、新增,数据可以是关键字、特定的行。
sed是一种非交互式文本编辑器,vim是一种交互式文本编辑器。
sed是搜索匹配处理文本工具,grep是用来检索条件关键字的。
sed
-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑,对每行处理时,可以有多个Script
-f: 把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
-r: 支持扩展的正则表达式
-i: 直接将处理的结果写入文件
-i文件名 在将处理的结果写入文件之前备份一份
地址定界:
(1) 不给地址:对全文进行处理
sed -n ‘p‘ 文件
(2) 单地址:
#: 指定的行
sed -n ‘2p‘ 文件
/pattern/:被此处模式所能够匹配到的每一行
sed -n ‘/linux/p‘文件
(3) 地址范围:
#,#
sed -n ‘2,3p‘
#,+#
sed -n ‘2,+1p‘
/pat1/,/pat2/
sed -n ‘/redhat/,/linux/p‘
#,/pat1/
sed -n ‘2,/linux/p‘
(4) ~:步进
sed -n ‘1~2p‘ 只打印奇数行
sed -n ‘2~2p‘ 只打印偶数行
编辑命令
d: 删除模式空间匹配的行,并立即启用下一轮循环
sed ‘2d‘ pets
p:打印当前模式空间内容,追加到默认输出之后
sed ‘2p‘ pets
a [\]text:在指定行后面追加文本,支持使用\n实现多行追加
sed ‘2a\123\n456\n789‘ pets
i [\]text:在行前面插入文本
sed ‘2i\123\n456\n789‘ pets
c [\]text:替换行为单行或多行文本
sed ‘2c\123\n456\n789‘ pets
w /path/somefile: 保存模式匹配的行至指定文件
sed -n ‘3w /root/3.file‘ pets
r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
sed ‘3r /root/mage.txt‘ pets
=: 为模式空间中的行打印行号
sed ‘=‘ pets.bak
!:模式空间中匹配行取反处理
sed -n ‘2!p‘ pets
s///:查找替换,支持使用其它分隔符,[email protected]@@,s###替换标记:
g: 行内全局替换
sed ‘s/dog/cat/g‘ pets
高级命令
sed除了模式空间还有一个保持空间,对于处理过的数据可能还有其他处理,可以先传送至保持空间,然后在后续处理中再次传回模式空间。
sed有一些高级命令运用到保持空间,这些命令大多配合使用,例如以下几种组合:
(!命令取反,分号可以分割脚本)
sed -n ‘n;p‘ FILE 显示偶数行
sed ‘1!G;h;$!d‘ FILE 倒序显示
sed -n ‘1!G;h;$p‘ 倒序显示
seq 7 |sed ‘n;d‘ 显示奇数
sed ‘N;D‘ 显示最后一行
sed ‘$!d‘ 显示最后一行
sed ‘G‘ 每行之间加空行
sed ‘g‘ 把每行内容替换成空行
sed ‘/^$/d;G‘ 确保每一行下面都有一个空行
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
cat grub2.cfg |sed -r ‘s/^[[:space:]]+//‘
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -r "/^#[[:space:]]/s/^#[[:space:]]+([^[:space:]])/\1/" fstab
sed -r ‘s/^#[[:space:]]+//‘ fstab
3、在centos6系统/root/install.log每一行行首增加#号
sed ‘s/^/#/g‘ /root/install.log
4、在/etc/fstab文件中不以#开头的行的行首增加#号
cat /etc/fstab |sed ‘s/^[^#]/#&/‘
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
echo /etc/sysconfig/network-scripts/ |sed -r ‘s#(^/.*/)([^/].*/?$)#a:\1\nb:\2#‘
6、利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig eth0 |sed -n ‘2p‘ |sed ‘s#^.*addr:##g‘ |sed ‘s# Bcas.*$##g‘
ifconfig eth0 |sed -n -e ‘2s#^.*addr:##g‘ -e ‘s# Bcas.*$##gp‘
作业:
7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
ls /run/media/root/CentOS 7 x86_64/Packages | sed -r ‘s#.*\.([^\.]+)\.rpm#\1#‘|sort|uniq -c
8、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
9、将文本文件的n和n+1行合并为一行,n为奇数行
后两道不会做,后续再修改。