天天看點

Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

LVM介紹

文章目錄

      • LVM介紹
    • 一:lvm概述
      • 1.1:LVM的基本概念
    • 二:LVM管理指令
      • 2.1:pvscan指令
      • 2.2:pvcreate指令
      • 2.3:pvddisplay指令
    • 三:VG卷組挂管理
      • 3.1: vgscan指令
      • 3.2:vgcreate指令
      • 3.3:vgdisplay指令
      • 3.4:vgremove指令
      • 3.5: vgextend指令
    • 四:LV邏輯卷管理
      • 4.1: Lvscan指令
      • 4.2: Lvcreate指令
      • 4.3: Lvdispaly指令
      • 4.4: Lvremove指令
    • 五:LVM推薦步驟
      • 實驗:
      • 進行Lvm擴容
      • 磁盤配額
      • 實作磁盤限額的條件
      • 磁盤配額步驟
      • 啟用磁盤盤配額
      • 磁盤配額管理
        • 編輯使用者群組賬号的配額設定
        • 驗證磁盤配額功能
      • 檢視配額使用情況
      • 實驗:

許多Linux使用者安裝作業系統時都會遇到這樣的困境:如何精确評估和配置設定各個硬碟分區的容量,如果當初評估不準确,一旦系統分區不夠用時可能不得不備份、删除相關資料,甚至被迫重新規劃分區并重裝作業系統,以滿足應用系統的需要。

LVM是Linux環境中對磁盤分區進行管理的一種機制,是建立在硬碟和分區之上、檔案系統之下的一個邏輯層,可提高磁盤分區管理的靈活性。RHEL5預設安裝的分區格式就是LVM邏輯卷的格式,需要注意的是/boot分區不能基于LVM建立,必須獨立出來.

一:lvm概述

Logical Volume Manager,邏輯卷管理

動态調整磁盤容量,進而提高磁盤管理的靈活性

/boot分區用于存放引導檔案,不能基于LVM建立

圖形界面管理工具:system-config-lvm

1.1:LVM的基本概念

  • PV(實體卷)檔案類型8e格式
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

實體卷是LVM機制的基本儲存設備,通常對應為一個普通分區或整個硬碟。

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

實體卷一般直接使用裝置檔案名稱,如/dev/sdb1 , /dev/sdb1, /dev/sdd等

對于轉換成實體卷的普通分區,建議先使用fdisk工具将分區類型的ID标記号改為“8e”(8e表示LVM邏輯卷),若是整塊硬碟,可以将所有磁盤空間劃分為一個主分區後再做相對應調整

  • VG(卷組)
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

卷組:由一個或多個實體卷組成一個整體

在卷組中可以動态的添加或移除實體卷

許多個實體卷可以分别組成不同的卷組,卷組的名稱由使用者自定義

  • lv(邏輯卷)
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

邏輯卷建立在卷組之上,與實體卷沒有直接關系

對于邏輯卷來說,每一個卷組就是一個整體,從這個整體中“切出”一小塊空間,作為使用者建立檔案系統的基礎,這一小塊空間就稱為邏輯卷

使用mkfs等工具在邏輯卷上建立檔案系統以後,就可以挂載到Linux系統中的目錄下使用

二:LVM管理指令

主要指令

  • LVM管理指令主要包括三大類

​ PV實體卷管理

​ VG卷組管理

​ LV邏輯卷管理

  • 對應的指令程式檔案分别以“PV” “VG” “LV” 開頭
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

主要指令的格式

pvcreate 裝置名(磁盤) 【裝置名2 ... ...】
vgcreate 卷組名 實體卷名1 實體卷名2
lvcreate -L 容量大小 -n 邏輯卷名 卷組名
lvextend -l +大小 /dev/卷組名/邏輯卷名
           

pv實體卷管理

2.1:pvscan指令

pvscan指令 會掃描系統中連接配接的所有硬碟,列出找到的實體卷清單。使用pvscan指令的

-n

