背景:对磁盘的管理,Linux下面一般分区采用两种方式,一是直接分区,二是借助于LVM,LVM的优势是对磁盘的管理更灵活,对分区的扩容更简单。
思路:建立LVM,对LVM进行扩容及减容操作
步骤:建立LVM、扩大LVM容量、减少LVM容量
一、建立LVM逻辑卷
1.LVM相关命令及图解
正常系统下面:
Scan 查看 |
pvscan |
vgscan |
lvscan |
Create 创建 |
pvcreate |
vgcreate |
lvcreate |
Display 显示 |
pvdisplay |
vgdisplay |
lvdisplay |
Remove 还原 |
pvremove |
vgremove |
lvremove |
Extend 扩展 |
pvextend |
vgextend |
lvextend |
Change 改变 |
lvchange |
-a -n |
-a -y |
急救模式下面:
Scan 查看 |
lvm pvscan |
lvm vgscan |
lvm lvscan |
|
|
|
|
Display 显示 |
lvm pvdisplay |
lvm vgdisplay |
lvm lvdisplay |
Change 改变状态 |
lvm lvchange |
-a -n |
-a -y |
|
|
改状态为非活动 |
激活逻辑卷 |
2.LVM关系模型图
官方:
网友提练(借用一下,呵呵)
3.建立PV,物理卷
A、建立以分区为基础的物理卷
先使用fdisk分区,
命令:
fdisk /dev/sdb
fdisk /dev/sdc
如图:
建立物理卷
命令:
pvcreate /dev/sdb1 /dev/sdc1
如图:
B、直接建立以硬盘为基础的物理卷
命令:
pvcreate /dev/sdd
如图:
C、查看物理卷信息
使用pvscan查看基本信息
命令:pvscan
这里查看到的PV /dev/sdb1 /dev/sdc1 已经加入VG xeam里面了。/dev/sdd还是独立的PV,没有加入任何VG组
使用pvdisplay查看详细信息
如图:
直接用pvdisplay查看所有的PV,如上图 也可以在后面跟参数,如:pvdisplay /dev/sdb1
如下图:
这两图里有些区别,就是加入组的PV,在VG Name那里会显示VG的名称,而没有加入VG组的,VG Name那里则是空着的,而且Allocateble那里也是no,而加入的则是yes
4.建立VG
A、使用vgcreate建立VG
命令:
vgcreate vgname pv
如: vgcreate exam /dev/sdb1 /dev/sdc1 这条命令就是把/dev/sdb1 /dev/sdc1 加入exam为名称的VG里面
如下图:
B、使用vgdisplay查看
命令:
vgdisplay #查看所有
这里查看到了两个VG,一个是我们创建的exam,一个是系统本身的VolGroup00
使用vgdisplay 参数 查看单个VG
如:vgdisplay /dev/exam
C、使用vgscan查看简单信息
5.建立LV逻辑卷
A、使用lvcreate
命令:
lvcreate -L 800 -n data0 exam ----> 从VG:exam里建立名称为data0 容量为800M的逻辑卷
如图:
如果使用的是 -l 那么大小应该如下:
命令:
lvcreate -l 10 -n data1 exam ---->从VG:exam里建立名称为data1 容量为40M的逻辑卷
如图:
这里的容量为什么是40M?
-l 10:生成的逻辑卷使用10个扩展块,逻辑卷大小=10*PE(默认是4M) 则为40M
如下图:
B、使用lvdisplay查看地逻辑卷信息
查看单独的逻辑卷:
命令:
lvdisplay /dev/exam/data0
如图:
6.格式化逻辑卷,以备使用
命令:
mkfs.ext3 /dev/exam/data0
如图
7.挂载
建立挂载点 挂载 查看挂载分区
命令:
mkdir /data0
mount /dev/exam/data0 /data0
df -h
如图:
向/data里写入一个文件
命令:
touch /data0/1.txt
echo abcdeseflkdslke > /data0/1.txt
cat /data0/1.txt
如图:
到此为止,新建一个LVM逻辑卷就完成了。
二、扩容LVM
下面对LVM进行一些基本的管理,如:扩大LVM逻辑卷容量,减少LVM逻辑卷容量
1.在开始之前,讲述一下基本原因,以一个比喻为例子:
我们把LVM逻辑卷比喻成一个水桶,文件系统为水桶里面的水,水桶由木材制成,木材由树木制成
图解:
这里不知道我有没有说明白,呵呵
重点:两个顺序
A、建立LV的时候 考虑的顺序是从下到上
B、扩容LV的时候,考虑的顺序要从上到下
扩容:
检查VG容量是否有可用容量---- 有 ----> 扩容LV--->检查文件系统--->扩容文件系统
| ^
| |<--------------------------|
| |
|--- 无 --->增加PV(块设备或者分区)--->扩容VG-->扩容LV
2.扩容LV至1.5G
A、检查VG
命令:
vgdisplay exam
从图片上看,VG的总容量是984M,已使用840M(Alloc PE /Size) 可用144M(Free PE / Size)
这对于我们要扩容到1.5G的容量来说,可用的容量太少,我们要增加VG的容量,就要增加PV
B、增加PV
使用fdisk /dev/sdb fdisk /dev/sdc 增加两个512M的分区
命令:
fdisk /dev/sdb
fdisk /dev/sdc
如图:
这里就只贴一张图了,fdisk /dev/sdb是一样的做法
查看:
命令: fdisk -l
建立PV
命令:
pvcreate /dev/sdb2 /dev/sdc2 # 把分区 /dev/sdb2 /dev/sdc2制作成PV,以供VG使用
出现这个错误是因为刚才的分区没有被内核识别到,可以用cat /proc/partitions查看,使用partprobe更新分区信息
命令:
cat /proc/partitions # 查看系统分区信息
partprobe # 更新系统分区信息
如图:
可以使用cat /proc/partitions再次检查,再次使用pvcreate
可以使用pvdisplay查看,这两个PV暂时不属于任何VG,
C、扩容VG
现在我们要使用vgextend来扩展VG的容量,并使用vgdisplay exam查看 VG容量
命令:
vgextend exam /dev/sdb2 /dev/sdc2 # 扩容VG exam
vgdisplay exam # 查看VG exam 信息
如图:
从图片看,VG的容量已经扩大至1.92G了,这对于我们把LV扩容至1.5G,有足够的可用容量了。
D、扩容LV
使用lvextend命令,并使用lvdisplay查看
命令:
lvextend -L 1.5G /dev/exam/data0 # 扩容
lvdispaly /dev/exam/data0 # 检查
如图:
从图片上看 LV的容量已经扩大至1.5G(LV Size 1.5GB)
E、检查文件系统完整性
使用e2fsck
命令:
e2fsck -f /dev/exam/data0 #检查文件系统的完整性
如图:
正常,如果有问题,会报错误信息
F、扩容文件系统
使用resize2fs
命令:resize2fs -p /dev/exam/data0 # 扩容文件系统 -p 是指在线扩容
如图:
在线扩容成功
使用df -h查看
命令:df -h
已经扩容到1.5G了,上面所有的操作都是离线操作的,也就是说/dev/exam/data0是没有挂载的,在线也是可以扩容的,只是会有几个警告信息,如下图,我在线扩容了/dev/exam/data1
其中lvextend我使用了另一种方式 就是: -L +40M 意思是说在原来的容量基础上增加40M
如图:
上图中,在检查文件系统的完整性的时候会有一个警告信息,其它都差不多。
三、减少LV容量
1.这里还是借用前面的那个比喻:
图解(跟上面的图是同一个)
重点:
要减少LV的容量,必须先减少文件系统的容量(要减少水桶的容量,首先得减少水的体积,不然水就溢出来了)
减少容量:
检查LV的容量-->umount文件系统-->检查文件系统-->减少文件系统-->使用lvscan -a查看LV状态-------> 变LV的状态为非活动状态--->减少LV容量---变LV的状态为活动状态---挂载
2.减少LV容量,这里我们要把它减少到1G,也就是说减少500M的容量
A、查看LV容量
命令:
lvdisplay /dev/exam/data0
如图:
从上图看到 LV的容量是1.5G
B、umount文件系统,并使用df -h
命令:
umount /data0 # umount /dev/exam/data0
df -h # 查看挂载情况
如图:
从图上看到,/dev/exam/data0已经umount了
C、检查文件系统
命令:
e2fsck /dev/exam/data0
如图:
D、减少文件系统
命令:
e2fsck -f /dev/exam/data0
resize2fs /dev/exam/data0 1G #将 LV的容量减少至1G
如图
E、变LV的状态为非活动状态
命令:
lvscan -a # 查看LV状态
lvchange -a n /dev/exam/data0 # 把LV状态变为非活动状态
如图:
从上图看 /dev/exam/data0的状态已为 inactive
F、减少LV容量
命令:
lvreduce -L 1G /dev/exam/data0
如图
G、激活LV,并挂载
命令:
lvchange -a y /dev/exam/data0 #激活LV
lvscan -a #查看LV状态
mount /dev/exam/data0 /data0 #挂载LV
df -h #查看挂载是否正常
touch /data0/test.txt #写操作
echo "abcdef" > /data0/test.txt#写操作
cat /data0/test.txt #读操作
如图:
上图所示,一切正常
到此为止,LVM的基本管理已经全部完成。