LVM:逻辑卷,能够在保持现有数据不变的情况下动态调整磁盘的容量
是一个可动态扩展。快速创建和方便管理的逻辑上的磁盘,而不用考虑实际的硬件分区
LVM可方便的对存储空间进行管理,如动态增加或缩减逻辑卷大小,移动逻辑卷备份和恢复逻辑卷,以实现热备份等
tips:
热备份:不停机备份,实时备份,有多少备份多少
冷备份:停机备份,只能备份当前数据,开机后的新数据不再备份
LVM的作用:
注意:/boot分区存放引导文件,不能创建LVM
PV物理卷:真正的物理硬盘或分区,由不同的硬盘提供真实的存储空间
VG卷组:把不同分区的硬盘打包在一起,形成一个逻辑上的硬盘
LV逻辑卷:分区,格式化,挂载
PE:是用来保存数据的最小单位,大小可改,默认4MB
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | ————— | vgextend | lvextend |
Reduce 减少 | ————— | vgreduce | lvreduce |
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x5595ab53 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 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
使用磁盘标识符 0xf33392af 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xbe396255 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 953M 0 part /boot
└─sda2 8:2 0 51.2G 0 part
├─centos-root 253:0 0 46.6G 0 lvm /
└─centos-swap 253:1 0 4.7G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
└─sdb1 8:17 0 10G 0 part
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 10G 0 part
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 10G 0 part
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# vgcreate yun /dev/sdb1 /dev/sdc1 /dev/sdd1 //创建卷组名为yun的卷组
Volume group "yun" successfully created
[root@localhost ~]# vgdisplay yun //查看卷组情况
--- Volume group ---
VG Name yun
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size <29.99 GiB
PE Size 4.00 MiB
Total PE 7677
Alloc PE / Size 0 / 0
Free PE / Size 7677 / <29.99 GiB
VG UUID hN1Mkr-FOLL-t3zI-5P5V-XwAu-G9h1-UdLfxO
lvcreate -L 逻辑卷大小 -n 逻辑卷名称 卷组名称
-L:指定逻辑卷的大小,单位为M,G,T
-n:指定逻辑卷的名称
-l:按照PE个数指定逻辑卷大小,需要换算容量,太麻烦
[root@localhost ~]# lvcreate -L 10G -n jisuan yun //创建大小为10G,逻辑卷名为jisuan的逻辑卷
Logical volume "jisuan" created.
[root@localhost ~]# lvdisplay /dev/yun/jisuan //查看逻辑卷情况
--- Logical volume ---
LV Path /dev/yun/jisuan
LV Name jisuan
VG Name yun
LV UUID iTIUZt-FCxY-BFQs-02ng-p89h-Y58s-M6Ynvq
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-05-09 02:04:19 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
/目录/卷组名/逻辑卷名
[root@localhost ~]# mkfs.xfs /dev/yun/jisuan
meta-data=/dev/yun/jisuan 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@localhost /]# mkdir data
[root@localhost /]# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost ~]# blkid
/dev/mapper/centos-root: UUID="1871dac0-5ec8-4132-a7ab-f3f9c29f4825" TYPE="xfs"
/dev/sda2: UUID="VNY0Qc-0Q7z-7FM2-ST8T-ApMY-SZWn-5ELzv3" TYPE="LVM2_member"
/dev/sda1: UUID="fa602757-026a-4b15-9bdb-05bf9c751ed8" TYPE="xfs"
/dev/mapper/centos-swap: UUID="b2c1d539-9794-4d64-b70d-61da5cea4ae0" TYPE="swap"
/dev/sdb1: UUID="D0HrSm-vNMs-E2od-EDmo-2gxj-2znF-fSb79Z" TYPE="LVM2_member"
/dev/sdc1: UUID="ECvOfU-DV9d-4Gv8-1mzi-ZeE1-718V-ROHNBT" TYPE="LVM2_member"
/dev/sdd1: UUID="d1kEb9-qhb1-4Lr9-J8Fa-l9N2-uXuV-OJlwNK" TYPE="LVM2_member"
/dev/mapper/yun-jisuan: UUID="3f966bff-86da-47bd-a33f-108e99baed5b" TYPE="xfs"
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 26 00:42:50 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=fa602757-026a-4b15-9bdb-05bf9c751ed8 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID=3f966bff-86da-47bd-a33f-108e99baed5b /data xfs defaults 0 0
:wq
[root@localhost /]# mount -a //刷新
[root@localhost /]# lvextend -L +12G /dev/yun/jisuan -r //扩容12G逻辑卷
Size of logical volume yun/jisuan changed from 10.00 GiB (2560 extents) to 22.00 GiB (5632 extents).
Logical volume yun/jisuan successfully resized.
meta-data=/dev/mapper/yun-jisuan isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=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 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 2621440 to 5767168
[root@localhost /]# lvdisplay /dev/yun/jisuan
--- Logical volume ---
LV Path /dev/yun/jisuan
LV Name jisuan
VG Name yun
LV UUID iTIUZt-FCxY-BFQs-02ng-p89h-Y58s-M6Ynvq
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-05-09 02:04:19 +0800
LV Status available
# open 1
LV Size 22.00 GiB //扩容成功
Current LE 5632
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
当卷组空间不够逻辑卷扩容是,添加卷组
①在硬盘中分区
[root@localhost /]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (20973568-83886079,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-83886079,默认为 83886079):+15G
分区 2 已设置为 Linux 类型,大小设为 15 GiB
命令(输入 m 获取帮助):w
[root@localhost /]# partprobe
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 953M 0 part /boot
└─sda2 8:2 0 51.2G 0 part
├─centos-root 253:0 0 46.6G 0 lvm /
└─centos-swap 253:1 0 4.7G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
├─sdb1 8:17 0 10G 0 part
│ └─yun-jisuan 253:2 0 22G 0 lvm /data
└─sdb2 8:18 0 15G 0 part
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 10G 0 part
└─yun-jisuan 253:2 0 22G 0 lvm /data
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 10G 0 part
└─yun-jisuan 253:2 0 22G 0 lvm /data
sr0 11:0 1 1024M 0 rom
②添加新的分区到卷组中
[root@localhost /]# vgextend yun /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
Volume group "yun" successfully extended
[root@localhost /]# vgdisplay /dev/yun
--- Volume group ---
VG Name yun
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 44.98 GiB //添加成功
PE Size 4.00 MiB
Total PE 11516
Alloc PE / Size 5632 / 22.00 GiB
Free PE / Size 5884 / 22.98 GiB
VG UUID hN1Mkr-FOLL-t3zI-5P5V-XwAu-G9h1-UdLfxO
磁盘配额:磁盘配额是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。
[root@localhost /]# rpm -q xfsprogs quota
xfsprogs-4.5.0-12.el7.x86_64
quota-4.01-14.el7.x86_64 //已有,不用安装
[root@localhost /]# umount /dev/yun/jisuan /data/ //如果之前挂载了,需要先解挂载
[root@localhost /]# mount -o usrquota,grpquota /dev/yun/jisuan /data/
以支持磁盘配额的方式挂载
[root@localhost /]# useradd ky29
[root@localhost /]# passwd ky29
更改用户 ky29 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost /]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M ky29' /data/
限制磁盘空间
[root@localhost /]# xfs_quota -x -c 'limit -u isoft=4 ihard=6 ky29' /data/
限制文件数量
常用选项:
限制字段:
[root@localhost /]# chmod 777 /data/ //设置所有人对/data都有读写执行的权限
使用命令
dd:是一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
"of="指定输出设备(或文件)
"bs=" 指定读取数据块的大小
"count=”指定读取数据块的数量
/dev/zero “零"设备文件,可以无限的提供空字符。常用来生成-一个特定大小的文件
验证
验证磁盘容量
[root@localhost /]# su - ky29
上一次登录:二 5月 9 03:16:07 CST 2023pts/3 上
[ky29@localhost ~]$ dd if=/dev/zero of=/data/123.txt bs=10M count=12
dd: 写入"/data/123.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.0597864 秒,1.8 GB/秒
[ky29@localhost ~]$ cd /data
[ky29@localhost data]$ rm -rf *
[ky29@localhost data]$ touch {1..10}.txt
touch: 无法创建"7.txt": 超出磁盘限额
touch: 无法创建"8.txt": 超出磁盘限额
touch: 无法创建"9.txt": 超出磁盘限额
touch: 无法创建"10.txt": 超出磁盘限额
[root@localhost /]# xfs_quota -x -c 'disable -up' /data
[root@localhost /]# su - ky29
上一次登录:二 5月 9 03:17:16 CST 2023pts/3 上
[ky29@localhost ~]$ dd if=/dev/zero of=/data/123.txt bs=10M count=12
记录了12+0 的读入
记录了12+0 的写出
125829120字节(126 MB)已复制,0.0478918 秒,2.6 GB/秒
[ky29@localhost ~]$ cd /data/
[ky29@localhost data]$ ls
123.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt
[ky29@localhost data]$ touch {1..10}.txt
[ky29@localhost data]$ ls
10.txt 123.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
若要再次设置磁盘配额,需要重新以支持磁盘配额的方式挂载