LVM磁盤管理、限制用戶磁盤配額

管理LVM邏輯卷

一、LVM(Logical Volume Manager)概述

1、背景

隨着時間增長,分區容量不夠,爲解決後期容量不夠,我們使用LVM(邏輯卷管理)

2、理解

虛擬的通過lvm軟件模擬出來的硬盤分出來的分區(卷)叫邏輯卷。

3、作用

動態(在線)調整磁盤容量,從而提高磁盤管理的靈活性。

4、注意

/boot分區用於存放引導文件,不能基於LVM創建,只能基於物理分區。

5、應用

比如有一個網站,規劃有500G時就可以不停服務通過LVM把容量加給網站數據的目錄,前提是這目錄要單獨放在一個LVM分區上。

二、相關概念

1、PV(Physical Volume)物理卷

建立位置:整個硬盤,或使用fdisk等建立起來的普通分區
基本單位:包括許多默認4M大小的PE(Physical Extent,基本單元)

2、VG(Volume Group)卷組

一個或多個物理卷組合而成的整體,一個卷組相當於一個硬盤

3、LV(Logical Volume)邏輯卷

從卷組中分割出的一塊空間,相當於卷組分區,格式化(mkfs)使用,用於建立文件系統
在這裏插入圖片描述
圖解:有一個物理硬盤先轉化成一個個的物理卷,把所有的物理卷粘合成一個大大的邏輯硬盤(卷組),再從對這個卷組分成幾個區(邏輯卷),再對這些邏輯卷格式化使用。

三、常見的LVM管理的命令

在這裏插入圖片描述

1、使用步驟
(加硬盤、改類型、創三卷、格式化、配磁額、求掛載、建用戶、限額度)

(1)物理分區並改8e的類型,使用partx -a /dev/sdb
(2)Pvcreate:設備名1 設備名2 …
(3)Vgcreate:卷組名 物理卷名1 物理卷2
(4)Lvcreate:-L 容量大小 -n 邏輯卷名 卷組名
(5)格式化mkfs /dev/vgsdd1/lvsdd1。如果邏輯卷不夠要加,有兩種情況:
【1】卷組支持擴容大小
1)Lvextend:-L +大小 /dev/卷組名/邏輯卷名
2)更新命令:
resize2fs /dev/卷組名/邏輯卷名
xfs_growfs /dev/卷組名/邏輯卷名
【2】卷組小於擴容的大小
1)fdisk /dev/sdc,類型改爲8e,使用partx -a /dev/sdc刷新
2)新建pvcreate /dev/sdc,然後加捲組VGextend 名字 新建的物理卷路徑
3)這時就是卷組有足夠的空間大小Lvextend:-L +大小(沒有+就是最終大小) /dev/卷組名/邏輯卷名
4)更新命令:resize2fs /dev/卷組名/邏輯卷名
(6)掛載分區到某個文件中。

2、舉例說明lvm管理步驟
【1】加硬盤物理分區

1)添加硬盤並修改系統類型爲8e

[root@localhost ~]# fdisk -l
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):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 字節
[root@localhost~]#fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x59671bbd 創建新的 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
已將分區“Linux”的類型更改爲“Linux LVM”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@localhost~]#fdisk /dev/sdc
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x59671bbd 創建新的 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
已將分區“Linux”的類型更改爲“Linux LVM”

命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。

注:如果沒有轉化成功使用命令partprobe -a 磁盤分區 刷新一下
[root@localhost ~]# partprobe /dev/sd[bc]1

【2】lvm磁盤管理

(1)創建物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

(2)創建卷組

[root@localhost ~]# vgcreate vg0 /dev/sd[bc]1
  Volume group "vg0" successfully created

(3)創建邏輯卷

[root@localhost ~]# lvcreate -L 20G -n lv0 vg0
  Logical volume "lv0" created.
[root@localhost ~]# lvdisplay (查看邏輯卷詳細信息)
 --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                VEKkLT-Miwa-ZzdY-mwZL-S61i-R93W-SnUC6l
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-07-01 21:50:50 +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:3

(4)格式化邏輯捲成xfs文件類型

[root@localhost ~]# mkfs -t xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0           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

(5)掛載使用

