【原】Centos 7 下創建LVM流程


閱讀目錄



簡單介紹

LVM相關概念介紹請自行Google, 這里僅給出簡單的介紹:
基本的邏輯卷管理概念:
 
  • 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 的各項格式功能,因此這個限制已經不存在了。


創建LVM系統分區方式的主要步驟如下:

    
    
    
            
  1. 1. 添加新的物理磁盤
  2. 2. 創建新的分區,最多可分配【3個主分區,1個擴展分區】 4個主分區】,擴展分區又可以有多個分區;
  3.    window常見的分配方式:
  4.        方式1:[1個主分區(C盤)+1個擴展分區(包括3個分區,DEF盤)]
  5.        方式2:[4個主分區,分別作為:CDEF盤]
  6.      若是使用LVM方式分區,分區時最好選擇LVM分區方式;
  7. 3. 創建PV;
  8. 4. 創建VG
  9. 5. 創建LV
  10. 6. 格式化LVext3ext4等格式;
  11. 7. 掛載LV到指定目錄;
  12. 8. 將掛載信息寫入:/etc/fstab;
  13. 9. LVM擴容操作
  14.   9.1 LV的擴容;
  15.      (1) 使用VGFree空間,對LV擴容;
  16.      (2) 完成后需要在對文件系統擴容;
  17.   9.2 VG的擴容
  18.      方式1 通過增加PV來實現
  19.      方式2 通過擴展raid(磁盤陣列)設備的容量來間接對VG擴容
  20. 10. LVM縮減操作
  21.     10.1 LV的縮減
  22.     10.2 VG的縮減
  23. 11. 刪除LVM

其他說明:
凡是以“#”開頭的行,都表示linux指令,如:
    
    
    
            
  1. # fdisk -l
表示的是:
    
    
    
            
  1. [root@localhost ~]# fdisk -l

如下是最初的系統基本信息:
操作系統:Centos7;
   
   
   
           
  1. [root@localhost ~]# df -h
  2. Filesystem               Size  Used Avail Use% Mounted on
  3. /dev/mapper/centos-root   50G  1.3G   46G   3% /
  4. devtmpfs                 911M     0  911M   0% /dev
  5. tmpfs                    921M     0  921M   0% /dev/shm
  6. tmpfs                    921M  8.5M  912M   1% /run
  7. tmpfs                    921M     0  921M   0% /sys/fs/cgroup
  8. /dev/sda1                477M  142M  310M  32% /boot
  9. /dev/mapper/centos-home   47G  251M   44G   1% /home
  10. tmpfs                    185M     0  185M   0% /run/user/0


    
    
    
            
  1. [root@localhost ~]# fdisk -l
  2. Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
  3.  
  4.    Device Boot      Start         End      Blocks   Id  System
  5. /dev/sda1   *        2048     1026047      512000   83  Linux
  6. /dev/sda2         1026048   209592319   104283136   8e  Linux LVM
  7. --------LVM分區測試時,主要使用了sd{b,c,d,e,f,g}等----
  8. Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
  9. Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
  10. Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
  11. Disk /dev/sde: 16.1 GB, 16106127360 bytes, 31457280 sectors
  12. Disk /dev/sdf: 16.1 GB, 16106127360 bytes, 31457280 sectors
  13. Disk /dev/sdg: 10.7 GB, 10737418240 bytes, 20971520 sectors
  14. -----下面是系統安裝后存在的,為方便說明,后面將其顯示省略-----
  15. Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
  16. Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
  17. Disk /dev/mapper/centos-home: 50.9 GB, 50944016384 bytes, 99500032 sectors
說明:
上面這些是安裝完系統時就存在的,為方便后續的描述,在進行“df -h”時,省略掉了這些,其他指令也有部分省略。

一、創建系統分區