選項可以顯示硬碟中的不屬于任何卷組的實體卷,這些實體卷是未被使用的.

文法

pvscan(選項)
           

選項

-d:調試模式;
-e:僅顯示屬于輸出卷組的實體卷;
-n:僅顯示不屬于任何卷組的實體卷;
-s:短格式輸出;
-u:顯示UUID。
           

執行個體

使用pvscan指令掃描目前系統中所有硬碟的實體卷,在指令行中輸入下面的指令:

[[email protected] ~]# pvscan     #掃描所有硬碟上的實體卷
           

輸出資訊如下:

PV /dev/sdb1         lvm2 [101.94 MB]  
PV /dev/sdb2         lvm2 [101.98 MB]  
Total: 2 [203.92 MB] / in use: 0 [0   ] / in no VG: 2 [203.92  
MB]
           

2.2:pvcreate指令

将實體硬碟分區初始化為實體卷

補充說明

pvcreate指令 用于将實體硬碟分區初始化為實體卷,以便LVM使用。

文法

pvcreate(選項)(參數)
           

選項

-f:強制建立實體卷,不需要使用者确認;
-u:指定裝置的UUID;
-y:所有的問題都回答“yes”;
-Z:是否利用前4個扇區。
           

參數

實體卷:指定要建立的實體卷對應的裝置檔案名。

例如
[[email protected] ~]# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created.
           

2.3:pvddisplay指令

顯示實體卷的屬性

補充說明

pvdisplay指令 用于顯示實體卷的屬性。pvdisplay指令顯示的實體卷資訊包括:實體卷名稱、所屬的卷組、實體卷大小、PE大小、總PE數、可用PE數、已配置設定的PE數和UUID。

文法

pvdisplay(選項)(參數)
           

選項

-s:以短格式輸出;
-m:顯示PE到LE的映射。
           

參數

實體卷:要顯示的實體卷對應的裝置檔案名。

執行個體

使用pvdisplay指令顯示指定的實體卷的基本資訊。在指令行中輸入下面的指令:

[[email protected] ~]# pvdisplay /dev/sdb1    #顯示實體卷基本資訊
           

輸出資訊如下:

"/dev/sdb1" is a new physical volume of "101.94 MB"  
--- NEW Physical volume ---  
PV Name               /dev/sdb1  
....省略部分輸出内容......  
PV UUID         FOXiS2-Ghaj-Z0Mf- cdVZ-pfpk- dP9p-ifIZXN
           

三:VG卷組挂管理

3.1: vgscan指令

掃描并顯示系統中的卷組

補充說明

vgscan指令 查找系統中存在的LVM卷組,并顯示找到的卷組清單。vgscan指令僅顯示找到的卷組的名稱和LVM中繼資料類型,要得到卷組的詳細資訊需要使用vgdisplay指令。

文法

vgscan(選項)
           

選項

-d:調試模式;
--ignorerlockingfailure:忽略鎖定失敗的錯誤。
           

執行個體

使用vgscan指令掃描系統中所有的卷組。在指令行中輸入下面的指令:

[[email protected] ~]# vgscan     #掃描并顯示LVM卷組清單
           

輸出資訊如下:

Found volume group "vg2000" using metadata type lvm2  
Found volume group "vg1000" using metadata type lvm2
           

3.2:vgcreate指令

用于建立LVM卷組

補充說明

vgcreate指令 用于建立LVM卷組。卷組(Volume Group)将多個實體卷組織成一個整體,屏蔽了底層實體卷細節。在卷組上建立邏輯卷時不用考慮具體的實體卷資訊。

文法

vgcreate(選項)(參數)
           

選項

-l:卷組上允許建立的最大邏輯卷數;
-p:卷組中允許添加的最大實體卷數;
-s:卷組上的實體卷的PE大小。
           

參數

  • 卷組名:要建立的卷組名稱;
  • 實體卷清單:要加入到卷組中的實體卷清單。

執行個體

