LVM2邏輯卷創建及擴容


LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,又譯為邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器。是Linux核心所提供的邏輯卷管理(Logical Volume Management)功能。它在硬盤的硬盤分區之上,又創建了一個邏輯層以方便系統管理硬盤分區系統。

最早由IBM開發,在AIX系統上實現,OS/2操作系統與HP-UX也支持這個功能;

在1998年,Heinz Mauelshagen根據HP-UX上的邏輯卷管理器,寫作出第一個Linux版本的邏輯卷管理器;並將其發布到Linux社區中,它允許用戶在Linux系統上用簡單的命令行管理一個完整的邏輯卷管理環境。

LVM的優點

它是建立在物理存儲設備之上的一個抽象層,允許用戶生成邏輯存儲卷,與直接使用物理存儲在管理上相比,提供了更好靈活性;

LVM將存儲虛擬化,使用邏輯卷,用戶不會受限於物理磁盤的大小;另外,與硬件相關的存儲設置被器隱藏,用戶可以不用停止應用或卸載文件系統來調整卷大小或數據遷移,可以減少操作成本。

LVM與直接使用物理存儲相比,有以下優點:

1、  靈活的容量

當使用邏輯卷時,文件系統可以擴展到多個磁盤上,你可以聚合多個磁盤或磁盤分區成單一的邏輯卷.

2、  可伸縮的存儲池;

你可以使用簡單的命令來擴大或縮小邏輯卷大小,不用重新格式化或分區磁盤設備.

3、  在線的數據再分配

你可以在線移動數據,數據可以在磁盤在線的情況下重新分配.比如,你可以在線更換可熱插拔的磁盤.

4、  方便的設備命名;

邏輯卷可以按你覺得方便的方式來起任何名稱.

5、  磁盤條塊化

你可以生成一個邏輯盤,它的數據可以被條塊化存儲在2個或更多的磁盤上.這樣可以明顯提升數據吞吐量.

6、  鏡像卷

邏輯卷提供方便的方法來鏡像你的數據.

7、  卷快照

使用邏輯卷,你可以獲得設備快照用來一致性備份或者測試數據更新效果而不影響真實數據.

查看版本

[root@localhost ~]#uname -a
Linux localhost.localdomain2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64GNU/Linux
[root@localhost ~]#uname -r
2.6.32-504.el6.x86_64
[root@localhost ~]#rpm -qa | grep lvm
mesa-private-llvm-3.4-3.el6.x86_64
lvm2-libs-2.02.111-2.el6.x86_64
lvm2-2.02.111-2.el6.x86_64

3.LVM基本術語

物理存儲介質(The Physical Media):

這里指系統的存儲設備,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。

物理卷(PV,Physical Volume):

物理卷就是指磁盤,磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。當前LVM允許你在每個物理卷上保存這個物理卷的0至2份元數據拷貝。默認為1,保存在設備的開始處。為2時,在設備結束處保存第二份備份。

卷組(VG,Volume Group):

LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯

卷),LVM卷組由一個或多個物理卷組成。

邏輯卷(LV,Logical Volume):

LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。

線性邏輯卷(Linear Volumes):

一個線性邏輯卷聚合多個物理卷成為一個邏輯卷.比如,如果你有兩個60GB硬盤,你可以生成120GB的邏輯卷.

條塊化的邏輯卷(Striped Logical Volumes)

當你寫數據到此邏輯卷中時,文件系統可以將數據放置到多個物理卷中.對於大量連接讀寫操作,它能改善數據I/O效率.

鏡像的邏輯卷(MirroredLogical Volumes)

鏡像在不同的設備上保存一致的數據.數據同時被寫入原設備及鏡像設備.它提供設備之間的容錯。

快照卷(SnapshotVolumes)

快照卷提供在特定瞬間的一個設備虛擬映像,當快照開始時,它復制一份對當前數據區域的改變,由於它優先執行這些改變,所以它可以重構當前設備的狀態。

PE(physical extent)

每一個物理卷被划分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。

LE(logical extent)

邏輯卷也被划分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。

