理論+實操:LVM與磁盤配額

[TOC]

前言:

LVM是邏輯卷管理的簡稱,它是Linux環境下對磁盤分區管理的一種機制,實現文件系統跨越不同磁盤和分區,工作原理是將若干個磁盤分區連接成一個整塊卷組,在卷組上隨意創建邏輯卷組,最後在邏輯卷組上創建文件系統,管理員可以動態調整邏輯卷的大小,不會丟失現有的數據,通過創建LVM可以對磁盤進行動態管理。

一:LVM(邏輯卷)概述

1.1 Logical Volume Manager,邏輯卷管理

  • 動態調整磁盤容量,從而提高磁盤管理的靈活性

  • /boot(系統內核)分區用於存放引導文件,不能基於LVM創建

  • 圖形界面管理工具

    system-config-lvm(用的少)

邏輯卷管理是動態磁盤管理

邏輯卷有靈活性,可以自由擴容,相當於windows中的跨區卷

邏輯卷的缺點:不可靠,讀寫性能一般

1.2 LVM機制的基本概念

  • PV(物理卷)文件類型8e格式
  • VG(卷組)

  • LV(邏輯卷)

一個PE是4M,多個PE組成物理卷(PV);

多個物理卷(PV)組成卷組(VG);

對卷組(VG)進行劃分,就是建立邏輯分區(LV)
mark

二:LVM的管理命令

2.1 主要命令

功能 物理卷管理 卷組管理 邏輯卷管理
Scan 掃描設備 pvscan vgscan lvscan
Create 建立 pvcreate vgcreate lvcreate
Display 顯示詳細信息 pvdisplay vgdispaly lvdispaly
Remove 刪除 pvremove vgremove lvremove
Extend 擴展 ———— vgextend lvextend
Reduce 減少 ———— vgreduce lvreduce
pvcreate 設備名(磁盤) 【設備名2 ... ...】
vgcreate 卷組名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 邏輯卷名 卷組名
lvextend -l +大小 /dev/卷組名/邏輯卷名

t換格式,轉換成8e格式,就是物理卷格式

三:LVM應用實例

案例環境

公司準備在Internet中搭建郵件服務器(CentOS7.3系統平臺),面向全國各地的員工及部分VIP客戶提供電子郵箱空間

需求描述

由於用戶數量衆多,郵件存儲需要大量的空間,考慮到動態擴容的需要,計劃增加兩塊SCSI硬盤並構建LVM邏輯卷(掛載“mailbox”目錄下)專門用於存放郵件數據

mark

先加磁盤dev/sdb,dev/sdc
mark

重啓系統以識別新加的磁盤

[root@localhost ~]# init 6
[root@localhost dev]# ls    #重啓後查看/dev/,sdb和sdc已添加
agpgart          input               sda1      tty2   tty45  uhid
autofs           kmsg                sda2      tty20  tty46  uinput
block            log                 sdb       tty21  tty47  urandom
bsg              loop-control        sdc       tty22  tty48  usbmon0
btrfs-control    lp0                 sg0       tty23  tty49  usbmon1
bus              lp1                 sg1       tty24  tty5   usbmon2
cdrom            lp2                 sg2       tty25  tty50  vcs
centos           lp3                 sg3       tty26  tty51  vcs1
char             mapper              shm       tty27  tty52  vcs2
console          mcelog              snapshot  tty28  tty53  vcs3
core             mem                 snd       tty29  tty54  vcs4
cpu              mqueue              sr0       tty3   tty55  vcs5
cpu_dma_latency  net                 stderr    tty30  tty56  vcs6
crash            network_latency     stdin     tty31  tty57  vcsa
disk             network_throughput  stdout    tty32  tty58  vcsa1
dm-0             null                tty       tty33  tty59  vcsa2
dm-1             nvram               tty0      tty34  tty6   vcsa3
dm-2             oldmem              tty1      tty35  tty60  vcsa4
dri              port                tty10     tty36  tty61  vcsa5
fb0              ppp                 tty11     tty37  tty62  vcsa6
fd               ptmx                tty12     tty38  tty63  vfio
full             pts                 tty13     tty39  tty7   vga_arbiter
fuse             random              tty14     tty4   tty8   vhci
hidraw0          raw                 tty15     tty40  tty9   vhost-net
hpet             rfkill              tty16     tty41  ttyS0  vmci
hugepages        rtc                 tty17     tty42  ttyS1  vsock
hwrng            rtc0                tty18     tty43  ttyS2  zero
initctl          sda                 tty19     tty44  ttyS3

