![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
有時候我們做主機規劃時考慮的不夠到位或者其他的原因會導緻我們給的磁盤分區不夠。這時我們隻能夠重新擴充磁盤容量了,如果再加一塊硬碟上去,然後重新分區格式化,将原來的分區資料完整的複制到新的硬碟,最後将原來的分區給解除安裝重新挂載上新分區。這樣的話,事情就會變得很繁瑣了。而且有時候我們如果給的太多就會造成磁盤空間被浪費了。有麼哦有更好的辦法呢?答案是肯定的 。LVM就是為解決這種問題而存在的。
什麼是LVM?
LVM的全名是Logical Volume Manager,即邏輯卷管理器。它可以整合多個實體分區或磁盤。,讓他們看起來像是一個大磁盤一樣,而且将來我們可以根據我們的需要将其中的實體分區或磁盤删除或增加。就是說,我們可以任意調整檔案系統的容量。
LVM機制實作
将幾個實體分區或磁盤通過軟體組合成一個看起來獨立的大磁盤。然後将這塊大磁盤經過分成可用的分區(LV),最終實作挂載使用。本質上它是通過PE來進行資料交換的。将原本LV内PE轉移到其他裝置上以降低LV的容量,将其他裝置中的PE加到現有的LV中以達到增加磁盤容量的目的。
實體卷(Physical Volume)
我們實際的分區需要用fdisk調整系統的辨別符(system ID)成為LVM的辨別符(8e),然後經過pvcreate的指令将其轉換成為最底層的實體卷(pv)之後才能對這些pv加以利用。
卷組(Volume Group)
所謂的LVM大磁盤就是将許多的pv組合成一個VG,而此磁盤的大小與裡面的PE有關。
實體擴充塊(PE)
PE是使用vgcreate工具生成的。它是LVM中最小的存儲塊。我們檔案與資料的寫入都是由它來處理的。LVM預設的PE大小是4MB,我們可以把看看成檔案系統中的快(block)。
邏輯卷(Logical Volume )
VG會被切成LV,LV才是最後可以被mke2fs(mkfs)格式化成為我們使用的分區。LV的大小與VG内的PE總數有關。同時為了友善使用者管理lvm系統,LV的裝置檔案通常被指定與一下格式
/dev/vg_name/lv_name
具體實作流程圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
1.用fsck工具分出四個區,且修改他們的分區辨別符(system ID)為邏輯絕的辨別符(8e)。
~]# fdisk /dev/sda
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
其中/dev/sda3、/dev/sda5、/dev/sda6剛加的分區,他們的大小分别為10G、5G、8G
強行讓核心讀分區
~]# partx -a /dev/sda
~]# cat /proc/partitions
2. PV階段
首先我們用pv檢視一下系統上的pv數量。
~]# pvdisplay 或pvs檢視。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
利用pvcreate工具生成pv。
~]# pvcreate /dev/sda{3,5}
~]# pvdisplay
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
注意這裡PE的大小等于0。
3.VG階段
利用vgcreate工具生成VG。
首先我們用vgs檢視一下現有的vg。
~]# vgs
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
~]# vgcreate -s 16M myvg /dev/sda{3,5}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
-s指定PE的大小這裡為16M.
5.lv階段
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
這裡vg本來有15G,而我們現在隻給了10G剩下的我們可以再後面擴充。
6.檔案系統階段。
~]# mke2fs -t ext3 -b 1024 -L lablel /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
7.挂載使用
~]# mount /dev/myvg/mylv /mnt
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
擴充邏輯卷分兩種兩種
一種是直接擴張邏輯卷就行了利用原來vg裡面原有的pe來放大lv的容量就能完成。
~]# lvextend -L 15G /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
# resize2fs -f /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
一種是需要先擴張實體邊界再擴張邏輯邊界。這種情況比較複雜,也較為常見。
下面我們就利用原來千剩下的/dev/sda6l來進行擴充。
首先利用pvcreate來建構pv。
~]# pvcreate /dev/sda6
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
利用vg
~]# vgextend myvg /dev/sda6
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
~]# lvextend /dev/myvg/mylv /dev/sda6
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
通過resize2fs将檔案系?????統的總容量增加
~]# df -h
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
~]# resize2fs -f /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
注意擴張檔案系統不需要解除安裝,可以線上執行,而縮減檔案系統則必須要解除安裝,即離線進行。
縮減檔案系統
解除安裝檔案系統必須要先解除安裝
~]# umount /mnt
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
這裡将/dev/sda6抽離出來。
強制檢測和修複分區。
~]# fsck -f /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
縮減邏輯分區
~]# lvresize -L -8G /dev/myvg/mylv
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
縮減實體分區
~]# vgreduce /myvg /dev/sda6
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)
移除pv
~]# pvremove /dev/sda6
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLyV2YhB3cvw1coRXYwNWaw91dfB3LcRHb1FmZlR2LcNXZtVGa09CXxYjM19CXl9CXt92Yu8GdjFTNuc2bsJ2Lc9CX6MHc0RHaiojIsJye.gif)