LVM讲解(扩容缩容)
概念:LVM是logical volume manager的缩写(逻辑分区),方便对于对圈组、逻辑卷的大小进行调整,更进一步调整文件系统的大小。优点:在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。
准备磁盘分区,先把硬盘umount
第一步:添加硬盘进行分区:
[root ~]# fdisk /dev/sdb
第二步:创建三个新分区,分别是1G, n
第三步:-t 改变分区类型为8e(LVM),只有这样才可以做物理卷
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):1 Hex 代码(输入 L 列出所有代码):8e . 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 8e Linux LVM /dev/sdb2 2099200 4196351 1048576 8e Linux LVM /dev/sdb3 4196352 6293503 1048576 8e Linux LVM
接下来准备物理卷
安装个命令 pvcreate(创建物理卷、列出当卡物理卷、删除物理卷)如果在这里你知道这个命令,但是你安装不了这个包,那就使用如下命令安装,利用通配的命令安装
[root ~]# yum provides "/*/pvcreate" 根下所有文件里面pvcreate的命令
[root ~]# yum install -y lvm2 #ok,依赖包都安装完毕
如果创建完分区后,目录下并没有这个路径,使用 partprobe添加进去
[root ~]# ls /dev/sdb1
ls: cannot access /dev/sdb1: No such file or directory #没有那个文件或目录 [root ~]# partprobe 添加分区的路径,自动生成 [root@localhost ~]# ls /dev/sdb1 查看分区是否存在 /dev/sdb1
接下来把三个分区,全部改成物理卷
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created. #已成功创建物理卷 [root@localhost ~]# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created. #已成功创建物理卷 [root@localhost ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created. #已成功创建物理卷
**物理机创建完成以后,用pvdisplay查看一下物理卷**
[root@localhost ~]# pvdisplay
或者root@localhost ~]# pvs
创建卷组vgcreate vg1 /dev/sdb1 /dev/sdb2,vg1是卷组的名字
[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created #创建成功
查看卷组的信息 vgdisplay或者vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree vg1 2 0 0 wz--n- 1.99g 1.99gvgremove 删除卷组的命令
创建逻辑卷
[root@localhost ~]# lvcreate -L 100M -n lv1 vg1
Logical volume "lv1" created. #创建成功lvcreate创建逻辑卷,-L 100M指定大小,-n lv1 逻辑卷的名字,vg1从卷组里面调用出来
格式化成mkfs.ext4,适合做扩容
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
挂载逻辑卷
[root@localhost ~]# mount /dev/vg1/lv1 /mnt/ #挂载到/mnt/下
[root@localhost ~]# df -h #查看挂载 Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.1G 17G 7% / devtmpfs 483M 0 483M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 6.8M 486M 2% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/sda1 197M 97M 100M 50% /boot tmpfs 99M 0 99M 0% /run/user/0 /dev/mapper/vg1-lv1 93M 1.6M 85M 2% /mnt #这里名字怎么跟挂载的不一样呢,下面会解释
用ls -l 查看一下这俩个路径的依赖关系。
实际上这俩个路径都指向了一个文件
.
下面来做一下扩容的操作,先创建个目录和文件[root@localhost ~]# mkdir /mnt/111 #创建个目录
[root@localhost ~]# touch /mnt/222.txt #创建个文件 [root@localhost ~]# echo "123123123" > /mnt/222.txt #给文件里追加文字
扩容逻辑卷
重新设置卷大小,先umount
[root@localhost ~]# lvresize -L 200M /dev/vg1/lv1
检查磁盘错误 (ext4执行)
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes #检查inodes,块和大小 Pass 2: Checking directory structure #检查目录结构 Pass 3: Checking directory connectivity #检查目录链接 Pass 4: Checking reference counts #检查引用计数 Pass 5: Checking group summary information #检查组摘要信息 /dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks
更新逻辑卷信息,如果不更新,再挂载的时候无法更新新的大小(ext4执行)
[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks. #调整文件系统到204800(1K)块的大小 The filesystem on /dev/vg1/lv1 is now 204800 blocks long. #文件系统上 现在是204800大小。
挂载,在查看文件大小
[root@localhost ~]# !mount
mount /dev/vg1/lv1 /mnt/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.1G 17G 7% / devtmpfs 483M 0 483M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 6.8M 486M 2% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/sda1 197M 97M 100M 50% /boot tmpfs 99M 0 99M 0% /run/user/0 /dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt #注意这一行,容量是190M,已使用1.6M,可用175M. 修改完成。
再看看刚才创建的文件还存在吗
[root@localhost ~]# ls /mnt/
111 222.txt lost+found [root@localhost ~]# cat /mnt/222.txt 123123123
缩减逻辑卷(xfs不支持)
先umount 不挂载
[root@localhost ~]# umount /mnt/
检查磁盘错误
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes #检查inodes,块和大小 Pass 2: Checking directory structure #检查目录结构 Pass 3: Checking directory connectivity #检查目录链接 Pass 4: Checking reference counts #检查引用计数 Pass 5: Checking group summary information #检查组摘要信息 /dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks
更新逻辑卷信息
[root@localhost ~]# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg1/lv1 to 102400 (1k) blocks. The filesystem on /dev/vg1/lv1 is now 102400 blocks long.
重新设置卷大小
[root@localhost ~]# lvresize -L 100M /dev/vg1/lv1
WARNING: Reducing active logical volume to 100.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg1/lv1? [y/n]: y #这里询问可能会对文件造成数据丢失,是否还需要执行,测试就选y就可以了 Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents). #逻辑卷已从200M缩减成100MLogical volume vg1/lv1 successfully resized. #调整大小成功**
然后lvs看一下逻辑卷大小是否修改完成
接下来挂载
[root@localhost ~]# mount /dev/vg1/lv1 /mnt/
↑↑↑↑↑ 如上内容只针对etf4、3、2 ↑↑↑↑↑
.
xfs文件扩容
首先 更新逻辑卷信息,需取消挂载umount
[root@localhost ~]# mkfs.xfs -f /dev/vg1/lv1
再次挂载,查看里面是否有文件(因为是空的,正常是没有) 创建个文件和目录
[root@localhost ~]# !mount #挂载
mount /dev/vg1/lv1 /mnt/ [root@localhost ~]# ls /mnt/ #查看挂载目录里是否有东西 [root@localhost ~]# mkdir /mnt/123 #创建目录123 [root@localhost ~]# touch /mnt/222.txt #创建文件222.txt [root@localhost ~]# echo "213aa" > /mnt/222.txt 给文件222.txt追加内容 [root@localhost ~]# ls /mnt/ #查看目录下的文件及目录 123 222.txt [root@localhost ~]# cat /mnt/222.txt #查看文件内容 213aa
lvs查看现在有多大
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 vg1 -wi-ao---- 100.00m #现有100M注:xfs不需要卸载,直接添加大小即可,跟ext不一样。
扩容大小300M
[root@localhost ~]# xfs_growfs -L 300M /dev/vg1/lv1
现在查看 大小还没有变
xfs文件系统需要执行 xfs_growfs /dev/vg1/lv1
df -h 看挂载大小是否成功
ok,成功,300M
.
扩展卷组
查看现在的卷组大小 vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree vg1 2 1 0 wz--n- 1.99g <1.70g
之前分区分了3个,还有一个没有用,先扩容卷组
[root@localhost ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
查看现在多大
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg1 3 1 0 wz--n- <2.99g <2.70g现在是3个G了
再重新设置卷大小
[root@localhost ~]# lvresize -L 100M /dev/vg1/lv1