fdisk配置磁盤創建分區,用t 轉換格式成8e變成pv物理卷

[root@localhost dev]# fdisk /dev/sdb        #給/dev/sdb創建分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x76bc7491 創建新的 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 列出所有代碼):
Hex 代碼(輸入 L 列出所有代碼):8e      #LVM格式爲8e
已將分區“Linux”的類型更改爲“Linux LVM”

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

Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@localhost dev]# fdisk /dev/sdc    #給dev/sdc磁盤創建分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x3bdb9041 創建新的 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  #格式轉換爲LVM
已將分區“Linux”的類型更改爲“Linux LVM”

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

Calling ioctl() to re-read partition table.
正在同步磁盤。
命令(輸入 m 獲取幫助):p     #可以再fdisk /dev/sdc中去查看

磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x3bdb9041

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   8e  Linux LVM

兩塊磁盤分區完畢,接下來創建LVM邏輯卷

[root@localhost dev]# pvcreate /dev/sd[b-c]1    #把兩塊磁盤創建爲pv物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[root@localhost dev]# vgcreate mailbox /dev/sd[b-c]1    #創建名叫mailbox的vg卷組,目標pv物理卷是sdb1和sdc1
  Volume group "mailbox" successfully created
[root@localhost dev]# lvcreate -L 25G -n mailbox mailbox    #創建容量25G、名叫mailbox的lv邏輯卷,目標vg卷組是mailbox
  Logical volume "mailbox" created

可以用display去查看pv、vg、lv的詳細信息

[root@localhost dev]# mkdir /mailbox    #創建掛載點/mailbox

給邏輯卷格式化

[root@localhost dev]# mkfs.xfs /dev/mailbox/mailbox #將/dev下的mialbox卷組內的mailbox邏輯卷格式化
meta-data=/dev/mailbox/mailbox   isize=512    agcount=4, agsize=1638400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=6553600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

現在可以進行掛載

[root@localhost dev]# mount /dev/mailbox/mailbox /mailbox   #手動掛載
[root@localhost mailbox]# df -Th        #查看已掛載
文件系統                    類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root     xfs        20G  3.3G   17G   17% /
devtmpfs                    devtmpfs  977M     0  977M    0% /dev
tmpfs                       tmpfs     993M     0  993M    0% /dev/shm
tmpfs                       tmpfs     993M  9.1M  984M    1% /run
tmpfs                       tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                   xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home     xfs        10G   50M   10G    1% /home
tmpfs                       tmpfs     199M   12K  199M    1% /run/user/42
tmpfs                       tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/mailbox-mailbox xfs        25G   33M   25G    1% /mailbox

還可以使用修改配置文件/dev/fstab掛載

[root@localhost mailbox]# umount /mailbox   #先取消之前的手動掛載
[root@localhost mailbox]# vim /etc/fstab    #vim編輯/etc/fstab配置問價

#
# /etc/fstab
# Created by anaconda on Wed Oct 23 13:35:20 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=bef26af3-cd25-4754-bbc6-abd7fb09ef45 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mailbox/mailbox    /mailbox        xfs     defaults        0       0
:wq保存
[root@localhost mailbox]# mount -a  #重新掛載
[root@localhost mailbox]# df -Th    #查看掛載信息
文件系統                    類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root     xfs        20G  3.3G   17G   17% /
devtmpfs                    devtmpfs  977M     0  977M    0% /dev
tmpfs                       tmpfs     993M     0  993M    0% /dev/shm
tmpfs                       tmpfs     993M  9.1M  984M    1% /run
tmpfs                       tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                   xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home     xfs        10G   50M   10G    1% /home
tmpfs                       tmpfs     199M   12K  199M    1% /run/user/42
tmpfs                       tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/mailbox-mailbox xfs        25G   33M   25G    1% /mailbox   已自動掛載

