lvm讲解
LVM实现流程案例
A、B两块硬盘,A划分成了两个磁盘分区(两个物理卷,卷1和卷2),B划分了1个磁盘分区(一个物理卷,卷3);
然后在物理卷的基础上组成了两个卷组,一个卷组(卷组实际就是物理卷的一个集合)由卷1构成,一个卷组由卷2和卷3构成;
在卷组的基础上把卷组1划分成逻辑卷1,卷组2划分成了逻辑卷2和逻辑卷3;
最终在逻辑卷的基础上进行格式化,然后挂载到系统中使用;
一、准备磁盘分区
1、添加硬盘;fdisk /dev/sdb,如果已经创建并挂载,那解除挂载,删除分区;
2、n 创建三个新的磁盘分区,分别设置1G;
3、t 改变分区类型为8e,8e是数字代号,实际就是LVM类型;
解除/dev/sdb的挂载(如果这里不解除挂载后面会出现无法创建lvm物理卷的问题)
创建好一个新的磁盘分区后,ID号是83,这里需要改变类型为8e(8e是LVM的类型代号)。
输入t,设置分区类型代码8e;
划分好三个LVM类型分区;
# fdisk -l /dev/sdb 查看是否划分好三个分区;
yum 搜索,在仅知道命令不知道报名称的情况下安装包
我们知道创建LVM的物理卷需要用 pvcreate命令,但是发现包没有安装,那通过yum命令可以查找,
# yum provides "/*/pvcreate"
引号里面的第一个斜杠/表示目录,*星号表示通配,然后是命令pvcreate,这样看来provides后面跟的就是一个命令的绝对路径和/bin/ls一样,只是这里并不清除绝对路径是哪里,所以中间用通配星号*来表示;
查询结果可以看到包的版本号,等信息,名字是lvm2
然后就可以安装了。
二、创建物理卷
partprobe
创建完分区后/dev/sdb1路径可能没有自动生成,默认会自动生成,有时候会不生成(如果前面我我们没有把/dev/sdb从/mnt/下解除挂载,那这里就不会自动生成),用partprobe可以生成,但是还是要解除挂载才能进行后续操作。
1、 pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
把三个划分好的磁盘分区创建成物理卷;
2、pvdisplay 列出当前所有的物理卷的详细信息
# pvdisplay /dev/sdb1
也可以加上路径显示单个物理卷的详细信息;
pvs
pvs显示当前所有物理卷的简要信息;
pvs 路径 显示当前路径的物理卷的简要信息;
pvremove
pvremove /dev/sdb3 删除物理卷
三、创建物理卷组
vgcreate [卷组名称] [加入卷组的物理卷1] [加入卷组的物理卷2] ...
vgdisplay,显示卷组的信息;
vgs,显示卷组的基本信息;
vgremove,删除卷组;
用sdb1和sdb2两个物理卷创建一个卷组vg1;
vgs,显示卷组的基本信息;
[root@colinLinux_01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
vgdisplay,显示卷组的信息;
[root@colinLinux_01 ~]# vgdisplay
--- Volume group ---
VG Name vg1
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 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1.99 GiB
VG UUID OuIMgQ-o0lb-2qAk-y3ef-xEeI-WcUe-cDMmsR
四、创建逻辑卷
lvcreate
lvcreate [选项] [物理卷组]
选项:-L <大小>:-L 100M
-n <名称>:-n lv1
lvcreate -L 100M -n lv1 vg1
创建100M大小的逻辑卷
格式化创建文件系统
mkfs.ext4 /dev/vg1/lv1
[root@colinLinux_01 ~]# lvcreate -L 100M -n lv1 vg1
Logical volume "lv1" created.
[root@colinLinux_01 ~]# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
挂载文件系统
mount /dev/vg1/lv1 /mnt/
df -h 查看一下
最下面看到已经挂载上了,但是名字有些变化;
进一步查看可以发现,实际是系统做了软连接两个文件指向的是同一个文件;
五、扩容逻辑卷(非xfs格式)
对逻辑卷做一些操作,创建一些文件;
首先把文件系统解除挂载umount /dev/vg1/lv1
lvresize
lvresize -L 200M /dev/vg1/lv1 重新设置卷大小,-L设置的是最新的大小;
e2fsck
e2fsck -f /dev/vg1/lv1 检查磁盘错误(针对磁盘类型是ext4执行);
resize2fs /dev/vg1/lv1 更新逻辑卷信息(针对磁盘类型是ext4),如果不更新,那挂载的时候不能识别新的大小;
重新挂载后发现,大小变为了200M,扩容成功;
原来文件还在,扩容并不影响原来的文件;
缩减逻辑卷(xfs不支持缩减逻辑卷)
先解除挂载umount
e2fsck -f /dev/vg1/lv1 然后检查磁盘是否有错误(ext)
resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)
lvresize -L 100M /dev/vg1/lv1 重新设置卷大小
lvs查看逻辑卷大小又变为了100M
挂载后发现磁盘变小,文件没有收到损坏;
xfs扩容
解除磁盘挂载umount
mkfs.xfs -f /dev/vg1/lv1重新格式化
mount /dev/vg1/lv1 /mnt 挂载文件系统
touch xxx创建新文件
lvresize -L 300M /dev/vg1/lv1 扩容xfs的时候不需要解除挂载;
df -h发现没有;
想要显示增加容量,需要执行xfs_growfs /dev/vg1/lv1
再次df -h查看就变为了300M;
查看文件正常;
扩展卷组
vgdisplay 显示卷组详细信息;
vgs 显示卷组基本信息;
上面使用了sdb1和sdb2组成了卷组vg1,现在把sdb3加入卷组达到扩展的目的;
vgextend
向物理卷组增加物理卷
vgextend vg1 /dev/sdb3
vgs查看卷组信息,大小增加了1G
lvresize
然后在根据卷类型是xfs还是其他格式,按照上面流程扩容逻辑卷;
lvresize -L 900M /dev/vg1/lv1 重新设置卷大小;
磁盘故障小案例
lvm试验后,和先前在/etc/fstab中设置的一行冲突,导致系统启动时候磁盘不能正常挂载到挂载点,出现一下开机不正常现象,vmware不支持中文,所以显示也有问题,这里是输入root密码;
输入密码后进入系统虽然显示和正常一样,但是问题还在,需要把/ect/fstab修改掉;
修改时候就是删除/dev/sdb相关的配置;
重启reboot恢复正常