Because LVM so cattle(Logical Volume Manager)

LVM: Logical Volume Manager

        LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。

        LVM的工作原理其實很簡單,它就是通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對于分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬盤,這個時候上層的服務是感覺不到的,因為呈現給上層服務的是以邏輯卷的方式。

        LVM最大的特點就是可以對磁盤進行動態管理。因為邏輯卷的大小是可以動態調整的,而且不會丟失現有的數據。如果我們新增加了硬盤,其也不會改變現有上層的邏輯卷。作為一個動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性。

基本的邏輯卷管理概念:

PV(Physical Volume)- 物理卷 

物理卷在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區,也可以是整個物理硬盤,也可以是raid設備。

VG(Volumne Group)- 卷組 

卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之后可動態添加物理卷到卷組中。一個邏輯卷管理系統工程中可以只有一個卷組,也可以擁有多個卷組。

LV(Logical Volume)- 邏輯卷 

邏輯卷建立在卷組之上,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態地擴展和縮小空間。系統中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組。

PE(Physical Extent)- 物理塊

    LVM 默認使用4MB的PE區塊,而LVM的LV最多僅能含有65534個PE (lvm1 的格式),因此默認的LVM的LV最大容量為4M*65534/(1024M/G)=256G。PE是整個LVM 最小的儲存區塊,也就是說,其實我們的資料都是由寫入PE 來處理的。簡單的說,這個PE 就有點像文件系統里面的block 大小。所以調整PE 會影響到LVM 的最大容量!不過,在 CentOS 6.x 以后,由于直接使用 lvm2 的各項格式功能,因此這個限制已經不存在了。

    將pv提供的存儲空間劃分為大小相同的n個存儲塊,pe大小是在pv加入vg之后決定的,


dm:vevice mapper

    將一個或多個底層塊設備組織成一個邏輯設備的模塊,存放在:/dev/dm-#

關系圖如下:  

LVM.jpg

lvcreate

在卷組中創建邏輯卷:

# lvcreate -L 100 /dev/vg00

lvdisplay

顯示有關邏輯卷的信息:

# lvdisplay -v /dev/vg00/lvol1

lvextend

為邏輯卷添加鏡像

# lvextend -m 1 /dev/vg00/lvol3

lvextend

增加邏輯卷的大小

# lvextend -L 120 /dev/vg00/lvol3

lvreduce

減小邏輯卷的大?。?/span>

# lvreduce -L 100 /dev/vg00/lvol3

lvremove

從卷組中刪除邏輯卷:

# lvremove /dev/vg00/lvol6

pvcreate

創建用作卷組的一部分的物理卷:

# pvcreate /dev/rdisk/disk2

pvdisplay

顯示有關物理卷的信息:

# pvdisplay -v /dev/disk/disk2

pvmove

將盤區從一個物理卷移動到另一個物理卷:

# pvmove /dev/disk/disk2 /dev/disk/disk3

pvremove

從物理卷中刪除 LVM 數據結構:

# pvremove /dev/rdisk/disk2

vgcreate

創建卷組:

# vgcreate /dev/vg01 /dev/disk/disk2 /dev/disk/disk3

vgdisplay

顯示有關卷組的信息:

# vgdisplay -v /dev/vg00

vgextend

通過添加物理卷來擴充卷組:

# vgextend /dev/vg00 /dev/disk/disk2

vgexport

從系統中刪除卷組:

# vgexport /dev/vg01

vgscan

掃描卷組的系統磁盤:

# vgscan -v

vgreduce

通過從卷組中刪除一個或多個物理卷來縮小卷組:

# vgreduce /dev/vg00 /dev/disk/disk2

vgremove

從系統和磁盤中刪除卷組定義:

# vgremove /dev/vg00 /dev/disk/disk2

vgsync

同步卷組中的所有鏡像邏輯卷:

# vgsync vg00


VG:Volume Group 卷組

vg管理工具:

vgcreate   [-s #[kmgtpe]] volumegroupname physicaldevicepath [physicaldevicepath...]
vgcreate    -s  pe大小創建卷組的名稱   指定pv路徑(可以多個)
    #vgcreate  vg1  /dev/sdb
    -s:pe大小


擴展vg:(加磁盤)

vgextend volumegroupname physicaldevicepath [physicaldevicepath...]
vgextend  要擴展的vg組名添加的磁盤路徑(可以多個)
#vgextend  vg1 /dev/sdc1


縮減vg:(減磁盤)

vgreduce volumegroupname physicaldevicepath [physicaldevicepath…]

vgreduce  要縮減的vg組   縮減的磁盤路徑(可以是多個)

    vgreduce參數:

        -a:如果命令行中沒有指定要刪除的物理卷,則刪除所有的空物理卷;

        –removemissing:刪除卷組中丟失的物理卷,使卷組恢復正常狀態。

    #vgreduce myvg /dev/sda5


注:縮減vg時,縮減的是磁盤,所以務必先使用vgmove命令移動磁盤上的數據(將要移除的vg上的數據移動到同一個vg組的pv上)

LV:Logical Volume  邏輯卷管理

lvcreate -L #[mMgGtT] -n  NAME  VolumeGroup
lvcreate -L  指定lv大小     -n   指定lv名稱    指定在哪個vg組里創建lv
    -L:指定lv大小 (卷組有足夠的空間情況下)
    -n:name
    #lvremove /dev/VG_name/lv_name

擴展邏輯卷:

    lvextend  -L [+]num[mMgGtT]   /dev/vg_name/LV_NAME

    +:加+號代表在原有基礎上增加多少,不帶+號則代表增加到

    如:原有2G,現要擴展到5G

    1.加+號,#lvextend  -L   +3G    /dev/vg1/lv1

    2.不加+號,#lvextend  -L   5G    /dev/vg1/lv1

擴展后需要修改邏輯邊界

     resize2fs  /dev/VG_NAME/LV_NAME

     #resize2fs  /dev/myvg/mylv

     擴展到此lv大小

     只針對ext系列文件系統

    


lv:lvreduce縮減邏輯卷

先縮減內部文件系統大小(邏輯邊界)到指定大小,再縮減物理大小

    1.卸載文件系統:

    umount  /dev/vg_name/lv_name
    #umount  /dev/vg1/lv1

    2.文件系統強制檢測

e2fsck -f /dev/VG_NAME/LV_NAME
#e2fsck -f /dev/vg1/lv1

    3.縮減文件系統邏輯邊界(縮減至多大)

resize2fs  /dev/VG_name/LV_NAME #[mMgGtT]
resize2fs /dev/vg1/lv1  10G

    4.再次執行縮減

lvreduce -L [-]num[mMgGtT]  /dev/VG-name/LV-name
-:加-號代表在原有基礎上減少多少,不帶-號則代表減少到多少
如:原有5G,現要縮減到2G
1.加-號,#lvextend  -L   -3G    /dev/vg1/lv1
2.不加-號,#lvextend  -L   2G    /dev/vg1/lv1

    5.重新掛載

    mount  /dev/vg_name/lv_name  /path/to/somefile
    #mount  /dev/vg1/lv1  /mnt/lv1

示例:

1.創建一個至少有兩個pv組成的大小為20G的名為testvg的VG,要求PE大小為16MB,而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄

###創建pv和vg:

-s指定pe大小

[root@localhost ~]# vgcreate testvg -s 16M /dev/sd{b,c}1
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
  Volume group "testvg" successfully created

###創建lv

-L:指定lv大小

-n:指定lv名稱

[root@localhost ~]# lvcreate -L 5G -n testlv testvg
  Logical volume "testlv" created.

###格式化testlv

-t:指定文件系統

-L:指定LABEL

[root@localhost ~]# mke2fs -t ext4 -L testlvm /dev/testvg/testlv

###掛載目錄

[root@localhost ~]# touch /users

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

###創建所有信息;

##物理卷信息(pv)

[root@localhost /]# pvs /dev/sd{b,c}1
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1  testvg lvm2 a--u 10.00g  5.00g
  /dev/sdc1  testvg lvm2 a--u 10.00g 10.00g

##卷組信息(vg

[root@localhost /]# vgs /dev/testvg
  VG     #PV #LV #SN Attr   VSize  VFree 
  testvg   2   1   0 wz--n- 20.00g 15.00g

##邏輯卷信息(lv)

[root@localhost /]# lvs /dev/testvg/testlv 
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 5.00g

2.新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄

###新建用戶

-d:指定家目錄

[root@localhost users]# useradd -d /users/archlinux archlinux
[root@localhost users]# getent passwd archlinux
archlinux:x:501:501::/users/archlinux:/bin/bash

###復制pam.d 目錄到用戶家目錄

[root@localhost ~]# cp -r /etc/pam.d /users/archlinux/
[root@localhost ~]# ls /users/archlinux/
pam.d

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

####查看原邏輯分區

[root@localhost ~]# lvs /dev/testvg/testlv
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-ao----  5.00g

####擴展邏輯分區

    -L:指定擴展的大小

    +2G:在原有的5G上增加2G

[root@localhost ~]#lvextend -L +2G /dev/testvg/testlv

###發現實際容量并沒有變化,因為我們的系統還不認識剛剛添加進來的磁盤的文件系統,所以還需要對文件系統進行擴容

    [root@localhost ~]#resize2fs /dev/testvg/testlv
    [root@localhost ~]# lvs  /dev/testvg/testlv
      LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      testlv testvg -wi-ao----  7.00g

###查看分區是否增加容量,如我們沒有使用resize2fs 對文件系統進行擴容,此大小還是原有大小5G

    [root@localhost pam.d]# df -TH
    Filesystem           Type   Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root ext4    22G  352M   20G   2% /
    tmpfs                tmpfs  515M     0  515M   0% /dev/shm
    /dev/sda1            ext4   199M   35M  154M  19% /boot
    /dev/mapper/vg0-usr  ext4    11G  2.1G  7.9G  21% /usr
    /dev/mapper/vg0-var  ext4    22G  122M   20G   1% /var
    /dev/mapper/testvg-testlv
                         ext4   7.3G   13M  6.9G   1% /users

###驗證

[root@localhost pam.d]# du -sh
204K.
[root@localhost pam.d]# pwd
/etc/pam.d
[root@localhost pam.d]# cd /users/archlinux/pam.d/
[root@localhost pam.d]# du -sh
204K.
[root@localhost pam.d]# pwd
/users/archlinux/pam.d

4.收縮testlv至3G,要求archlinux用戶的文件不能丟失

縮減邏輯卷(lv)

lvreduce

先縮減內部文件系統大小(邏輯邊界)到指定大小,再縮減物理大小

     1.卸載文件系統:

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

    2.文件系統強制檢測

    列如:e2fsck -f /dev/VG_NAME/LV_NAME

        [root@localhost ~]# e2fsck -f /dev/testvg/testlv
        e2fsck 1.41.12 (17-May-2010)
        .......

     3.縮減文件系統邏輯邊界(縮減至多大)

        例:resize2fs  /dev/VG_name/LV_NAME #[mMgGtT]

    [root@localhost ~]# resize2fs /dev/testvg/testlv 3G
        resize2fs 1.41.12 (17-May-2010)
        Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks.
        The filesystem on /dev/testvg/testlv is now 786432 blocks long.

    4).再次執行縮減

         lvreduce -L [-]num[mMgGtT]  /dev/VG-name/LV-name

         -:加-號代表在原有基礎上減少多少,不帶-號則代表減少到多少

         如:原有5G,現要縮減到2G

         1.加-號,#lvextend  -L   -3G    /dev/vg1/lv1

         2.不加-號,#lvextend  -L   2G    /dev/vg1/lv1

  [root@localhost ~]# lvreduce -L 3G /dev/testvg/testlv 
          WARNING: Reducing active logical volume to 3.00 GiB.
          THIS MAY DESTROY YOUR DATA (filesystem etc.)
        Do you really want to reduce testvg/testlv? [y/n]: y
          Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
          Logical volume testlv successfully resized.

    5).mount 重新掛載

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