進行擴容配置

[root@localhost mailbox]# lvextend -L +2G /dev/mailbox/mailbox  #給mailbox增加2G容量
  Size of logical volume mailbox/mailbox changed from 25.00 GiB (6400 extents) to 27.00 GiB (6912 extents).
  Logical volume mailbox/mailbox successfully resized.  #顯示成功
[root@localhost mailbox]# df -Th    #查看
文件系統                    類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root     xfs        20G  3.3G   17G   17% /
devtmpfs                    devtmpfs  977M     0  977M    0% /dev
tmpfs                       tmpfs     993M     0  993M    0% /dev/shm
tmpfs                       tmpfs     993M  9.1M  984M    1% /run
tmpfs                       tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                   xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home     xfs        10G   50M   10G    1% /home
tmpfs                       tmpfs     199M   12K  199M    1% /run/user/42
tmpfs                       tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/mailbox-mailbox xfs        25G   33M   25G    1% /mailbox   #發現沒有增加

需要用xfs_growfs 命令去更新配置

[root@localhost mailbox]# xfs_growfs /dev/mailbox/mailbox   #更新mailbox配置
meta-data=/dev/mapper/mailbox-mailbox isize=512    agcount=4, agsize=1638400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=6553600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=3200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 6553600 to 7077888
[root@localhost mailbox]# df -Th    #查看掛載
文件系統                    類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root     xfs        20G  3.3G   17G   17% /
devtmpfs                    devtmpfs  977M     0  977M    0% /dev
tmpfs                       tmpfs     993M     0  993M    0% /dev/shm
tmpfs                       tmpfs     993M  9.1M  984M    1% /run
tmpfs                       tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                   xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home     xfs        10G   50M   10G    1% /home
tmpfs                       tmpfs     199M   12K  199M    1% /run/user/42
tmpfs                       tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/mailbox-mailbox xfs        27G   33M   27G    1% /mailbox

xfs文件格式只能添加,不能減少

EXT4格式可以添加和減少 (使用 resize2fs 命令更新設備磁盤)

四:磁盤配額概述

4.1 實現磁盤限額的條件

  • 需要Linux內核支持

  • 安裝xfsprogs與quota軟件包 (CentOS 6.0需要額外安裝quota軟件包,CentOS 7.0中,quota包含在xfsprogs內,不需要額外安裝)

4.2 Linux磁盤限額的特點

  • 作用範圍:針對指定的文件系統(分區)

  • 限制對象:用戶賬號、組賬號
  • 限制類型:磁盤容量、文件數量 (兩者只要有一個觸發,就會被限制)

  • 限制方法:軟限制(有一個臨時的彈性空間,空間大小是硬限制減軟限制,這個臨時空間有一個時間限制,默認爲7天,超過七天就會把超出部分刪除)、硬限制(固定空間)

  • 限額目的:防止用戶惡意侵佔空間

軟限制的空間=<硬限制的空間

五:磁盤配額管理

5.1磁盤配額管理步驟

序號 步驟
1 以支持配額功能的方式掛載文件系統
2 編輯用戶和組賬號的配額設置
3 驗證磁盤配額功能
4 查看磁盤配額使用情況

配置配額功能掛載文件系統的時效有臨時生效和永久生效

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

備註:大部分的命令設置都是臨時生效,重啓失效;配置文件設置是永久生效,隨着開機自動啓動掛載

5.2啓用磁盤配額 (支持 quota命令)

1)啓用文件系統的配額支持 usrquota grpquota

  • 添加usrquota、grpquota掛載參數

2)命令實例: /etc/fstab配置文件

1572656423508

手動臨時啓用對掛載點的mount -o 用戶和組的配額權限

