raid,lvm,及sed命令的相关使用总结

raid0 条带化 chunk最小写入单位 至少2块盘 空间大小 单块磁盘大小*n
raid1 镜像  1/n   读性能提升,写入比单块盘慢  空间始终是一块盘的大小   容错率高  可以坏  n-1块盘
raid10 容错高于raid01 但空间损失更多,读写性能 提升 造价高。
raid4 

创建 raid ,在磁盘里创建
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e} 

raid,lvm,及sed命令的相关使用总结
# fdisk /dev/md0可进行分区
# mkfs.ext4 /dev/md0格式化
# mkdir /mnt/raid5 创建目录
# mount /dev/md-0 挂载
**********************************
先添加硬盘,在分区里创建raid
#fdisk /dev/sdc 分区

raid,lvm,及sed命令的相关使用总结
#mkfs.ext4 /dev/sdc格式化

raid,lvm,及sed命令的相关使用总结
raid,lvm,及sed命令的相关使用总结

#mdadm -C /dev/md2 -a yes -l 1 -n 2 -x 1 /dev/sdc{1,2,3}创建
#lsblk
#mkdir /mnt/raid1
#mount /mnt/raid1

mdadm -C /dev/md1 -a yes -l 0 -n 2 -c 1M /dev/sdf{1,2}
-C –create  /dev/mdX 创建 名为mdX 的raid
-a yes 当没有所有的/dev/mdX 设备时,自动创建该设备
-l –level  n  所要创建的raid等级
-n n  该raid的数据盘有多少个成员 
-x n  该raid的热备盘有多少个  raid0 不支R持-x
-c 值  指定chunk大小,仅限raid0 raid5 
/dev/sdx….  指定raid的成员盘。
    fd 转换类型 (为raid)
  
删除raid
umount
mdadm -D /dev/md2 先查一下,该raid由哪有成员组成
mdadm -S /dev/md2 暂停
 mdadm –zero-superblock /dev/sdf4
 mdadm –zero-superblock /dev/sdf3
清空/etc/mdadm.conf当中,该raid的信息
mdadm /dev/md0 -f /dev/sdd  模拟将/dev/md0 raid中的sdd坏掉
mdadm /dev/md0 -r /dev/sdd  将/dev/md0 raid中的sdd 拔掉
mdadm /dev/md0 -a /dev/sdd  向/dev/md0 增加设备sdd 如数据盘不够,则加为数据盘,如够,加为热备盘
mdadm -G /dev/md0 -n 6 -a /dev/sdh 将/dev/md0的数据盘设置为6个,并将/dev/sdh加入为数据盘。
mdadm -A /dev/md1 /dev/sdb /dev/sdc 当没有将md1信息保存至mdadm.conf时,只能手动指定raid成员 
mdadm -D -s > /etc/mdadm.conf  将所有的raid成员信息保存至mdadm.conf文件
mdadm -D -s /dev/md0 >> /etc/mdadm.conf 仅将md0的信处追加保存至mdadm.conf文件
mdadm -A /dev/md1  从/etc/mdadm.conf中读取成员信息,并仅激活md1
mdadm -A -s  从/etc/mdadm.conf中读取成员信息,并激活所有的raid

练习:
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 /etc/fstab
#mdadm -C /dev/md2 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}
#mkdir /mnt/backup
#vim /etc/fstab
/dev/md2                                 /mnt/backup              ext4    defaults        0 0

2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录
-n 3 -c 256k 
空间大小 3-1
#mdadm -C /dev/md3 -a yes -l 5 -n 3 -c 256k /dev/sda{10..12}
#mdadm -Ds > /etc/mdadm.conf 将显示的信息导入文件中
#mkfs.ext4 /dev/md3
#mkdir /mydata
#vim /etc/fstab
/dev/md3                               /backup                    ext4    defaults        0 0

逻辑卷
/dev/dm-1 (1000) :0-900 /dev/sda1  (200-1100)
 901 1000   /dev/sda1 (1300-1400)