使用vgcreate指令建立卷組 “vg1000″,并且将實體卷

/dev/sdb1

/dev/sdb2

添加到卷組中。在指令行中輸入下面的指令:

[[email protected] ~]# vgcreate vg1000 /dev/sdb1 /dev/sdb2  #建立卷組"vg1000"
           

輸出資訊如下:

Volume group "vg1000" successfully created
           

3.3:vgdisplay指令

顯示LVM卷組的資訊

補充說明

vgdisplay指令 用于顯示LVM卷組的資訊。如果不指定”卷組”參數,則分别顯示所有卷組的屬性。

文法

vgdisplay(選項)(參數)
           

選項

-A:僅顯示活動卷組的屬性;
-s:使用短格式輸出的資訊。
           

參數

卷組:要顯示屬性的卷組名稱。

執行個體

使用vgdisplay指令顯示存在的卷組”vg1000″的屬性。在指令行中輸入下面的指令:

[[email protected] ~]# vgdisplay vg1000     #顯示卷組"vg1000"的屬性
           

輸出資訊如下:

--- Volume group ---  
  VG Name               vg1000  
......省略部分輸出内容......  
  free  PE / Size       50 / 200.00 MB  
  VG UUID  ICprwg-ZmhA-JKYF-WYuy-jNHa-AyCN-ZS5F7B
           

3.4:vgremove指令

用于使用者删除LVM卷組

補充說明

vgremove指令 用于使用者删除LVM卷組。當要删除的卷組上已經建立了邏輯卷時,vgremove指令需要進行确認删除,防止誤删除資料。

文法

vgremove(選項)(參數)
           

選項

-f:強制删除。
           

參數

卷組:指定要删除的卷組名稱。

執行個體

使用vgremove指令删除LVM卷組”vg1000″。在指令行中輸入下面的指令:

[[email protected] ~]# vgremove vg1000    #删除卷組"vg1000"
Volume group "vg1000" successfully removed
           

3.5: vgextend指令

向卷組中添加實體卷

vgextend指令 用于動态擴充LVM卷組,它通過向卷組中添加實體卷來增加卷組的容量。LVM卷組中的實體卷可以在使用vgcreate指令建立卷組時添加,也可以使用vgextend指令動态的添加。

文法

vgextend(選項)(參數)
           

選項

-d:調試模式;
-t:僅測試。
           

參數

  • 卷組:指定要操作的卷組名稱;
  • 實體卷清單:指定要添加到卷組中的實體卷清單。

執行個體

使用vgextend指令向卷組”vg2000″中添加實體卷。在指令行中輸入下面的指令:

[[email protected] ~]# vgextend vg2000 /dev/sdb2     #将實體卷"/dev/sdb2"加入卷組"vg2000"
           

輸出資訊如下:

Volume group "vg2000" successfully extended
           

四:LV邏輯卷管理

4.1: Lvscan指令

掃描邏輯卷

lvscan指令 用于掃描目前系統中存在的所有的LVM邏輯卷。使用lvscan指令可以發現系統中的所有邏輯卷,及其對應的裝置檔案。

文法

lvscan(選項)
           

選項

-b:顯示邏輯卷的主裝置和次裝置号。
           

執行個體

使用lvscan指令掃描系統中的所有邏輯卷。在指令行中輸入下面的指令:

[[email protected] ~]# lvscan     #掃描所有的邏輯卷
           

輸出資訊如下:

ACTIVE          '/dev/vg1000/lvol0' [200.00 MB] inherit
           

4.2: Lvcreate指令

用于建立LVM的邏輯卷

lvcreate指令 用于建立LVM的邏輯卷。邏輯卷是建立在卷組之上的。邏輯卷對應的裝置檔案儲存在卷組目錄下,例如:在卷組”vg1000″上建立一個邏輯卷”lvol0″,則此邏輯卷對應的裝置檔案為”/dev/vg1000/lvol0″。

文法

lvcreate(選項)(參數)
           