###驗證

[root@localhost ~]# du -sh /etc/pam.d
204K/etc/pam.d
[root@localhost ~]# du -sh /users/archlinux/pam.d
204K/users/archlinux/pam.d
[root@localhost ~]#

5.對testlv創建快照,并嘗試基于快照備份數據,驗證快照的功能

快照:snapshot

lvcreate -L  #[mMgGtT] -p r  -s -n snapshot_lv_name  original_lv_name

lvcreate -L  size  -p  權限(r,rw) -s 創建快照卷   -n  快照卷名稱   原lv卷

    -L:變化量大小,原卷和快照卷的大小變化

[root@localhost ~]# lvcreate -s -L 1G -p r -n lvsnap /dev/testvg/testlv 
  Logical volume "lvsnap" created.
[root@localhost users]# mount /dev/testvg/lvsnap /testdir/snap/
mount: block device /dev/mapper/testvg-lvsnap is write-protected, mounting read-only
[root@localhost users]# ls
aaa  abcd  archlinux  lost+found
[root@localhost users]# ls /testdir/snap/
archlinux  lost+found
[root@localhost users]# touch abc 
[root@localhost users]# ls /testdir/snap/
archlinux  lost+found

dd命令:convert and  copy file

    用法:dd  if=/path/from/src  of=/path/to/dest

        bs=num  復制單元大小block size(單位字節)

        count=num  :復制多少個bs

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

