linux基礎--LVM管理

LVM:Logical Volume Manager(邏輯卷管理)

   許多Linux使用者安裝操作系統時都會遇到這樣的困境:如何精確評估和分配各個硬盤分區的容量,如果當初評估不準確,一旦系統分區不夠用時可能不得不備份、刪除相關數據,甚至被迫重新規劃分區並重裝操作系統,以滿足應用系統的需要。

  LVM是Linux環境中對磁盤分區進行管理的一種機制,是建立在硬盤和分區之上、文件系統之下的一個邏輯層,可提高磁盤分區管理的靈活性。RHEL5默認安裝的分區格式就是LVM邏輯卷的格式,需要注意的是/boot分區不能基於LVM創建,必須獨立出來。

LVM包含:PV、VG、LV

PV:Physical Volume

  這是LVM最低層設備,即多塊物理磁盤。

VG:Volume group

  使用多塊物理磁盤來組成卷組,便於KVM做卷管理,但此時還不能直接使用,相當於擴展分區。

LV:logical Volume

  LV則是將VG創建爲邏輯卷,來供使用。在一個VG中可以創建多個邏輯卷。

因此,當LV不夠用的時候,即可以在不超過VG邊界的情況下擴展,而VG不夠用的時候,則只需要在VG中添加PV即可。


PV管理命令

    pvcreate:創建PV

        pv在沒有加入vg時,沒有PE信息。

    pvs:顯示PV信息

    pvdisplay /dev/vdb:顯示pv詳細信息

    pvcsan:查看系統有多少pv

    pvremove:清除pv上的數據

    pvmove:移動pv上的數據到目標pv

VG管理命令

    vgcreate:創建vg

        -s #:創建時指定PE大小,默認爲4M

    vgremove:刪除vg

    vgs:顯示vg信息

    vgdisplay:顯示vg詳細信息

    vgextend:擴展vg即增加pv進vg

    vgreduce:縮減vg即刪除pv

    vgscan:查看系統上的vg

LV管理命令

    lvcreate:創建lv

        -n:指定lv名稱

        -L:指定lv大小

    lvremove:刪除lv

    lvextend:擴展lv

    lvreduce:縮減lv

    lvresize:減小ls

    lvs:顯示lv信息


創建PV,3G、2G、4G的三個PV

#使用fdisk創建三個分區,需要把分區類型修改爲8e
[root@liang-study ~]# fdisk /dev/vdb
/dev/vdb5               1        6243     3146409   83  Linux
/dev/vdb6            6244       10405     2097616+  83  Linux
/dev/vdb7           10406       18728     4194760+  83  Linux
#修改分區類型
Command (m for help): t
Partition number (1-7): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb5               1        6243     3146409   8e  Linux LVM
/dev/vdb6            6244       10405     2097616+  8e  Linux LVM
/dev/vdb7           10406       18728     4194760+  8e  Linux LVM
#手動使內核重讀文件系統
[root@liang-study ~]# partprobe /dev/vdb
[root@liang-study ~]# cat /proc/partitions 
 252       21    3146409 vdb5
 252       22    2097616 vdb6
 252       23    4194760 vdb7
#創建PV
[root@liang-study ~]# pvcreate /dev/vdb5 /dev/vdb6 /dev/vdb7
  Physical volume "/dev/vdb5" successfully created
  Physical volume "/dev/vdb6" successfully created
  Physical volume "/dev/vdb7" successfully created