選項

-L:指定邏輯卷的大小,機關為“kKmMgGtT”位元組;
-l:指定邏輯卷的大小(LE數)。
           

參數

邏輯卷:指定要建立的邏輯卷名稱。

執行個體

使用lvcreate指令在卷組”vg1000″上建立一個200MB的邏輯卷。在指令行中輸入下面的指令:

[[email protected] ~]# lvcreate -L 200M vg1000    #建立大小為200M的邏輯卷
           

輸出資訊如下:

Logical volume "lvol0" created
           

4.3: Lvdispaly指令

擴充邏輯卷空間

lvextend指令 用于線上擴充邏輯卷的空間大小,而不中斷應用程式對邏輯卷的通路。使用lvextend指令動态線上擴充磁盤空間,整個空間擴充過程對于應用程式來說是完全透明的。

文法

lvextend(選項)(參數)
           

選項

-L:指定邏輯卷的大小,機關為“kKmMgGtT”位元組;
-l:指定邏輯卷的大小(LE數)。
           

參數

邏輯卷:指定要擴充空間的邏輯卷。

使用lvextend指令為邏輯卷

/dev/vg1000/lvol0

增加100M空間。在指令行中輸入下面的指令:

[[email protected] ~]# lvextend -L +100M /dev/vg1000/lvol0    #為了解決增加100M空間
           

輸出資訊如下:

Extending logical volume lvol0 to 300.00 MB  
Logical volume lvol0 successfully resized
           

4.4: Lvremove指令

删除指定LVM邏輯卷

補充說明

lvremove指令 用于删除指定LVM邏輯卷。如果邏輯卷已經使用mount指令加載,則不能使用lvremove指令删除。必須使用umount指令解除安裝後,邏輯卷方可被删除。

文法

lvremove(選項)(參數)
           

選項

-f:強制删除。
           

參數

邏輯卷:指定要删除的邏輯卷。

執行個體

使用lvremove指令删除指定的邏輯卷。在指令行中輸入下面的指令:

[[email protected] ~]# lvremove /dev/vg1000/lvol0    #删除邏輯卷"lvol0"
           

輸出資訊如下:

Do you really want to remove active logical 
volume "lvol0"? [y/n]: y    #确認删除
  Logical volume "lvol0" successfully removed
           

五:LVM推薦步驟

Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

實驗:

首先添加磁盤

Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)
[[email protected] ~]# fdisk /dev/sdb          ##給sdb磁盤建立分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0x61797857 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n                              #建立分區
Partition type:
   p   primary (0 primary, 0 extended, 4 free)     #p是主分區  e是邏輯分區
   e   extended  
Select (default p): 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,是LVM格式
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):p                           #列出磁盤的分區情況

磁盤 /dev/sdb:21.5 GB, 21474836480 位元組,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/實體):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁盤标簽類型:dos
磁盤辨別符:0x61797857

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   8e  Linux LVM

指令(輸入 m 擷取幫助):w                 ##儲存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。

[[email protected] ~]# fdisk /dev/sdc            ##給sdc進行磁盤分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0xb56c7977 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 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
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
           

下一步建立實體卷

[[email protected] ~]# pvcreate /dev/sd[b-c]1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[[email protected] ~]# pvscan           ##掃描實體卷
  PV /dev/sda2   VG centos          lvm2 [<299.00 GiB / 0    free]
  PV /dev/sdc1                      lvm2 [<20.00 GiB]
  PV /dev/sdb1                      lvm2 [<20.00 GiB]
  Total: 3 [338.99 GiB] / in use: 1 [<299.00 GiB] / in no VG: 2 [<40.00 GiB]

           

下一步進行建立卷組

[[email protected] ~]# vgcreate tom /dev/sd[b-c]1    ##建立tom卷組
  Volume group "tom" successfully created         