配置目錄權限 chmod 777 /mailbox/

配置文件/etc/fstab中添加相應屬性,後面會在實操中演示

5.3)編輯用戶和組賬號的配額設置 xfs_quota

在啓用磁盤配額管理的基礎上:

使用xfs_quota命令編輯配額設置

xfs_quota -x -c 'limit -u bsoft=N bhard=N isoft=N ihard=N 用戶名' 掛載點

常用選項

選項 解釋
-u 指定用戶
-g 指定組
-x 開啓專家模式
-c 指定 ‘命令’

限制字段

bsoft(容量軟限制) bhard(容量硬限制) isoft(數量,i類似ls中的文件節點) ihard(數量硬限制)

limit 代表上限

5.4)驗證磁盤配額功能

  • 切換到設置配額的分區(掛載目錄)下

  • 創建指定數量的文件:使用touch命令,或者cp命令

  • 創建指定容量的文件:使用dd命令,或者cp命令 (dd命令類似於複製,在實操中會有一個詳細介紹)

5.5)查看配額使用情況

1572657218125

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

report常用選項

選項 解釋
-a 查看該掛載點的所有配額使用情況
-i 查看該掛載點的文件數量的配額使用情況
-b 查看該掛載點的磁盤容量的配額使用情況
-u 查看該掛載點的用戶的配額使用情況
-g 查看該掛載點的組賬號的配額使用情況

dd命令等同於輔助,

六: 命令實操

添加三塊磁盤

理論+實操:LVM與磁盤配額

查看目前磁盤情況

[root@localhost ~]# fdisk -l        查看所有磁盤
磁盤 /dev/sda:42.9 GB, 42949672960 字節,83886080 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x000a55e9

   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    79710207    33562624   8e  Linux LVM

磁盤 /dev/mapper/centos-root:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

磁盤 /dev/mapper/centos-swap:2147 MB, 2147483648 字節,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

磁盤 /dev/mapper/centos-home:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

關機重啓去識別新增加的三塊硬盤

[root@localhost dev]# init 6    #重啓
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區    #這裏只展示新增磁盤sdb
Units = 扇區 of 1 * 512 = 512 bytes                           
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

磁盤 /dev/sdc:21.5 GB, 21474836480 字節,41943040 個扇區    #sdc
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

磁盤 /dev/sdd:21.5 GB, 21474836480 字節,41943040 個扇區    #sdd
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

還可以切換到/dev/下去查看磁盤,這裏就不演示了

[root@localhost dev]# fdisk sdb #給sdb磁盤創建分區
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x0edec45d 創建新的 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
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):  #回車視爲把全部容量都給一個分區
將使用默認值 41943039
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB

創建分區成功,這裏用LVM跨區捲去做,需要改一下格式

分區 1 已設置爲 Linux 類型,大小設爲 20 GiB

命令(輸入 m 獲取幫助):t #修改格式
已選擇分區 1     #選則分區
Hex 代碼(輸入 L 列出所有代碼):
Hex 代碼(輸入 L 列出所有代碼):8e  LVM的代碼是8e
已將分區“Linux”的類型更改爲“Linux LVM”

命令(輸入 m 獲取幫助):w     寫入磁盤保存
The partition table has been altered!

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

也可以在fdisk狀態中p查看磁盤配置情況

這裏再配置好sdc和sdd

[root@localhost dev]# fdisk sdc
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x3e687331 創建新的 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.
正在同步磁盤。
[root@localhost dev]# fdisk sdd
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0xd8be1cdf 創建新的 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 獲取幫助):w
The partition table has been altered!

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

配置完畢,然後把三塊磁盤配置成爲物理卷(pv)

[root@localhost dev]# pvcreate sd[b-d]1     #用中括號進行簡寫
  Physical volume "sdb1" successfully created.
  Physical volume "sdc1" successfully created.
  Physical volume "sdd1" successfully created.

把sd【b-d】1三塊磁盤組成卷組,卷組名爲ky02

