特殊的filesystem:LVM
如果在安裝初期,沒有做好整個硬盤的規划,那么未來要新增磁盤空間,會很麻煩。這個問題在LVM面前,似乎影響不大,因LVM可以整合多個實體partition在一起,讓這些partitions看起來就像是一個磁盤一樣,而且,還可以在未來新增其它的實體partition到這個LVM管理的磁盤中,如此一來,整個磁盤空間的使用上,具有彈性。
1、PV(Physical Volume)物理卷
(1) 實體磁盤,必須要將原本的磁盤,例:/dev/hda5, /dev/hda6等分區,利用fdisk命令,將他們的ID改為LVM(8e),並且修改磁盤的相關信息,稱為LVM可使用的磁盤。ID定義:當使用fdisk -l看到
的數據,ID83是Linux的partition,82則是Swap的代號,8e是LV代號
2、VG(Volume Group)卷組
(1) LVM主要目的就是建立VG,作用就是將剛剛一個或多個PV組合成為一個大磁盤,此最大容量與底下PE有關,如完全使用LVM默認參數,那么最大的LVM磁盤可達到256G
3、PE(Physical Extend)物理擴展
(1) 默認大小4M,當PE為4M時,BG最大容量為256G,PE大小會影響到VG的最大值,如VG默認大於256G時,需改PE值
(2) 注:一個VG最大可容65534個PE
4、LV(Logical Volume)LV 邏輯卷
(1) LV最后被掛載到文件系統的parition,LV有VG分割,他會建立一個裝置代號, 例:/dev/vgname/lvname
LV如何把數據寫入硬盤中:
1、線性模式(linear):假如我將 /dev/hda1, /dev/hdb1 這兩個partition加入到VG中,並且整個VG只有一個LV時,那么所謂的線性模式就是:當 /dev/hda1的容量用完之后 /dev/hdb1的硬盤才會被使用到
2、交錯模式(triped):就是我將一筆數據拆分成兩部,分別寫入 /dev/hda1 與 /dev/hdb1的意思,如此,一份數據用兩顆硬盤來寫入,理論上,讀寫的效能會比較好
注:LVM主要的用處是制造一個大磁盤,不是建立一個效能為主的磁盤,我們應該利用的是LVM可以彈性管理整個partition大小的用途上。一般使用線性模式,如使用交錯模式,需注意,當任何一個partition【掛掉】時,所有的數據都會【損壞】。如強調備份與效能,直接使用RAID即可,不使用LVM
好了上面講了這么多理論,下面來實踐一下
1、我們先准備已經分好區硬盤,分別如下,磁盤分區可參考:https://www.cnblogs.com/xiangbing123/p/13680103.html
修改Id為8e,這里的Id上面已經說明,哈哈,就不啰嗦了
我想要制作一個LVM的磁盤出來,首先將 /dev/hdb1, hdb2這個兩個partition加入到LVM中。
2、建立PV
PV相關命令:
(1)pvcreate:將實體partition建立為PV
(2)pvscan:搜尋目前系統里面任何具有PV的磁盤
(3)pvdisplay:顯示出目前系統上面的PV狀態
(4)pvremove:將PV屬性移除,讓改partition不具有PV屬性
(5)partprobe:這個命令可以讓核心立刻讀入最新的partition table而不需reboot
這里我們建立了兩個PV,可以通過pvscan 與 pvdisplay查看
3、建立VG
相關命令:
(1)vgcreate:建立VG命令
(2)vgsan:搜尋系統上面是否有VG
(3)vgdisplay:顯示目前系統上面的VG狀態
(4)vgextend:在VG內增加額外的PV
(5)vgreduce:在VG內移除PV
(6)vgchange:設定VG是否啟動(active)
(7)vgremove:刪除一個VG
注:VG名稱可自己取,PV名稱就是partition的裝置代號
4、建立LV
定義:
將創造出VG大磁盤后,在建立分割區,這個分割區就是所謂的LV
相關命令:
(1)lvcreate:建立LV
(2)lvscan:查詢系統上面的LV
(3)lvdisplay:顯示系統上面的LV狀態
(4)lvextend:在LV里添加容量
(5)lvreduce:在LV里減少容量
(6)lvremove:刪除一個LV
(7)lvresize:對LV進行容量大小的調整
將整個vbirdvg分配給vbirdlv
格式:lvcreate -L [sizeMG] -n [LVname] VGname
參數:
-L:后面接容量,容量的單位可以是M,G等
-n:后面接的就是LV的名稱
現在整個partition准備好了,只需格式化,掛載就可使用啦
5、partition格式化與掛載
格式化為 ext4格式
mkfs -t ext4 /dev/vbirdvg/vbirdlv
mkdir /mnt/lvm
mount -t ext4 /dev/vbirdvg/vbirdlv /mnt/lvm
哈哈,上面做了這么多,終於可以驗收成果了,快使用以下命令查看吧
df :查看磁盤使用情況
fdisk -l /dev/hdb:查看/dev/hdb分區
6、增加邏輯卷
如果中途需要增加分區怎么辦呢,步驟基本一致,創建好之后。細心的會發現 lv 已經增加了,但是 /dev/vbirdvg/vbirdlv 卻沒有加大。這是因為我們的ext4主要信息在最初規划時,就已經寫入super block,同時 inode 與 block 數量優勢固定的,所以沒有變化。我們可以通過 resize2fs命令處理
格式:resize2fs [-f] [device] [size]
參數:
-f:強制進行 resize 的動作
[device]:裝置代號
[size]:可加可不加,如加上需要給一個單位,M 或 G ,如不加默認【整個分區partition】的容量來處理
7、刪除步驟:
上面講了這么多創建與增加邏輯卷,假如某一天我們不使用了怎么刪除呢,其實刪除很簡單,我們按照創建順序倒着刪除即可。
1、取消掛載
2、使用lvremove移除LV
3、使用vgchange -a n VGname 讓 VGname 這個 VG 不具有Active標志
4、使用vgremove移除VG
5、使用pvremove移除PV
6、最后,使用fdisk修改ID即可