[[email protected] ~]# vgdisplay                     ##顯示卷組的詳細資訊
  --- Volume group ---
  VG Name               tom                     
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <299.00 GiB
  PE Size               4.00 MiB
  Total PE              76543
  Alloc PE / Size       76543 / <299.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               SyIZHz-XeVR-k9wm-9zPc-n1Ff-rZAs-bBvdHh
   
  --- Volume group ---
  VG Name               tom
  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               HOggVx-VR4K-bVMe-M9wA-H3Fq-ox7j-QnPLq2
           

下一步進行建立邏輯卷

[[email protected] ~]# lvcreate -L 20G -n tomshuai tom   
  Logical volume "tomshuai" created.
[[email protected] ~]# cd /dev/tom       ##進入tom目錄
[[email protected] tom]# ls              ##清單檢視
tomshuai

[[email protected] tom]# ll
總用量 0
lrwxrwxrwx. 1 root root 7 7月   1 00:02 tomshuai -> ../dm-2
[[email protected] tom]# mkfs.xfs /dev/tom/tomshuai 或者mkfs.xfs /dev/dm -2
meta-data=/dev/tom/tomshuai      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

[[email protected] tom]# mkdir /abc1    ##建立目錄abc1
[[email protected] tom]# mount /dev/tom/tomshuai /abc1      ##挂載到abc1
[[email protected] tom]# df -h                              ##檢視挂載
檔案系統                  容量  已用  可用 已用% 挂載點
/dev/mapper/centos-root    54G  4.2G   50G    8% /
devtmpfs                  1.9G     0  1.9G    0% /dev
tmpfs                     1.9G     0  1.9G    0% /dev/shm
tmpfs                     1.9G   13M  1.9G    1% /run
tmpfs                     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                1014M  179M  836M   18% /boot
/dev/mapper/centos-home   245G   33M  245G    1% /home
tmpfs                     378M  4.0K  378M    1% /run/user/42
tmpfs                     378M   24K  378M    1% /run/user/0
/dev/mapper/tom-tomshuai   20G   33M   20G    1% /abc1
           

進行Lvm擴容

[[email protected] ~]# fdisk /dev/sdb     ##進行sdb磁盤分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0x54ffa9e1 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n              ##建立分區
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 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         
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
[[email protected] ~]# fdisk /dev/sdc     ##進行sdc分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0xa8b34303 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 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
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
           
[[email protected] ~]# pvcreate /dev/sd[b-c]1     ##将分區轉換實體卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[[email protected] ~]# vgcreate shuai /dev/sd[b-c]1    ##将dev/sdb1 dev/sdc1建立名為shuai的卷組
  Volume group "shuai" successfully created
[[email protected] ~]# lvcreate -L 15G -n shuaige shuai  ##在shuai卷組建立一個新的邏輯卷 容量是15G 名稱為hsuaige
  Logical volume "shuaige" created.
[[email protected] ~]# lvdisplay   ##顯示邏輯卷資訊
  --- Logical volume ---
  LV Path                /dev/shuai/shuaige
  LV Name                shuaige
  VG Name                shuai
  LV UUID                CEyyqH-yJVy-ILVI-Ebf9-ff2P-289L-x0XdR2
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-07-01 14:57:34 +0800
  LV Status              available
  # open                 0
  LV Size                15.00 GiB
  Current LE             3840
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
           
進行格式化
[[email protected] ~]# mkfs.xfs /dev/shuai/shuaige
           
進行挂載
[[email protected] ~]# vim /etc/fstab

/dev/shuai/shuaige      /opt/shuai       xfs     defaults        0 0     
           
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)
[[email protected] ~]# mkdir /opt/shuai    ##建立挂載目錄
[[email protected] ~]# ls /opt
rh  shuai
[[email protected] ~]# mount -a    ##自動挂載
[[email protected] ~]# df -h     ##檢視挂載
檔案系統                   容量  已用  可用 已用% 挂載點
....省略
/dev/mapper/shuai-shuaige   15G   33M   15G    1% /opt/shuai1
           
