管理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”選項查看磁盤容量和文件數量報告。