1. 程式人生 > 其它 >邏輯卷LVM 與 配置 磁碟配額管理

邏輯卷LVM 與 配置 磁碟配額管理

目錄:

一:邏輯卷 LVM

  1.1 LVM 概述

  1.2 LVM機制概念

  1.3 LVM管理命令

  1.4 建立邏輯卷

  1.5 格式化邏輯卷並掛載使用

  1.6 邏輯卷擴容

二:設定磁碟配額

  2.1 磁碟限額的條件與特點

  2.2 磁碟配額流程

  2.3 以支援配額的功能掛載檔案系統

  2.4 編輯使用者和組賬號配額

  2.5 驗證磁碟配額

  2.6 檢視配額使用情況

  

一 邏輯卷LVM

1.1 LVM 概述

LVM:Logical Volume Manage 邏輯卷管理

  能夠在保持現有資料不變的情況下動態調整磁碟容量,從而提高磁碟管理的靈活性

  /boot 分割槽用於存放引導檔案,不能基於 LVM 建立

1.2,LVM機制概念

PV (Physical Volume,物理卷) 物理卷是LVM機制的基本儲存裝置,通常對應為一個普通分割槽或整個硬碟。建立物理卷時,會在分割槽或硬碟的頭部建立一個保留區塊,用於記錄LVM的屬性,並把儲存空間分割成預設大小為4MB的基本單元(PE) ,從而構成物理卷。 VG (Volume Group,卷組) 由一個或多個物理卷組成一個整體,即稱為卷組,在卷組中可以動態地新增或移除物理卷。 LV (Logical volume,邏輯卷) 從卷組中分割出的一塊空間,形成邏輯卷。使用mkfs等工具可在邏輯捲上建立檔案系統。

1.3, LVM 管理命令

pvcreate 裝置名1 [裝置名2 .....]        #建立物理卷

vgcreate 卷組名 物理卷名1 物理卷名2 .... #建立卷組

vgextend 卷組名 物理卷名1 .... #卷組擴容

lvcreate -L 容量大小 -n 邏輯卷名 卷組 #從卷組中建立邏輯卷 # -l 小寫l 表示pe個數

lvextend -L +容量大小 邏輯卷 #將邏輯卷擴容

mkfs -t 檔案系統 邏輯卷 #格式化邏輯卷

xfs_growfs 邏輯卷 #擴充套件xfs格式檔案系統

resize2fs 邏輯卷 #擴充套件ext4 格式檔案系統

功能 物理卷管理 卷組管理 邏輯卷管理
Scan 掃描 pvscan vgscan lvscan
Creat 建立 pvcreate vgcreate lvcreate
Display 顯示 pvdisplay vgdisplay lvdisplay
Remove 刪除 pvremove vgremove lvremove
Extend ———— vgextend lvextend
Reduce ———— vgextend lvextend

1.4 建立邏輯卷

1.4.1 fdisk 工具修改要使用的分割槽的id 為8e 邏輯卷型別

[root@promote ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

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


命令(輸入 m 獲取幫助):t #修改分割槽hex 程式碼
分割槽號 (1,2,預設 2):1
Hex 程式碼(輸入 L 列出所有程式碼):8e
已將分割槽“Linux”的型別更改為“Linux LVM”

命令(輸入 m 獲取幫助):t
分割槽號 (1,2,預設 2):2
Hex 程式碼(輸入 L 列出所有程式碼):8e
已將分割槽“Linux”的型別更改為“Linux LVM”

命令(輸入 m 獲取幫助):p

磁碟 /dev/sdb:64.4 GB, 64424509440 位元組,125829120 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xfbdee661

裝置 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 8e Linux LVM
/dev/sdb2 20973568 41945087 10485760 8e Linux LVM

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

Calling ioctl() to re-read partition table.

[root@promote ~]# partprobe /dev/sdb #重新整理分割槽表

1.4.2 建立物理卷 PV

[root@promote ~]# pvcreate /dev/sdb1 /dev/sdb2                   #將/dev/sdb1  /dev/sdb2 建立為物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

1.4.3 建立卷組VG

[root@promote ~]# vgcreate vgdata /dev/sdb1 /dev/sdb2         #以物理卷/dev/sdb1 和  /dev/sdb2 建立卷組 vgdata
  Volume group "vgdata" successfully created

1.4.4 建立邏輯卷LV

[root@promote ~]# lvcreate -L 12G -n lvdata /dev/vgdata     #以物理卷vgdata建立邏輯卷 lvdata 大小為12G
  Logical volume "lvdata" created.

1.5 格式化邏輯卷並掛載使用

[root@promote ~]# mkfs -t xfs  /dev/vgdata/lvdata            #將邏輯卷格式為xfs格式
meta-data=/dev/vgdata/lvdata     isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3145728, 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

[root@promote ~]# mount /dev/vgdata/lvdata /mnt #掛載邏輯卷 [root@promote
~]# df -hT 檔案系統 型別 容量 已用 可用 已用% 掛載點 /dev/sda3 xfs 56G 4.7G 51G 9% / devtmpfs devtmpfs 978M 0 978M 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 497M 151M 346M 31% /boot tmpfs tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata xfs 12G 33M 12G 1% /mnt