進行擴容
[[email protected] ~]# lvextend -L +10G /dev/shuai/shuaige  為shuaige邏輯卷增加10G大小的磁盤的空間大小

[[email protected] ~]# df -h     ##檢視挂載
檔案系統                   容量  已用  可用 已用% 挂載點
...省略
/dev/mapper/shuai-shuaige   15G   33M   15G    1% /opt/shuai1
[[email protected] ~]# xfs_growfs /dev/shuai/shuaige

[[email protected] ~]# df -h
.......
/dev/mapper/shuai-shuaige   25G   33M   25G    1% /opt/shuai1
           

注意:在使用pvcreate, vgcreate

Ivextend等指令拓展分區的時候,發現出現了找不到邏輯塊的問題,最後問題是現在的檔案格式是xfs, resize2fs指令 是讀取不了

的,故而查找到了需要使用xfs_ growfs

磁盤配額

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

磁盤配額可以限制指定賬戶能夠使用的磁盤空間,這樣可以避免因某個使用者的過度使用磁盤空間造成其他使用者無法正常工作甚至影響系統運作。在伺服器管理中此功能非常重要,但對單機使用者來說意義不大。

實作磁盤限額的條件

  • 需要Linux核心支援
  • 安裝xfsprogs與quota軟體包 (CentOS 6.0需要額外安裝quota軟體包,CentOS 7.0中,quota包含在xfsprogs内,不需要額外安裝)

Linux磁盤限額的特點

  • 作用範圍:針對指定的檔案系統(分區)
  • 限制對象:使用者賬号,組賬号
  • 限制類型:磁盤容量,檔案數量
  • 限制方法:軟限制,硬限制
  • 軟限制:可以超出限制,但是有時限期,如時限7天,超出時間就将多餘的删除

    軟限制 小于等于 硬限制

    磁盤配額步驟

    序号 步驟
    1 以支援配額功能的方式挂載檔案系統
    2 編輯使用者群組賬号的配額設定
    3 驗證磁盤配額功能
    4 檢視磁盤配額使用情況

配置配額功能挂載檔案系統的時效有臨時生效和永久生效

臨時生效就是用mount -o 指令(臨時設定,關機後會失效),永久需要配置相關配置檔案(大部分)

備注:大部分的指令設定都是臨時生效,重新開機失效;配置檔案設定是永久生效,随着開機自動啟動挂載

啟用磁盤盤配額

  • 添加usrquota,grpquota挂載參數
  • 臨時設定需要加上 -o 參數

磁盤配額管理

編輯使用者群組賬号的配額設定

  • 使用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 節點)
           

驗證磁盤配額功能

使用受配額限制的使用者賬号登入 Linux 作業系統,并切換到應用了配額的檔案系統中, 進行複制檔案等寫入操作,測試所設定的磁盤配額項是否有效。

在測試過程中,為了快速看到效果,可以使用 dd 轉換工具。dd 指令是一個裝置轉換和複制指令,分别使用“if=”選項指定輸入裝置(或檔案)、“of=”選項指定輸出裝置(或檔案)、“bs=”選項指定讀取資料塊的大小、“count=”指定讀取資料塊的數量

檢視配額使用情況

xfs_quota -x -c ‘report 選項 ’ 挂載點

report常用選項

選項	解釋
-a	檢視該挂載點的所有配額使用情況
-i	檢視該挂載點的檔案數量的配額使用情況
-b	檢視該挂載點的磁盤容量的配額使用情況
-u	檢視該挂載點的使用者的配額使用情況
-g	檢視該挂載點的組賬号的配額使用情況
           

實驗:

添加3塊磁盤

Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

重新開機檢視磁盤情況

建立分區

[[email protected] ~]# fdisk /dev/sdb              ##給sdb進行分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0x77319150 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n                       ##建立分區
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p                      ##p主分區
分區号 (1-4,預設 1):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              ##改為8e
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w                      ##儲存
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。


