邏輯卷LVM 與 配置 磁碟配額管理
目錄:
LVM:Logical Volume Manage 邏輯卷管理
能夠在保持現有資料不變的情況下動態調整磁碟容量,從而提高磁碟管理的靈活性
/boot 分割槽用於存放引導檔案,不能基於 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 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.
[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卷組容量夠用,可以直接擴容,然後擴充套件檔案系統
[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 工具進行管理。
需要Linux 核心支援
安裝xfsprohs 與quota 軟體包
Linux 磁碟限額的特點
Linux 磁碟限額的特點 | |
作用範圍 | 針對指定的檔案系統 |
限制物件 | 使用者賬號,組賬號 |
限制類型 | 磁碟容量,檔案數量 |
限制方法 | 軟限制,硬限制 |
(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.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-x: 表示啟動專家模式, 在當前模式下允許對配額系統進行修改的所有管理命令可用。 -c∶表示直接呼叫管理命令。 -u∶指定使用者賬號物件 g∶ 指定組賬號物件 bsoft∶ 設定磁碟容量的軟限制數值(預設單位為 KB)。 bhard∶ 設定磁碟容量的硬限制數值(預設單位為 KB)。 isoft∶ 設定磁碟檔案數的軟限制數值。 ihard∶ 設定磁碟檔案數的硬限制數值。
#此命令可以檢視xfs_quota的man 手冊,搜尋EXAMPLE
#對掛載點/mnt 目錄進行限制,限制使用者test 磁碟容量軟限制為80M ,硬限制為100M 。檔案數軟限制為8,硬限制為10
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
[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
[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 [------]