和非LVM系統將包含分區信息的元數據保存在位於分區的起始位置的分區表中一樣,邏輯卷以及卷組相關的元數據也是保存在位於物理卷起始處的VGDA(卷組描述符區域)中。VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符。系統啟動LVM時激活VG,並將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來訪問實際的物理位置。

4.LVM模塊:

Physicalvolume (PV)、Volume group (VG)、Logicalvolume(LV)、 Physical extent (PE),下面我們用一個簡單

的圖來說明下物理卷、卷組、邏輯卷他們之間的關系:(該圖來自於網絡)

LVM2詳解

邏輯卷的創建,就是將多塊硬盤創建物理卷,而將這些物理卷以邏輯的形式總成一個容器,然后從這個容器里面創建大小不同的分區文件,而這個容器就是所謂的卷組(VG),而從這個容器里創建大小不同的分區文件,這個分區文件就叫做邏輯卷。

5.具體操作:

a.分區:

[root@localhost ~]#fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x00060f25

  Device Boot      Start        End      Blocks  Id  System

/dev/sda1  *          1        26      204800  83 Linux

Partition 1 does not end on cylinderboundary.

/dev/sda2              26        7859  62914560  8e  Linux LVM

/dev/sda3            7859        8512    5252256  83  Linux

/dev/sda4            8513        9166    5253255    5 Extended

/dev/sda5            8513        8644    1060258+  82  Linux swap / Solaris

[root@localhost ~]# fdisk -l /dev/sdb    #新添加的硬盤sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x00000000

 

[root@localhost ~]# fdisk /dev/sdb          #對sdb進行分區

Command (m for help): n        #新建一個分區;

Command action

  e  extended

  p  primary partition (1-4)

p

Partition number (1-4): 3          #分區號;

First cylinder (1309-2610, default 1309):        #開始柱面,直接默認

Using default value 1309

Last cylinder, +cylinders or +size{K,M,G}(1309-2610, default 2610): +5G              #指定分區大小

Command (m for help): p                  #查看所有分區

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x71f66aa7

Device Boot      Start        End      Blocks  Id  System

/dev/sdb1            1        654    5253223+  83  Linux                #id字段表示分區類型;

/dev/sdb2          655        1308    5253255  83  Linux                #改分區類型需要使用子命令t

/dev/sdb3          1309        1962    5253255  83  Linux

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x71f66aa7

#此時分區id已修改為8e,分區類型為Linux LVM;

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1              1        654    5253223+  8e  Linux LVM

/dev/sdb2            655        1308    5253255  8e  Linux LVM

/dev/sdb3            1309        1962    5253255  8e  Linux LVM

Command (m for help): w                          #保存更改退出

[root@localhost ~]# partx -a /dev/sdb                      #讓內核重新讀取硬盤sdb的分區信息;

BLKPG: Device or resource busy

 

error adding partition 3

[root@localhost ~]# fdisk -l /dev/sdb                        #查看硬盤sdb的分區信息;

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Disk identifier: 0x71f66aa7

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1              1        654    5253223+  8e  Linux LVM

/dev/sdb2            655        1308    5253255  8e  Linux LVM

/dev/sdb3            1309        1962    5253255  8e  Linux LVM

[root@localhost ~]#


b、將物理分區與硬盤創建為物理卷(pvcreate)

 

 

[root@localhost ~]# pvcreate /dev/sdb[1-3]                    #將sdb上的三個分區創建為物理卷;

 Physical volume "/dev/sdb1" successfully created

 Physical volume "/dev/sdb2" successfully created

 Physical volume "/dev/sdb3" successfully created

[root@localhost ~]# pvcreate /dev/sdc                              #將硬盤sdc創建為物理卷;

 Physical volume "/dev/sdc" successfully created

[root@localhost ~]# pvs                                                          #查看創建的物理卷

 PV        VG  Fmt Attr PSize  PFree

 /dev/sda2  vg0  lvm2 a-- 59.99g  7.99g

 /dev/sdb1      lvm2 ---  5.01g 5.01g

 /dev/sdb2      lvm2 ---  5.01g 5.01g

 /dev/sdb3      lvm2 ---  5.01g 5.01g

 /dev/sdc        lvm2 ---  20.00g 20.00g


