LVM詳解

LinuxLVM詳解

LVM組成;

LVM:logic volume manager .LVM即邏輯卷管理,現在使用版本為第二版,即version2

邏輯卷:pv,physical volume,即計算機上的磁盤設備,例如我的計算機上的/dev/sda3,/dev/sda5.

卷組:vg,volume group。一般由多個pv組成。

邏輯卷:lv,logical volume是在vg上是劃分好可以直接使用分區

pe:physical extend,是在pv加入vg后vg把所有pv劃分成的很多的小塊,是LVM最小的分區單位,我的計算機上pe大小為4M,這個大小可以在創建vg時根據需要制定。

LVM原理

vg可以由多個pv在組成,如果隨著時間的推移vg不夠用了,就可增加一些pv到vg里面。如果vg太大,感覺用不完浪費掉了,就可以減少一些pv,并保證里面數據不會受到影響。

Vg和lv:vg可以近似看成計算機上的一個完整的硬盤,把vg劃分成多個lv的過程類似于把計算機的一個硬盤劃分成多個分區的過程,同樣lv也像硬盤分區那樣格式化后才能使用。

如果非要拿硬盤和LVM作比較的話,拿我的計算機來說,vg相當于硬盤/dev/sda,lv相當于/dev/sda1,/dev/sda2,/dev/sda3等,lv一般也要格式化后才能使用。

Lv:如果lv里的數據增多,lv的空間不夠用了,vg就可以增加一些空間給lv,如果空間太多就給lv縮減空間。前面提到的pe,就是lv的基本組成單元,假如一個pe大小為4M,如果要創建一個4G的lv,vg就會分1000個pe給lv。如果后來lv的空間最多使用量不足2G,為了節省磁盤,vg就從lv取下500個pe,這樣就可以節省2G空間了,并且不會損壞原有數據。

 

優點:調整分區十分快捷方便,隨意增減分區大小而對數據幾乎不產生影響.

缺點:如果碰上百年不遇的霉運,數據損壞,想要找回數據卻極為困難.

 

dm:device mapper將底層塊設備組織成一個邏輯設備模塊

像擴展分區,不能直接格式化使用,必須化分成lv才能格式化使用pe默認4M,一個lv是一個文件系統

Lv設備路徑

Lv設備路徑有兩種表達方式

/dev/mapper/VG_NAME-LV__NAME和     /dev/VG_ANME/LV_NAME

以我的電腦舉例就分別是:/dev/mapper/testvg-testlv和/dev/testvg/testlv

testvg是我的電腦的一個vg名字,testlvtestvg上的一個lv,也是一個獨立文件系統。

命令詳解

pv: physicalvolume物理卷

查看pv有哪些可用命令:先敲出字母pv,再連敲兩下TAB

pvs:查看pv簡要信息

pvscanscan all disks for physical volumes瀏覽pv簡要信息和使用情況

pvdisplay:查看所有pv的詳細信息。后可加設備名查看某個pv的詳細信息

pvdisplay  /dev/sda3

pvcreate:創建新的pv。可一次創建一個或多個

pvcreate  /dev/sda{5,6,7}—–注意,創建pv前事先用fdiskt命令把分區格式調為8e

pvmove把pv上的pe數據移動到其他pv上去

           pvmove /dev/sda5,如果有數據就自動找pv移動了,如果數據很多會移動很長時間

pvremove:刪除物理卷

           pvremove /dev/sda3

pvck check physical volume metadata

           pvck /dev/sda5

 

 

vg:volume group 卷組  vg按TAB查看所有vg相關命令

vgs vgscan:查看vg簡要信息

vgdisplay:查看vg詳所有細信息,后跟設備可查看某個vg信息

vgcreate:創建vg,-s指定PE大小

 [root@yph6 ~]# vgcreate testvg -s 16M /dev/sda{5,6,8}

vgextend:擴展vg,給vg增加pv。  vgextend myvg /dev/sda5

