逻辑卷动态扩容与缩容-----

一、创建逻辑卷

需求:创建一个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 part 

2. 创建物理卷
[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.00m

5. 格式化逻辑卷
[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/sdb3

3)将物理卷加入到卷组中(卷组扩容)
[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.64g

4. 扩容逻辑卷 【第二种方式用的多】
[root@web ~]# lvextend -L 3G /dev/vg01/lv01        -L 3G最终的大小
或者
[root@web ~]# lvextend -L +1.5G /dev/vg01/lv01      -L +1.5G 扩容1.5G

5. 查看结果
[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 part 

2. 创建大小为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.00g     

4)格式化为ext4文件系统
[root@server ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql 

5)挂载使用
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 -ntlp

4. 停止mysql数据库 
# systemctl stop mysqld
[root@server ~]# systemctl status mysqld

5. 备份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 /u01

8. 删除/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 mysqld

11. 启动web服务
[root@server ~]# systemctl status mysqld

12.测试验证
访问之前的网站看是否可以正常访问
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/sdc1

3.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1        //手动挂载
# umount /mnt/disk1

六、总结

创建物理卷:pvcreate
pvcreate /dev/sdb1
创建卷组:vgcreate
vgcreate vg01 /dev/sdb1
创建逻辑卷:lvcreate      【三种方式】
lvcreate -n lv01 -L 1G vg01          1G
lvcreate -n lv01 -l 100 vg01         400M
lvcreate -n lv01 -l 100%free vg01    
删除逻辑卷:lvremove
lvremove /dev/vg01/lv01
删除卷组:vgremove
vgremove vg01
说明:卷组里的物理卷没有被使用才可以直接删除卷组
删除物理卷:pvremove 
pvremove /dev/sdb1
扩容卷组:vgextend
vgextend vg01 /dev/sdb2
扩容逻辑卷:lvextend
lvextend /dev/vg01/lv01 -L +2G
同步文件系统:
resize2fs /dev/vg01/lv01
裁剪卷组:vgreduce
vgreduce vg01 /dev/sdb2
裁剪逻辑卷:lvreduce

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开关灯问题(c语言)

样例&#xff1a;10 10 &#xff0c;输出&#xff1a;1&#xff0c;4&#xff0c;9 5 5 &#xff0c;输出&#xff1a;1&#xff0c;4 代码如下 #include<stdio.h> //引入bool值的概念 #include<stdbool.h> int main() {int n 0;//n为灯的数量int m 0;…

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…

在面试了些外包以后,我有了些自己的思考

大家好&#xff0c;我是洋子&#xff0c;最近公司在降本增效&#xff0c;需要把外包从北京迁移到陕西的某新一线城市&#xff0c;其实就是变相裁员&#xff0c;减少外包的成本&#xff0c;裁掉现有的员工&#xff0c;重新招聘新人 在整个测试行业&#xff0c;外包测试的比重是…

论文 | Ignore Previous Prompt: Attack Techniques For Language Models

这篇论文探讨了针对大型语言模型&#xff08;LLM&#xff09;的“提示注入”攻击&#xff0c;并提出了一种名为 PROMPTINJECT 的框架来研究这类攻击。 论文的主要内容包括&#xff1a;1. 提示注入攻击&#xff1a; 论文定义了“提示注入”的概念&#xff0c;即通过在用…

Django-中间件

定义&#xff1a; 编写中间件&#xff1a; 注册中间件&#xff1a; 添加中间件&#xff1a; 1.在项目目录下添加一个文件夹&#xff08;名字随意&#xff09;&#xff0c;然后文件夹下创建.py文件 2.将中间件添加到setting文件中 MIDDLEWARE [django.middleware.security.Se…

MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT

编辑&#xff1a;ll MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT 型号&#xff1a;MBR20100CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 安装方式&#xff1a;插件 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环…

操作数据表

创建表 创建表语法&#xff1a; CREATE TABLE table_name ( field1 datatype [COMMENT 注释内容], field2 datatype [COMMENT 注释内容], field3 datatype ); 注意&#xff1a; 1. 蓝色字体为关键字 2. CREATE TABLE 是创建数据表的固定关键字&#xff0c;表…

一、ARMv8寄存器之通用、状态、特殊寄存器

ARMV8核心寄存器数量是非常大的&#xff0c;为了更好的学习&#xff0c;可以划分为以下几大类&#xff1a; 通用寄存器。这类寄存器主要是用来暂存数据和参与运算。通过load\store指令操作。状态寄存器。AArch64体系结构使用PSTATE寄存器表示当前处理器状态。特殊寄存器。有专门…

WPF+MVVM案例实战(六)- 自定义分页控件实现

文章目录 1、项目准备2、功能实现1、分页控件 DataPager 实现2、分页控件数据模型与查询行为3、数据界面实现 3、运行效果4、源代码获取 1、项目准备 打开项目 Wpf_Examples&#xff0c;新建 PageBarWindow.xaml 界面、PageBarViewModel.cs ,在用户控件库 UserControlLib中创建…

【Docker】构建Linux云桌面环境

目录 一、说明 二、离线安装Docker 1&#xff09;将下载的包上传到服务器上去 2&#xff09;安装docker 3) 启动docker 4&#xff09;配置加速器 三、安装云桌面镜像 四、启动云桌面 方式一&#xff1a;docker命令直接运行 方式二&#xff1a;docker-compose方式 五…

Easysearch 与 LLM 融合打造知识库系统

文章目录 一、LangChain 简介二、RAG 产生的背景及其局限性三、RAG 工作流程四、 Easysearch 结合 LLM 实现 RAG&#xff08;1&#xff09;Easysearch 简介&#xff08;2&#xff09;结合实现RAG 五、 Easysearch 结合 LLM 实现 RAG 的优势&#xff08;1&#xff09;提高检索准…

驱动-----adc

在key1.c的基础上进行对adc1.c进行编写 首先将文件里面的key全部改为adc 再修改一下设备号 按键和adc的区别是什么,按键只需要按一下就触发了,并且不需要返回一个值出来, adc要初始化,启动,返回值 以下是裸机adc的代码: #include <s3c2440.h> #include "ad…

快速生成高质量提示词,Image to Prompt 更高效

抖知书老师推荐&#xff1a; 随着 AI 技术的不断发展&#xff0c;视觉信息与语言信息之间的转换变得越来越便捷。在如今的数字化生活中&#xff0c;图像与文字的交互需求愈发旺盛&#xff0c;很多人都希望能轻松将图像内容直接转化为文本描述。今天我们来推荐一款实用的 AI 工…

FileLink跨网文件传输与传统文件传输对比

在数字化时代&#xff0c;文件传输已成为企业日常运营不可或缺的一部分。然而&#xff0c;随着企业规模的扩大和业务的复杂化&#xff0c;传统的文件传输方式逐渐暴露出诸多不足。本文将对比FileLink跨网文件传输与传统文件传输方式&#xff0c;揭示FileLink在高效性、安全性和…

渗透测试-百日筑基—文件上传篇特征截断渲染%00绕过——下篇

目录 day10-渗透测试文件上传篇&绕过&特征&截断&渲染 一、黑名单大小写绕过代码分析 1、获取文件后缀名进行判断&#xff0c;如果后缀在这个字典里就禁止上传。 2、黑名单大小写绕过攻击 二、利用 windows 系统特征绕过上传 1、windows 系统特征绕过漏洞…

YoloV9改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程

摘要 论文介绍 本文介绍了一种基于YOLOv5的人脸检测方法,命名为YOLO-FaceV2。该方法旨在解决人脸检测中的尺度变化、简单与困难样本不平衡以及人脸遮挡等问题。通过引入一系列创新模块和损失函数,YOLO-FaceV2在WiderFace数据集上取得了优异的表现,特别是在小物体、遮挡和困…

CodeQL学习笔记(3)-QL语法(模块、变量、表达式、公式和注解)

最近在学习CodeQL&#xff0c;对于CodeQL就不介绍了&#xff0c;目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记&#xff0c;根据个人知识库笔记修改整理而来的&#xff0c;分享出来共同学习。个人觉得QL的语法比较反人类&#xff0c;至少与目前主流的这些OOP语言相比&…

QT-使用QSS美化UI界面

一、QSS简介&#xff1a; Qt Style Sheet&#xff1a;Qt样式表&#xff0c;用来自定义控件外观的一种机制&#xff0c;可以把他类比成CSS&#xff08;CSS主要功能与最终目的都是能使界面的表现与界面的元素分离&#xff09;。QSS机制使应用程序也能像web界面那样随意地改变外观…

江协科技STM32学习- P23 DMA 直接存储器存取

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Adb命令大全

本文列举了几乎所有的adb命令&#xff0c;方便Android学习者或者开发工程师在日常学习开发过程中查询使用。建议收藏。 Adb Server adb kill-server adb start-server 重启 adb reboot adb reboot recovery adb reboot-bootloader adb root //restarts adb with root permis…