天天看點

LVM邏輯卷管理與磁盤配額1.前言2.LVM管理3.磁盤配額4.總結

文章目錄

  • 1.前言
  • 2.LVM管理
    • 2.1LVM概述
      • (1)LVM基本原理
      • (2)LVM實作過程
      • (3)LVM基本術語
    • 2.2LVM指令管理
      • (1)PV管理工具
      • (2)VG管理工具
      • (3)LV管理工具
  • 3.磁盤配額
    • 3.1磁盤配額概述
      • (1)為什麼要做磁盤配額
      • (2)實作磁盤配額的條件
      • (3)磁盤配額的特點
      • (4)磁盤配額實作流程
    • 3.2磁盤配額指令管理
  • 4.總結

1.前言

LVM:(Logical Volume Manager)能夠在保持現有資料不變的情況下動态調整磁盤容量,進而提高磁盤管理的靈活性。

磁盤配額:磁盤配額是計算機中指定磁盤的儲存限制,就是管理者可以為使用者所能使用的磁盤空間進行配額限制,每一位使用者隻能使用最大配額範圍内的磁盤空間。

2.LVM管理

2.1LVM概述

(1)LVM基本原理

  LVM(Logical Volume Manager)邏輯卷管理,是在硬碟分區和檔案系統之間添加的一個邏輯層,為檔案系統屏蔽下層硬碟分區布局,并提供一個抽象的盤卷,在盤卷上建立檔案系統。管理者利用LVM可以在硬碟不用重新分區的情況下動态調整檔案系統的大小,并且利用LVM管理的檔案系統可以跨越實體硬碟。當伺服器添加了新的硬碟後,管理者不必将原有的檔案移動到新的硬碟上,而是通過LVM直接擴充檔案系統來跨越實體硬碟。

  LVM就是通過将底層的實體硬碟封裝,然後以邏輯卷的方式呈現給上層應用。當我們對底層的實體硬碟進行操作時,不再是針對分區進行操作,而是通過邏輯卷對底層硬碟進行管理操作。

(2)LVM實作過程

  • 将裝置指定為實體卷
  • 用一個或者多個實體卷來建立一個卷組,實體卷是用固定大小的實體區域(Physical Extent, PE)來定義的
  • 在實體卷上建立的邏輯卷, 是由實體區域(PE)組成
    LVM邏輯卷管理與磁盤配額1.前言2.LVM管理3.磁盤配額4.總結

(3)LVM基本術語

PV(Physical Volume,實體卷)

實體卷是LVM機制的基本儲存設備,通常對應為一個普通分區或整個硬碟。建立實體卷時,會在分區或硬碟的頭部建立一個保留區塊,用于記錄LVM的屬性,并把存儲空間分割成預設大小為4MB的基本單元(Physical Extent,PE),進而構成實體卷
           

VG(Volume Group,卷組)

由一個或多個實體卷組成一個整體,即稱為卷組,在卷組中可以動态地添加或移除實體卷
           

LV(Logical Volume,邏輯卷)

邏輯卷建立在卷組之上,與實體卷沒有直接關系。對于邏輯卷來說,每一個卷組就是一個整體,從這個整體中“切出”一小塊空間,作為使用者建立檔案系統的基礎,這一小塊空間就稱為邏輯卷。使用mkfs等工具在邏輯卷上建立檔案系統
           

PE(Physical Extent,實體塊)

實體卷PV中可以配置設定的最小存儲單元,PE的大小可以指定,預設為4MB
           

LE(Logical Extent,邏輯塊)

邏輯卷LV中可以配置設定的最小存儲單元,在同一卷組VG中LE的大小和PE是相同的,并且一一相對
           

實體存儲媒體(The physical media)

LVM存儲媒體,可以是硬碟分區、整個硬碟、raid陣列或SAN硬碟。裝置必須初始化為LVM實體卷,才能與LVM結合使用
           

2.2LVM指令管理

功能 實體卷管理 卷組管理 邏輯卷管理
Scan掃描 pvscan vgscan lvscan
Create建立 pvcreate vgcreate lvcreate
Display顯示 pvdisplay vgdisplay lvdisplay
Remove删除 pvremove vgremove lvremove
Extend擴充 vgextend lvextend
Reduce減少 vgreduce lvreduce

注:最小化安裝的虛拟機可能沒有LVM功能,執行 yum -y install lvm2

(1)PV管理工具

顯示PV資訊

pvs
pvscan
pvdisplay	#詳細資訊顯示
           

建立pv

