|NO.Z.00052|——————————|^^ 操作 ^^|——|Linux&高级系统.V04|——|存储管理|
一、物理卷管理
### --- 硬盘分区
~~~ 创建方式就是使用 fdisk 交互命令,
~~~ 不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区ID 号 83 了,
~~~ 而要改成 LVM 的 ID 号 8e。
### --- 建立物理卷
~~~ 建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。
~~~ 如果要把整块硬盘都建立成物理卷,命令如下
[root@localhost ~]# pvcreate [设备文件名]
~~~ 在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:
[root@localhost ~]# pvcreate /dev/sdb
[root@localhost ~]# pvcreate /dev/sdb5
### --- 查看物理卷
[root@localhost ~]# pvscan
PV /dev/sdb5 lvm2 [1.01 GiB]
PV /dev/sdb6 lvm2 [1.01 GiB]
PV /dev/sdb7 lvm2 [1.01 GiB]
Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]
~~~ 我们可以看到在我的系统中,/dev/sdb5-7 这三个分区是物理卷。
~~~ 最后一行的意思是:
~~~ 总共 3 个物理卷[大小] / 使用了 0 个卷[大小] / 空闲 3 个卷[大小]。
~~~ 第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:
[root@localhost ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb5 // PV 名
VG Name // 属于的 VG 名,还没有分配,所以空白
PV Size 1.01 GiB // PV 的大小
Allocatable NO // 是否已经分配
PE Size 0 // PE 大小,因为还没有分配,所以 PE 大小也没有指定
Total PE 0 // PE 总数
Free PE 0 // 空闲 PE 数
Allocated PE 0 // 可分配的 PE 数
PV UUID CEsVz3-f0sD-e1w0-wkHZ-iaLq-O6aV-xtQNTBPV 的 UUID
### --- 删除物理卷
[root@localhost ~]# pvremove /dev/sdb7
二、卷组管理
### --- 建立卷组
~~~ 选项:
~~~ -s PE 大小:指定 PE 的大小,单位可以是 MB,GB,TB 等。
~~~ 如果不写默认 PE 大小事 4MB
~~~ 我们又三个物理卷/dev/sdb5-7,我们先把/dev/sdb5 和/dev/sdb6 加入卷组,
~~~ 留着/dev/sdb7 一会实验调整卷组大小,命令如下:
[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
[root@server11 ~]# vgcreate scvg /dev/sdb1 /dev/sdb2
Volume group "scvg" successfully created
### --- 查看卷组
~~~ 查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,
~~~ 而 vgdisplay 则是查看卷组的详细状态的。命令如下:
[root@server11 ~]# vgscan
Reading volume groups from cache.
Found volume group "scvg" using metadata type lvm2
~~~ scvg 的卷组确实存在
[root@server11 ~]# vgdisplay
--- Volume group ---
VG Name scvg // 卷组名
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 // PE 大小
Act PV 2 // PE 总数
VG Size 49.99 GiB // 已用 PE 数量/大小
PE Size 4.00 MiB // 空闲 PE 数量/大小
Total PE 12798
Alloc PE / Size 0 / 0
Free PE / Size 12798 / 49.99 GiB
VG UUID sBxwdY-vqhF-rGTz-6MkL-r8uq-S9lT-R4oN5A
### --- 增加卷组容量
[root@server11 ~]# vgextend scvg /dev/sdb3
Volume group "scvg" successfully extended
~~~ 把/dev/sdb7 物理卷也加入 scvg 卷组
[root@server11 ~]# vgdisplay
VG Size <74.99 GiB // 卷组容量增加
PE Size 4.00 MiB
Total PE 19197 // PE 总数增加
Alloc PE / Size 0 / 0
Free PE / Size 19197 / <74.99 GiB
VG UUID sBxwdY-vqhF-rGTz-6MkL-r8uq-S9lT-R4oN5A
### --- ——>实验环境,生产环境不操作<——
### --- 减小卷组容量(理论上可以缩减容量,但是不建议操作)
~~~ 在卷组中删除/dev/sdb7 物理卷
~~~ 删除所有的未使用物理卷
[root@server11 ~]# vgreduce scvg /dev/sdb3
Removed "/dev/sdb7" from volume group "scvg"
[root@server11 ~]# vgreduce -a
### --- 删除卷组
~~~ 卷组删除之后,才能删除删除物理卷。还要注意的是 scvg 卷组还没有添加任何的逻辑卷,
~~~ 那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?
~~~ 删除就是安装的反过程,每一步都不能跳过。
[root@server11 ~]# vgremove scvg
Volume group "scvg" successfully removed
三、逻辑卷管理
### --- 建立逻辑卷
~~~ 选项:
~~~ -L 容量:指定逻辑卷大小,单位 MB,GB,TB 等
~~~ -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
~~~ -n 逻辑卷名:指定逻辑卷名
~~~ 那我们就建立一个 1.5GB 的 userlv 逻辑卷吧,建立命令如下:
[root@server11 ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
[root@server11 ~]# lvcreate -L 15G -n sclv scvg
Logical volume "sclv" created.
### --- 在 scvg 卷组中建立 1.5GB 的 userlv 逻辑卷
~~~ 建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。
~~~ 格式化和挂载命令和操作普通
~~~ 分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,
~~~ 如我们的 userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root@server11 ~]# mkfs -t ext4 /dev/scvg/sclv
~~~ 格式化
[root@server11 ~]# mkdir /disklvm
[root@server11 ~]# mount /dev/scvg/sclv /disklvm/ // 临时生效,若是想要永久生效,需要写入配置文件中
~~~ 建立挂载点,并挂载
~~~ 已经挂载了
~~~ 当然如果需要开机自动挂载,也要修改/etc/fstab 文件。
[root@server11 ~]# mount
~~~ …省略部分输出…
/dev/mapper/scvg-sclv on /disklvm type ext4 (rw,relatime,data=ordered)
[root@server11 ~]# df -h
/dev/mapper/scvg-sclv 15G 41M 14G 1% /disklvm
### --- 查看逻辑卷
~~~ 同样的查看命令是两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:
[root@server11 ~]# lvscan
ACTIVE '/dev/scvg/sclv' [15.00 GiB] inherit
~~~ 能够看到激活的逻辑卷,大小事 15GB
~~~ 第二个命令是 lvdisplay 可以看到逻辑卷的详细信息,命令如下:
[root@server11 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/scvg/sclv // 逻辑卷设备文件名
LV Name sclv // 逻辑卷名
VG Name scvg // 所属的卷组名
LV UUID 3pZWtG-EjAk-1BGd-YyrO-xhos-iZJe-9tSQSV
LV Write Access read/write
LV Creation host, time server11, 2021-03-17 23:51:17 +0800
LV Status available
# open 1
LV Size 15.00 GiB // 逻辑卷大小
Current LE 3840
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
### --- 调整逻辑卷大小
~~~ 选项:
~~~ -L 容量:安装容量调整大小,单位 KB,GB,TB 等。使用+代表增加空间,-号代表减少空间。
~~~ 如果直接写容量,代表设定逻辑卷大小为指定大小。-l 个数:按照 PE 个数调整逻辑卷大小
~~~ 我们先在/disklvm 中建立点文件,一会调整完大小,我们看看数据是否会丢失:
[root@server11 ~]# lvresize [选项] 逻辑卷设备文件名
[root@server11 ~]# cd /disklvm/
[root@server11 disklvm]# touch testf
[root@server11 disklvm]# mkdir testd
[root@server11 disklvm]# ls
lost+found testd testf
~~~ 我们刚刚的 userlv 的大小事 1.5GB,我们的 scvg 中还有 1.5GB 的空闲空间,
~~~ 那么增加我们的userlv 逻辑卷的大小到 2.5GB 吧:
[root@server11 ~]# lvresize -L 20G /dev/scvg/sclv
Size of logical volume scvg/sclv changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
Logical volume scvg/sclv successfully resized.
~~~ 增加 userlv 逻辑卷的大小到 20GB
~~~ 当然命令也可以这样写
[root@server11 ~]# lvresize -L +10G /dev/scvg/sclv
Size of logical volume scvg/sclv changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).
Logical volume scvg/sclv successfully resized.
[root@server11 ~]# lvdisplay
LV Size 30.00 GiB // 大小改变,我们调整了两次:15G+5G+10G=30G
~~~ 逻辑卷的大小已经改变了,但是好像有些问题啊:
~~~ 怎么/disklvm 分区的大小还是 1.5GB 啊?刚刚只是逻辑卷的大小改变了,
~~~ 如果需要让分区使用这
~~~ 个新逻辑卷,我们还要使用 resize2fs 命令来调整分区的大小。
~~~ 不过这里就体现了 LVM 的优势,我们不需要卸载分区,
~~~ 直接就能调整分区的大小。resize2fs 命令如下:
[root@server11 ~]# df -h /disklvm/
~~~ 文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-sclv 15G 41M 14G 1% /disklvm // 大小发生了变化,需要把
~~~ 选项:
~~~ -f:强制调整
~~~ 设备文件名:指定调整哪个分区的大小
~~~ 调整的大小:指定把分区调整到多大,要加 M,G 等单位。如果不加大小,会使用整个分区
~~~ 那么我们已经把逻辑卷调整到了 2.5GB,
~~~ 这时我们就需要把整个逻辑卷都加入/disklvm 分区,命令如下:
[root@server11 ~]# resize2fs [选项] [设备文件名] [调整的大小]
[root@server11 ~]# resize2fs /dev/scvg/sclv
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/scvg/sclv is mounted on /disklvm; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/scvg/sclv is now 7864320 blocks long.
~~~ 已经调整了分区大小
[root@server11 disklvm]# df -h /disklvm/
~~~ 文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-sclv 30G 44M 28G 1% /disklvm #变为30G
~~~ 分区大小已经是 30GB 了
~~~ 而且数据并没有丢失
[root@server11 ~]# ls /disklvm/
lost+found testd testf
### --- 删除逻辑卷
~~~ 我们删除 userlv 这个逻辑卷,记得删除时要先卸载。命令如下:
[root@server11 ~]# lvremove 逻辑卷设备文件名
[root@server11 ~]# umount /dev/scvg/userlv
[root@server11 ~]# lvremove /dev/scvg/userlv
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv005-basic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」