「ECS最佳实践」基于多块云盘构建LVM逻辑卷
bigegpt 2024-10-05 13:45 3 浏览
一、LVM简介
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。如果期望扩容云盘的IO能力,则可以通过将多块容量相同的云盘做RAID0。
图1:LVM逻辑示意图(图片来自于互联网)
二、创建LVM卷
2.1步骤一 创建物理卷PV
如下以5块云盘通过LVM创建弹性可扩展逻辑卷为例。
root@lvs06:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 40G 0 disk └─vda1 252:1 0 40G 0 part / vdb 252:16 0 1T 0 disk vdc 252:32 0 1T 0 disk vdd 252:48 0 1T 0 disk vde 252:64 0 1T 0 disk vdf 252:80 0 1T 0 disk
- step1: 以root账号登录云服务器
- step2:执行以下命令,为云盘创建PV卷
pvcreate <磁盘路径1> ... <磁盘路径N>
说明:此处需要填写云盘的设备名称,如果需要添加多个云盘,则可以添加多云盘设备名称,中间以空格间隔。如下以/dev/vdb, /dev/vdc,/dev/vdd,/dev/vde,/dev/vdf为例,执行结果如下:
root@lvs06:~# pvcreate /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf Physical volume "/dev/vdb" successfully created. Physical volume "/dev/vdc" successfully created. Physical volume "/dev/vdd" successfully created. Physical volume "/dev/vde" successfully created. Physical volume "/dev/vdf" successfully created.
- step3:执行以下命令,查看该服务器上物理卷(PV)信息:
lvmdiskscan | grep LVM
执行结果如下:
root@lvs06:~# lvmdiskscan | grep LVM /dev/vdb [ 1.00 TiB] LVM physical volume /dev/vdc [ 1.00 TiB] LVM physical volume /dev/vdd [ 1.00 TiB] LVM physical volume /dev/vde [ 1.00 TiB] LVM physical volume /dev/vdf [ 1.00 TiB] LVM physical volume 5 LVM physical volume whole disks 0 LVM physical volumes
2.2步骤二 创建卷组(VG)
- step1:执行以下命令,创建卷组(VG)
vgcreate <卷组名> <物理卷路径1>……<物理卷路径N>
执行结果如下:
root@lvs06:~# vgcreate lvm_01 /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf Volume group "lvm_01" successfully created
说明:
1.卷组名:该参数可自定义 2.物理卷路径:此处填写云盘的物理卷名称,多个物理卷直接以空格间隔 3.当提示 “Volume group XXX successfully created”标识卷组创建成功;
- step2:执行以下命令,可以向卷组(VG)中添加物理卷(PV)
vgextend 卷组名称 <物理卷路径1>……<物理卷路径N>
如下,向卷组(VG)lvm_01中添加一块新的物理卷:
root@lvs06:~# pvcreate /dev/vdg Physical volume "/dev/vdg" successfully created. root@lvs06:~# vgextend lvm_01 /dev/vdg Volume group "lvm_01" successfully extended
- step3:创建卷组(VG)成功后,可通过vgs,vgdisplay命令查看卷组信息
root@lvs06:~# vgs VG #PV #LV #SN Attr VSize VFree lvm_01 6 0 0 wz--n- <6.00t <6.00t
2.3步骤三 创建逻辑卷(LV)
- step1:执行以下命令创建逻辑卷(LV)
lvcreate [-L <逻辑卷大小>][ -n <逻辑卷名称>] <卷组名称>
参数说明:
1.逻辑卷大小:逻辑卷的大小应小于卷组(VG)剩余可用空间,单位可以选择MB、GB或者TB 2.逻辑卷名称:可自定义 3.卷组名称:此处填写逻辑卷所在的卷组名称
本文以创建1个4TB的逻辑卷(LV)为例,执行结果如下:
root@lvs06:~# lvcreate -L 5T -n lv01 lvm_01 Logical volume "lv01" created.
- step2:执行lvdisplay命令查看,逻辑卷详细信息:
root@lvs06:~# lvdisplay --- Logical volume --- LV Path /dev/lvm_01/lv01 LV Name lv01 VG Name lvm_01 LV UUID svB00x-l6Ke-ES6M-ctsE-9P6d-dVj2-o0h3Kz LV Write Access read/write LV Creation host, time lvs06, 2019-06-06 15:27:19 +0800 LV Status available # open 0 LV Size 5.00 TiB Current LE 1310720 Segments 6 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
2.4步骤四 创建并挂载文件系统
- step1:执行以下命令,在创建好的逻辑卷(LV)上创建文件系统
mkfs.文件系统格式 逻辑卷路径
针对上一步中的逻辑卷创建ext4文件系统,执行结果如下:
root@lvs06:~# mkfs.ext4 /dev/lvm_01/lv01 mke2fs 1.44.1 (24-Mar-2018) Creating filesystem with 1342177280 4k blocks and 167772160 inodes Filesystem UUID: 2529002f-9209-4b6a-9501-106c1145c77f Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
- step2:执行以下命令挂载文件系统:
mount 逻辑卷路径 挂载点
执行结果如下:
root@lvs06:~# mount /dev/lvm_01/lv01 /media/lv01 root@lvs06:~# df -h Filesystem Size Used Avail Use% Mounted on udev 12G 0 12G 0% /dev tmpfs 2.4G 3.7M 2.4G 1% /run /dev/vda1 40G 3.6G 34G 10% / tmpfs 12G 0 12G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 12G 0 12G 0% /sys/fs/cgroup tmpfs 2.4G 0 2.4G 0% /run/user/0 /dev/mapper/lvm_01-lv01 5.0T 89M 4.8T 1% /media/lv01
三、进阶场景
3.1扩展逻辑卷以及系统容量
- Step1:执行以下命令,可扩展逻辑卷的容量
lvextend [-L +/- <增减容量>] <逻辑卷路径>
参数说明:
1.增减容量:当卷组中可剩余容量时 ,可以执行扩容逻辑卷操作。扩容逻辑卷之后还需要扩容对应的文件系统才能生效; 2.逻辑卷路径:此处填写带扩容的逻辑卷路径
如下针对/dev/lvm_01/lv01 卷再扩容500GB物理空间,执行结果如下:
root@lvs06:~# lvextend -L +500GB /dev/lvm_01/lv01 Size of logical volume lvm_01/lv01 changed from 5.00 TiB (1310720 extents) to <5.49 TiB (1438720 extents). Logical volume lvm_01/lv01 successfully resized.
- step2:执行pvs命令,查看物理卷(pv)使用情况:
root@lvs06:~# pvs PV VG Fmt Attr PSize PFree /dev/vdb lvm_01 lvm2 a-- <1024.00g 0 /dev/vdc lvm_01 lvm2 a-- <1024.00g 0 /dev/vdd lvm_01 lvm2 a-- <1024.00g 0 /dev/vde lvm_01 lvm2 a-- <1024.00g 0 /dev/vdf lvm_01 lvm2 a-- <1024.00g 0 /dev/vdg lvm_01 lvm2 a-- <1024.00g <523.98g
- step3:执行以下resize2fs命令扩容文件系统:
resize2fs 逻辑卷路径
执行结果如下:
root@lvs06:~# resize2fs /dev/lvm_01/lv01 resize2fs 1.44.1 (24-Mar-2018) Filesystem at /dev/lvm_01/lv01 is mounted on /media/lv01; on-line resizing required old_desc_blocks = 640, new_desc_blocks = 703 The filesystem on /dev/lvm_01/lv01 is now 1473249280 (4k) blocks long.
- step4:执行df-h名称,查看文件系统扩容情况
root@lvs06:~# df -h Filesystem Size Used Avail Use% Mounted on udev 12G 0 12G 0% /dev tmpfs 2.4G 3.7M 2.4G 1% /run /dev/vda1 40G 3.6G 34G 10% / tmpfs 12G 0 12G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 12G 0 12G 0% /sys/fs/cgroup tmpfs 2.4G 0 2.4G 0% /run/user/0 /dev/mapper/lvm_01-lv01 5.5T 83M 5.2T 1% /media/lv01
作者:小盆友开飞机
相关推荐
- C#.NET Autofac 详解(c# autoit)
-
简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注...
- webapi 全流程(webapi怎么部署)
-
C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...
- .NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式
-
一:背景1.讲故事上一篇我们讲到了注解特性,harmony在内部提供了20个HarmonyPatch重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决95%...
- C# 使用SemanticKernel调用本地大模型deepseek
-
一、先使用ollama部署好deepseek大模型。具体部署请看前面的头条使用ollama进行本地化部署deepseek大模型二、创建一个空的控制台dotnetnewconsole//添加依赖...
- C#.NET 中间件详解(.net core中间件use和run)
-
简介中间件(Middleware)是ASP.NETCore的核心组件,用于处理HTTP请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。...
- IoC 自动注入:让依赖注册不再重复劳动
-
在ASP.NETCore中,IoC(控制反转)功能通过依赖注入(DI)实现。ASP.NETCore有一个内置的依赖注入容器,可以自动完成依赖注入。我们可以结合反射、特性或程序集扫描来实现自动...
- C#.NET 依赖注入详解(c#依赖注入的三种方式)
-
简介在C#.NET中,依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,IoC),以降低代码耦合、提高可...
- C#从零开始实现一个特性的自动注入功能
-
在现代软件开发中,依赖注入(DependencyInjection,DI)是实现松耦合、模块化和可测试代码的一个重要实践。C#提供了优秀的DI容器,如ASP.NETCore中自带的Micr...
- C#.NET 仓储模式详解(c#仓库货物管理系统)
-
简介仓储模式(RepositoryPattern)是一种数据访问抽象模式,它在领域模型和数据访问层之间创建了一个隔离层,使得领域模型无需直接与数据访问逻辑交互。仓储模式的核心思想是将数据访问逻辑封装...
- C#.NET 泛型详解(c# 泛型 滥用)
-
简介泛型(Generics)是指在类型或方法定义时使用类型参数,以实现类型安全、可重用和高性能的数据结构与算法为什么需要泛型类型安全防止“装箱/拆箱”带来的性能损耗,并在编译时检测类型错误。可重用同一...
- 数据分析-相关性分析(相关性 分析)
-
相关性分析是一种统计方法,用于衡量两个或多个变量之间的关系强度和方向。它通过计算相关系数来量化变量间的线性关系,从而帮助理解变量之间的相互影响。相关性分析常用于数据探索和假设检验,是数据分析和统计建模...
- geom_smooth()函数-R语言ggplot2快速入门18
-
在每节,先运行以下这几行程序。library(ggplot2)library(ggpubr)library(ggtext)#用于个性化图表library(dplyr)#用于数据处理p...
- 规范申报易错要素解析(规范申报易错要素解析)
-
为什么要规范申报?规范申报是以满足海关监管、征税、统计等工作为目的,纳税义务人及其代理人依法向海关如实申报的行为,也是海关审接单环节依法监管的重要工作。企业申报的内容须符合《中华人民共和国海关进出口货...
- 「Eurora」海关编码归类 全球海关编码查询 关务服务
-
海关编码是什么? 海关编码即HS编码,为编码协调制度的简称。 其全称为《商品名称及编码协调制度的国际公约》(InternationalConventionforHarmonizedCo...
- 9月1日起,河南省税务部门对豆制品加工业试行新政7类豆制品均适用投入产出法
-
全媒体记者杨晓川报道9月2日,记者从税务部门获悉,为减轻纳税人税收负担,完善农产品增值税进项税额抵扣机制,根据相关规定,结合我省实际情况,经广泛调查研究和征求意见,从9月1日起,我省税务部门对豆制品...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)