1. 程式人生 > >LVM實驗分享和文本處理工具sed

LVM實驗分享和文本處理工具sed

linux


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為奇數行


後兩道不會做,後續再修改。

LVM實驗分享和文本處理工具sed