邏輯卷管理器(Logical Volume Manager)

本章的內容包含如下幾大部分(因爲做者水平有限,錯誤之處請留言謝謝!):node

(1)什麼是LVM,PV,PE,VG,LV。centos

(2)LVM的實際操做安全

(3)怎樣放大LV的容量微信

(4)怎樣縮小LV的容量app

(5)怎樣刪除邏輯卷ide


LVM的定義:中文翻譯就是邏輯卷管理器,能夠整合多個物理分區在一塊兒,讓這些分區看起來像是一個磁盤同樣,並且,還能夠在未來其餘的物理分區或將其從這個lvm管理的磁盤當中刪除,能夠彈性調整文件系統的容量。spa

PV:指的就是物理卷,咱們實際分區要調整系統標識符成爲8e(LVM的標識符)而後在通過pvcreat的命令轉化成LVM最底層的物理卷(PV)。翻譯

PE:指的就是物理擴展塊,它是LVM中最小的存儲快,默認使用4MB的PE塊,咱們的文件數據寫入都是寫入PE來處理的,簡單來講,PE就像是文件系統裏面的block大小。orm

VG:就是將許多PV整合成VG,一個VG最大的容量可達256GB,與PE有關。blog

LV:最終的VG會被切成LV,這個LV就是最後能夠被格式化使用的分區。


PV命令:

pvcreat:將物理分區新建成爲PV。

pvscan:查詢目前系統裏面任何具備PV的磁盤。

pvdisplay:顯示出目前系統上面的PV狀態

pvremove:將PV屬性刪除,讓該分區不具備PV屬性。


VG命令:

vgcreat:新建VG

vgscan:查找系統上面是否存在VG。

vgdisply:顯示目前系統上面的VG狀態。

vgxtend:在VG內增長額外的pv。

vgreduce:在VG內刪除PV。

vgchange:刪除一個VG。


LV命令:

lvcreat:新建LV

lvscan:查找系統上面是否存在LV。

lvdisply:顯示目前系統上面的LV狀態。

lvxtend:在LV裏面增長的LV狀態。

lvreduce:在LV裏面減小容量。

lvmove:刪除一個LV。

lvresize:對LV進行容量大小的調整。


實際上只看這些概念的東西是很不容易理解的,反正我是不理解,舉個列子就很清楚了:

小明想吃饅頭,家裏的麪粉不夠,因而從隔壁老王家,老李家,老張家,分別借來一些麪粉,準備蒸饅頭吃,首先須要把麪粉(物理卷pv)揉成一個大面團(卷組VG),而後把這些麪糰分割成一個個小饅頭(邏輯卷LV)並且每一個小饅頭的重量必須是每勺麪粉(PE)的倍數。

相信舉了這個例子以後你們都已經很明白了他們的含義以及它們之間的關係了把,那麼它們是怎樣實現的那,你們看圖就一目瞭然了:

微信圖片_20180310094012.jpg

(2)LVM的實際操做

1:新建一個磁盤,分出4個區,每一個分區容量1G,

2:先將前三個建成一個VG,在把最後一個分區增長到VG裏面VG的名稱設置爲vbirdvg,且PE的大小爲16MB,

3:將所有的VG容量丟給LV,LV的名稱設置爲vbirdlv,最後將lv,格式化爲ext4,且掛載在/mnt/lvm中。

第一步:

blob.png

由圖可知我新建了sdc,而且分了4個物理區,我先用pvscan查看一下,系統上面有沒有pv,而後在把四個分區新建成pv格式。

blob.png

下面用pvdisplay這個命令顯示出更詳細的每一個PV信息,這裏只列出一個,

blob.png

第二步:

[root@centos6 ~]# vgcreate -s 16M vbirdvg /dev/sdc{1,2,3}                  將/dev/sdc123新建成爲一個VG,且指定PE爲16M,vgcreate [-s N[mgt]]VG名稱PV名稱,-s後面接pe的大小, 單位是mgt,均可以

  Volume group "vbirdvg" successfully created

[root@centos6 ~]# vgscan                                                                      查看系統上面是否有VG存在。

  Reading all physical volumes.  This may take a while...                             閱讀全部物理卷。這可能須要一段時間

  Found volume group "vbirdvg" using metadata type lvm2                      使用元數據類型lvm2找到卷組「vbirdvg

[root@centos6 ~]# pvscan                                                    查詢系統上具備的PV的磁盤,發現sdc4沒被用掉哈

  PV /dev/sdc1   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc2   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc3   VG vbirdvg         lvm2 [1.00 GiB / 1.00 GiB free]

  PV /dev/sdc4                      lvm2 [1.01 GiB]

  Total: 4 [4.01 GiB] / in use: 3 [3.00 GiB] / in no VG: 1 [1.01 GiB]

[root@centos6 ~]# vgdisplay                                                                     顯示目前系統上面的VG狀態,     

  --- Volume group ---

  VG Name               vbirdvg

  System ID             

  Format                lvm2

  Metadata Areas        3

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                3

  Act PV                3

  VG Size               3.00 GiB

  PE Size               16.00 MiB

  Total PE              192

  Alloc PE / Size       0 / 0   

  Free  PE / Size       192 / 3.00 GiB

  VG UUID               GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F

[root@centos6 ~]# vgextend vbirdvg /dev/sdc4                                                  將sdc4的容量增長到VG中

  Volume group "vbirdvg" successfully extended

[root@centos6 ~]# vgdisplay                                                                   顯示系統上面的VG狀態。

  --- Volume group ---

  VG Name               vbirdvg

  System ID             

  Format                lvm2

  Metadata Areas        4

  Metadata Sequence No  2

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                4

  Act PV                4

  VG Size               4.00 GiB

  PE Size               16.00 MiB

  Total PE              256                                              PE的數量由原來的192變爲256個,

  Alloc PE / Size       0 / 0   

  Free  PE / Size       256 / 4.00 GiB

  VG UUID               GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F

   

