1. 程式人生 > 實用技巧 >centos7 基於lvm的根目錄擴容

centos7 基於lvm的根目錄擴容

centos7 在安裝後,通常我們通過df -h 來檢視磁碟空間的時候率。如下:

[root@oracle01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   46G   32G   14G  71% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G   17M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                497M  125M  372M  26% /boot
tmpfs                    379M     0  379M   0% /run/user/0

  

如上,在根目錄 / 下,已經使用了71%,快沒有空間了,這個時候,如果需要增加空間,如果你是實體機,則只能 增加磁碟,如果你是虛擬機器或者雲伺服器,那麼可以自由擴充套件,比如vsphere(vmware的私有云平臺),可以直接增加磁碟空間,我這裡就是,於是我將磁碟空間從50G增加至100G。

直接增加磁碟空間,但是,不管哪種方式,增加後,會發現,並沒有生效,df -h 能用的空間並沒有增加,而新增的空間使用 fdisk -l 則可以檢視到,如下:

可以看到,雖然我的磁碟空間大小為107G ,但是下面使用了的只有50G 左右。 增加的空間並沒有被使用。

下面,就需要將沒使用到的空間,用來擴容在根目錄下,或別的掛載目錄下。 在開始之前,我們必須要對linux的磁碟管理有一定的認識:

入上圖,在centos中,對於儲存和磁碟空間的管理是lvm 。上圖就是lvm 的結構 。 我們常用的 fdisk -l 命令,顯示的就是物理分割槽,相當於直接作用於磁碟上的。

在物理分割槽中,我們可以在不同的磁碟中,劃分去分割槽,而這個分割槽必須要設定為lvm 分割槽格式,只有設定為lvm分割槽格式,才可以將這些分割槽,提取出來建立成物理卷,

也就是圖中第二層,這些在不通物理磁碟中的物理卷,就可以組成一個大的卷組,這個卷組就相當於邏輯上的磁碟,然後可以在卷組上進行分割槽,分為邏輯卷。而這些邏輯卷就是我們常用的 df -h 來檢視的磁碟使用鎖顯示的,例如 根目錄 /home目錄等就是常用的邏輯卷。

你可能會問為什麼要這樣做,因為一般的物理磁碟進行的物理分割槽,一旦確定,是不能修改大小的,也就無法很好的就行擴容。而且當容量大於一般磁碟的需求時,就沒有像lvm一樣可以通過組合多個物理磁碟來形成一個大的卷組使用。當然,也為了更好的管理。

好的。下面就開始對根目錄進行擴容。

1.

[root@oracle01 ~]# fdisk /dev/sda  ## /dev/sda為通過fdisk -l 檢視到的物理磁碟(第一行)
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n  ## n為建立一個新的分割槽
Partition type:   ## 這裡需要選擇時建立主分割槽還是擴充套件分割槽,都可以,這裡直接選了主分割槽
   p   primary (2 primary, 0 extended, 2 free)   
   e   extended
Select (default p): p  ## 選擇建立一個主分割槽,主分割槽只能有4個,編號為1-4,下面的全部直接回車就好了,會自動將剩餘所用空間都建立
Partition number (3,4, default 3):   
First sector (104857600-209715199, default 104857600): 
Using default value 104857600
Last sector, +sectors or +size{K,M,G} (104857600-209715199, default 209715199): 
Using default value 209715199
Partition 3 of type Linux and of size 50 GiB is set

Command (m for help): t   ## t為修改分割槽型別
Partition number (1-3, default 3): 3  ## 剛才建立的分割槽編號為3
Hex code (type L to list all codes): 8e  ## 8e就是 lvm格式的分割槽
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w  ## w儲存並寫入磁碟。
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

  這裡,在儲存後,會發現,可能會出現報錯,顯示繁忙,無法重新讀取分割槽資訊。下面有解決辦法。可以用過重啟或者執行partprobe or kpartx。所以,這裡直接執行partprobe

[root@oracle01 ~]# partprobe

  或者重啟

2. 建立了物理分割槽後,就需要將物理分割槽建立為物理卷:

將物理分割槽3 建立物理卷,這裡這個/dev/sda3是第一步建立的物理分割槽,通過fdisk -l 就可以看到
是在第一個物理磁碟/dev/sda下面的分割槽(一個磁碟可以有多個分割槽),原本已有/dev/sda1,/dev/sda2
通過第一步建立生成/dev/sda3這個分割槽,然後將這個分割槽 建立成物理卷
pvcreate /dev/sda3
  /dev/sda3 successfully created.
## 檢視物理卷
pvdisplay
 --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               49.51 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12674
  Free PE               11
  Allocated PE          12663
  PV UUID               8T9dpf-SrDj-maVi-IlAb-tpPb-Lzyt-WLeRHG
   
  /dev/sda3 is a new physical volume of 50.00 GiB
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               50.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               uRRJtJ-Ds7J-dvqs-y5Lb-W95H-FXeh-C2QNtl

3. 物理卷建立成功後,則需要將物理卷新增到卷組中,這樣才能在卷組中進行分配。

[root@oracle01 ~]# vgdisplay  ## 檢視卷組
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <49.51 GiB
  PE Size               4.00 MiB
  Total PE              12674
  Alloc PE / Size       12663 / 49.46 GiB
  Free  PE / Size       11 / 44.00 MiB   ## 可以看到這個卷組只剩下44M的剩餘空間了,其他的都劃分為邏輯捲了,類似於已分割槽
  VG UUID               3TMbc1-A7aP-DAMv-QtUU-VTjC-4tOf-iAxDkc

[root@oracle01 ~]# vgextend centos /dev/sda3   ## 將物理卷加入到卷組
  Volume group "centos" successfully extended
[root@oracle01 ~]# vgdisplay  ## 加入後,再次檢視卷組
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               99.50 GiB
  PE Size               4.00 MiB
  Total PE              25473
  Alloc PE / Size       12663 / 49.46 GiB
  Free  PE / Size       12810 / <50.04 GiB   ## 可以看到,加入成功後,卷組的剩餘空間變大了,這樣就有更多的空間可以進行分配,或新建立新的邏輯卷
  VG UUID               3TMbc1-A7aP-DAMv-QtUU-VTjC-4tOf-iAxDkc

4. 新增進卷組後,就是將剩餘空間對邏輯捲進行擴容。

[root@oracle01 ~]# lvdisplay     ## 檢視邏輯卷
  --- Logical volume ---
  LV Path                /dev/centos/root    ## 邏輯卷名稱
  LV Name                root
  VG Name                centos
  LV UUID                RaEygR-53tg-UaJQ-5dJs-e8V4-by51-fcp1DQ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-09-30 19:12:05 +0800
  LV Status              available
  # open                 1
  LV Size                45.46 GiB   ## 增加前,邏輯卷大小
  Current LE             11639
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

[root@oracle01 ~]# lvextend -l +100%FREE /dev/centos/root   ## 將剩餘百分百空間都新增到邏輯卷中
  Size of logical volume centos/root changed from 45.46 GiB (11639 extents) to 95.50 GiB (24449 extents).
  Logical volume centos/root successfully resized.
[root@oracle01 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                RaEygR-53tg-UaJQ-5dJs-e8V4-by51-fcp1DQ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-09-30 19:12:05 +0800
  LV Status              available
  # open                 1
  LV Size                95.50 GiB    ## 增加後,邏輯卷大小
  Current LE             24449
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

5. 然後重新識別一下分割槽大小,就可以通過df -h看到新增的容量了

[root@oracle01 ~]# xfs_growfs /dev/centos/root    ## 命令,後面跟的是邏輯卷的path
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=2979584 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=11918336, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=5819, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 11918336 to 25035776
[root@oracle01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   96G   32G   64G  34% /      ## 這裡可以看到,已成功擴容
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G   17M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                497M  125M  372M  26% /boot
tmpfs                    379M     0  379M   0% /run/user/0

OK,到此,擴容完成。並且不需要重啟,方便好用。