/dev/vg0/lv0  –> /dev/dm-0 

LVM(前提是已经创建过raid)
pvcreate /dev/md0p1 /dev/md1  创建pv,物理卷
pvremove /dev/md0p1
vgcreate vgmage26 /dev/md0p1 /dev/md1 创建vg,卷组
-s 8M 指定PE大小,默认4M
vgchange -s 8M 更改PE大小 #vgchange -s 8M  vgmage26 
vgreduce vgmage26 /dev/md1 在vg内移除pv
vgextend vgmage26 /dev/md1 在vgmage26下增加/扩展一个/dev/md1
vgremove vgmage26 删除一个vg
lvcreat -l -n +逻辑卷名 创建逻辑卷 # lvcreate -l 10 -n lvmage26_01 vgmage26

        -L 指定大小
# mkfs.ext4 /dev/vgmage26/lvmage26_01 格式化
# mkdir /mnt/lvmage26_01
# mount /dev/vgmage26/lvmage26_01 /mnt/lvmage26_01/
# cd /mnt/lvmage26_01
# cp /etc/*.conf .

查看逻辑卷的剩余空间:
pvs 
pvs /dev/md0p1
pvdisplay
pvdisplay /dev/md0p1
vgs 
vgs vgmage26
vgdisplay
vgdislplay vgmage26

实验:扩展逻辑卷
1.先检查需要扩展的大小,VG是否有足够可用空间 vgs;vgdislplay
如果不够则  创建pv 扩展卷组
pvcreate /dev/md2
vgextend vgmage26 /dev/md2  
2.如足够则扩展逻辑卷大小
lvextend -L 1G/+1G  /dev/vgmage26/lvmage26_01  # lvextend -L 500M /dev/vg 扩展到500M +500M是扩展到500M
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

lvextend -L +500M -r /dev/vgmage26/lvmage26_01  可在lvextend 时加-r 直接一步到位,先扩展逻辑卷大小后直接增加文件系统大小

实验:减小逻辑卷大小  仅支持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 
# mount /dev/vgmage26/lvmage26_01 /mnt/lvmage26_01/

实验:将某块盘从LVM中分离出来 
1.先确保数据不在这块PV上
  用pvs查看
2.如果在这块PV上,则将数据转移到同卷组的其他PV上
 pvmove /dev/pv1名 /dev/pv2名(可以不指定)# pvmove /dev/md126p1 /dev/sdg 将所有数据移至/dev/sdg

3.将pv从Vg中移出
 vgreduce vg名 /dev/pv名 # vgreduce vgmage26 /dev/md126p1

4.删除该盘的pv属性   # pvremove vgmage26 /dev/md126p1

 pvremove /dev/pv名  
// 准备
 在添加一个2g的硬盘
# pvcreate /dev/sdg 创建pv
# vgcreate /dev/sdg 创建vg
# vgextend vgmage26 /dev/sdg 扩展
# pvs 查看数据在哪个pv上再进行如上操作

实验:将LVM迁移到其他主机
1.将数据移到目标磁盘对应的PV上。(该磁盘不要有其他与该PV无关的分区)
pvmove /dev/pv1名 /dev/pv2名
vgreduce vg名 /dev/pv(多余)  移动除要移动的PV以外的其他PV 
        vgreduce vg02   /dev/md126p1 /dev/md127 

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 时vg成非激活状态    1.# vgchange -ay vg02 vg为激活状态

5.vgexport vg名 导出                                     1.#vgimport vg02取消被保护状态 

关机(如果支持热插排,则不用关机),拔硬盘,插到目标主机上。# poweroff centos6操作结束
复制新建2G硬盘的路径,在centos7里边添加现有硬盘在centos6里复制路径查找,添加进去
在centos7中操作
6.lsblk 查看没有更新  echo‘- – -’/sys/class/scsi_host/host2/scan

7.pvscan
  vgscan
  lvscan
  vgimport vg名
  vgchange -ay vg名

8.vgimport vg02 看导入成功没

