LVM逻辑卷
LVM概述
LVM(Logical Volume Manager) ,逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件体系的巨细。此外,LVM 的快照功用能够协助咱们快速备份数据。LVM 为咱们提供了逻辑概念上的磁盘,使得文件体系不再关心底层物理磁盘的概念。
- 物理卷(PV):就是真实的物理硬盘或分区。
- 卷组(VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷能够是同一块硬盘的不同分区,也能够是不同硬盘上的不同分区。咱们能够把卷组想象为一块逻辑硬盘。
- 逻辑卷(LV):卷组是一块逻辑硬盘,硬盘有必要分区之后才干运用,咱们把这个分区称作逻辑卷。逻辑卷能够被格式化和写入数据。咱们能够把逻辑卷想象为分区。
- 物理扩展(PE):PE 是用来保存数据的最小单元,咱们的数据实际上都是写入 PE 傍边的。PE 的巨细是能够配置的,默许是 4MB。
优缺陷
长处:
-
文件体系能够跨多个磁盘,因而文件体系巨细不会受物理磁盘的约束。
-
能够在体系运行的状态下动态的扩展文件体系的巨细。
-
能够增加新的磁盘到LVM的存储池中。
-
能够以镜像的方法冗余重要的数据到多个物理磁盘。
-
能够方便的导出整个卷组到另外一台机器。
缺陷:
-
在从卷组中移除一个磁盘的时分有必要运用reducevg指令(这个指令要求root权限,并且不允许在快照卷组中运用)。
-
当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
-
由于加入了额定的操作,存贮功用受到影响。
安装LVM东西
yum install lvm2 -y
指令
功用 | pv(物理卷) | vg(卷组) | lv(逻辑卷) |
---|---|---|---|
scan(扫描) | pvscan | vgscan | lvscan |
create(树立) | pvcreate | vgcreate | lvcreate |
display(显现) | pvdisplay | vgdisplay | lvdisplay |
remove(删除) | pvremove | vgremove | lvremove |
extend(扩展) | ———— | vgextend | lvextend |
reduce(减少) | ———— | vgreduce | lvreduce |
树立逻辑卷
树立物理卷
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# vgcreate km /dev/sd{b1,c}
Volume group "km" successfully created
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [54.00 GiB / 4.00 MiB free]
PV /dev/sdb1 VG km lvm2 [<10.00 GiB / <10.00 GiB free]
PV /dev/sdc VG km lvm2 [<20.00 GiB / <20.00 GiB free]
Total: 3 [<84.00 GiB] / in use: 3 [<84.00 GiB] / in no VG: 0 [0 ]
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <54.01 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 13825
Free PE 1
Allocated PE 13824
PV UUID JiWR9a-GOyJ-T2da-3ECl-zR5S-cBNw-tfVwHq
--- Physical volume ---
PV Name /dev/sdb1
VG Name km
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 2559
Allocated PE 0
PV UUID Aixlpy-F8jB-61cd-IA8P-U1hJ-LSGp-r9B7J5
--- Physical volume ---
PV Name /dev/sdc
VG Name km
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 5119
Allocated PE 0
PV UUID WjD18V-SdJ4-SWcu-14kQ-bXZK-AeY1-pKIJSk
树立卷组
[root@localhost ~]# pvcreate /dev/sd{b1,b2}
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 54.00 GiB
PE Size 4.00 MiB
Total PE 13825
Alloc PE / Size 13824 / 54.00 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID 2dlq11-b0KU-p4qh-gEdR-q9QR-jcJ7-fDtkVd
--- Volume group ---
VG Name km
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 29.99 GiB
PE Size 4.00 MiB
Total PE 7678
Alloc PE / Size 0 / 0
Free PE / Size 7678 / 29.99 GiB
VG UUID A44e17-nva2-3SJ4-xVPW-muE7-x7vW-11YGGS
树立逻辑卷
[root@localhost ~]# lvcreate -n mysql -L 20G km
Logical volume "mysql" created.
[root@localhost ~]# ll /dev/km/mysql
lrwxrwxrwx. 1 root root 7 9月 28 13:55 /dev/km/mysql -> ../dm-2
[root@localhost ~]# ll /dev/mapper/
总用量 0
lrwxrwxrwx. 1 root root 7 9月 27 21:42 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 9月 27 21:42 centos-swap -> ../dm-1
crw-------. 1 root root 10, 236 9月 27 21:42 control
lrwxrwxrwx. 1 root root 7 9月 28 13:55 km-mysql -> ../dm-2
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID JQIV33-Sd3A-4IcR-dqUn-fsk8-JYWa-FoZgZB
LV Write Access read/write
LV Creation host, time localhost, 2022-08-31 19:11:25 +0800
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID ODQAxT-WAcL-BwW0-ltpr-hUf2-P3Kp-hHgCzq
LV Write Access read/write
LV Creation host, time localhost, 2022-08-31 19:11:25 +0800
LV Status available
# open 2
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/km/mysql
LV Name mysql
VG Name km
LV UUID OlLW8J-jlrw-QXUj-DFyV-k0gG-0V1p-QHCbA2
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-09-28 13:55:16 +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:2
逻辑卷树立成功但是无法运用,需求挂载
[root@localhost ~]# mkfs.ext4 /dev/km/mysql
mke2fs 1.42.9 (28-Dec-2013)
文件体系标签=
OS type: Linux
块巨细=4096 (log=2)
分块巨细=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完结
正在写入inode表: 完结
Creating journal (32768 blocks): 完结
Writing superblocks and filesystem accounting information: 完结
[root@localhost ~]# mount /dev/km/mysql /mnt/
[root@localhost ~]# df -h
文件体系 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 3.3G 47G 7% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.1M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 5.0G 161M 4.9G 4% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 32K 199M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/km-mysql 20G 45M 19G 1% /mnt
逻辑卷扩容
[root@localhost ~]# mkfs.xfs /dev/km/tk
meta-data=/dev/km/tk isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@localhost ~]# mount /dev/km/tk /opt/
[root@localhost ~]# df -h
文件体系 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 3.3G 47G 7% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.1M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 5.0G 161M 4.9G 4% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 32K 199M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/km-mysql 20G 45M 19G 1% /mnt
/dev/mapper/km-tk 5.0G 33M 5.0G 1% /opt
[root@localhost ~]# lvextend -L +2G /dev/km/tk -r
Size of logical volume km/tk changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume km/tk successfully resized.
meta-data=/dev/mapper/km-tk isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1310720, 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 1310720 to 1835008
[root@localhost ~]# df -h
文件体系 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 3.3G 47G 7% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.1M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 5.0G 161M 4.9G 4% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 32K 199M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/km-mysql 20G 45M 19G 1% /mnt
/dev/mapper/km-tk 7.0G 33M 7.0G 1% /opt
磁盘配额
条件
- 内核有必要支持磁盘配额。
- 体系中有必要安装了 Quota 东西。咱们的 Linux 中默许安装了 Quoted 东西
- 要支持磁盘配额的分区有必要敞开磁盘配额功用。这项功用能够手动敞开,不再是默许敞开的
特色
- 效果范围:针对指定的文件体系(分区)
- 约束目标:用户帐号、组帐号
- 约束类型:磁盘容量、文件数量
- 约束方法:软约束、硬约束
选项 | 效果 |
---|---|
-x | 启动专家形式 |
-c | 直接调用管理指令 |
-u | 指定用户账号目标 |
-g | 指定组账号目标 |
xfs_quota -x -c "limit -u bsoft=N bhard=N isoft=N ihard=N 用户名" 挂载点
验证磁盘配额功用
[root@localhost ~]# chmod 777 /opt ##给/opt增加满权限
[root@localhost ~]# Su km ##进入km用户
[km@localhost root]$ cd /mnt
检查磁盘配
report
选项 | 效果 |
---|---|
-u | 对用户检查 |
-g | 对组检查 |
-a | 检查一切可用分区的配额运用报告 |
-b | 检查磁盘容量 |
-i | 检查文件数 |
xfs_quota -X -C ' report -a' #检查一切可用分区的磁盘容量配额运用情况
xfs_quota-X -C 'report -abih ' #检查磁盘容量和文件数的报告
验证磁盘容量超限
[can@localhost mnt]$ dd if=/dev/cm of=/mnt/test.txt bs=10M count=12 ##从/dev/cm仿制到/mnt下创立文件test.txt,巨细为10M,仿制12次
dd: 写入"/mnt/test.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已仿制,0.0673266 秒,1.6 GB/秒
验证磁盘文件数超限
[mk@localhost mnt]$ touch {1.20}.txt ##创立1-20的txt文件
touch: 无法创立"{1.20}.txt": 超出磁盘限额