文章目錄
前言
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制
每個Linux使用者在安裝Linux時都會遇到這樣的困境:在爲系統分區時,如何精評估LVM和分配各個硬盤分區的容量,因爲系統管理員不但要考慮到當前某個分區需要的容量,還要預見該分區以後可能需要的容量的最大值。因爲如果估 計不準確,當遇到某個分區不夠用時管理員可能甚至要備份整個系統、清除硬盤、重新對硬盤分區,然後恢復數據到新分區。
雖然有很多動態調整磁盤的工具可以使用,例如Partition Magic等等,但是它並不能完全解決問題,因爲某個分區可能會再次被耗盡;另外一個方面這需要 重新引導系統才能實現,對於很多關鍵的服務器,停機是不可接受的,而且對於添加新硬盤,希望一個能跨越多個硬盤驅動器的文件系統時,分區調整程序就不能解 決問題。
因此完美的解決方法應該是在零停機前提下可以自如對文件系統的大小進行調整,可以方便實現文件系統跨越不同磁盤和分區。幸運的是Linux提供的邏輯盤卷管理(LVM,Logical Volume Manager)機制就是一個完美的解決方案。
一:LVM概述
在安裝CentOS 系統的過程中選擇自動分區,就會默認採用LVM分區方案。不需要再進行手動配置
動態調整磁盤容量,從而提高磁盤管理的靈活性
PS:“/boot”分區用於存放引導文件,不能基於LVM創建,必須獨立出來
圖形化管理界面:system-config
1.1:PV(Physical Volume,物理卷)
物理卷是LVM機制的基本存儲設備,通常對應爲一個普通分區或整個硬盤。
創建物理卷時,會在分區或硬盤的頭部創建一個保留區塊,用於記錄LVM的屬性,並把存儲空間分割成默認大小爲4MB的基本單元(Physical Extent,PE),從而構成物理卷
物理卷一般直接使用設備文件名稱,如/dev/sdb1 , /dev/sdb1, /dev/sdd等
對於轉換成物理卷的普通分區,建議先使用fdisk工具將分區類型的ID標記號改爲“8e”(8e表示LVM邏輯卷),若是整塊硬盤,可以將所有磁盤空間劃分爲一個主分區後再做相對應調整
1.2:VG(Volume Group,卷組)
卷組:由一個或多個物理卷組成一個整體
在卷組中可以動態的添加或移除物理卷
許多個物理卷可以分別組成不同的卷組,卷組的名稱由用戶自定義
1.3:LV(Logical Volume,邏輯卷)
邏輯卷建立在卷組之上,與物理卷沒有直接關係
對於邏輯捲來說,每一個卷組就是一個整體,從這個整體中“切出”一小塊空間,作爲用戶創建文件系統的基礎,這一小塊空間就稱爲邏輯卷
使用mkfs等工具在邏輯捲上創建文件系統以後,就可以掛載到Linux系統中的目錄下使用
1.4:建立LVM分區管理機制的過程
二:管理LVM
LVM管理命令主要包括三大類
PV物理卷管理
VG卷組管理
LV邏輯卷管理
對應的命令程序文件分別以“PV”“VG”“LV”開頭
幾個主要命令的格式
pvcreate 設備名1 [設備名2 … …]
vgcreate 卷組名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 邏輯卷名 卷組名
lvextend -L +大小 /dev/卷組名/邏輯卷名
2.1:PV物理卷管理
2.1.1:pvcreate命令
pvcreate用於將分區或整個硬盤轉換爲物理卷,主要是添加LVM屬性並劃分PE存儲單元
該命令需要使用硬盤或分區的設備文件作爲參數
例如
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume “/dev/sdd1” successfully created.
2.1.2:pvscan命令
pvscan命令用於掃描系統中的所有物理卷,並輸出相關信息。
例如
[root@localhost ~]# pvscan
PV /dev/sdd1 lvm2 [5.00 GiB]
Total: 3 [44.99 GiB] / in use: 2 [39.99 GiB] / in no VG: 1 [5.00 GiB]
2.1.3:pvdisplay命令
pvdisplay命令用於顯示物理卷的詳細信息
需要使用指定的物理卷作爲命令參數,默認時將顯示所有物理卷信息
例如
[root@localhost ~]# pvdisplay /dev/sdd1
“/dev/sdd1” is a new physical volume of “5.00 GiB”
— NEW Physical volume —
2.1.4:pvremove命令
pvremove命令用於將物理卷還原成普通分區或磁盤,不再用於LVM體系
被移除的物理卷將無法被pvscan命令識別
例如
[root@localhost ~]# pvremove /dev/sd[b-c]1
Labels on physical volume “/dev/sdb1” successfully wiped.
Labels on physical volume “/dev/sdc1” successfully wiped.
[root@localhost ~]# pvscan
No matching physical volumes found
2.2:VG卷組管理
2.2.1:vgcreate命令
vgcreate命令用於將一個或多個物理卷創建爲一個卷組
第一個命令參數用於設置新卷組的名稱。然後依次指定需要加入到該卷組的物理卷作爲參數
vgcreate命令基本格式
root@localhost ~]# vgcreate 卷組名稱 物理卷
例如
[root@localhost ~]# vgscan 123 /dev/sdb1 /dev/sdd1
Command does not accept argument: 123.
2.2.2:vgscan命令
vgscan命令用於掃描系統中已建立的LVM卷組及相關信息
例如
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group “123” using metadata type lvm2
2.2.3:vgdisplay命令
vgdisplay命令用於顯示系統中各卷組的詳細信息
需要指定卷組名稱作爲命令參數(未指定卷組名稱時將顯示所有卷組的信息)
命令格式同pvdisplay
例如
[root@localhost ~]# vgdisplay
— Volume group —
VG Name 123
System ID
2.2.4:vgremove命令
vgremove命令用於刪除指定的卷組,指定卷組名稱作爲參數即可
刪除時應確保該卷組中沒有正在使用的邏輯卷
例如
[root@localhost ~]# vgremove 123
Volume group “123” successfully removed
2.2.5:vgextend命令
vgextend命令用於擴展卷組的磁盤空間
當建立了新的物理卷,並需要將其添加到已有的卷組中時,就可以使用vgextend命令
vgextend命令第一個參數爲需要擴展容量的卷組名稱,其後爲需要添加到該卷組中的各物理卷
例如
[root@localhost ~]# vgextend 123 /dev/sdd1
Volume group “123” successfully extended
2.2.6:vgreduce命令
vgreduce命令:從卷組中刪除物理卷
vgreduce指令通過刪除LVM卷組中的物理捲來減少卷組容量。
刪除刪除卷組中丟失的物理卷,使卷組恢復正常狀態
vgreduce命令格式
vgreduce [選項] [參數]
例如
[root@localhost ~]# vgreduce 123 /dev/sdd1
Removed “/dev/sdd1” from volume group “123”
2.3:LV邏輯卷管理
2.3.1:lvcreate命令
lvcreate命令用於從指定的卷組中分割空間,以創建新的邏輯卷
需要指定邏輯卷大小,名稱和所在的卷組名稱作爲參數
邏輯卷創建好以後,可以通過“/dev/卷組名/邏輯卷名”形式的設備文件進行訪問(或/dev/mapper/卷組名-邏輯卷名)
lvcreate命令基本格式
lvcreate -L 容量大小 -n 邏輯卷名 卷組名
例如
[root@localhost ~]# lvcreate -L 10G -n 111 123
Logical volume “111” created.
[root@localhost ~]# ls /dev/123/111
/dev/123/111 //邏輯卷111的連接文件
2.3.2:lvscan命令
lvscan命令用於掃描系統中已建立的邏輯卷及相關信息
例如
[root@localhost ~]# lvscan
ACTIVE ‘/dev/123/111’ [10.00 GiB] inherit
2.3.3:lvdisplay命令
lvdisplay命令用於顯示邏輯卷的詳細信息
需要指定邏輯卷的設備文件作爲參數,也可以使用卷組名作爲參數(顯示該卷組中的所有邏輯卷信息)
不指定參數則顯示所有,同pvdisplay和vgdisplay
例如
[root@localhost ~]# lvdisplay
— Logical volume —
LV Path /dev/123/111
LV Name 111
2.3.4:lvextend命令
lvextend命令用於動態擴展邏輯卷的空間,當目前使用的邏輯卷空間不足時,可以從所在卷組中分割額外的空間進行擴展
需要指定增加的容量大小和邏輯卷文件位置
前提是該卷組中還有尚未分配的磁盤空間,否則需要先擴展卷組容量
掛載文件系統後擴容,需要執行以下命令才能被系統識別
xfs格式的擴容需要輸入這條命令
xfs_growfs /dev/卷組名/邏輯卷名
ext 4 格式的擴容需要輸入這條命令
resize2fs /dev/卷組名/邏輯卷名
xfs 只支持擴容,不支持減少
ext 4 的更新形式。可以reduce
lvextend命令基本格式
lvextend -L +大小 /dev/卷組名/邏輯卷名
例如
[root@localhost ~]# lvextend -L +10G /dev/123/111
Size of logical volume 123/111 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume 123/111 successfully resized.
2.3.5:lvremove命令
lvremove命令用於刪除指定的邏輯卷
直接使用邏輯卷的設備文件作爲參數即可
例如
[root@localhost ~]# lvremove /dev/123/111
Do you really want to remove active logical volume 123/111? [y/n]: y
Logical volume “111” successfully removed
Volume group “111” not found
Cannot process volume group 111
2.3.6:lvreduce命令
lvreduce命令用於減少LVM邏輯卷佔用的空間大小。
使用lvreduce命令收縮邏輯卷的空間大小有可能會刪除邏輯捲上已有的數據,所以在操作前必須進行確認。
例如
[root@localhost ~]# lvreduce -L -5G /dev/123/111
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce 123/111? [y/n]: y
Size of logical volume 123/111 changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560 extents).
Logical volume 123/111 successfully resized.
三:LVM應用步驟
xfs 只支持擴容,不支持減少
ext 4 的更新形式。可以reduce
3.1:命令實操的演示
VMware軟件中,在centos 7系統中添加兩塊磁盤,我們開始實操。
查看磁盤是否添加成功
[root@localhost ~]# fdisk -l
磁盤 /dev/sda:42.9 GB, 42949672960 字節,83886080 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x000c1f00
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
2.開始創建分區,同樣的方法創建/dev/sdc
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x50f1e234 創建新的 DOS 磁盤標籤。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):
將使用默認值 41943039
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 1
Hex 代碼(輸入 L 列出所有代碼):8e //分區ID改成8e,8e是lvm格式,我們保持前後格式相同
已將分區“Linux”的類型更改爲“Linux LVM”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
3.查看分區創建情況
[root@localhost ~]# fdisk -l
磁盤 /dev/sda:42.9 GB, 42949672960 字節,83886080 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x000c1f00
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 54527999 20971520 83 Linux
/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris
/dev/sda4 62916608 83886079 10484736 5 Extended
/dev/sda5 62918656 83886079 10483712 83 Linux
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x50f1e234
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6a90762a
設備 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
4.創建物理卷
[root@localhost ~]# pvcreate /dev/sd[b-c]1
Physical volume “/dev/sdb1” successfully created.
Physical volume “/dev/sdc1” successfully created.
[root@localhost ~]# pvscan ‘//查看物理卷’
PV /dev/sdc1 lvm2 [<20.00 GiB]
PV /dev/sdb1 lvm2 [<20.00 GiB]
Total: 2 [<40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<40.00 GiB]
5.創建卷組
[root@localhost ~]# vgcreate mail_stor /dev/sd[b-c]1
Volume group “mail_stor” successfully created
[root@localhost ~]# vgscan ‘//掃描卷組’
Reading volume groups from cache.
Found volume group “mail_stor” using metadata type lvm2
[root@localhost ~]# vgdisplay ‘//查看卷組詳細信息’
— Volume group —
VG Name mail_stor
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID iEKi0I-hg0i-it0a-cOwe-DfPj-FkXs-fnSP4N
6.創建邏輯卷
[root@localhost ~]# lvcreate -L 20G -n mbox mail_stor
Logical volume “mbox” created.
[root@localhost ~]# lvdisplay
— Logical volume —
LV Path /dev/mail_stor/mbox
LV Name mbox
VG Name mail_stor
LV UUID VXD0B0-wxqV-wXgk-b7N4-GEPE-c1au-u6nGBs
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-11-04 14:45:59 +0800
LV Status available
open 0
LV Size 20.00 GiB
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
7.格式化邏輯卷
[root@localhost 1]# mkfs.xfs /dev/mail_stor/mbox
meta-data=/dev/mail_stor/mbox isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
8.創建掛載點,設置自動掛載
[root@localhost 1]# mkdir mailbox
[root@localhost 1]# vim /etc/fstab
9.啓用掛載
[root@localhost 1]# mount -a
[root@localhost 1]# df -hT ‘//查看是否掛載成功’
10.給邏輯卷擴容10G
[root@localhost 1]# lvextend -L +10G /dev/mail_stor/mbox
Size of logical volume 1/11 changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).
Logical volume 1/11 successfully resized.
11.使用xfs_growfs命令使Linux系統重新識別文件系統大小
[root@localhost 1]# xfs_growfs /dev/mail_stor/mbox
四:磁盤配額
磁盤配額是計算機中指定磁盤的儲存限制,就是管理員可以爲用戶所能使用的磁盤空間進行配額限制,每一用戶只能使用最大配額範圍內的磁盤空間。
磁盤配額可以限制指定賬戶能夠使用的磁盤空間,這樣可以避免因某個用戶的過度使用磁盤空間造成其他用戶無法正常工作甚至影響系統運行。在服務器管理中此功能非常重要,但對單機用戶來說意義不大。
4.1:磁盤配額概述
4.1.1:實現磁盤限額的條件
需要Linux內核支持
安裝xfsprogs與quota軟件包
quota軟件包在7.0版本自動加入到xfsprogs,所以只需要安裝xfsprogs就可以。
4.1.2:Linux磁盤限額的特點
作用範圍:針對指定的文件系統(分區)
限制對象:用戶賬號,組賬號
限制類型:磁盤容量,文件數量
限制方法:軟限制,硬限制
軟限制:可以超出限制,但是有時限期,如時限7天,超出時間就將多餘的刪除
軟限制 小於等於 硬限制
4.1.3:磁盤配額步驟
臨時設置(大部分都是通過命令實現),永久設置(都是通過源碼文件中配置)
大部分命令設置都是臨時生效,重啓失效
配置文件是永久生效
編輯用戶和組賬號的配額設置:組的配額是固定的,
4.1.4:啓動磁盤配額支持
添加usrquota,grpquota掛載參數
臨時設置需要加上 -o 參數
4.2:磁盤配額管理
4.2.1:編輯用戶和組賬號的配額設置
使用xfs_quota命令編輯配額設置
基本格式
xfs_quota -x -c’limit -u bsoft =N bhard=N isoft=N ihard=N 用戶名’掛載點
常用選項
-u //user
-g //group
-x //專家模式
-c //命令(command)
限制字段
bsoft //容量軟限制
bhard //容量硬限制 (block 塊)
isoft //數量軟限制
ihard //數量硬限制 (inode 節點)
4.2.2:驗證磁盤配額功能
切換到設置配額的分區(掛載目錄)
創建指定數量的文件:使用touch命令,或cp命令
創建指定容量的文件:使用dd命令,或cp命令 (dd命令等同於複製,一般用於驗證)
4.2.3:查看配額使用情況
命令格式
xfs_quota -x -c 'report 選項’掛載點
report常用選項
-a //all 所有
-i //節點,數量
-b //block 塊,容量
-u //user
-g //group
查看所有用戶配額
[root@localhost ~]# xfs_quota -x -c ‘report -a’ /掛載點
1
2
查看用戶配額信息,看容量信息
[root@localhost ~]# xfs_quota -c ‘quota -uv 用戶名’ /掛載點
1
2
查看用戶配額信息,看節點信息
[root@localhost ~]# xfs_quota -c ‘quota -iuv 用戶名’ /掛載點
1
2
連續複製文件(/mail/demo01.txt是自己剛剛創建的文件),每次複製1M,連續複製N次
[root@localhost ~]# dd if=/dev/zero of=/mail/demo01.txt bs=1M count=80
1
3.3:磁盤配額命令實操
mount 查看掛載信息
rpm -q xfsprogs 查看xfsprogs是否安裝
五. 創建pv ,vg ,lv 並永久掛載實驗全過程
六.系統磁盤配額的設置 ,編輯用戶和組帳號的配額設置實驗全過程