[[email protected] ~]# fdisk /dev/sdc
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0x9c111a03 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分區号 (1-4,預設 1):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
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
[[email protected] ~]# fdisk /dev/sdd
歡迎使用 fdisk (util-linux 2.23.2)。

更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。

Device does not contain a recognized partition table
使用磁盤辨別符 0x04bccce5 建立新的 DOS 磁盤标簽。

指令(輸入 m 擷取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分區号 (1-4,預設 1):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
已将分區“Linux”的類型更改為“Linux LVM”

指令(輸入 m 擷取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。
           

下一步進行建立實體卷

[[email protected] ~]# pvcreate /dev/sd[b-d]1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.
           

建立卷組,卷組名為tom

[[email protected] ~]# vgcreate tom /dev/sd[b-d]1
  Volume group "tom" successfully created
           

從卷組中分-L 40G 建立LVM邏輯卷 名字-n 為tom2

[[email protected] ~]# lvcreate -L 40G -n tom2 tom
  Logical volume "tom2" created.
           
[[email protected] ~]# cd /dev/tom
[[email protected] tom]# ll
總用量 0
lrwxrwxrwx. 1 root root 7 7月   5 23:03 tom2 -> ../dm-2
[[email protected] tom]# mkfs.xfs /dev/tom/tom2              ##進行格式化
           

建立挂載點,設定自動挂載

[[email protected] mnt]# mkdir shuai
[[email protected] mnt]# vim /etc/fstab
           
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

:wq儲存退出

[[email protected] mnt]# mount -a              ##啟動挂載
[[email protected] mnt]# df -Th                ##檢視已挂載
.....
/dev/mapper/tom-tom2    xfs        40G   33M   40G    1% /mnt/shuai   ##挂載成功
           

磁盤配額權限需要先檢視自己的系統有沒有xfsprogs軟體,沒有的需要安裝

[[email protected] dev]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
           
[[email protected] dev]# rpm -ql xfsprogs | grep quota     ##檢視是否開啟quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz
           
将剛剛挂載的解除,我們開始啟動磁盤配額支援
[[email protected] dev]# umount /mnt/shuai 
[[email protected] dev]# vim /etc/fstab
           
Linux--管理LVM的邏輯卷--原理+指令實操(LVM擴容+磁盤配額)

:wq儲存退出

[[email protected] ~]# umount /mnt/shuai      ##取消挂載
[[email protected] ~]# mount -a               ##重新挂載
[[email protected] ~]# mount
/dev/mapper/tom-tom2 on /mnt/shuai type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
##顯示可以配置組賬号的磁盤配額
           
編輯合檢視使用者群組的配額設定
列如:設定tom使用者 軟容量為50M 硬容量為100M 軟數量4 硬數量6
[[email protected] ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=80M isoft=4 ihard=6 tom' /mnt/shuai
[[email protected] ~]# xfs_quota -c 'quota -uv tom' /mnt/shuai     ##檢視使用者tom限制容量
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0      51200      81920   00 [--------] /mnt/shuai
檢視tom使用者使用者數量限制資訊
[[email protected] ~]# xfs_quota -c 'quota -iuv tom' /mnt/shuai
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0          4          6   00 [--------] /mnt/shuai
檢視tom使用者容量和數量一起檢視
[[email protected] ~]# xfs_quota -c 'quota -biuv tom' /mnt/shuai
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time            Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          0      51200      81920   00 [--------]           0          4          6   00 [--------] /mnt/shuai
檢視所有使用者配額
[[email protected] ~]# xfs_quota -x -c 'report -a' /mnt/shuai
User quota on /mnt/shuai (/dev/mapper/tom-tom2)
                               Blocks                     
User ID          Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]
tom                 0      51200      81920     00 [--------]

Group quota on /mnt/shuai (/dev/mapper/tom-tom2)
                               Blocks                     
Group ID         Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]
           
驗證磁盤配額功能 
[[email protected] ~]# su - tom                            ##切換到tom使用者
上一次登入:一 7月  6 08:52:06 CST 2020pts/0 上
[[email protected] ~]$ df -Th                               ##檢視挂載
檔案系統                類型      容量  已用  可用 已用% 挂載點
/dev/mapper/centos-root xfs        54G  4.1G   50G    8% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       245G   33M  245G    1% /home
tmpfs                   tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M   32K  378M    1% /run/user/0
/dev/mapper/tom-tom2    xfs        40G   33M   40G    1% /mnt/shuai
[[email protected] ~]$ cd /mnt/shuai                       ##切換到挂載目錄
[[email protected] shuai]$ touch hua{1..3}.txt
touch: 無法建立"hua1.txt": 權限不夠
touch: 無法建立"hua2.txt": 權限不夠
touch: 無法建立"hua3.txt": 權限不夠
[[email protected] shuai]$ cd ~
[[email protected] ~]$ ll
總用量 0
[[email protected] ~]# chmod 777 /mnt/shuai         ##給挂載點設定最高權限
[[email protected] /]# cd /mnt
[[email protected] mnt]# ll
總用量 0
drwxrwxrwx. 2 root root 6 7月   5 23:06 shuai
[[email protected] mnt]# su - tom                  ##切換到tom使用者
上一次登入:一 7月  6 08:52:36 CST 2020pts/0 上
[[email protected] ~]$ cd /mnt/shuai                ##進入挂載目錄
[[email protected] shuai]$ touch hua{1..6}.txt      ##再次建立檔案
[[email protected] shuai]$ ls                       ##檢視清單  可以看出建立成功
hua1.txt  hua2.txt  hua3.txt  hua4.txt hua5.txt  hua6.txt
[[email protected] shuai]$ touch hua7.txt          ##可以看出已經超過設定的
touch: 無法建立"hua7.txt": 超出磁盤限額
[[email protected] shuai]$ xfs_quota -c 'quota -iuv tom' /mnt/shuai   ##檢視限制資訊
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          6          4          6   00  [6 days] /mnt/shuai     ##發現檔案數量已達到硬限制
           

測試了檔案數量的權限,接下來測試磁盤容量的權限

[[email protected] shuai]$ dd if=/dev/zero of=/mnt/shuai/hua1.txt bs=1M count=80
記錄了80+0 的讀入         源路徑     目标路徑                 一次性讀寫的大小    循環次數
記錄了80+0 的寫出
83886080位元組(84 MB)已複制,0.055757 秒,1.5 GB/秒
[[email protected] shuai]$ dd if=/dev/zero of=/mnt/shuai/hua2.txt bs=1M count=80
dd: 打開"/mnt/shuai/hua2.txt" 失敗: 超出磁盤限額
[[email protected] shuai]$ xfs_quota -c 'quota -uv tom' /mnt/shuai      ##再次檢視
Disk quotas for User tom (1001)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2      81920      51200      81920   00  [6 days] /mnt/shuai
[[email protected] shuai]$ ll               ##已占滿
總用量 81920
-rw-rw-r--. 1 tom tom 83886080 7月   6 09:21 hua1.txt

上一次登入:一 7月  6 08:52:36 CST 2020pts/0 上
[[email protected] ~]$ cd /mnt/shuai                ##進入挂載目錄
[[email protected] shuai]$ touch hua{1..6}.txt      ##再次建立檔案
[[email protected] shuai]$ ls                       ##檢視清單  可以看出建立成功
hua1.txt  hua2.txt  hua3.txt  hua4.txt hua5.txt  hua6.txt
[[email protected] shuai]$ touch hua7.txt          ##可以看出已經超過設定的
touch: 無法建立"hua7.txt": 超出磁盤限額
[[email protected] shuai]$ xfs_quota -c 'quota -iuv tom' /mnt/shuai   ##檢視限制資訊
Disk quotas for User tom (1001)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/tom-tom2          6          4          6   00  [6 days] /mnt/shuai     ##發現檔案數量已達到硬限制
           

繼續閱讀