9.mount /dev/vg名/lv名 /mnt/
 #mount /dev/vg02/lv01  /mnt/lv02
 #cd /mnt/lv02 查看数据是否成功迁移

LVM快照

lvcreate -L 10M -n lvmage-snap -s /dev/vgmage/lvmage  创建快照
lvcreate -L 10M -n lvmage-snap -s -p r /dev/vgmage/lvmage  创建只读快照 
lvremove /dev/vgmage/lvmage-snap  删除快照
lvextend -L +300M/300M /dev/vgmage/lvmage-snap  快照扩展

使用快照恢复源逻辑卷
umount 源和快照
lvconvert –merge 快照名  (该操作成功会删除快照)
mount 源

对有快照的逻辑卷进行扩展
1.umount 源和快照
2.lvchange -an 源 将源及快照设置为inactive
3.lvextend -L -r 200M 源名字 (-r不一定能用)
4.e2fsck -f 扫描
5.resize2fs/xfs_growfs  …

建议,直接删除快照,可以在线扩展逻辑卷,最后重建快照

sed

-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑,对每行处理时,可以有多个Script 
-f: 把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
-r: 支持扩展的正则表达式
-i: 直接将处理的结果写入文件
-i文件名  在将处理的结果写入文件之前备份一份

script

地址定界:
(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///:查找替换,支持使用其它分隔符,s@@@,s###替换标记:
g: 行内全局替换
sed ‘s/dog/cat/g’ pets

1、删除/etc/fstab文件中所有以#开头,后面至少跟一个空
白字符的行的行首的#和空白字符
sed -r “/^#[[:space:]]/s/^#[[:space:]]+([^[:space:]])/\1/” fstab
sed -r ‘s/^#[[:space:]]+//’ fstab

raid,lvm,及sed命令的相关使用总结

3、在centos6系统/root/install.log每一行行首增加#号

sed ‘s/^/#/g’ /root/install.log

raid,lvm,及sed命令的相关使用总结

4、在/etc/fstab文件中不以#开头的行的行首增加#号
cat /etc/fstab |sed  ‘s/^[^#]/#&/’
raid,lvm,及sed命令的相关使用总结
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名

echo /etc/sysconfig/network-scripts/ |sed -r  ‘s#(^/.*/)([^/].*/?$)#a:\1\nb:\2#’

raid,lvm,及sed命令的相关使用总结

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’
raid,lvm,及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’  确保每一行下面都有一个空行

原创文章,作者:MOMO,如若转载,请注明出处:http://www.178linux.com/85455

(0)
MOMOMOMO
上一篇 2017-08-26
下一篇 2017-08-26

相关推荐

  • 第三周作业

    1、列出当前系统上所有已登陆的用户名:          [root@yangjifeng~]# who | cut -d ‘ ‘ -f 1 | sort -u     root 2、取出最后登陆到当前系统的用户信息; &nb…

    Linux干货 2017-08-28
  • rsync+inotify实现数据同步——双向传输

    实验环境:<仅2台主机之间进行数据双向传输> A主机:10.1.43.102 B主机:10.1.43.103 一、数据从A推向B 配置流程 先在B主机上配置: 1.vi /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件) uid = root gid = root port …

    Linux干货 2016-10-27
  • N21-天天-第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash awk -F: '$NF~"/sbin/nologin" {shell++} $NF!~&qu…

    Linux干货 2016-09-01
  • linux第一周学习

      一周过去了,这周学习并新认识了不少内容。由一开始的萌逼状态,逐步清晰的认识了不少内容。相信我会越来越好的。 文件与目录 touch touch newfile         创建空文件touch oldfile          更新文件的三个…

    Linux干货 2017-09-02
  • 程序包编译安装

    一、几个概念     1、开放源码         程序代码,人类可能读懂的程序语言,但是计算机不能识别和执行;     2、编译程序      &n…

    Linux干货 2015-05-11
  • N26-第三周作业

    N26-第三周作业 一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@promote ~]# who root     tty1         2017-03-10 22:36 lxk…

    Linux干货 2017-03-11