一、创建逻辑卷
需求:创建一个2.5G大小的==逻辑卷==
思路:
1. 物理的设备
2. 将物理设备做成物理卷 pv
3. 创建卷组并将物理卷加入其中 vg
4. 创建逻辑卷 lv
5. 格式化逻辑卷 mkfs.ext4
6. 挂载使用 mount步骤:
1. 物理设备【如何来分区】
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 2G 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
└─sdb8 8:24 0 2G 0 part2. 创建物理卷
[root@server ~]# pvcreate /dev/sdb1 /dev/sdb2
查看物理卷:
[root@server ~]# pvs 简单查看pvscan
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 2.01g 2.01g
/dev/sdb2 lvm2 a-- 2.01g 2.01g
[root@server ~]# pvdisplay /dev/sdb1 详细查看3. 创建卷组并将物理卷加入其中
[root@server ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
Volume group "vg01" successfully created
查看卷组信息:
[root@server ~]# vgs vg01 简单查看
VG #PV #LV #SN Attr VSize VFree
vg01 2 0 0 wz--n- 4.01g 4.01g
[root@server ~]# vgdisplay vg01 详细查看4. 创建逻辑卷 【重点】
[root@server ~]# lvcreate -n lv01 -L 2.5G vg01
Logical volume "lv01" created
在操作系统层面映射两个地方:
[root@server ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 Jan 7 11:16 /dev/mapper/vg01-lv01 -> ../dm-2
[root@server ~]# ll /dev/vg01/lv01
lrwxrwxrwx 1 root root 7 Jan 7 11:16 /dev/vg01/lv01 -> ../dm-2
结论:其实同时指向了:/dev/dm-2
注意逻辑卷的顺序:
[root@nfs-server dev]# ll /dev/mapper/centos-root
lrwxrwxrwx 1 root root 7 Aug 20 19:37 /dev/mapper/centos-root -> ../dm-0
[root@nfs-server dev]# ll /dev/mapper/centos-swap
lrwxrwxrwx 1 root root 7 Aug 20 19:37 /dev/mapper/centos-swap -> ../dm-1
[root@nfs-server dev]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 Aug 20 19:47 /dev/mapper/vg01-lv01 -> ../dm-2
查看逻辑卷的信息:
[root@server ~]# lvdisplay /dev/vg01/lv01
-n:指定逻辑卷的名字
-L:指定逻辑卷的大小 --size Size[m|UNIT] VG 【常用】
-l:指定逻辑卷的大小 --extents Number[PERCENT]
举例:
-l 100 100个PE,每个PE大小默认4M,故逻辑卷大小为400M 【相对小的lv】
-l 50%free 卷组剩余空间的50%
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 1 0 wz--n- 2.00g 516.00m
创建大小为200M的逻辑卷lv02;每个PE为4M,-l50指定50个PE,大小为200M
[root@server ~]# lvcreate -n lv02 -l50 vg01
Logical volume "lv02" created
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 2 0 wz--n- 2.00g 316.00m
[root@server ~]# lvs /dev/vg01/lv02
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv02 vg01 -wi-a----- 200.00m
创建大小为剩余卷组vg01空间的50%的逻辑卷lv03
[root@server ~]# lvcreate -n lv03 -l50%free vg01
Logical volume "lv03" created
[root@server ~]# lvs /dev/vg01/lv03
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv03 vg01 -wi-a----- 156.00m
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 3 0 wz--n- 2.00g 160.00m5. 格式化逻辑卷
[root@server ~]# mkfs.ext4 /dev/vg01/lv01
6. 挂载使用
1)创建一个空的挂载点
2)挂载使用
[root@server ~]# mount /dev/vg01/lv01 /mnt/u01
二、逻辑卷动态扩容
需求:将/mnt/u01目录动态扩容到3G
思路:
1. 查看/mnt/u01目录所对应的逻辑卷是哪一个 /dev/mapper/vg01-lv01
2. 查看当前逻辑卷所在的卷组vg01剩余空间是否足够
测试:# dd if=/dev/zero of=testfile count=5 bs=1G
3. 如果vg01空间不够,得先扩容卷组,再扩容逻辑卷
4. 如果vg01空间足够,直接扩容逻辑卷步骤:
1. 查看/mnt/u01目录属于哪个卷组
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 2.4G 2.4G 0 100% /mnt/u01[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Conver
lv01 vg01 -wi-ao---- 1.50g
2. 卷组的剩余空间
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 2 0 wz--n- 19.70g 0
vg02 1 1 0 wz--n- 2.00g 516.00m
结果:当前卷组空间不足我扩容3. 扩容逻辑卷所在的卷组
1)首先得有物理设备 /dev/sdb3
2) 将物理设备做成物理卷
# pvcreate /dev/sdb33)将物理卷加入到卷组中(卷组扩容)
[root@web ~]# vgextend vg01 /dev/sdb3
Volume group "vg01" successfully extended
[root@web ~]# pvs
注意:
正常情况下,应该先将/dev/sdb3物理设备创建为物理卷再加入到卷组中;如果直接加入卷组,系统会自动帮你将其做成物理卷。[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 3 3 0 wz--n- <5.99g 2.64g4. 扩容逻辑卷 【第二种方式用的多】
[root@web ~]# lvextend -L 3G /dev/vg01/lv01 -L 3G最终的大小
或者
[root@web ~]# lvextend -L +1.5G /dev/vg01/lv01 -L +1.5G 扩容1.5G5. 查看结果
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg01 -wi-ao---- 17.70g
lv_swap vg01 -wi-ao---- 2.00g
lv01 vg02 -wi-ao---- 3.00g 已经扩容到了3G
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root 18G 5.9G 11G 36% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 291M 33M 244M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
/dev/mapper/vg02-lv01 1.5G 35M 1.4G 3% /u01 实际并没有改变6. 同步文件系统
[root@web ~]# resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /mnt/u01; on-line resizing required 【在线扩容成功】
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 825344 blocks long.7. 再次查看验证
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root 18G 5.9G 11G 36% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 291M 33M 244M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
/dev/mapper/vg02-lv01 3.0G 35M 2.8G 2% /u01 扩容成功
三、离线裁剪逻辑卷(缩容)
[root@server ~]# umount /mnt/u01
如果发现文件被占用了,使用:lsof /mnt/u01 或者 lsof | grep /mnt/u01
[root@server ~]# e2fsck -f /dev/vg01/lv01 检验文件系统
[root@server ~]# resize2fs /dev/vg01/lv01 2G 裁剪文件系统到2G
[root@server ~]# lvreduce /dev/vg01/lv01 -L 2G 裁剪逻辑卷
[root@server ~]# mount /dev/vg01/lv01 /mnt/u01 挂载使用
四、实战
思路: [实战完整流程]
0. 准备好物理设备,并创建一个逻辑卷,大小根据mysql数据库的实际大小再大一些,挂载到系统中
1. 最好在系统维护时间操作(23:00-8:00)
2. 先停止前端应用 LAMP apache
3. 停止mysql数据库(建议备份mysql数据库) [重点]
4. 迁移mysql数据文件步骤:
1. 添加一块物理硬盘[是否需要重启开服务器是否支持热插拔]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 2G 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
└─sdb8 8:24 0 2G 0 part2. 创建大小为8G的逻辑卷
1)创建物理卷
[root@server ~]# pvcreate /dev/sdb[12345]
2)创建卷组vg_mysql
[root@server ~]# vgcreate vg_mysql /dev/sdb[12345]
[root@server ~]# vgs vg_mysql
VG #PV #LV #SN Attr VSize VFree
vg_mysql 5 0 0 wz--n- 9.98g 9.98g
3)创建逻辑卷lv_mysql
[root@server ~]# lvcreate -n lv_mysql -L 8G vg_mysql
[root@server ~]# lvs /dev/vg_mysql/lv_mysql
lv_mysql vg_mysql -wi-a----- 8.00g4)格式化为ext4文件系统
[root@server ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql5)挂载使用
a. 创建一个空的挂载点/u01
[root@server ~]# mkdir /u01
b. 挂载逻辑卷lv_mysql到/u01目录
[root@server ~]# mount /dev/vg_mysql/lv_mysql /u01
3. 停止前端web服务 【如果没有mysql服务,请安装】
# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# yum -y install mysql-community-server
[root@server ~]# systemctl restart mysqld
# netstat -ntlp4. 停止mysql数据库
# systemctl stop mysqld
[root@server ~]# systemctl status mysqld5. 备份mysql数据库到另外一台备份机 (实验环境不是必须)
备份机:10.1.1.2 备份目录:/backup
[root@server ~]# rsync -av /var/lib/mysql 10.1.1.2:/backup/6. 将/usr/local/mysql/目录里的所有数据文件同步到逻辑卷上,即/u01目录
[root@server ~]# rsync -av /var/lib/mysql/ /u01
查看是否同步完成:
[root@server ~]# ls /u01
[root@server ~]# du -sh /u01 查看大小是否和原来mysql数据库大小一致7. 卸载逻辑卷
[root@server ~]# umount /u018. 删除/usr/local/mysql/目录里原来的数据文件
注意:删之前一定要确定成功备份了!!!
[root@server ~]# rm -rf /var/lib/mysql/*9. 挂载逻辑卷lv_mysql到mysql的安装目录/usr/local/mysql
[root@server ~]# mount /dev/vg_mysql/lv_mysql /var/lib/mysql/
开机自动挂载:
vim /etc/rc.local
...
/usr/bin/mount /dev/vg_mysql/lv_mysql /var/lib/mysql/10. 启动数据库
[root@server ~]# systemctl restart mysqld11. 启动web服务
[root@server ~]# systemctl status mysqld12.测试验证
访问之前的网站看是否可以正常访问
ps -ef|grep mysql
lsof -i:3306
systemctl status mysql
netstat -tnlpnetstat -tnlp| grep mysql
ss -tnlp |grep mysql
telnet localhost 3306
systemctl stop mysqld
systemctl status mysqld
五、拓展
扩容swap空间【掌握】
增加一个硬盘或者分区来扩容swap空间
作用: ‘提升' 内存的容量,防止OOM(Out Of Memory) 虚拟内存
设置交换分区大小为内存的2倍
生产(约定)
大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。
查看swap空间大小:
[root@web ~]# free -m
total used free shared buffers cached
Mem: 1861 646 1215 0 9 60
-/+ buffers/cache: 576 1285
Swap: 2047 0 2047
[root@web ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097144 0 -1[root@web ~]# mkswap /dev/sdb8
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=485ff8ad-a636-4556-a2e7-4ee9efc78afb
[root@web ~]# blkid /dev/sdb8
/dev/sdb7: UUID="485ff8ad-a636-4556-a2e7-4ee9efc78afb" TYPE="swap"//激活swap分区。swap空间不能手动挂载
[root@server ~]# swapon /dev/sdb8[root@server ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2031608 0 -1
/dev/sdb7 partition 2064312 0 -2
GTP分区:
==gdisk工具分区==
parted工具分区
# yum install -y gdisk
GPT 128个主分区
1.创建分区
# gdisk -l /dev/sdc
# gdisk /dev/sdc
# partprobe /dev/sdc
# ll /dev/sdc*2.创建文件系统(格式化)redhat7默认使用xfs
# mkfs.xfs /dev/sdc13.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1 //手动挂载
# umount /mnt/disk1
六、总结
创建物理卷:pvcreatepvcreate /dev/sdb1创建卷组:vgcreatevgcreate vg01 /dev/sdb1创建逻辑卷:lvcreate 【三种方式】lvcreate -n lv01 -L 1G vg01 1Glvcreate -n lv01 -l 100 vg01 400Mlvcreate -n lv01 -l 100%free vg01删除逻辑卷:lvremovelvremove /dev/vg01/lv01删除卷组:vgremovevgremove vg01说明:卷组里的物理卷没有被使用才可以直接删除卷组删除物理卷:pvremovepvremove /dev/sdb1扩容卷组:vgextendvgextend vg01 /dev/sdb2扩容逻辑卷:lvextendlvextend /dev/vg01/lv01 -L +2G同步文件系统:resize2fs /dev/vg01/lv01裁剪卷组:vgreducevgreduce vg01 /dev/sdb2裁剪逻辑卷:lvreduce