[root@localhost dev]# vgcreate ky02 /dev/sd[b-d]1 
  Volume group "ky02" successfully created

每個分區20G,這個卷組ky02爲60G,從卷組中劃分-L 40G創建LVM邏輯卷,名字-n 爲ky02_gsy

[root@localhost dev]# lvcreate -L 40G -n ky02_gsy ky02
  Logical volume "ky02_gsy" created.

這時可以/dev/目錄中查看配置情況

[root@localhost ~]# cd /dev     #切換到/dev
[root@localhost dev]# ls        #查看
agpgart          hpet                ptmx      stderr  tty28  tty50    usbmon0
autofs           hugepages           pts       stdin   tty29  tty51    usbmon1
block            hwrng               random    stdout  tty3   tty52    usbmon2
bsg              initctl             raw       tty     tty30  tty53    vcs
btrfs-control    input               rfkill    tty0    tty31  tty54    vcs1
bus              kmsg                rtc       tty1    tty32  tty55    vcs2
cdrom            ky02                rtc0      tty10   tty33  tty56    vcs3
centos           log                 sda       tty11   tty34  tty57    vcs4
char             loop-control        sda1      tty12   tty35  tty58    vcs5
console          lp0                 sda2      tty13   tty36  tty59    vcs6
core             lp1                 sdb       tty14   tty37  tty6     vcsa
cpu              lp2                 sdb1      tty15   tty38  tty60    vcsa1
cpu_dma_latency  lp3                 sdc       tty16   tty39  tty61    vcsa2
crash            mapper              sdc1      tty17   tty4   tty62    vcsa3
disk             mcelog              sdd       tty18   tty40  tty63    vcsa4
dm-0             mem                 sdd1      tty19   tty41  tty7     vcsa5
dm-1             mqueue              sg0       tty2    tty42  tty8     vcsa6
dm-2             net                 sg1       tty20   tty43  tty9     vfio
dm-3             network_latency     sg2       tty21   tty44  ttyS0    vga_arbiter
dri              network_throughput  sg3       tty22   tty45  ttyS1    vhci
fb0              null                sg4       tty23   tty46  ttyS2    vhost-net
fd               nvram               shm       tty24   tty47  ttyS3    vmci
full             oldmem              snapshot  tty25   tty48  uhid     vsock
fuse             port                snd       tty26   tty49  uinput   zero
hidraw0          ppp                 sr0       tty27   tty5   urandom
[root@localhost dev]# ls ky02/  查看中間的ky02目錄
ky02_gsy        邏輯卷已被創建
[root@localhost dev]# lvdisplay ky02    #查看邏輯卷的詳細信息,後面加捲名只查看該卷,不加查看所有
  --- Logical volume ---
  LV Path                /dev/ky02/ky02_gsy
  LV Name                ky02_gsy
  VG Name                ky02
  LV UUID                HhEtsz-SUGG-2bFg-8Vl5-nYz2-2f6p-jU4Jnw
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-11-02 10:25:21 +0800
  LV Status              available
  # open                 0
  LV Size                40.00 GiB
  Current LE             10240
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

分區完畢,接下來格式化後掛載就可以正常使用

[root@localhost dev]# mkfs.xfs /dev/ky02/ky02_gsy
meta-data=/dev/ky02/ky02_gsy     isize=512    agcount=4, agsize=2621440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10485760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

這裏配置/etc/fstab配置文件去自動掛載,即vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Oct 23 13:35:20 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=bef26af3-cd25-4754-bbc6-abd7fb09ef45 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/ky02/ky02_gsy      /mnt    xfs     defaults        0       0
    設備地址            掛載點     文件類型    權限功能        不容災     第0個被加載

:wq保存退出