pvcreate /dev/DEVICE
           

删除pv

pvremove /dev/DEVICE
           

示例:

[[email protected] ~]#pvcreate /dev/sdb1 /dev/sdc1		#建立PV的前提是分區存在
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[[email protected] ~]#pvscan
  PV /dev/sdb1                      lvm2 [20.00 GiB]
  PV /dev/sdc1                      lvm2 [20.00 GiB]
  Total: 2 [40.00 GiB] / in use: 0 [0   ] / in no VG: 2 [40.00 GiB]
[[email protected] ~]#pvremove /dev/sdb1 /dev/sdc1
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
[[email protected] ~]#pvscan
  No matching physical volumes found
           

(2)VG管理工具

顯示卷組

vgs
vgscan
vgdisplay
           

建立卷組

管理卷組

vgextend [卷組名] [實體卷1] [實體卷2]		#使用實體卷擴充卷組
vgreduce [卷組名] [實體卷1] [實體卷2]		#從卷組中移除實體卷
           

删除卷組

示例:

[[email protected] ~]#pvcreate /dev/sdb1 /dev/sdc1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[[email protected] ~]#vgcreate test /dev/sdb1 /dev/sdc1
  Volume group "test" successfully created
[[email protected] ~]#pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created.
[[email protected] ~]#vgextend test /dev/sdc2
  Volume group "test" successfully extended
[[email protected] ~]#vgreduce test /dev/sdc2
  Removed "/dev/sdc2" from volume group "test"
[[email protected] ~]#vgremove test 
  Volume group "test" successfully removed
[[email protected] ~]#vgs
[[email protected] ~]#pvremove /dev/sdb1 /dev/sdc1
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
           

(3)LV管理工具

顯示邏輯卷

lvs
lvscan
lvdisplay
           

建立邏輯卷

删除邏輯卷

lvremove /dev/VG_NAME/LV_NAME
           

重新整理檔案系統大小

fsadm [options] resize device [new_size[BKMGTEP]]
xfs_growfs  /dev/vgname1/lvname1         #重新整理xfs檔案系統容量
resize2fs   /dev/vgname1/lvname1         #重新整理ext4類型檔案系統容量
           

建立 LVM 流程

pvcreate 建立 pv -> vgcreate 建立卷組 -> lvcreate 建立邏輯卷 -> mkfs.xfs lv 格式化-> mount 挂載
           

删除 LVM 流程

示例:

#掃描主機,識别新添加的硬碟,這樣不需要重新開機主機
echo "- - -" > /sys/class/scsi_host/host0/scan

#分區 sdb,sdc,分别創三個區并設定格式為LVM,代号8e
echo -e "n\np\n1\n\n+20G\nn\np\n2\n\n+20G\nn\np\n3\n\n\nt\n1\n8e\nt\n2\n8e\nt\n3\n8e\nw\n" |fdisk /dev/sdb
echo -e "n\np\n1\n\n+20G\nn\np\n2\n\n+20G\nn\np\n3\n\n\nt\n1\n8e\nt\n2\n8e\nt\n3\n8e\nw\n" |fdisk /dev/sdc
partprobe /dev/sdb  #重載分區表
partprobe /dev/sdc

#建立 PV(實體卷),這裡隻用兩個分區做實驗
pvcreate /dev/sdb1 /dev/sdc1

#建立 VG(卷組),web_kgc 為自己指定的卷組名稱
vgcreate web_kgc /dev/sdb1 /dev/sdc1

#建立 lv(邏輯卷),-L指定大小,-n指定邏輯卷名稱,在卷組 web_kgc 的基礎上建立
lvcreate -L 30G -n njzb web_kgc

#格式化邏輯卷
mkfs.xfs /dev/mapper/web_kgc-njzb

#挂載
mkdir /kgc_class
echo "/dev/mapper/web_kgc-njzb /kgc_class xfs defaults 0 0" >> /etc/fstab
mount -a

#對建立的邏輯卷擴容20G,使用哪些分區進行擴容自行定奪,不需要和我一樣
pvcreate /dev/sdc2
vgextend web_kgc /dev/sdc2
lvextend -L +20G /dev/web_kgc/njzb    #這裡擴容使用 +20G,"+"别漏了
xfs_growfs /dev/mapper/web_kgc-njzb    #重新整理 xfs 檔案系統容量 
           

3.磁盤配額

3.1磁盤配額概述