Note:在VMwareWorkstations 11上使用CentOS6.6系統,新添加的硬盤需要在系統進行重啟后方能操作,如sdc,需要繼續驗證;

c、將物理卷(pv)創建為卷組(vgcreate),名為myvg:

[root@localhost ~]# vgcreate myvg/dev/sdb[1-3] /dev/sdc          #創建卷組(VG),卷組名為myvg,使用物理卷:

                                                                                                                                  #/dev/sda[1-3]和/dev/sdc

 Volume group "myvg" successfully created

[root@localhost ~]# vgs                                                                            #查看創建的卷組;

 VG  #PV #LV #SN Attr  VSize VFree

 myvg  4  0  0wz--n- 35.02g 35.02g

 vg0    1  4  0wz--n- 59.99g  7.99g

[root@localhost ~]# vgdisplay                                                                #查看卷組的詳細信息;

  ---Volume group ---

  VGName              myvg                                                      #卷組名

 System ID           

 Format                lvm2                                                        #格式

 Metadata Areas        4

 Metadata Sequence No  1

  VGAccess            read/write

  MaxPV                0

  CurPV                4

  ActPV                4

  VGSize              35.02 GiB                                                #卷組的空間大小,是所有物理卷之和;

  PESize              4.00 MiB                                                    #物理盤的基本單位:默認4MB;

 Total PE              8965

 Alloc PE / Size      0 / 0 

 Free  PE / Size      8965 / 35.02 GiB

d、在卷組里創建邏輯卷並格式化、掛載使用;

[root@localhost ~]# lvcreate -L 5G -n mylv1myvg                    #創建邏輯卷,卷名為mylv1,卷大小為5G;

 Logical volume "mylv1" created

[root@localhost ~]# lvs                                                                    #查看邏輯卷;

 LV    VG  Attr      LSize  Pool Origin Data%  Meta% Move Log Cpy%Sync Convert

                                        

 var  vg0  -wi-ao---- 20.00g                                                 

[root@localhost ~]# mke2fs -j /dev/myvg/mylv1                    #格式化邏輯卷,文件系統創建為ext系列;

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Writing inode tables: done                         

Creating journal (32768 blocks): done

Writing superblocks and filesystemaccounting information: done

This filesystem will be automaticallychecked every 25 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@localhost ~]# mkdir /mydata                                                      #創建掛載目錄;

[root@localhost ~]# mount /dev/myvg/mylv1/mydata/                  #掛載邏輯卷;

[root@localhost ~]# mount                                                                      #查看已掛載的設備;

/dev/mapper/vg0-root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)

/dev/mapper/myvg-mylv1 on /mydata type ext3(rw)                      #剛掛載的邏輯卷;

[root@localhost ~]# ls /mydata/                                                            #查看掛載目錄;

lost+found        #聽說ext系列的文件系統格式化完成后都會有這個目錄;           

[root@localhost ~]# df -h                #查看硬盤;

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root  20G 333M  19G  2% /

tmpfs                931M    0 931M  0% /dev/shm

/dev/sda1            190M  33M 148M  18% /boot

/dev/mapper/vg0-usr  9.8G 1.9G  7.4G  21% /usr

/dev/mapper/vg0-var    20G 200M  19G  2% /var

/dev/mapper/myvg-mylv1  5.0G 139M  4.6G  3% /mydata

e、如果卷組空間不夠,擴大卷組空間;

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x71f66aa7

#在硬盤sdb上創建了一個擴展分區sdb4,在擴展分區上創建了邏輯分區sdb5,並將sdb5的id該為8e;

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1              1        654    5253223+  8e  Linux LVM

/dev/sdb2            655        1308    5253255  8e  Linux LVM

/dev/sdb3            1309        1962    5253255  8e  Linux LVM

/dev/sdb4            1963        2485    4200997+  5 Extended

