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,到此,擴容完成。並且不需要重啟,方便好用。