[root@liang-study ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/vdb5       lvm2 ---- 3.00g 3.00g
  /dev/vdb6       lvm2 ---- 2.00g 2.00g
  /dev/vdb7       lvm2 ---- 4.00g 4.00g

創建vg

#創建vg
[root@liang-study ~]# vgcreate liangstudy /dev/vdb5 /dev/vdb6
  Volume group "liangstudy" successfully created
[root@liang-study ~]# vgs
  VG         #PV #LV #SN Attr   VSize VFree
  liangstudy   2   0   0 wz--n- 4.99g 4.99g
[root@liang-study ~]# vgdisplay liangstudy
  --- Volume group ---
  VG Name               liangstudy
  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               4.99 GiB
  PE Size               4.00 MiB
  Total PE              1278
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / 4.99 GiB
  VG UUID               7E2oE3-j6hl-QAmF-tfhv-Qa89-KL40-Fs1D1l
#移除vg
[root@liang-study ~]# vgremove liangstudy
  Volume group "liangstudy" successfully removed
#縮減vg
[root@liang-study ~]# vgreduce liangstudy /dev/vdb6
  Removed "/dev/vdb6" from volume group "liangstudy"
#擴展vg
[root@liang-study ~]# vgextend liangstudy /dev/vdb6
  Volume group "liangstudy" successfully extended

創建lv

#創建lv
[root@liang-study ~]# lvcreate -n lianglv -L 50M liangstudy
  Rounding up size to full physical extent 56.00 MiB
  Logical volume "lianglv" created.
[root@liang-study ~]# lvs
  LV      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lianglv liangstudy -wi-a----- 56.00m 
#格式化lv
[root@liang-study ~]# mke2fs -j /dev/liangstudy/lianglv 
#掛載lv
[root@liang-study ~]# mount /dev/liangstudy/lianglv /mnt
[root@liang-study ~]# df -Ph
Filesystem                      Size  Used Avail Use% Mounted on
/dev/vda2                        30G  3.3G   25G  12% /
tmpfs                           939M     0  939M   0% /dev/shm
/dev/vda1                       190M   58M  122M  33% /boot
/dev/vda4                        45G  210M   43G   1% /home
/dev/mapper/liangstudy-lianglv   55M  5.0M   47M  10% /mnt
#移除lv
[root@liang-study ~]# lvremove /dev/liangstudy/lianglv 
Do you really want to remove active logical volume lianglv? [y/n]: y
  Logical volume "lianglv" successfully removed
  注:移除前要求先卸載mount


擴展邏輯卷

    擴展邏輯卷需要先擴展物理邊界,再擴展邏輯邊界。

    lvextend

        -L [+]#:[擴展了]擴展到#大小。

    resize2fs -p

#掛載邏輯卷
[root@liang-study ~]# mount /dev/mapper/liangstudy-lianglv /lvtest/
#複製文件到掛載點,以便測試
[root@liang-study ~]# cp /var/log/messages /lvtest/
[root@liang-study ~]# cp /var/log/lastlog /lvtest/
查看文件系統使用情況,將lvtest邏輯卷擴展到2G
[root@liang-study lvtest]# df -Ph
Filesystem                      Size  Used Avail Use% Mounted on
/dev/vda2                        30G  3.3G   25G  12% /
tmpfs                           939M     0  939M   0% /dev/shm
/dev/vda1                       190M   58M  122M  33% /boot
/dev/vda4                        45G  210M   43G   1% /home
/dev/mapper/liangstudy-lianglv   55M  5.0M   47M  10% /lvtest
#擴展邏輯卷,物理邊界,擴展前一定要確認vg中剩餘空間大於要擴展的空間
[root@liang-study lvtest]# lvextend -L 2G /dev/liangstudy/lianglv 
  Size of logical volume liangstudy/lianglv changed from 56.00 MiB (7 extents) to 2.00 GiB (256 extents).
  Logical volume lianglv successfully resized.
  注:此時使用df -Ph查看lvtest,文件系統大小依然爲55M。因爲這裏擴展的是物理邊界,這裏顯示的不是lv的大小,此時通過lvs查看,即可看到大小已經添加
[root@liang-study lvtest]# lvs
  LV      VG         Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lianglv liangstudy -wi-ao---- 2.00g 
#擴展邏輯卷,邏輯邊界
[root@liang-study lvtest]# resize2fs -p /dev/liangstudy/lianglv 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/liangstudy/lianglv is mounted on /lvtest; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 8
Performing an on-line resize of /dev/liangstudy/lianglv to 2097152 (1k) blocks.
The filesystem on /dev/liangstudy/lianglv is now 2097152 blocks long.

[root@liang-study lvtest]# df -PH
Filesystem                      Size  Used Avail Use% Mounted on
/dev/vda2                        32G  3.5G   27G  12% /
tmpfs                           985M     0  985M   0% /dev/shm
/dev/vda1                       199M   61M  128M  33% /boot
/dev/vda4                        49G  220M   46G   1% /home
/dev/mapper/liangstudy-lianglv  2.1G  7.0M  2.0G   1% /lvtest
#查看之前複製的文件
[root@liang-study lvtest]# tail -2 /lvtest/messages 
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode


縮減邏輯卷

    縮減邏輯卷需要先縮減邏輯邊界,再縮減物理邊界。不能在線縮減,要先卸載。縮減操作非常危險

    在縮減之前應該先檢查文件系統

    resize2fs -p  

    lvreduce

        -L [-]#:[擴展了]擴展到#大小。

#卸載文件系統
[root@liang-study ~]# umount /lvtest/
#強行監測文件系統
[root@liang-study ~]# e2fsck -f /dev/liangstudy/lianglv 
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/liangstudy/lianglv: 13/524288 files (7.7% non-contiguous), 72967/2097152 blocks
#縮減lv的邏輯邊界,將lvtest邏輯捲縮減至1G
[root@liang-study ~]# resize2fs /dev/liangstudy/lianglv 1G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/liangstudy/lianglv to 1048576 (1k) blocks.
The filesystem on /dev/liangstudy/lianglv is now 1048576 blocks long.
#縮減lv物理邊界
[root@liang-study ~]# lvreduce -L 1G /dev/liangstudy/lianglv 
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce liangstudy/lianglv? [y/n]: y
  Size of logical volume liangstudy/lianglv changed from 2.00 GiB (256 extents) to 1.00 GiB (128 extents).
  Logical volume lianglv successfully resized.
#重新掛在文件系統
[root@liang-study ~]# mount /dev/liangstudy/lianglv /lvtest/
#查看文件是否正常
[root@liang-study lvtest]# tail -2 messages 
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode


邏輯卷快照

    lvcreate:快照卷創建大小應該大於快照卷聲明週期內數據增長量

        -s:指定創建快照卷

        -p r|w:指定快照卷權限,快照卷必須創建在原卷同一vg中,快照卷應該爲只讀的

#創建快照卷
[root@liang-study /]# lvcreate -L 50M -n lvtest-snap -s -p r /dev/liangstudy/lianglv 
  Rounding up size to full physical extent 56.00 MiB
  Logical volume "lvtest-snap" created.
#查看快照卷
[root@liang-study /]# lvs
  LV          VG         Attr       LSize  Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  lianglv     liangstudy owi-aos---  1.00g                                                     
  lvtest-snap liangstudy sri-a-s--- 56.00m      lianglv 0.02   
#掛在快照卷
[root@liang-study /]# mount /dev/liangstudy/lvtest-snap /lvtest-snap/
mount: block device /dev/mapper/liangstudy-lvtest--snap is write-protected, mounting read-only
#對源文件進行修改
[root@liang-study lvtest-snap]# echo "new line." >> /lvtest/messages 
#備份快照卷
[root@liang-study lvtest-snap]# tar -zcf /tmp/lvtest.tar.gz lastlog messages 
#刪除快照卷
[root@liang-study ~]# lvremove /dev/liangstudy/lvtest-snap 
Do you really want to remove active logical volume lvtest-snap? [y/n]: y
  Logical volume "lvtest-snap" successfully removed
#模擬源文件損壞
[root@liang-study ~]# rm -rf /lvtest/lastlog /lvtest/messages 
#恢復快照
[root@liang-study ~]# tar -zxvf /tmp/lvtest.tar.gz -C /lvtest/
#查看文件恢復情況
[root@liang-study lvtest]# tail -2 messages 
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal
Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode
可以看到,恢復的狀態即爲快照備份的狀態。之後的修改因爲沒有增量備份,因此不能恢復。


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