[root@centos6 ~]# lvcreate -l 256 -n vbirdlv vbirdvg                 將整個vbirdvg分配給vbirdlv,要注意PE總共256個,                                      lvcreate [-L N[mgt] ]  [-n LV名稱] VG名稱,-L後面接容量,-n後面接LV的名稱-l接pe個數

  Logical volume "vbirdlv" created.

[root@centos6 ~]# lvdisplay                                                                   顯示系統上LV的狀態

  --- Logical volume ---

  LV Path                /dev/vbirdvg/vbirdlv

  LV Name                vbirdlv

  VG Name                vbirdvg

  LV UUID                m7gbpi-1Y1t-GfJb-KMRx-xaXB-QSlx-IOLeaf

  LV Write Access        read/write

  LV Creation host, time centos6.magedu.com, 2018-03-11 02:34:03 +0800

  LV Status              available

  # open                 0

  LV Size                4.00 GiB

  Current LE             256

  Segments               4

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

   

[root@centos6 ~]# mkfs -t ext4 /dev/vbirdvg/vbirdlv                                 格式化

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

262144 inodes, 1048576 blocks

52428 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1073741824

32 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

    32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or

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

[root@centos6 ~]# mkdir /mnt/lvm                                                 建立掛載點

[root@centos6 ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm                                  掛載

[root@centos6 ~]# df                                                                    查看

Filesystem           1K-blocks    Used Available Use% Mounted on

/dev/sda3             20511356 4161156  15301624  22% /

tmpfs                  1019176      76   1019100   1% /dev/shm

/dev/sda5             20511356   45000  19417780   1% /app

/dev/sda1               194241   40350    143651  22% /boot

/dev/sdb4               505396     408    478484   1% /mnt/sdb4

/dev/mapper/vbirdvg-vbirdlv

                       3997376    8184   3779480   1% /mnt/lvm

總結:

你們能看到這裏,說明尚未懵,上面的操做都是我一步步寫的,雖然比較長,可是很是詳細,難度不大,就是要記住這些亂七八糟的命令,就行了,沒什麼其餘辦法。

3)放大LV的容量

[root@localhost /]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

/dev/mapper/storage-vo   772M  2.5M  730M   1% /baiyijie                        邏輯卷vo如今的容量

[root@localhost /]# umount /baiyijie                                                            擴展前必定要先卸載設備和掛載點

[root@localhost /]# df -h                                                                               查看發現已經卸載

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

[root@localhost /]# lvextend -L 2000M /dev/storage/vo                           把邏輯卷vo擴展至2000M.

  Size of logical volume storage/vo changed from 800.00 MiB (200 extents) to 1.95 GiB (500 extents).

  Logical volume storage/vo successfully resized.

[root@localhost /]# e2fsck -f /dev/storage/vo                                            檢查磁盤完整性,並重置硬盤容量。

e2fsck 1.42.9 (28-Dec-2013)

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/storage/vo: 11/200000 files (0.0% non-contiguous), 31901/819200 blocks

[root@localhost /]# resize2fs /dev/storage/vo                            經過resize2fs將文件系統的容量確實增長!

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/storage/vo to 2048000 (1k) blocks.

The filesystem on /dev/storage/vo is now 2048000 blocks long.


[root@localhost /]# mount /dev/storage/vo /baiyijie                       掛載

[root@localhost /]# df -h                                                                   查看

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   20G  3.3G   17G  17% /

devtmpfs                 977M     0  977M   0% /dev

tmpfs                    993M     0  993M   0% /dev/shm

tmpfs                    993M  9.2M  984M   1% /run

tmpfs                    993M     0  993M   0% /sys/fs/cgroup

/dev/sda1                197M  139M   59M  71% /boot

/dev/mapper/centos-app    20G   84M   20G   1% /app

tmpfs                    199M  4.0K  199M   1% /run/user/42

tmpfs                    199M   24K  199M   1% /run/user/1000

tmpfs                    199M     0  199M   0% /run/user/0

/dev/mapper/storage-vo   1.9G  2.9M  1.8G   1% /baiyijie                           能夠看到確實增長了哈哈

(4)縮小LV的容量

現實企業中通常不多會縮lv的容量的,若是有,說明你在的整個企業很low,仍是趕忙走吧!

總結:在LVM中邏輯卷的擴容和所容都須要先取消邏輯卷與目錄的掛載關聯,擴容操做是先擴容後檢查文件系統的完整性,而縮容操做是爲了保證數據的安全,須要先檢查文件系統完整性在縮容。

(5)刪除邏輯卷

[root@localhost /]# umount /baiyijie                                                                      先取消邏輯卷與目錄的掛載關聯,這裏沒有寫入到配置文件中就再也不演示

[root@localhost /]# lvremove /dev/storage/vo                                                        刪除邏輯卷設備,須要輸入y來確認

Do you really want to remove active logical volume storage/vo? [y/n]: y                              確認

  Logical volume "vo" successfully removed

[root@localhost /]# vgremove storage                                                                          刪除卷組,只寫卷組名稱就能夠,不須要設備的絕對路徑,下面也是

  Volume group "storage" successfully removed

[root@localhost /]# pvremove /dev/sdc /dev/sdd                                                           刪除物理卷設備

  Labels on physical volume "/dev/sdc" successfully wiped.

  Labels on physical volume "/dev/sdd" successfully wiped.

總結:

在LVM中的刪除順序不是隨意的,要先刪除邏輯卷,卷組,而後是物理卷,切記。

相關文章
相關標籤/搜索