/dev/sdb5            1963        2485    4200966  8e  Linux LVM

[root@localhost ~]# partx -a /dev/sdb                                #內核重新讀取sdb的分區表;

 

[root@localhost ~]# pvcreate /dev/sdb5                                    #創建物理卷/dev/sdb5

 Physical volume "/dev/sdb5" successfully created

[root@localhost ~]# pvs                                                                  #查看物理卷

 PV        VG  Fmt Attr PSize  PFree

 /dev/sda2  vg0  lvm2 a-- 59.99g  7.99g

 /dev/sdb1  myvg lvm2 a--  5.01g 8.00m

 /dev/sdb2  myvg lvm2 a--  5.01g 5.01g

 /dev/sdb3  myvg lvm2 a--  5.01g 5.01g

 /dev/sdb5      lvm2 ---  4.01g 4.01g            #新增的物理卷/dev/sdb5

 /dev/sdc  myvg lvm2 a--  20.00g 20.00g

[root@localhost ~]# vgextend myvg /dev/sdb5                        #擴展卷組,使用vgextend命令;

 Volume group "myvg" successfully extended

[root@localhost ~]# vgs                                                                  #查看擴展后的卷組的大小;

 VG  #PV #LV #SN Attr  VSize VFree

 myvg  5  1  0wz--n- 39.02g 34.02g

 vg0    1  4  0wz--n- 59.99g  7.99g


f、擴展邏輯卷(支持在線擴展)

[root@localhost ~]# cd /mydata/

[root@localhost mydata]# touchkalaguiyin.html

[root@localhost mydata]# echo "This isKaLaguiyin's test blog." > kalaguiyin.html

[root@localhost mydata]# catkalaguiyin.html

This is KaLaguiyin's test blog.

[root@localhost mydata]# vgs

  VG  #PV #LV #SN Attr  VSize  VFree

  myvg  5  1  0 wz--n- 39.02g 34.02g                      #查看VG擴展前的信息,與擴展后對比;

 vg0    1  4  0wz--n- 59.99g  7.99g

[root@localhost mydata]#

[root@localhost mydata]# lvextend -L +4G/dev/myvg/mylv1      #擴展邏輯卷mylv1,空間+4G;

 Size of logical volume myvg/mylv1 changed from 5.00 GiB (1280 extents)to 9.00 GiB (2304 extents).

 Logical volume mylv1 successfully resized

 [root@localhostmydata]# resize2fs -p /dev/myvg/mylv1    #通過resize2fs將文件系統的容量確實增加;

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/myvg/mylv1 is mounted on/mydata; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of/dev/myvg/mylv1 to 2359296 (4k) blocks.

The filesystem on /dev/myvg/mylv1 is now2359296 blocks long.

 

[root@localhost mydata]# lvs                                              #查看邏輯卷容量;

 LV    VG  Attr      LSize  Pool Origin Data%  Meta% Move Log Cpy%Sync Convert

 mylv1 myvg -wi-ao----  9.00g                 

 root  vg0  -wi-ao---- 20.00g                                                 

 swap  vg0  -wi-ao---- 2.00g                                                 

 usr  vg0  -wi-ao---- 10.00g                                                 

 var  vg0  -wi-ao---- 20.00g                                                 

[root@localhost mydata]# catkalaguiyin.html              #查看文件內容是否完整

This is KaLaguiyin's test blog.

[root@localhost mydata]# df –h                                          #查看邏輯卷的容量是否增加;

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root  20G 333M  19G  2% /

tmpfs                931M    0 931M  0% /dev/shm

/dev/sda1            190M  33M 148M  18% /boot

/dev/mapper/vg0-usr  9.8G 1.9G  7.4G  21% /usr

/dev/mapper/vg0-var    20G 200M  19G  2% /var

/dev/mapper/myvg-mylv1  8.9G 140M  8.3G  2% /mydata


g、縮減邏輯卷

縮減前准備:

查看邏輯卷使用空間情況;

不能在線縮減,得先卸載;

確保縮減后的空間大小依然能存儲原有的所有數據;

