Linux學習筆記之 LVM

LVM相關概念:

LVM(Logical Volume Manager)利用Linux內核的device-mapper來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。通過LVM,可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),從而可以更簡便地擴大和縮小分區,可以在增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,LVM只是提供了對硬盤的一個方便的管理機制,並沒有提供額外的安全保證。

 

LVM的相關術語:

物理卷Physical volume(PV):位於邏輯卷管理的最底層,可以是過個硬盤的多個分區。

卷組Volume group(VG):建立在多個物理捲上,它將多個物理卷聚合爲一個大的管理單元(卷組),可以動態管理卷組中的物理卷。

邏輯卷Logical volume(LV):虛擬分區,它建立在卷組之上,可以動態的調整邏輯卷大小。

物理塊Physical extent(PE):它是物理卷中可供分配的最小存儲單元(默認大小4M)。它的大小會在創建卷組的時候被指定,一旦卷組創建完成後,物理區域大小無法再調整;同一卷組中各個物理卷的物理塊大小一致。

邏輯塊Logical exten(LE):LE是邏輯捲上的最小可存儲單元,和PE大小一致。

 

優點

相對於普通的硬盤分區管理,LVM更富於彈性:

使用卷組(VG),組合多個物理卷形成一個的大的存儲池,可動態管理卷組。

使用邏輯卷(LV),可以創建跨越衆多硬盤空間的分區(Virtual Partitions),在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。

可以在線(online)對邏輯卷(LV)和卷組(VG)進行管理操作,擴展,縮減,刪除等。

允許創建快照,可以保存文件系統的備份。

缺點

相對於普通的卷,其創建過程更爲複雜。


練習:利用現有磁盤sdb創建兩個物理卷,組建一個15G的卷組vg1,並創建一個7G的邏輯卷lv1,掛載到/mnt/lv001



Step1:創建兩個分區,並組建成一個15G的卷組

[root@centos6 ~]# fdisk -l /dev/sdb    #查看sdb使用情況,磁盤未劃分任何分區,接下來創建分區sdb1(5G),sdb2(10G)

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

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

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

Disk identifier: 0x067824c0

Device Boot      Start         End      Blocks   Id  System

[root@centos6 ~]# fdisk -l /dev/sdb    #使用fdisk命令來創建分區sdb1,sdb2

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

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

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

Disk identifier: 0x067824c0

   Device Boot      Start         End      Blocks   Id  System

[root@centos6 ~]# fdisk  /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

Command (m for help): n    #創建分區

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-15665, default 1): 

Using default value 1

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

Command (m for help): t    #改變分區ID號

Selected partition 1

Hex code (type L to list codes): 8e    #8e是LVM分區ID號

Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!

[root@centos6 ~]# partx -a /dev/sdb    #通知內核更新分區表

BLKPG: Device or resource busy

error adding partition 1

[root@centos6 ~]# fdisk -l /dev/sdb    #驗證分區是否創建好

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

....此處略去N行信息

   Device Boot      Start         End      Blocks   Id  System

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


同理創建大小爲10G的分區sdb2

[root@centos6 ~]# fdisk -l /dev/sdb    #創建好的分區sdb1,sdb2如下

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

...此處略去N行信息

   Device Boot      Start         End      Blocks   Id  System

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

/dev/sdb2             655        1960    10490445   8e  Linux LVM


Step2:將分區轉化爲物理卷



[root@centos6 ~]# pvcreate /dev/sdb{1,2}    #將分區sdb1,sdb2創建爲物理卷PV
Physical volume "/dev/sdb1" successfully created

Physical volume "/dev/sdb2" successfully created

[root@centos6 ~]# vgdisplay vg1    #創建卷組,取名爲vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               15.01 GiB
  PE Size               4.00 MiB
  Total PE              3842
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3842 / 15.01 GiB

  VG UUID               QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6

   

[root@centos6 ~]# lvcreate -L 7G -n lv1 vg1    #創建邏輯卷,指定大小爲7G,卷名爲lv1

Logical volume "lv1" created

[root@centos6 ~]# mkfs.ext4 /dev/vg1/lv1     #格式化邏輯卷lv1爲ext4文件系統格式

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

458752 inodes, 1835008 blocks

91750 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1879048192

56 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, 1605632

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or

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

[root@centos6 ~]# lvdisplay /dev/vg1/lv1     #查看邏輯卷lv1的詳細信息

  --- Logical volume ---

  LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

  LV Write Access        read/write

  LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

  LV Status              available

  # open                 0

  LV Size                7.00 GiB

  Current LE             1792

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           25

[root@centos6 ~]# mkdir /mnt/lv001    #創建掛載點目錄lv001

[root@centos6 ~]# mount /dev/vg1/lv1 /mnt/lv001/    #掛載邏輯卷lv1到/mnt/lv001目錄下

[root@centos6 ~]# ll /mnt/lv001/    #驗證已掛載成功

total 16

drwx------ 2 root root 16384 Aug 31 05:18 lost+found

