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縮減邏輯卷

先縮減內部文件系統大?。ㄟ壿嬤吔纾┑街付ù笮。倏s減物理大小

    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
下一篇 2016-08-29

相關推薦

  • shell腳本中if與case使用,查找文件locate與find的使用,壓縮,解壓及歸檔工具

    shell腳本中if與case使用 查找文件locate與find的使用 壓縮,解壓及歸檔工具 執行的循序  順序執行  選擇執行  循環執行 條件語句if if只是一個有含義的詞,不能單獨作為指令使用。 單分支      if 條件判斷:then       &nbs…

    Linux干貨 2016-08-18
  • 8-2 作業

    8-2作業     1.在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 2.創建組sales,gid 3000,passwd:centos,sales admins:user2?!?/p>

    Linux干貨 2016-08-05
  • HTTP的基礎配置

    目錄: 1.修改監聽的IP和PORT 2.持久連接(保持連接,長連接) 3.MPM 4.DSO 5.定義’Main’ server_name的文檔頁面路徑 6.站點訪問控制常見機制 7.定義站點主頁面: 8.定義路徑別名 9.設定默認字符集 10.日志設定 11.基于用戶的訪問控制 12.虛擬主機 13.status頁面 14.cur…

    Linux干貨 2017-08-08
  • 馬哥教育網絡班20期+第2周課程練習

    1、Linux上的文件管理類命令有:cp復制, mv剪切, rm移除 使用方法: cp復制  cp [OPTION]… [-T] SOURCE DEST  常用選項: -i:交互式 -r: 遞歸復制目錄及內部的所有內容 -a: 歸檔 演示: SRC是文件,會將/etc/fstab 中內容覆蓋到/bin/po…

    Linux干貨 2016-06-23
  • HAProxy實戰(一)

    實驗目的 測試基于haproxy的反代和負載均衡配置 測試keepalived高可用haproxy的效果 實驗要點 (1) 動靜分離discuzx,動靜都要基于負載均衡實現;(2) 進一步測試在haproxy和后端主機之間添加varnish緩存;(3) 給出拓撲設計;(4) haproxy的設定要求: (a) 啟動stats;(b) 自定義403、502和5…

    Linux干貨 2017-02-13
  • 作業練習題匯總

    需要用到的命令補充  文件通配符                                            …

    2017-07-22

評論列表(1條)

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

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

欧美性久久久久