在縮減之后應該先強行檢查文件,以確保文件系統處於一致性狀態;

將/dev/myvg/mylv1 縮減到5G,並且要求數據可以正常訪問:

[root@localhost ~]# df –lh                                            #查看已用空間大小;

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root  20G 333M  19G  2% /

tmpfs                931M    0 931M  0% /dev/shm

/dev/sda1            190M  33M 148M  18% /boot

/dev/mapper/vg0-usr  9.8G 1.9G  7.4G  21% /usr

/dev/mapper/vg0-var    20G 201M  19G  2% /var

/dev/mapper/myvg-mylv1

                      8.9G  140M 8.3G  2% /mydata

[root@localhost ~]# umount /dev/myvg/mylv1              #卸載分區;

[root@localhost~]# e2fsck -f /dev/myvg/mylv1 #強制檢查文件系統;

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/myvg/mylv1: 12/589824 files (0.0%non-contiguous), 72705/2359296 blocks

[root@localhost ~]# resize2fs/dev/myvg/mylv1 5G                                  #縮減邏輯卷大小至5G

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/myvg/mylv1to 1310720 (4k) blocks.

The filesystem on /dev/myvg/mylv1 is now1310720 blocks long.

 

[root@localhost ~]# lvreduce -L 5G/dev/myvg/mylv1            #縮減物理邊界大小;

 WARNING: Reducing active logical volume to 5.00 GiB

 THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce mylv1? [y/n]:y                              #需要確認。

 Size of logical volume myvg/mylv1 changed from 9.00 GiB (2304 extents)to 5.00 GiB (1280 extents).

 Logical volume mylv1 successfully resized

[root@localhost ~]# lvs                              #查看邏輯卷;

 LV    VG  Attr      LSize  Pool Origin Data%  Meta% Move Log Cpy%Sync Convert

 mylv1 myvg -wi-a-----  5.00g                                                 

 root  vg0  -wi-ao---- 20.00g                                                                                              

 var  vg0  -wi-ao---- 20.00g                                                 

[root@localhost ~]# mount /dev/myvg/mylv1 /mydata/                #重新掛載;

[root@localhost ~]# ls /mydata/

kalaguiyin.html  lost+found                                                          #文件依然存在;

[root@localhost ~]# cat/mydata/kalaguiyin.html

This is KaLaguiyin's test blog.                                                #文件內容依然完整;

[root@localhost ~]#


h、縮減磁盤空間;

    發現物理磁盤空間使用不足,將其中一塊硬盤或分區拿掉;

    pvmove/dev/sdb5    #將/dev/sdb5上存儲的數據移到其他物理卷中;

    vgreducemyvg /dev/sdb5  #將/dev/sdb5從myvg卷組中移除;

    pvremove/dev/sdb5      #將/dev/sdb5從物理卷上移除;

[root@localhost ~]# pvs                              #查看物理卷;

 PV        VG  Fmt Attr PSize  PFree

 /dev/sda2  vg0  lvm2 a-- 59.99g  7.99g

 /dev/sdc  myvg lvm2 a--  20.00g 20.00g

[root@localhost ~]# pvmove /dev/sdb5                    #將/dev/sdb5上存儲的數據移到其他物理卷中;

  Nodata to move for myvg

[root@localhost ~]# vgreduce myvg /dev/sdb5      #將/dev/sdb5從myvg卷組中移除;

 Removed "/dev/sdb5" from volume group "myvg"

[root@localhost ~]# pvremove /dev/sdb5                #將/dev/sdb5從物理卷中移除;

 Labels on physical volume "/dev/sdb5" successfully wiped

[root@localhost ~]# pvs                                      #查看物理卷,/dev/sdb5已經被移除;

 PV        VG  Fmt Attr PSize  PFree

 /dev/sda2  vg0  lvm2 a-- 59.99g  7.99g

 /dev/sdc  myvg lvm2 a--  20.00g 20.00g

[root@localhost ~]#


i、實現快照,進行備份還原;

在/mnt/lvm目錄上,我們將原始的目錄文件進行快照,然后將/mydata目錄中的內容清空,並進行還原;

