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

[TOC]node

前言:

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

一:LVM(邏輯卷)概述

1.1 Logical Volume Manager,邏輯卷管理

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

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

  • 圖形界面管理工具windows

    system-config-lvm(用的少)centos

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

邏輯卷有靈活性,能夠自由擴容,至關於windows中的跨區卷服務器

邏輯卷的缺點:不可靠,讀寫性能通常app

1.2 LVM機制的基本概念

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

  • 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命令,除此以外,全部命令格式都是一致的,前面爲本身的縮寫

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

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

相關文章
相關標籤/搜索