LVM管理
1、LVM的工作原理
基本概念
生产环境中,如果存储数据的分区是满了,那应该如何处理?
- 可以更换一个硬盘,然后时间过了一部分,发现硬盘又满了,然后再加一个硬盘数据;
- 这个过程–>涉及了数据丢失,容易丢失,换硬盘的过程中也涉及挂载,识别等等问题,极度影响效率
- 那么最佳的方案就是LVM动态在线扩容
LVM的工作原理
LVM的全称是Logical Volume Manager逻辑卷管理,主要的作用就是在硬件与系统之间添加一个层面,用于制造一个逻辑盘卷;
可以不用重新分区的情况下动态扩容文件系统的大小,当服务器添加了硬盘后,可以通过LVM的形式扩展分区的大小;
底层当然是硬件硬盘,但是接入系统的时候会出现一个逻辑卷的概念,就是把硬盘封装成逻辑卷,再由逻辑卷来给系统分区进行扩容缩容等等;
LVM的命令介绍
物理硬盘就是存储介质,可以把磁盘磁盘分区、创建文件系统挂载,也可以直接初始化为物理卷,然后才能使用LVM的形式使用;
物理卷:PV–>physical volume;物理卷就是LVM的基本逻辑块,与物理存储介质比较,物理卷pv就具备LVM相关的管理参数;
卷组VG–>volume group:一个LVM卷组是有多个物理卷组成的
逻辑卷LV–>logical volume:需要建立在卷组之上;实际上系统使用的层面就是LV层面;
PE:PV物理卷中,可以分配的最小存储单元,PE的大小是可以指定的,默认的是4KB
LE:lv逻辑卷中可以分配的最小存储单元,在同一个卷组中,LV的大小和PE是相同的,并且一一对应;
计算机中有哪些最小存储单元?
- 硬盘:最小的是扇区512字节–>这个是物理构造了
- 文件系统:最小的是block(1k或者是4k)
指定的方式:mkfs.ext4 -b 2048 /dev/sdb1 - raid:chunk(512k)
指定的方式:mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x /dev/sde{1,2,3,4} - LVM:PE 4M
指定的方式:vgcreate -s 4M vg1 /dev/sdb{1,2}
目前多数使用的情况
多个磁盘/分区–>做成raid–>然后做成物理卷(PV)–>然后组成卷组(VG)–>然后形成逻辑卷(LV)–>格式化–>挂载使用;
LVM的优点
1. 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
2. 可以在系统运行的状态下动态的扩展文件系统的大小。
3. 可以增加新的磁盘到LVM的存储池中。
4. 可以以镜像的方式冗余重要的数据到多个物理磁盘。
5. 可以方便的导出整个卷组到另外一台机器。
LVM的缺点
1. 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
2. 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
3. 因为加入了额外的操作,存贮性能受到影响。
2、LVM介绍
创建LVM步骤
正如上面所说,如果要使用LVM管理就必须创建物理卷(PV)卷组(VG)逻辑卷(LV)
第一步:需要先把硬盘格式化为PV
第二步:把多个PV放入卷组,形成大的卷组;
第三步:需要创建LV逻辑卷
最后一步:就是该挂载的挂载,该使用的使用;
创建LVM
第一步:创建分区(提前添加几块硬盘,随便几块都行,这里以一块为例)
#查看添加硬盘是否成功
[root@localhost ~]# ls /dev/sde
/dev/sde
#添加成功,接下来进行分区
[root@localhost ~]# fdisk /dev/sde
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
#这里我在这之前就已经分区了,实际上也就是按三下回车就行,第一下默认选择分区号为1,后两下默认选择所有剩余磁盘空间
Partition number (2-4, default 2):
No free sectors available
#w保存并退出
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#再次检查是否成功
[root@localhost ~]# ls /dev/sde*
/dev/sde /dev/sde1
第二步:创建物理卷
LVM的管理需要有物理卷、卷组,已经逻辑卷,所以创建号分区之后需要把分区创建为物理卷
pvcreate 空格 磁盘的位置及名称数字 #创建pv
pvscan --扫描pv
pvdisplay --显示pv
[root@localhost ~]# pvcreate /dev/sde1
Physical volume "/dev/sde1" successfully created.
#pvs查看简单信息
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sde1 lvm2 --- 1023.00m 1023.00m
#pvdisplay查看信息
[root@localhost ~]# pvdisplay查看详细信息,实际情况中可供需求选择
"/dev/sde1" is a new physical volume of "1023.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sde1
VG Name
PV Size 1023.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID aBJTjz-EDZf-si1H-xAEv-dGOL-zMFV-iQECRU
第三步:创建卷组
接下来需要将创建号的物理卷组成一个卷组,方便后续扩容使用。
vgcreate 空格 vg的名称 空格 pv的名称 #用pv创建vg
vgscan --扫描vg
vgdisplay --显示vg
#这里vg01是vg的名称,自己取名,后续需要使用
[root@localhost ~]# vgcreate vg01 /dev/sde1
Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID BaoYLc-rMvl-8THB-W3g5-vaZx-WixC-lNQjwV
第四步:创建逻辑卷
卷组创建成功后还需要创建lv,lv才是最后挂载使用的。
lvcreate 空格 -L 空格 +大小 空格 -n lv的名称 空格 vg的名称
-L:指定具体的逻辑卷大小
-n:指定逻辑卷的名称
lvscan #这两个同上,就不多赘述了
lvdisplay
#同上,lv01为自己取名,后续需要使用
[root@localhost ~]# lvcreate -L 16M -n lv01 vg01
Logical volume "lv01" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 16.00m
第五步:格式化逻辑卷并挂载
mkfs [.文件系统类型] 空格 lv的名称
vi 空格 /etc/fstab
源 挂载点 auto defaults 0 0
格式化,并创建文件系统,ext4
[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
4096 inodes, 16384 blocks
819 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=16777216
2 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
#创建挂载点
[root@localhost ~]# mkdir /mnt/lv01
#将创建好的逻辑卷挂载到挂载点
[root@localhost ~]# mount /dev/vg01/lv01 /mnt/lv01/
#写配置文件
[root@localhost ~]# vi /etc/fstab
#这是我按照我自己的格式写的,可以仿照这个格式来写
/dev/vg01/lv01 /mnt/lv01 auto defaults 0 0
#写完:wq保存并退出
#使配置文件生效
[root@localhost ~]# mount -a
#查看,可以发现有/dev/mapper/vg01-lv01,说明挂载成功
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 482100 0 482100 0% /dev
tmpfs 497836 0 497836 0% /dev/shm
tmpfs 497836 8712 489124 2% /run
tmpfs 497836 0 497836 0% /sys/fs/cgroup
/dev/sda3 18555904 4381668 14174236 24% /
/dev/sda1 303780 155536 148244 52% /boot
tmpfs 99568 36 99532 1% /run/user/0
/dev/sr0 4600876 4600876 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg01-lv01 14839 268 13425 2% /mnt/lv01
[root@localhost ~]#
以下的内容是作者上课记的一点笔记,因为我是新手,所以具体内容作者也不清楚,大家看个乐子吧。
使用逻辑卷
- 挂载逻辑卷
- 检查
lost+found
df - 扩展逻辑卷
lvextend 空格 -L 空格 +大小 空格 lv的名称 (扩)
lvreduce 空格 -L 空格 -大小 空格 lv的名称 (缩,不建议)
resize2fs 逻辑卷的位置及名称
xfs_groups 逻辑卷的位置及名称 - 增删改查
- 也可以扩充或缩减卷组
vgextend 卷组的名称 物理卷的名称
本文参照CSDN博主「Liang_GaRy」的原创文章,原文链接:https://blog.csdn.net/Liang_GaRy/article/details/122315427
仅供自己学习使用,如需转载,请备注来源,欢迎大家交流学习。