[root@localhost ~]# mkdir /lvm
[root@localhost ~]# mount /dev/vg0/lv0 /lvm
[root@localhost ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        20G   33M   20G    1% /lvm

(6)如果邏輯卷不夠用要擴充,前提是卷組容量支持,如果不支持就先擴卷組。

[root@localhost ~]# lvextend -L +5G /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
  Logical volume vg0/lv0 successfully resized.

[root@localhost ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        20G   33M   20G    1% /lvm(發現還是20G沒有增加)

(7)更新文件系統

[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=512    agcount=4, agsize=1310720 blks
       =                       sectsz=512   attr=2, projid32bit=1
       =                       crc=1        finobt=0 spinodes=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               bsize=4096   blocks=2560, version=2
       =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 5242880 to 6553600

[root@localhost ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        25G   33M   25G    1% /lvm(這時就增加了5G)
【4】限制用戶

(1)卸載原來掛載邏輯卷並查看是否安裝磁盤配額工具

[root@localhost ~]# umount /lvm
[root@localhost ~]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
[root@localhost ~]# rpm -ql xfsprogs | grep xfs_quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz

(2)設置以支持磁盤配額的方式掛載

[root@localhost ~]# mount -o usrquota,grpquota /dev/vg0/lv0 /lvm
[root@localhost ~]# mount(查看是否支持)
/dev/mapper/vg0-lv0 on /lvm type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
[root@localhost ~]# ll / | grep lvm(查看目錄權限)
drwxr-xr-x.   2 root root    6 7月   1 21:55 lvm
[root@localhost ~]# chmod 777 /lvm(要是權限不夠就賦予其相應的權限)

(3)創建一個用戶zhangsan

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
更改用戶 zhangsan 的密碼 。
新的 密碼:
無效的密碼: 密碼是一個迴文
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

(4)編輯用戶磁盤配額設置並查看用戶 zhangsan 的磁盤容量限制

[root@localhost ~]# xfs_quota -xc 'limit -u bsoft=50M bhard=70M isoft=40 ihard=50 zhangsan' /lvm/
[root@localhost ~]# xfs_quota -c 'quota -uv zhangsan' /lvm/(查看塊的限制數)
Disk quotas for User zhangsan (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/vg0-lv0          0      51200      71680   00 [--------] /lvm
[root@localhost ~]# xfs_quota -c 'quota -iuv zhangsan' /lvm/(查看i節點限制數)
Disk quotas for User zhangsan (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/vg0-lv0          0         40         50   00 [--------] /lvm

參數說明
-xc:“x”表示啓動專家模式,在當前模式下允許對配額系統進行修改的所有管理命
令可用“c”表示直接調用管理命令。
bsoft::設置磁盤容量的軟限制數值。
bhard:設置磁盤容量的硬限制數值。
isoft:設置磁盤文件數的硬限制數值。
ihard:設置磁盤文件數的軟限制數值。
(5)切換用戶

[root@localhost ~]# su - zhangsan

(6)在/lvm目錄下創建新文件並寫入

[zhangsan@localhost lvm]$ touch abc.txt
[zhangsan@localhost lvm]$ dd if=/dev/zero of=/lvm/abc.txt bs=1M count=250
dd: 寫入"/lvm/abc.txt" 出錯: 超出磁盤限額
記錄了71+0 的讀入
記錄了70+0 的寫出
73400320字節(73 MB)已複製,0.872629 秒,84.1 MB/秒

發現超出了磁盤限額,說明限制用戶成功。

(6)查看用戶磁盤配額詳細信息

[root@localhost ~]# xfs_quota -xc 'report -abi'
User quota on /lvm (/dev/mapper/vg0-lv0)
                               Blocks                                          Inodes                     
User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root           262080          0          0     00 [--------]          4          0          0     00 [--------]
zhangsan        71680      51200      71680     00  [6 days]          1         40         50     00 [--------]

Group quota on /lvm (/dev/mapper/vg0-lv0)
                               Blocks                                          Inodes                     
Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root           262080          0          0     00 [--------]          4          0          0     00 [--------]
zhangsan        71680          0          0     00 [--------]          1          0          0     00 [--------]

參數說明
-abi:“a”選項可以查看所有可用分區的配額使用報告,“b”與“i”選項查看磁盤容量和文件數量報告。

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