[root@localhost dev]# mount -a      #全部重新掛載
[root@localhost dev]# df -Th        #查看已掛載
文件系統                  類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   xfs        20G  3.3G   17G   17% /
devtmpfs                  devtmpfs  977M     0  977M    0% /dev
tmpfs                     tmpfs     993M     0  993M    0% /dev/shm
tmpfs                     tmpfs     993M  9.0M  984M    1% /run
tmpfs                     tmpfs     993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                 xfs       6.0G  161M  5.9G    3% /boot
/dev/mapper/centos-home   xfs        10G   50M   10G    1% /home
tmpfs                     tmpfs     199M   12K  199M    1% /run/user/42
tmpfs                     tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/ky02-ky02_gsy xfs        40G   33M   40G    1% /mnt #掛載成功

然後配置磁盤配額權限等相關管理,首先先查看

[root@localhost dev]# mount     #查看全部掛載,內容很多,這裏只看剛剛配置的邏輯卷,
/dev/mapper/ky02-ky02_gsy on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota) #noquota,代表沒有配置權限

配置磁盤配額權限需要先查看自己的系統裏面有沒有xfsprogs軟件,沒有的話需要安裝

[root@localhost dev]# rpm -q xfsprogs   查看已安裝軟件,帶軟件名定點查看
xfsprogs-4.5.0-12.el7.x86_64        顯示已安裝,版本號4.5.0

那麼就可以直接進行配置,這裏我選擇配置/etc/fstab文件中的信息(這裏需要注意,當前跨區卷已經被掛載,就算此時開啓磁盤配額管理權限,也得需要取消掛載umont /mnt之後再重新掛載mount -a纔可以觸發)

vim編輯,wq保存退出