至此,邏輯卷lv1已經創建成功,如果要實現自動掛載,修改/etc/fstab文件,爲/dev/vg1/lv1添加相應的掛載條目即可。


練習:擴展lv1卷大小,將lv1大小調整到10G (故需要添加3G空間到原有7G空間上去)


[root@centos6 ~]# lvextend --size +3G /dev/vg1/lv1 /dev/sdb2    #爲lv1添加3G空間

Size of logical volume vg1/lv1 changed from 7.00 GiB (1792 extents) to 10.00 GiB (2560 extents).

Logical volume lv1 successfully resized

[root@centos6 ~]# lvdisplay /dev/vg1/lv1     #查看lv1的詳細信息

  --- Logical volume ---

  LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

  LV Write Access        read/write

  LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

  LV Status              available

  # open                 1

  LV Size                10.00 GiB

  Current LE             2560

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:4

[root@centos6 ~]# resize2fs /dev/vg1/lv1    #擴展文件系統大小,擴展完成後,邏輯卷lv1的10G空間就可以正常使用

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv001; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/vg1/lv1 to 2621440 (4k) blocks.

The filesystem on /dev/vg1/lv1 is now 2621440 blocks long.


練習:縮減邏輯卷大小,將lv1從10G縮減到3G


注意:邏輯捲縮小後的空間不能小於它上面文件現佔有的空間,否則可能壞導致數據損壞,縮減邏輯卷的大致步驟是:

卸載文件系統--》使用e2fsck檢測邏輯卷--》使用resize2fs調整文件系統大小-》使用lvreduce縮減邏輯卷大小

[root@centos6 ~]# df -lh /dev/vg1/lv1    #驗證縮減前實際使用空間不超過3G

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg1-lv1  9.8G   16M  9.3G   1% /mnt/lv001

[root@centos6 ~]# umount /dev/vg1/lv1    #卸載邏輯卷

[root@centos6 ~]# e2fsck -f /dev/vg1/lv1    #強制檢測邏輯卷

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/vg1/lv1: 12/655360 files (0.0% non-contiguous), 77935/2621440 blocks

[root@centos6 ~]# resize2fs /dev/vg1/lv1 3G    #調整文件系統大小

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/vg1/lv1 to 786432 (4k) blocks.

The filesystem on /dev/vg1/lv1 is now 786432 blocks long.

[root@centos6 ~]# lvreduce -L 3G /dev/vg1/lv1    #縮減邏輯卷大小至3G

  WARNING: Reducing active logical volume to 3.00 GiB

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv1? [y/n]: y    #回答y確認操作

  Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 3.00 GiB (768 extents).

  Logical volume lv1 successfully resized        #提示已經調整成功

[root@centos6 ~]# lvdisplay /dev/vg1/lv1     #再度查看lv1詳細信息,確認大小已經縮減爲3G

  --- Logical volume ---

  LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

  LV Write Access        read/write

  LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

  LV Status              available

  # open                 0

  LV Size                3.00 GiB

  Current LE             768

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:4

練習:爲卷組vg1添加一個新的10G的PV


...此處省略創建物理卷sb3(大小爲10G)的過程。

[root@centos6 ~]# vgextend vg1 /dev/sdb3    #使用vgextend添加新的物理卷sdb3到卷組vg1

Physical volume "/dev/sdb3" successfully created

Volume group "vg1" successfully extended

[root@centos6 ~]# vgdisplay /dev/vg1    #查看vg1的詳細信息,卷組大小已經擴展到20G

  --- Volume group ---

  VG Name               vg1

  System ID             

  Format                lvm2

  Metadata Areas        3

  Metadata Sequence No  5

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                1

  Open LV               1

  Max PV                0

  Cur PV                3

  Act PV                3

  VG Size               25.01 GiB

  PE Size               4.00 MiB

  Total PE              6402

  Alloc PE / Size       768 / 3.00 GiB

  Free  PE / Size       5634 / 22.01 GiB

  VG UUID               QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6

相關命令如下:


dm: device manager:將一個或多個底層塊設備組織成一個邏輯設備的模塊

設備文件路徑:/dve/dm-#

邏輯卷的文件路徑

/dev/mapper/卷組_邏輯卷 或 /dev/卷組/邏輯卷

pv管理工具:

    pvs:簡要顯示系統上的PV的信息

    pvdisplay 物理卷:查看指定pv的詳細信息


vg管理工具:

vgs 簡要顯示系統上的卷組信息

vgdisplay 卷組:查看指定卷組的詳細信息

lv管理工具:

    lvs:簡要顯示邏輯卷的信息

    lvdisplay 邏輯卷: 查看指定邏輯卷的詳細信息

    lvcreate -L #[mMgGtT] -n NAME VolumeGroup  創建邏輯卷

    lvremove /dev/VG_NAME/LV_NAME    刪除邏輯卷


擴展邏輯卷:

    # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

    # resize2fs /dev/VG_NAME/LV_NAME

縮減邏輯卷:

    # umount /dev/VG_NAME/LV_NAME

    # e2fsck -f /dev/VG_NAME/LV_NAME

    # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

    # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

    # mount


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章