1.6 邏輯卷擴容

1.6.1卷組容量夠用,可以直接擴容,然後擴充套件檔案系統

[root@promote ~]# lvextend -L +5G  /dev/vgdata/lvdata              #將邏輯卷lvdata 擴容5G
  Size of logical volume vgdata/lvdata changed from 12.00 GiB (3072 extents) to 17.00 GiB (4352 extents).
  Logical volume vgdata/lvdata successfully resized.
[root@promote ~]# lsblk /dev/vgdata/lvdata                        #邏輯卷已經成功擴容(或者用lvdisplay 檢視)
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vgdata-lvdata 253:0    0  17G  0 lvm  
[root@promote ~]# df -h                                            #但是此時檔案系統還沒有擴充套件
檔案系統                   容量  已用  可用 已用% 掛載點
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   12G   33M   12G    1% /mnt
[root@promote ~]# xfs_growfs /dev/vgdata/lvdata                   #擴充套件xfs格式的檔案系統
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, 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 3145728 to 4456448
[root@promote ~]# df -h                                           #檔案系統成功擴充套件
檔案系統                   容量  已用  可用 已用% 掛載點
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   17G   33M   17G    1% /mnt

1.6.2 物理卷容量不夠下擴容邏輯卷

(1) 先擴容物理卷

[root@promote ~]# fdisk /dev/sdb                        #過程略。劃分新分割槽並修改id
[root@promote ~]# pvcreate /dev/sdb3


[root@promote ~]# pvcreate /dev/sdb3                     #建立新的物理卷
  Physical volume "/dev/sdb3" successfully created.

[root@promote ~]# vgextend vgdata /dev/sdb3              #擴容卷組vgdata
  Volume group "vgdata" successfully extended
[root@promote ~]# vgdisplay                              #檢視卷組資訊
  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       4352 / 17.00 GiB
  Free  PE / Size       3325 / <12.99 GiB
  VG UUID               qzmlO0-vNqW-Jd0G-MAVi-gWKA-G7G4-Gvaeua

(2)再擴容邏輯卷和檔案系統

[root@promote ~]# lvextend  -L  +10G /dev/vgdata/lvdata
  Size of logical volume vgdata/lvdata changed from 17.00 GiB (4352 extents) to 27.00 GiB (6912 extents).
  Logical volume vgdata/lvdata successfully resized.

[root@promote ~]# xfs_growfs  /dev/vgdata/lvdata 
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=6, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4456448, 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 4456448 to 7077888
[root@promote ~]# df -h
檔案系統                   容量  已用  可用 已用% 掛載點
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   27G   33M   27G    1% /mnt
[root@promote ~]# 

二:設定磁碟配額

當Linux根分割槽的磁碟空間耗盡時,Linux作業系統將無法再建立新的檔案,同時也可能會出現服務程式崩潰、系統無法啟動等故障。 為了避免在伺服器中出現類似磁碟空間不足的問題,可以啟用磁碟配額功能,對使用者在指定檔案系統 (分割槽)中使用的磁碟空間、檔案數量進行限制,以防止個別使用者惡意或無意間佔用大量磁碟空間,從而保持系統儲存空間的穩定性和持續可用性。在CentOS系統中,不同的檔案系統使用不同磁碟配額配置管理工具。 例如,XFS檔案系統通過xfs_quota工具進行管理; EXT3/4 檔案系統通過 quota 工具進行管理