vgreduce:縮減vg,從vg去掉某個pv。

例:myvg /dev/sda5

vgreduce –removemissing  VG_NAME 移除未識別的pv

-a  移除vg內所有pv

vgremove:刪除vg

 

lv: logical volume 邏輯卷

lv敲TAB查看所有相關命令

lvslvscan:查看所有lv的簡要信息

lvdisplay:查看所有或某個lv的詳細信息

         lvdisplay /dev/myvg/mylv

         lvdisplay /dev/mapper/myvg-mylv    

lvcreate :創建lv

         -L 指明空間大小

         -n指定lv的名字

         -l :指定pe數量

 

例:lvcreate -L 2G -n mylv myvg   ——在myvg上創建名為mylv的lv

ls /dev/mapper    ————查看lv是否創建成功

mke2fs -t ext4 -b 1024 -L mylv /dev/myvg/mylv —–格式化lv

lvremove:刪除lv

擴展邏輯卷:注意,要先擴展物理邊界再擴展邏輯邊界

lvextend -L 5G /dev/myvg/mylv 

擴展lv物理邊界為5G(給lv增加pe數量),+3G表示在原來基礎上增加3G

df –lh     ————查看所有磁盤設備大小,可查看lv是否變大

resize2fs /dev/myvg/mylv 擴展邏輯邊界到物理邊界,不需要卸載

df -lh

 

縮減邏輯卷lvreduce 注意,要先縮減邏輯邊界再縮減物理邊界

umount /dev/vg-name/lv-name  ——先卸載lv

e2fsck -f /dev/vgname/lvname    ——-強制檢測lv

resize2fs /dev/vg/lv -3G     —————把lv的邏輯邊界在原來的基礎上減少3G

lvreduce -L -3G /dev/vg/lv   ————-把lv的物理邊界減少3G,即減去一些pe

mount   ——–重新掛載

df –lh    ———–查看lv大小是否變化

 

snapshot快照卷

原理:

正常備份數據的時候數據不能發生變化,否則備份出來的數據的是不完整的。但對于1T的數據做備份需要半個小時以上,這期間數據很難保持不變,為了解決這個問題,快照卷應運而生。

快照是在一瞬間記錄下要備份的內容的元數據,然后監控這些元數據,如果元數據即將發生變化,就把將要變化的內容備份到快照里面,這樣,快照里就存儲著變化前的數據的備份。

快照和原文件應該屬于同一個卷組vg,通過快照訪問未變化的數據時,就像通過一個硬鏈接直接進入原文件訪問。所以創建快照卷時不用格式化。

lvcreate -s -L 512M -n mysnap -p r  /dev/myvg/mylv  ———-創建快照卷

-s指明創建的是快照卷,-L指明快照卷大小,-n指明快照卷的名字,-p權限  最后面指定是誰的快照

mount /dev/myvg/mylv-snap /mnt ——掛載快照卷