選擇/dev/sdb創建分區;
將整個sdb磁盤划分為一個sdb1分區,格式為Linux LVM;
由於顯示信息過長,這里省略了部分不重要的顯示信息。

    
    
    
            
  1. # fdisk /dev/sdb
  2. Command (m for help): n (創建新分區)
  3. Partition type:
  4.    p   primary (0 primary, 0 extended, 4 free)
  5.    e   extended
  6. Select (default p): p (選擇創建主分區)
  7. Partition number (1-4, default 1): 1 (分區號選擇1)
  8. First sector (2048-31457279, default 2048):
  9. Using default value 2048
  10. Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279):
  11. Using default value 31457279
  12. Partition 1 of type Linux and of size 15 GiB is set
  13.  
  14. Command (m for help): p (查看已經創建的分區)
  15. Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
  16.    Device Boot      Start         End      Blocks   Id  System
  17. /dev/sdb1            2048    31457279    15727616   83  Linux (系統默認為83,即:Linux
  18.  
  19. Command (m for help): t (修改分區格式)
  20. Selected partition 1
  21. Hex code (type L to list all codes): 8e (8e為Linux LVM格式
  22. Changed type of partition 'Linux' to 'Linux LVM'
  23.  
  24. Command (m for help): p
  25. Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
  26.    Device Boot      Start         End      Blocks   Id  System
  27. /dev/sdb1            2048    31457279    15727616   8e  Linux LVM
  28.  
  29. Command (m for help): w


二、創建PV

首先說明一些簡單指令,常見的查看指令包括如下三種:
1. pv相關:pvdisplay、pvs、pvscan,pvcreate
2. vg相關:vgdisplay、vgs、vgscan,vgcreate
3. lv相關:lvdisplay、lvs、lvscan,lvcreate

     
     
     
             
  1. # pvcreate /dev/sdb1 (創建PV)
  2. # pvdisplay
  3. "/dev/sdb1" is a new physical volume of "10.00 GiB"
  4.   --- NEW Physical volume ---
  5.   PV Name               /dev/sdb1
  6.   VG Name              
  7.   PV Size               10.00 GiB
  8.   Allocatable           NO
  9.   PE Size               0  
  10.   Total PE              0
  11.   Free PE               0
  12.   Allocated PE          0
  13.   PV UUID               dZRM2W-X2Lz-I3Jz-i4S4-E8fN-BF4K-oZqhd3
  14. # pvs
  15.   PV         VG     Fmt  Attr PSize  PFree
  16.   /dev/sdb1         lvm2 ---  10.00g 10.00g

  17. # pvscan
  18.   PV /dev/sdb1               lvm2 [10.00 GiB]

三、創建VG

創建VG時,可以使用如下幾種方式來創建
  1.   raid:磁盤陣列;
  2.   分區,如:/dev/sdb1;
  3.   整個磁盤,如:/dev/sdc;
由於我們事先沒有准備好磁盤陣列RAID,所以這里僅僅演示使用 分區整個磁盤來創建VG。
下面將使用“ 分區/dev/sdb1” 和 “磁盤 /dev/sdc” 創建VG,並設置 PE大小為64M

      
      
      
              
  1. # vgcreate vg0 /dev/sdb1 /dev/sdc -s 64M
  2.   Physical volume "/dev/sdc" successfully created
  3.   Volume group "vg0" successfully created
  4. 使用分區/dev/sdb1 和 磁盤/dev/sdc 來創建vg,並設置PE大小為64M

  5. # pvs
      PV         VG     Fmt  Attr PSize  PFree
      /dev/sdb1  vg0    lvm2 a--  10.00g 10.00g
      /dev/sdc   vg0    lvm2 a--  10.00g 10.00g

  6. # vgs
  7.   VG     #PV #LV #SN Attr   VSize  VFree
  8.   vg0      2   0   0 wz--n- 19.99g 19.99g
  9. 上面知道:/dev/sdb1和/dev/sdb都是10G,所以vg0的大小為19.99G
  10.  
  11. # vgdisplay vg0
  12. --- Volume group ---
  13.   VG Name               vg0
  14.   System ID            
  15.   Format                lvm2
  16.   Metadata Areas        2
  17.   Metadata Sequence No  1
  18.   VG Access             read/write
  19.   VG Status             resizable
  20.   MAX LV                0
  21.   Cur LV                0
  22.   Open LV               0
  23.   Max PV                0
  24.   Cur PV                2
  25.   Act PV                2
  26.   VG Size               19.99 GiB
  27.   PE Size               64.00 MiB
  28.   Total PE              320
  29.   Alloc PE / Size       0 / 0  
  30.   Free  PE / Size       5118 / 19.99 GiB
  31.   VG UUID               m58K2q-eIsC-1Z3T-DySZ-cgKb-Sd3L-UbrW2z

四、創建LV-->格式化LV-->掛載LV

關於LV的操作主要有3個步驟,分別為:
  1. 創建LV;
  2. 格式化LV,如:ext3,ext4等;
  3. 掛載LV到指定目錄下;

使用vg0創建lv1,初始大小設置為8G

      
      
      
              
  1. # lvcreate -L 8G -n lv1 vg0
  2.   Logical volume "lv1" created.
  3.   vg0中分出8G的空間給lv1使用
  4.  
  5. # vgs
  6.   VG     #PV #LV #SN Attr   VSize  VFree
  7.   vg0      2   1   0 wz--n- 19.99g 11.99g
  8. 由於分出了8Glv1,所以VFree之剩下:11.99G
  9.  
  10. # lvs
  11.   LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  12.   lv1  vg0    -wi-a-----  8.00g

  13. # lvdisplay
  14.   --- Logical volume ---
  15.   LV Path                /dev/vg0/lv1
  16.   LV Name                lv1
  17.   VG Name                vg0
  18.   LV UUID                wevRbf-Iy3b-wPfa-mK4a-DFoq-A24w-8q5axT
  19.   LV Write Access        read/write
  20.   LV Creation host, time localhost.localdomain, 2016-09-08 09:58:34 +0800
  21.   LV Status              available
  22.   # open                 0
  23.   LV Size                8.00 GiB
  24.   Current LE             2048
  25.   Segments               1
  26.   Allocation             inherit
  27.   Read ahead sectors     auto
  28.   - currently set to     8192
  29.   Block device           253:3

使用ext3文件系統對LV進行格式化

     
     
     
             
  1. # mkfs.ext3 /dev/vg0/lv1
  2.   mke2fs 1.42.9 (28-Dec-2013)
  3.   Filesystem label=
  4.   OS type: Linux
  5.   Block size=4096 (log=2)
  6.   Fragment size=4096 (log=2)
  7.   Stride=0 blocks, Stripe width=0 blocks
  8.   524288 inodes, 2097152 blocks
  9.   104857 blocks (5.00%) reserved for the super user
  10.   First data block=0
  11.   Maximum filesystem blocks=2147483648
  12.   64 block groups
  13.   32768 blocks per group, 32768 fragments per group
  14.   8192 inodes per group
  15.   Superblock backups stored on blocks:
  16.     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
  17.  
  18.   Allocating group tables: done                           
  19.   Writing inode tables: done                           
  20.   Creating journal (32768 blocks): done
  21.   Writing superblocks and filesystem accounting information: done 

將lv1掛載到/mnt/lv1目錄下

     
     
     
             
  1. # mkdir /mnt/lv1
  2. # mount /dev/vg0/lv1 /mnt/lv1
  3. # df -Th
  4.   Filesystem              Type      Size  Used Avail Use% Mounted on
  5.   /dev/mapper/vg0-lv1     ext3      7.8G   19M  7.4G   1% /mnt/lv1

五、LV擴容

LV的擴容主要分2個步驟:     
  1. 使用VG的Free空間,對LV擴容;
  2. 完成后需要在對文件系統擴容;

查看vg的容量,考慮從vg中再分配一些空間給LV

      
      
      
              
  1. # vgs
  2.   VG     #PV #LV #SN Attr   VSize  VFree
  3.   vg0      2   1   0 wz--n- 19.99g 11.99g
  4.   現在還有11.99G可用
  5.  
  6. # lvextend -L +3G /dev/vg0/lv1
  7.   Size of logical volume vg0/lv1 changed from 8.00 GiB (2048 extents) to 11.00 GiB (2816 extents).
  8.   Logical volume lv1 successfully resized.
  9. lv1添加3G容量
  10.  
  11. # vgs
  12.   VG     #PV #LV #SN Attr   VSize  VFree
  13.   centos   1   3   0 wz--n- 99.45g 4.00m
  14.   vg0      2   1   0 wz--n- 19.99g 8.99g
  15. 由原先的11.99G可用變為8.99G可用
  16.  
  17. # lvs
  18.   LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  19.   lv1  vg0    -wi-ao---- 11.00g 
  20. 由原先的8G增加到了11G

對文件系統進行擴容 

      
      
      
              
  1. # df -Th
  2. Filesystem              Type      Size  Used Avail Use% Mounted on
  3. /dev/mapper/vg0-lv1     ext3      7.8G   19M  7.4G   1% /mnt/lv1
  4. 可是發現實際容量並沒有變化,還是7.8G
  5. 這時需要對文件系統進行擴容

下面是擴容指令:

      
      
      
              
  1. # resize2fs /dev/vg0/lv1
  2. resize2fs 1.42.9 (28-Dec-2013)
  3. Filesystem at /dev/vg0/lv1 is mounted on /mnt/lv1; on-line resizing required
  4. old_desc_blocks = 1, new_desc_blocks = 1
  5. The filesystem on /dev/vg0/lv1 is now 2883584 blocks long.
  6. 對文件系統擴容
  7.  
  8. # df -Th
  9. Filesystem              Type      Size  Used Avail Use% Mounted on
  10. /dev/mapper/vg0-lv1     ext3       11G   21M   11G   1% /mnt/lv1
  11. 發現此時lv1的容量變為了11G


六、VG擴容

主要有兩種擴容方式:
  • 方式1: 通過增加PV來實現
  • 方式2: 通過擴展RAID(磁盤陣列)設備的容量來間接對VG擴容(這里不進行展示)

<方式1>: 通過增加PV來實現

使用/dev/sdd來創建一個PV
    
    
    
            
  1. # pvcreate /dev/sdd
  2.   Physical volume "/dev/sdd" successfully created
  3. 創建PV
  4.  
  5. # pvs
  6.   PV         VG     Fmt  Attr PSize  PFree
  7.   /dev/sdb1  vg0    lvm2 a--  10.00g     0
  8.   /dev/sdc   vg0    lvm2 a--  10.00g  8.99g
  9.   /dev/sdd          lvm2 ---  15.00g 15.00g
  10. 新增加的PV15G
  11.  
  12. # vgextend vg0 /dev/sdd
  13.   Volume group "vg0" successfully extended
  14. 使用PVVG擴容
  15.  
  16. # vgs
  17.   VG     #PV #LV #SN Attr   VSize  VFree
  18.   vg0      3   1   0 wz--n- 34.99g 23.99g
  19. 擴容后的vg019.99G變為了34.99G

<方式2>: 通過擴展raid(磁盤陣列)設備的容量來間接對VG擴容
這里不進行闡述








免責聲明!

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



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