#
# /etc/fstab
# Created by anaconda on Wed Oct 23 13:35:20 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=bef26af3-cd25-4754-bbc6-abd7fb09ef45 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/ky02/ky02_gsy      /mnt    xfs     defaults,usrquota,grpquota      0       0
~                                                                                       
[root@localhost dev]# umount /mnt   #取消掛載/mnt
[root@localhost dev]# mount -a      #重新掛載
[root@localhost dev]# mount     #查看掛載
/dev/mapper/ky02-ky02_gsy on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)   #顯示可以配置用戶組賬號的磁盤配額
[root@localhost dev]# xfs.quota -x -c 'limit -u ihard=6 isoft=5 bhard=100M bsoft=50M gsy' /mnt  #給gsy用戶的磁盤權限配額  
[root@localhost dev]# xfs_quota -c 'quota -uv gsy' /mnt #查看gsy用戶的容量配額
Disk quotas for User gsy (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                             0      51200     102400   00 [--------] /mnt
[root@localhost dev]# xfs_quota -c 'quota -iuv gsy' /mnt    #查看gsy用戶的數量配額
Disk quotas for User gsy (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                             0          5          6   00 [--------] /mnt
[root@localhost dev]# xfs_quota -c 'quota -biuv gsy' /mnt   #同時查看兩種配額
Disk quotas for User gsy (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time            Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                             0      51200     102400   00 [--------]           0          5          6   00 [--------] /mnt
[gsy@localhost mnt]$ xfs_quota -x -c 'report -a' /mnt   #用report去查看,查看的是所有用戶,包含用戶和組,查看內容是默認是容量
User quota on /mnt (/dev/mapper/ky02-ky02_gsy)
                               Blocks                     
User ID          Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
gsy                 0      51200     102400     00 [--------]
Group quota on /mnt (/dev/mapper/ky02-ky02_gsy)
                               Blocks                     
Group ID         Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
gsy                 0          0          0     00 [--------]

[root@localhost dev]# su - gsy  #切換gsy用戶
上一次登錄:三 10月 23 13:44:51 CST 2019:0 上
[gsy@localhost ~]$ cd /mnt  #切換到掛載點
[gsy@localhost mnt]$ ls     #查看,目錄內是空的
[gsy@localhost mnt]$ touch test{1..5}.text  #創建五個空文件
touch: 無法創建"test1.text": 權限不夠   #顯示權限不夠,但是5個是滿足磁盤權限配額
touch: 無法創建"test2.text": 權限不夠
touch: 無法創建"test3.text": 權限不夠
touch: 無法創建"test4.text": 權限不夠
touch: 無法創建"test5.text": 權限不夠
[gsy@localhost mnt]$ ls -al     #這裏查看目錄權限
總用量 0
drwxr-xr-x.  2 root root   6 11月  2 10:27 . #當前目錄權限,755,普通用戶gsy沒有寫入權限
dr-xr-xr-x. 17 root root 224 10月 23 13:41 ..
[gsy@localhost mnt]$ exit   #登出
登出
[root@localhost dev]# chmod 777 /mnt    #root配置掛載點目錄權限爲777
[root@localhost dev]# su - gsy      切換到gsy用戶
上一次登錄:六 11月  2 12:19:26 CST 2019pts/0 上 
[gsy@localhost mnt]$ touch test{1..7}.text  #創建7個空文件
touch: 無法創建"test7.text": 超出磁盤限額     顯示無法創建第七個文件
[gsy@localhost mnt]$ ls
test1.text  test2.text  test3.text  test4.text  test5.text  test6.text
[gsy@localhost mnt]$ xfs_quota -c 'quota -biuv gsy' /mnt    #查看gsy用戶在/mnt的磁盤配額情況
Disk quotas for User gsy (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time            Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                             0      51200     102400   00 [--------]           6          5          6   00  [6 days] /mnt      #已超過六個
[gsy@localhost mnt]$ rm -rf /mnt/*  #刪除/mnt/下的所有文件
[gsy@localhost mnt]$ ls
[gsy@localhost mnt]$ xfs_quota -c 'quota -iuv gsy' /mnt #查看gsy用戶的i磁盤配額情況
Disk quotas for User gsy (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                             0          5          6   00 [--------] /mnt

files變成了0,之前創建文件的時候是6

測試了文件數量的權限,接下來測試磁盤容量的權限

[gsy@localhost mnt]$ dd if=/dev/zero of=/mnt/demo01.txt bs=1M count=80  dd命令
記錄了80+0 的讀入         源路徑         目標路徑        一次讀寫的大小     循環次數
記錄了80+0 的寫出
83886080字節(84 MB)已複製,0.562914 秒,149 MB/秒
[gsy@localhost mnt]$ xfs_quota -c 'quota -uv gsy' /mnt
Disk quotas for User gsy (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                         81920      51200     102400   00  [6 days] /mnt
                         已用大小   軟限制  硬限制        超出軟限制的容量的失效時間
[gsy@localhost mnt]$ dd if=/dev/zero of=/mnt/demo02.txt bs=1M count=80  寫入第二個文件
dd: 寫入"/mnt/demo02.txt" 出錯: 超出磁盤限額  #出現錯誤
記錄了21+0 的讀入 在第101次是出現錯誤
記錄了20+0 的寫出
20971520字節(21 MB)已複製,0.140281 秒,149 MB/秒
[gsy@localhost mnt]$ xfs_quota -c 'quota -uv gsy' /mnt  #再次查看
Disk quotas for User gsy (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/ky02-ky02_gsy
                        102400      51200     102400   00  [6 days] /mnt
                        已被佔滿
[gsy@localhost mnt]$ ls -lh #查看目錄容量
總用量 100M    #用了100M
-rw-rw-r--. 1 gsy gsy 80M 11月  2 15:30 demo01.txt
-rw-rw-r--. 1 gsy gsy 20M 11月  2 15:30 demo02.txt

總結:

物理卷管理(pvscan、pvcreate、pvdisplay、pbremove)

卷組管理(vgscan、vgcreate、vgdisplay、vgremove、vgextend、vgreduce)

邏輯卷管理(lvscan、lvcreate、lvdisplay、lvremove、lvextend、lvreduce)

物理卷不能增加減少,沒有extend和reduce命令,除此之外,所有命令格式都是一致的,前面爲自己的縮寫

磁盤配額的作用範圍是磁盤,限制對象有用戶和組,限制類型有通過使用磁盤用量和創建文件數量去限制,限制方法主要是依靠軟限制和硬限制

磁盤配額管理可以幼稚用戶惡意侵佔空間,優化資源配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章