cp –a /mnt/*   ~/  ————-然后把快照卷里的東西備份出來,就可卸磨殺豬了

umount /mnt

lvremove /dev/myvg/mylv-snap刪除

練習:

1、創建一個至少有兩個pv組成的大小為20G的名為testvg,要求PE大小為16M

然后在卷組中創建大小為5G的邏輯卷testlv掛在至/users下

[root@yph6 ~]# pvcreate  /dev/sda{5,6,8}

[root@yph6 ~]# vgcreate testvg -s 16M /dev/sda{5,6,8}

[root@yph6 ~]# lvcreate -L 2G -n testlv testvg  ——–創建名testlvlv

[root@yph6 ~]# mke2fs -t ext4 -b 2048 -L testlv /dev/testvg/testlv —卷標為testlv

[root@yph6 ~]# mount /dev/testvg/testlv /users

[root@yph6 ~]# cd /users

[root@yph6 users]# ll

total 16

drwx—— 2 root root 16384 Dec 18 23:22 lost+found  ——出現lost+found說明掛載成功

 

2、新建用戶archlinux,要求家目錄為/users/archlinux,然后用archlinux用戶,復制/etc/pam.d至自己家目錄

[root@yph6 users]# useradd -d /users/archlinux archlinux   -d制定家目錄

[root@yph6 users]# su – archlinux

[archlinux@yph6 ~]$ cp -R /etc/pam.d ~/

[archlinux@yph6 ~]$ ll

total 2

drwxr-xr-x 2 archlinux archlinux 2048 Dec 18 23:28 pam.d

[archlinux@yph6 ~]$ pwd

/users/archlinux

 

3、擴展testlv至7G,要求archlinux用戶文件不能丟失

[root@yph6 ~]# pvcreate /dev/sda9

  Physical volume "/dev/sda9" successfully created

[root@yph6 ~]# vgextend testvg /dev/sda9

  Volume group "testvg" successfully extended

lvextend -L 7G /dev/testvg/testlv

  Size of logical volume testvg/testlv changed from 2.00 GiB (128 extents) to 7.00 GiB (448 extents).

  Logical volume testlv successfully resized

[root@yph6 ~]# resize2fs /dev/testvg/testlv  ——–lv的邏輯邊界與物理邊界一樣大

 

4、收縮至3G,文件不能丟失

 [root@yph6 ~]# umount /dev/testvg/testlv

umount: /users: device is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

[root@yph6 ~]# fuser -km /dev/testvg/testlv    ——把占用的程序殺死

/dev/testvg/testlv:   4081c  5441c  5442c

[root@yph6 ~]# umount /dev/testvg/testlv

[root@yph6 ~]# e2fsck -f /dev/testvg/testlv  —-強制檢測

[root@yph6 ~]# resize2fs /dev/testvg/testlv 3G   ———-收縮邏輯邊界至3G

[root@yph6 ~]# lvreduce -L 3G /dev/testvg/testlv  ———–收縮物理邊界至3G

[root@yph6 ~]# mount /dev/testvg/testlv /users

[root@yph6 ~]# su – archlinux

[archlinux@yph6 ~]$ ll

total 2

drwxr-xr-x 2 archlinux archlinux 2048 Dec 18 23:28 pam.d  ——原來數據還在

 

5、對testlv創建快照,基于快照備份數據,驗證快照功能

 

[root@yph6 mnt]# umount /mnt

umount: /mnt: device is busy.

[root@yph6 mnt]# fuser -km /mnt  ——–殺死占用的進程

[root@yph6 ~]# umount /mnt

 [root@yph6 ~]# lvcreate -s -L 100M -n snaplv -p r /dev/testvg/testlv —-對testlv做個快照卷

  Rounding up size to full physical extent 112.00 MiB

  Logical volume "snaplv" created.

 ~]# mount /dev/testvg/snaplv /mnt ——-快照卷不用格式化,直接掛載

mount: block device /dev/mapper/testvg-snaplv is write-protected, mounting read-only

[root@yph6 ~]# ll /mnt

total 13

drwx—— 5 archlinux archlinux  1024 Dec 19 11:30 archlinux  -快照不負眾望,備份了數據

drwx—— 2 root      root      12288 Dec 19 11:10 lost+found

 

[archlinux@yph6 ~]$ touch text   ——archlinux在家目錄新建個文件

[archlinux@yph6 ~]$ ll

total 2

drwxr-xr-x 2 archlinux archlinux 2048 Dec 19 11:28 pam.d

-rw-rw-r– 1 archlinux archlinux    0 Dec 19 11:46 text

[archlinux@yph6 ~]$ cd /mnt/archlinux  —–進入快照卷

[archlinux@yph6 archlinux]$ ll —-快照里面沒有快照創建后新增文件

total 2

drwxr-xr-x 2 archlinux archlinux 2048 Dec 19 11:28 pam.d

 

[archlinux@yph6 archlinux]$ cp -aR /mnt/archlinux  /tmp —-把快照里的數據備份出來

[archlinux@yph6 archlinux]$ cd /tmp/archlinux

[archlinux@yph6 archlinux]$ ll

total 4

drwxr-xr-x 2 archlinux archlinux 4096 Dec 19 11:28 pam.d —-看來已經備份成功

 

[root@yph6 ~]# umount /mnt

[root@yph6 ~]# lvremove /dev/testvg/snaplv —–快照卷已經發揮了自己的人生價值,

按社會慣例我們該卸磨殺豬了。

Do you really want to remove active logical volume snaplv? [y/n]: y

  Logical volume "snaplv" successfully removed

 

 

附加一個小命令 

dd命令:

if,input file ;ofoutputfile

dd if=/etc/fstab of=/tmp/fstab.2 bs=1 count=100

bs,block size  字節;  count,復制次數

dd命令比較底層,比cp效率更高

用于磁盤拷貝:

dd if=/dev/sda of=/dev/sdb

備份MBR

dd if=/dev/sda of=/tmp/mbr.bar bs=512 count=1

破壞MBR中的bootloader

dd if=/dev/zero of=/dev/sda bs=256 count=1

 

閑著無聊的話可以測計算機的性能,讓它不停的復制,看能堅持多久,跑壞了別找我

dd if=/dev/zero of=/dev/null

/dev/zero:無限吐零的設備

/dev/null:吞任何數據不吐骨頭的主

這樣可以,以子之矛,陷子之盾,看看效果

 

原創文章,作者:flivfox,如若轉載,請注明出處:http://www.www58058.com/10277

(0)
flivfoxflivfox
上一篇 2016-02-14
下一篇 2016-02-14

相關推薦

  • GOPS 2016全球運維大會 ? 北京站

    GOPS 2016全球運維大會 ? 北京站已經圓滿落幕,最新GOPS大會推薦:GOPS2017全球運維大會 ? 深圳站 基本信息: GOPS2017全球運維大會 ? 深圳站 時間:2017-04-21 08:00:00 至 2017-04-22 18:00:00結束 地點:深圳    會議規模:5000人 會議詳情:http://www.…

    Linux干貨 2016-11-03
  • shell編程、查找命令、壓縮文件工具

    shell編程、查找命令、壓縮文件工具  shell編程 一、條件測試  1、判斷某需求是否滿足,需要由測試機制來實現。    測試命令:  ·test Expression  ·[ EXPRESSION ]  ·[[ EXPRESSION ]]   &nbs…

    Linux干貨 2016-08-15
  • Linux文件管理類命令相關

    Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 1)、查看文件命令: (1)ls命令: list,列出目錄下的內容 語法: ls [OPTION]… [FILE]… 常用選項: -a: 顯示所有文件,包括隱藏文件; -A:顯示除.和..之外的所有文件; -l: –long, 長格式列表,即顯示文件的詳細屬性信息; -h, –huma…

    Linux干貨 2016-11-06
  • 馬哥教育網絡班21期+第五周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; ~]# egrep ^[[:space:]] /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; ~]# egrep …

    Linux干貨 2016-08-08
  • VMware虛擬機設置網絡(包含簡單安裝)

    1.下載VMware虛擬機 2.創建一個虛擬機,選擇下載好的linux系統,我這里選擇的是CentOS版本,之后一直按著步驟設置一般都選擇默認就好                               &…

    2017-09-02
  • Tomcat相關知識整理

    初識Servlet SUN公司制定了一系列Web應用與Web服務器進行協作的標準Java接口,統稱為Java Servlet API,還對Web服務器發布及運行Web應用的一些細節做了規約。SUN公司把這一系列標準Java接口和規約統稱為Servlet規范。Servlet就是Web服務器與Web應用進行協作的標準接口。 Servlet規范把能夠發布和運行Ja…

    Linux干貨 2016-12-05
欧美性久久久久