2.1 磁碟限額的條件與特點

需要Linux 核心支援

安裝xfsprohs 與quota 軟體包

Linux 磁碟限額的特點

Linux 磁碟限額的特點
作用範圍 針對指定的檔案系統
限制物件 使用者賬號,組賬號
限制類型 磁碟容量,檔案數量
限制方法 軟限制,硬限制

2.2 磁碟配額流程

2.3 以支援配額功能的方式掛載檔案系統

(1) 先分割槽,然後格式化檔案系統

[root@promote ~]#fdisk /dev/sdb    #過程略
[root@promote ~]#partprobe

[root@promote ~]# mkfs.xfs /dev/sdb5       #格式化為xfs 檔案系統
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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

[root@promote ~]# mount -o usrquota,grpquota  /dev/sdb5 /mnt   
#以支援使用者限制,組限制的配額功能掛載(臨時掛載)usrquota,使用者限制。grpquota 組限制
[root@promote
~]# vim /etc/fstab #永久掛載 /dev/sdb5 /mnt xfs defaults,usrquota,grpquota 0 0 [root@promote ~]# mount -a

2.4 編輯使用者和組賬號配額配置

2.4.1 進行使用者配額限制

[root@promote ~]# userdel -r test
[root@promote ~]# useradd test
[root@promote ~]# echo "123" | passwd --stdin test
更改使用者 test 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
 
[root@promote ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 test' /mnt    
#此命令可以檢視xfs_quota的man 手冊,搜尋EXAMPLE
#對掛載點/mnt 目錄進行限制,限制使用者test 磁碟容量軟限制為80M ,硬限制為100M 。檔案數軟限制為8,硬限制為10
-x: 表示啟動專家模式, 在當前模式下允許對配額系統進行修改的所有管理命令可用。 -c∶表示直接呼叫管理命令。 -u∶指定使用者賬號物件 g∶ 指定組賬號物件 bsoft∶ 設定磁碟容量的軟限制數值(預設單位為 KB)。 bhard∶ 設定磁碟容量的硬限制數值(預設單位為 KB)。 isoft∶ 設定磁碟檔案數的軟限制數值。 ihard∶ 設定磁碟檔案數的硬限制數值。



2.4.2 檢視使用者配額

[root@promote ~]# xfs_quota  -c'quota -uv test' /mnt                            #檢視使用者test的磁碟容量限制
Disk quotas for User test (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0      81920     102400   00 [--------] /mnt

[root@promote ~]# xfs_quota  -c'quota -iv test' /mnt                          #檢視使用者test 的檔案數量限制
Disk quotas for User test (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0          8         10   00 [--------] /mnt

2.5 驗證磁碟配額

[root@promote ~]# chmod 777 /mnt
[root@promote ~]# su test
[test@promote root]$ cd /mnt/
[test@promote mnt]$ dd if=/dev/zero of=/mnt/text.txt bs=10M count=12      #驗證磁碟容量限制 
dd: 寫入"/mnt/text.txt" 出錯: 超出磁碟限額
記錄了11+0 的讀入
記錄了10+0 的寫出
104857600位元組(105 MB)已複製,0.513552 秒,204 MB/
###
dd 命令是一個裝置轉換和連續複製命令

"if="指定輸入裝置(或檔案)

"of="指定輸出裝置(或檔案)

"bs="指定讀取資料塊的大小"

count="指定讀取資料塊的數量

/dey/zero "零"裝置檔案, 可以無限的提供空字元。常用來生成一個特定大小的檔案。###

[test@promote mnt]$ du -h /mnt                                             #檢視/mnt 目錄容量只有100M
100M    /mnt

[test@promote mnt]$ rm -rf *
[test@promote mnt]$ touch {1..12}.txt                                      #驗證檔案熟練限制
touch: 無法建立"11.txt": 超出磁碟限額
touch: 無法建立"12.txt": 超出磁碟限額
[test@promote mnt]$ ls 
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

2.6 檢視配額使用情況

[root@promote ~]# xfs_quota  -x -c'report -abih'                        #檢視磁碟容量和檔案數報告 (預設磁碟容量單位為kb)
User quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0    80M   100M  00 [------]     10      8     10  00 [6 days]

Group quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0      0      0  00 [------]     10      0      0  00 [------]