基礎知識:
PV(物理卷、硬盤、物理磁盤)新的物理硬盤需要轉化成lvm可被識別的狀態,將磁盤的system id轉化成8e(lvm可識別碼),再通過pvcreate轉化成pv,這樣才能Udine磁盤加以利用。
VG(磁盤組、卷組)由PV組成。一個卷組由多個物理硬盤組成,即1VG=n*PV。然后VG又會被看成一個整體被分為lv1、lv2......
PP(物理分區)把物理卷划分為連續大小相等存儲單位、一個卷組中的物理分區大小相等
LP(邏輯分區)映射物理分區的邏輯單位,一個邏輯分區可以對應一個或者多個物理分區
LV(邏輯卷)是指卷中由多個邏輯分區組成的集合。邏輯卷中的邏輯分區是連續的,但是對應的物理分區是不連續的,可以在一個磁盤也可以在不同的磁盤
fs(文件系統)是指在AIX系統中面向用戶的存儲空間,一個邏輯卷(LV)只能創建一個文件系統(fs),也就是說一個fs對應一個LV,如果刪除邏輯卷LV,那么文件系統也將被全部刪除。
存儲結構:
邏輯卷lv 不能被直接訪問,是生設備(裸設備),邏輯卷上建文件系統,文件系統可以被用戶訪問,是熟設備。文件系統里建目錄,目錄下建文件。
物理卷,卷組,物理分區,邏輯卷,邏輯分區,邏輯卷是面向操作系統的概念
文件系統,目錄,文件是面向用戶的概念
<下面模擬真實環境操作>
現狀:
磁盤有2塊 sda(30G) 、sdb(20G), 現只有sda被使用,因為root分區馬上就滿了所以准備對磁盤sda擴容,將sdb合並到sda中
原理:
使用lvm對磁盤擴容
通過轉置sdb的pe到sda中達到對sda擴容的目的。
方案一,給文件系統擴容
進入服務器,lsblk來觀察磁盤信息,如下圖,你可以看到有兩塊硬盤,sda30G、sdb20G。
你也可以用fdisk -l來查看分區信息.30G的硬盤已經分給了sda1、sda2,sda1區的類型是83,sda2的類型是8e。而新添加的磁盤sdb磁盤下面沒有任何分區的信息,說明還沒有分區。
下面給第二塊硬盤sdb分區,直接輸入fdisk /dev/sdb,然后進行具體的分區操作
輸入n選擇創建一個分區
連續輸入三次回車,都是用默認值,來創建一個主分區
現在df -h一定回看到sdb下面有一個分區sdb1,並且已經將所有的空間全部分給sdb1。這里直接輸入t修改創建的分區格式,顯示已有一個分區被選擇
輸入8e就可以把分區格式修改為Linux LVM格式
最后輸入w保存推出就完成了分區的過程
fdisk -l再來看一下磁盤的信息,就可以看到硬盤sdb下面多了一個分區sdb1,並且分區格式是8e Linux LVM
檢查一下LVM安裝了沒有,沒有的話必須要安裝。
yum -y install lvm2
下面開始使用LVM來進行動態卷的管理,使用pvcreate來創建物理卷,創建后使用pvdisplay來查看創建的物理卷信息
下面將剛創建的pv(物理卷)添加到vg(卷組),可以通過vgdisplay查看組信息。
邏輯卷擴容
【注】如果這一步誤操作給另一個邏輯卷擴容了 lvextend -l 5120 /dev/mapper/centos-home 怎么辦?
直接給這個邏輯卷動態縮小容量 lvresize -l -5120 /dev/mapper/centos-home,(或者lvresize -L -50G /dev/mapper/centos-home)用pvdisplay再次查看一下 此時會發現PV Free size又回來了...如果/home還是很大 可以繼續縮...然后重新給centos-root邏輯卷擴容 lvextend -l +5120 /dev/mapper/centos-root
lvresize -l 是指定PE數大小
lvresize -L 可以是可以帶單位的
通過lvdisplay查看邏輯卷信息
接下來擴容文件系統呢
【注】如果文件系統是xfs格式,用xfs_growfs;如果是ext4格式,用resize2fs
然后用df -hT查看文件系統容量大小,發現根目錄擴容成功的呀!從之前的27G漲到了47G
至此擴容完成了哦。。。。
下面來說一下之前為什么不采用掛載的方式完成擴容。
試想,擴容前的服務器還跑着服務呢,fdfs產生的圖片數據以及別的數據都存在某個路徑,這個是不變的除非修改服務的配置文件。
方案二 掛載的方式
從第12步驟開始,倘若第12步是用vgcreate重新創建一個新的卷組VolumeGroup01,再將這個卷組通過lvcreate來創建邏輯卷lv1、lv2.....最后通過格式化這個邏輯卷lv1去掛載到根下某級目錄(命令在下面), 嚴格上說這不是給根目錄擴容,而且你fdfs產生的數據呢?仍然存在原始的路徑,這樣的話新掛載的磁盤路徑是沒有意義的,服務配置文件已經把新產生的數據存在路徑寫死了。只要服務在跑,新產生的數據必然會與以前一樣產生在之前的路徑,而與你掛載磁盤的路徑不同。所以這種方法是不可行的,只能是直接將根目錄擴容。想一想,我服務產生的新數據與你掛載的磁盤有什么關系呢?你容量再大也不是我的呀。。。掛載只是磁盤分區掛載,並不能達到擴容的目的!!! 還有,我直接掛載到服務產生數據的路徑去不就好了嗎?服務在跑是掛不上去滴!即使停掉服務,當你進入到那個路徑時候,首先出現的不是fdfs數據而是lost+found這個目錄,所有的東西都在這個路面,沒錯路徑又變動了,所以這種方案是絕對行不通的!
創建新的卷組
vgcreate VolumeGroup01 /dev/sdb1
vgdisplay
創建邏輯卷lv1
lvcreate -l 100%FREE -n lv1 VolumeGroup01
lvdisplay
然后fdisk -l看分區信息,會發現lv1已經被顯示出來了,然后格式化lv1后掛載使用
mkfs.ext4 /dev/VolumeGroup01/lv1
mount /dev/VolumeGroup01/lv1 /homjun
【注】關於擴容的操作與物理機一樣,命令也一樣...
相關博客:
- 這個小伙伴是本文第二種方案,選擇掛載的方式
https://www.cnblogs.com/Rocky_/p/9430007.html
- 這好像是妹紙寫的
- 刪除邏輯卷、卷組、物理卷看這里
https://www.cnblogs.com/lqynkdcwy/p/9510768.html
- 還有一篇阿里雲服務器擴容的 感覺不太一樣