磁盤復制:

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

備份MBR:

    dd if=/dev/sda  of=/tmp/mbr_bak bs=512 count=1

清除磁盤分區:

    # dd if=/dev/zero  of=/dev/sda bs=512 count=1

破壞mbr的bootloader:

   bs=256


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

(0)
LiiLii
上一篇 2016-08-29 08:54
下一篇 2016-08-29 09:00

相關推薦

  • 馬哥教育網絡班22期+第五周課程練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell; [xw@localhost ~]$ cat /etc/passwd | grep -E "^(root|fedora|user1)\>" | cut -d:&…

    Linux干貨 2016-10-09
  • Linux網絡功能協議介紹(二)

      上個內容中,我們知道了只要是本地通信得廣播,而廣播不是邏輯(IP)地址對應的MAC地址,所以主要是將邏輯地址轉換成目標地址,這叫地址解析稱為ARP,還有一種是反向解析RARP,都是在本地網絡中完成的,邏輯IP地址分為兩個階段,前一段分為網絡地址,后一段分為主機地址,如何判定?用子網掩碼用來判斷那一部分是網絡位,那一部分是主機位,最重要…

    Linux干貨 2016-11-25
  • 初學正則表達式

      前言:     在學正則表達式之前,有小伙伴講解說,正則表達式在文本處理上功能非常強大、使用非常普遍,并且現在很多的工具軟件都支持它,以后的學習工作中會經常使用,非常靈活,但是靈活的同時又是繁瑣,需要小心翼翼的仔細推敲。抱著認真、好奇的心思聽完了王老的課。我自己理解的正則表達式是,給一些符號賦予一定的涵義…

    Linux干貨 2016-08-12
  • 設計模式 ( 十二 ) 職責鏈模式(Chain of Responsibility)(對象行為

    1.概述        你去政府部門求人辦事過嗎?有時候你會遇到過官員踢球推責,你的問題在我這里能解決就解決,不能解決就推卸給另外個一個部門(對象)。至于到底誰來解決這個問題呢?政府部門就是為了可以避免屁民的請求與官員之間耦合在一起,讓多個(部門)對象都有可能接收請求,將這些(部門)對象連接成一條鏈,并且沿著這條鏈傳遞…

    Linux干貨 2015-07-15
  • Haproxy的基礎應用!

            本篇博客主要是和大家共同了解一下Haproxy的功能與基礎應用,目的是更加熟練的掌握Haproxy的工作原理,為將來的工種中做好鋪墊!       本篇博客共分為兩個部分:      …

    2017-05-16
  • Linux網絡管理之路由和team網絡組

    如何實現把linux當路由器來使用,實現不同網段之間的通信訪問,這就是今天所要實現的路由配置   環境準備:4臺虛擬機,兩臺中間兩臺作為路由器來使用(每天主機兩塊網卡),其他兩臺作為終端主機,目的是讓不同網段的兩臺主機之間互相訪問(這里在vmware里面做的實驗,所以網卡的類型都設置為橋接)   拓撲圖:   步驟一:將A、D兩…

    系統運維 2016-09-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-29 15:17

    文章對lvm知識把我的很全面,同時通過具體操作對此命令進行了練習,但是前面的命令和選項連在一起了,這需要作者多加注意。同時需要注意的是lvm對于數據的物理備份是很關鍵的,需要多加練習,熟練掌握。

欧美性久久久久