(1)為什麼要做磁盤配額

  在 Linux 根分區的磁盤空間或 inode 号耗盡時,Linux 将無法再建立新的檔案(包括程式運作的臨時檔案),進而導緻服務程式崩潰,系統無法啟動等故障現象。為了避免出現類似問題,可以設定啟用磁盤配額功能,對使用者在指定檔案系統(分區)中使用磁盤空間、檔案數量進行限制,以防止個别使用者惡意或無意間占用大量磁盤空間,進而保證系統存儲空間的穩定性和持續可用性。

  在 Centos 系統中,不同的檔案系統使用不同的磁盤配額配置管理工具。例如,xfs 檔案系統通過 xfs_quota 工具進行管理;EXT3/4 檔案系統通過 quota 工具進行管理。

(2)實作磁盤配額的條件

  • 需要Linux核心支援
  • 安裝 xfsprogs 與 quota 軟體包

(3)磁盤配額的特點

  • 作用範圍:針對指定的檔案系統(分區)
  • 限制對象:使用者帳号、組帳号
  • 限制類型:磁盤容量、檔案數量
  • 限制方法:軟限制、硬限制

(4)磁盤配額實作流程

LVM邏輯卷管理與磁盤配額1.前言2.LVM管理3.磁盤配額4.總結

3.2磁盤配額指令管理

quota 指令用于顯示磁盤已使用的空間與限制
-g 列出群組的磁盤空間限制
-q 簡明清單,隻列出超過限制的部分
-u 列出使用者的磁盤空間限制
-v 顯示該使用者或群組,在所有挂入系統的儲存設備的空間限制
-i 不查詢 autofs 挂載點
-V 顯示版本資訊

#xfs 檔案系統通過 xfs_quota 工具進行管理
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 wangwu' /kgc_class/
-x: 表示啟動專家模式,在目前模式下允許對配額系統進行修改的所有管理指令可用
-c: 表示直接調用管理指令
-u: 指定使用者賬号對象
-g: 指定組賬号對象
bsoft: 設定磁盤容量的軟限制數值(預設機關為KB)
bhard: 設定磁盤容量的硬限制數值(預設機關為KB)
isoft: 設定磁盤檔案數的軟限制數值
ihard: 設定磁盤檔案數的硬限制數值

#僅限制 lisi 使用者的磁盤容量
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M lisi' /opt/
#僅限制檔案數
xfs_quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/
#檢視磁盤容量限制
xfs_quota -c 'quota -uv lisi' /opt/
#檢視檔案數限制
xfs_quota -c 'quota -i -uv lisi' /opt/

#檢視所有可用分區的磁盤容量配額使用情況
xfs_quota -x -c 'report -aibh'

report常用選項:
-u:對使用者檢視
-g:對組檢視
-a:檢視所有可用分區的配額使用報告
-b:檢視磁盤容量
-i:檢視檔案數
-h:機關以KB,MB等形式友好顯示
           

示例:

#下面将用一個詳細示例示範磁盤配額的配置方法
yum -y install xfsprogs quota
echo "- - -" > /sys/class/scsi_host/host0/scan
echo -e "n\np\n1\n\n\nt\n1\n8e\nw\n" |fdisk /dev/sdb
echo -e "n\np\n1\n\n\nt\n1\n8e\nw\n" |fdisk /dev/sdc
partprobe /dev/sdb && partprobe /dev/sdc
pvcreate /dev/sdb1 /dev/sdc1
vgcreate abc /dev/sdb1 /dev/sdc1
lvcreate -L 20G -n kgc abc
mkfs.xfs /dev/mapper/abc-kgc
mkdir /kgc_class
mount /dev/mapper/abc-kgc /kgc_class/
umount /kgc_class/
echo "/dev/mapper/abc-kgc /kgc_class xfs defaults,usrquota,grpquota 0 0" >> /etc/fstab
mount -a
useradd wangwu
echo "123456" |passwd --stdin wangwu
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 wangwu' /kgc_class/
xfs_quota -x -c 'report -aibh'

#驗證
chmod 777 /kgc_class
su - wangwu
cd /kgc_class
dd if=/dev/zero of=/kgc_class/test.txt bs=10M count=12      #超出磁盤配額,隻複制了100M
touch {1..6}.txt        #不能建立,超出磁盤限額
           

4.總結

  作為一名運維工程師,日常工作中肯定少不了與磁盤打交道,邏輯卷管理和磁盤配額是非常實用的技術,學會靈活管理磁盤分區,遇到問題及時解決,事後複盤,對于個人運維能力的提升也大有裨益。

繼續閱讀