[root@localhost ~]# cd /mydata/

[root@localhost mydata]# ls

kalaguiyin.html  lost+found

[root@localhost mydata]# catkalaguiyin.html

This is KaLaguiyin's test blog.

[root@localhost mydata]# lvcreate -L 30M -nbackup -s -p r /dev/myvg/mylv1            # -L 快照大小; -n:快照名稱;

# -p 保持權限為read and write;

 Rounding up size to full physical extent 32.00 MiB

 Logical volume "backup" created

[root@localhost mydata]# ll

-rw-r--r-- 1 root root    32 Aug 26 17:14 kalaguiyin.html

drwx------ 2 root root 16384 Aug 26 16:42lost+found

[root@localhost mydata]# mkdir /tmp/backup                        #創建掛載目錄;

[root@localhost mydata]# mount/dev/myvg/backup /tmp/backup/              #掛載快照邏輯卷;

mount: block device /dev/mapper/myvg-backupis write-protected, mounting read-only

[root@localhost mydata]# cd /tmp/backup/

[root@localhost backup]# ls

kalaguiyin.html  lost+found

[root@localhost backup]# mkdir /tmp/lvmbackup                    #創建備份目錄;

[root@localhost backup]# tar jcf/tmp/lvmbackup/Sunday.tar.bz2 kalaguiyin.html  #打包並壓縮文件;

 [root@localhosttmp]# cd lvmbackup/

[root@localhost lvmbackup]# ls

Sunday.tar.bz2

[root@localhost ~]# cd /mydata/        #進入原邏輯卷掛載目錄;

[root@localhost mydata]# ll

total 20

-rw-r--r-- 1 root root    32 Aug 26 17:14 kalaguiyin.html

drwx------ 2 root root 16384 Aug 26 16:42lost+found

[root@localhost mydata]# rm -rf *          #刪除所有文件;

[root@localhost mydata]# ll

total 0

[root@localhost mydata]# tar xvf/tmp/lvmbackup/Sunday.tar.bz2              #還原備份數據;

kalaguiyin.html

[root@localhost mydata]# ll

total 4

-rw-r--r-- 1 root root 32 Aug 26 17:14kalaguiyin.html

[root@localhost mydata]# catkalaguiyin.html                                          #查看文件內容;

This is KaLaguiyin's test blog.

[root@localhost mydata]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root  20G 333M  19G  2% /

tmpfs                931M    0 931M  0% /dev/shm

/dev/sda1            190M  33M 148M  18% /boot

設備映射,功能比MD強大

作用:

     1.動態擴展或縮減磁盤分區;

   2.快照

     3.多路徑

     4.實現LVM2

     5.RAID

 

PV(物理卷)------>VG(卷組)------->LV(邏輯卷)------>快照

PV:物理卷,單位:PE(物理盤區)

   管理命令:

       pvcreate:創建物理卷

  pvremove:擦出PV中的數據

  pvmove:將物理盤區中的數據移至其他設備

  pvdisplay:查看物理卷

  pvscan:掃面物理卷

VG:多個PV組合成1個VG

  管理命令:

        vgcreate VG_NAME  /PATH/TO/PV

     -s  Num:指定PE大小,默認4M,創建后不可修改

  vgremove   VG_NAME  #刪除VG

  vgextend  VG_NAME /PATH/TO/PV    #擴展VG大小,新增PV至VG

  vgreduce VG_NAME /PATH/TO/PV   #縮減VG大小,縮減前需將PV中的數據挪走,即pvmove命令

  vgs

    vgdisplay  

  vgscan

  vgremove

  vgcfgbackup

  vgcfgrestore

      。。。。。

LV:邏輯卷

     在卷組上可以創建邏輯卷,不能大於VG的大小。

     快照(數據備份):數據在某一個時間點的狀態,大多數是元數據,所以快照較小(有點像軟連接),取代大容量備份和還原。

1.創建邏輯卷:lvcreate

    lvcreate -n LV_NAME -L  #{K/M/G/T}  VG_NAME    #創建邏輯卷

          -s:創建快照卷

     1.數據的增長量不能超過快照卷大小;

     2.快照卷應該是只讀的;

     3.跟原卷在同一卷組內。(所以划分時,需給快照卷預留空間)

2. 擦除邏輯卷數據:lvremove 

3.縮減邏輯卷:lvreduce  -L  [-]#{K/MG/T} /PATH/TO/LV 

注意:    

  1.不能在線縮減,得先卸載;

  2.確保縮減后的空間大小,依然存儲原有的所有數據;

  3.縮減前檢查文件系統,確保文件系統處於一致性狀態;

  4.縮減后,重新掛載。

3.擴展邏輯卷:lvextend -L  [+]#{K/M/G/T} /PATH/TO/LV

   lvextend -L +3G /dev/myvg/testlv

3.resize2fs /PATH/TO/LV #{K/M/G/T}    

   擴展/縮減文件系統的邏輯邊界,針對ext類型 

      -p   :能擴展到多大,就擴展到多大

   resize2fs /PATH/TO/LV 5G  修改邏輯邊界為5G

   resize2fs  -p  /PATH/TO/LV  修改到跟物理邊界一樣大。

示例1:

1.創建PV

#fdisk /dev/sda命令創建3個分區/dev/sda10、/dev/sda/11、/dev/sdb12,分區類型均為8e(LVM)

#vgcreate /dev/sda{10,11} 

#pvs   #查看分區大小(會產生元數據,實際無物理磁盤大)

#pvdisplay /dev/sda10  

#pvscan   #掃描當前系統一個有多少個PV。(在PV拆到其他主機時,可使用此命令,掃描PV上的源數據被其他主機所識別)

2.創建VG

vgcreate myvg /dev/sda{10,11}

vgs

vgdisplay  myvg

3.修改物理盤區大小=8M

vgcreate -s 8M myvg /dev/sda{10,11}  

4.縮減VG的大小,保留其大小為7G(移除PV)

pvs

pvmove /dev/sda11   把sda11的數據移至其他的盤區

vgreduce myvg  /dev/sda11   #將sda11從myvg中拿掉

 pvremove /dev/sda11   #移除PV

5.擴展VG大小

pvcreate /dev/sda12

vgextend myvg /dev/sda12

pvdisplay /dev/sda12

6.創建LV

lvcreate -L 50M -n testlv myvg   

lvs

lvsdisplay  [/dev/myvg/testlv]

mke2fs -j /dev/myvg/testlv   #格式化

mount /dev/myvg/testlv/ /mnt    #掛載

7.移除邏輯卷

umount /mnt

lvremove  /dev/myvg/testlv

8.擴展邏輯卷

順序:先擴展物理邊界,再擴展邏輯邊界

lvcreate -L 2G -n testlv myvg 

mke2fs -j /dev/myvg/testlv 

mkdir /users

vim /etc/fstab

/dev/myvg/testlv  /users  ext3    defaults,acl  0 0 

mount -a

vgs  #查看vg是否有足夠的空間

resize2fs -p /dev/myvg/testlv   擴展邏輯邊界

9.縮減邏輯卷

順序:先縮減邏輯邊界,再縮減物理邊界

df -Plh   #確保縮減后的空間不小於Used顯示的空間

umount /users  

強行進行文件檢查:

e2fsck -f /dev/myvg/testlv

縮減邏輯邊界,將邏輯卷縮減至3G

resize2fs /dev/myvg/testlv 3G

縮減物理邊界

lvreduce -L 3G  /dev/myvg/testlv

重新掛載

mount -a

10.快照卷

對testlv創建大小=50M的只讀快照卷

lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg//testlv

lvs    查看快照卷的路徑、屬性、大小等信息

掛載快照卷

mount /dev/myvg/testlv-snap /mnt

#cp /etc/inittab /mnt

定期備份快照卷

#tar -jcf /tmp/users.tar.bz2  /mnt/inittab

#umount /mnt

刪除快照卷

lvremove /dev/myvg/testlv-snap


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM