Linux逻辑卷创建与扩容

​ 钢铁知识库,一个学习python爬虫、数据分析的知识库。在职运维,又喜欢开发。

什么是lvm逻辑卷

​ LVM(逻辑卷管理)是一种在Linux环境中广泛使用的磁盘管理技术。它允许管理员创建逻辑上的磁盘分区,这些分区可以跨越多个物理硬盘。使用LVM的主要优点包括:

  1. 弹性和灵活性:LVM允许在不中断服务的情况下动态地调整分区大小。这对于需要频繁调整存储空间的环境非常有用。
  2. 简化管理:通过LVM,管理员可以更容易地管理大量的硬盘空间,特别是在多硬盘系统中。
  3. 高级功能:LVM支持高级功能,如快照(用于备份或恢复)、镜像(增强数据可靠性)和条带化(提高性能)。
  4. 卷组和逻辑卷:在LVM中,物理硬盘被分成物理卷(PVs),这些物理卷被组合成卷组(VGs)。在卷组内部,可以创建多个逻辑卷(LVs),这些逻辑卷就像传统的磁盘分区,但它们提供了更多的灵活性。

简而言之,LVM提供了一种高效和灵活的方式来管理Linux系统上的磁盘空间,使得存储管理更加高效和灵活。

如何创建一个新逻辑卷

​ 随着业务增长,现有的磁盘空间容量开始变得紧张,这时需要申请磁盘扩容。接下来我们通过主申请好的磁盘,来演示一次创建新逻辑卷的全过程。可以看到/dev/sdb是一块新的硬盘。

image-20240123183047233

​ 执行fdisk开始对这块硬盘进行格式化,创建一个主分区,并且格式化为Linux LVM,操作命令如下:

[root@localhost ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa89470a5.Command (m for help): n
Partition typep   primary (0 primary, 0 extended, 4 free)e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-104857599, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-104857599, default 104857599): Created a new partition 1 of type 'Linux' and of size 50 GiB.Command (m for help): t
Selected partition 1
Hex code or alias (type L to list all): L00 Empty            24 NEC DOS          81 Minix / old Lin  bf Solaris        
01 FAT12            27 Hidden NTFS Win  82 Linux swap / So  c1 DRDOS/sec (FAT-
02 XENIX root       39 Plan 9           83 Linux            c4 DRDOS/sec (FAT-
03 XENIX usr        3c PartitionMagic   84 OS/2 hidden or   c6 DRDOS/sec (FAT-
04 FAT16 <32M       40 Venix 80286      85 Linux extended   c7 Syrinx         
05 Extended         41 PPC PReP Boot    86 NTFS volume set  da Non-FS data    
06 FAT16            42 SFS              87 NTFS volume set  db CP/M / CTOS / .
07 HPFS/NTFS/exFAT  4d QNX4.x           88 Linux plaintext  de Dell Utility   
08 AIX              4e QNX4.x 2nd part  8e Linux LVM        df BootIt         
09 AIX bootable     4f QNX4.x 3rd part  93 Amoeba           e1 DOS access     
0a OS/2 Boot Manag  50 OnTrack DM       94 Amoeba BBT       e3 DOS R/O        
0b W95 FAT32        51 OnTrack DM6 Aux  9f BSD/OS           e4 SpeedStor      
0c W95 FAT32 (LBA)  52 CP/M             a0 IBM Thinkpad hi  ea Linux extended 
0e W95 FAT16 (LBA)  53 OnTrack DM6 Aux  a5 FreeBSD          eb BeOS fs        
0f W95 Ext'd (LBA)  54 OnTrackDM6       a6 OpenBSD          ee GPT            
10 OPUS             55 EZ-Drive         a7 NeXTSTEP         ef EFI (FAT-12/16/
11 Hidden FAT12     56 Golden Bow       a8 Darwin UFS       f0 Linux/PA-RISC b
12 Compaq diagnost  5c Priam Edisk      a9 NetBSD           f1 SpeedStor      
14 Hidden FAT16 <3  61 SpeedStor        ab Darwin boot      f4 SpeedStor      
16 Hidden FAT16     63 GNU HURD or Sys  af HFS / HFS+       f2 DOS secondary  
17 Hidden HPFS/NTF  64 Novell Netware   b7 BSDI fs          fb VMware VMFS    
18 AST SmartSleep   65 Novell Netware   b8 BSDI swap        fc VMware VMKCORE 
1b Hidden W95 FAT3  70 DiskSecure Mult  bb Boot Wizard hid  fd Linux raid auto
1c Hidden W95 FAT3  75 PC/IX            bc Acronis FAT32 L  fe LANstep        
1e Hidden W95 FAT1  80 Old Minix        be Solaris boot     ff BBT            Aliases:linux          - 83swap           - 82extended       - 05uefi           - EFraid           - FDlvm            - 8Elinuxex        - 85
Hex code or alias (type L to list all): 8e
Changed type of partition 'Linux' to 'Linux LVM'.Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

​ 通过上面操作可以看到已经将这块硬盘进行了格式化,下一步开始建立物理卷、逻辑卷

## 向内核注册分区
partprobe /dev/sdb## 创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   56G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   55G  0 part ├─openeuler-root 253:0    0 33.2G  0 lvm  /├─openeuler-swap 253:1    0  5.6G  0 lvm  [SWAP]└─openeuler-home 253:2    0 16.2G  0 lvm  /home
sdb                  8:16   0   50G  0 disk 
└─sdb1               8:17   0   50G  0 part 
sr0                 11:0    1 1024M  0 rom  
[root@localhost ~]# pvsPV         VG        Fmt  Attr PSize   PFree  /dev/sda2  openeuler lvm2 a--  <55.00g      0 /dev/sdb1            lvm2 ---  <50.00g <50.00g## 创建卷组,卷组名为data
[root@localhost ~]# vgcreate data /dev/sdb1Volume group "data" successfully created
[root@localhost ~]# vgsVG        #PV #LV #SN Attr   VSize   VFree  data        1   0   0 wz--n- <50.00g <50.00gopeneuler   1   3   0 wz--n- <55.00g      0 ## 创建逻辑卷,-l表示使用多少空间,-n表示逻辑卷名
[root@localhost ~]# lvcreate -l +100%FREE -n lv_data dataLogical volume "lv_data" created.
[root@localhost ~]# lvsLV      VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertlv_data data      -wi-a----- <50.00g                                                    home    openeuler -wi-ao----  16.20g                                                    root    openeuler -wi-ao----  33.19g                                                    swap    openeuler -wi-ao----   5.60g                           

​ 完成后就可以格式化,然后进行挂载

## 格式化文件系统并挂载
[root@localhost ~]# mkfs.ext4 /dev/data/lv_data 
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem with 13106176 4k blocks and 3276800 inodes
Filesystem UUID: 29c9ec75-4410-47fd-be1b-6ebd2c50895a
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   [root@localhost ~]# lvsLV      VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertlv_data data      -wi-a----- <50.00g                                                    home    openeuler -wi-ao----  16.20g                                                    root    openeuler -wi-ao----  33.19g                                                    swap    openeuler -wi-ao----   5.60g      ## 挂载                                                                                               
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/data/lv_data /data
[root@localhost ~]# df -Th
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  3.7G     0  3.7G   0% /dev
tmpfs                      tmpfs     3.7G     0  3.7G   0% /dev/shm
tmpfs                      tmpfs     1.5G  153M  1.4G  11% /run
tmpfs                      tmpfs     4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mapper/openeuler-root ext4       33G  2.4G   29G   8% /
tmpfs                      tmpfs     3.7G     0  3.7G   0% /tmp
/dev/sda1                  ext4      974M   87M  820M  10% /boot
/dev/mapper/openeuler-home ext4       16G  203M   15G   2% /home
/dev/mapper/data-lv_data   ext4       49G   24K   47G   1% /data## 加入到开机自启动
# vi /etc/fstab
/dev/data/lv_data /data                   ext4    defaults        0 0

​ 以上就完成了对逻辑的创建,有需求的朋友直接按上面一步步跟着操作就可以了,对磁盘做逻辑卷主要还是方便后面扩容。

如何扩容逻辑卷

​ 逻辑卷创建后,如果业务有增长后面肯定需要再进行扩容,下面就开始演示对现有的逻辑卷进行扩容。还是拿上面那块sdb盘来测试

## 创建物理卷
[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   56G  0 disk 
├─sda1               8:1    0    1G  0 part /boot
└─sda2               8:2    0   55G  0 part ├─openeuler-root 253:0    0 33.2G  0 lvm  /├─openeuler-swap 253:1    0  5.6G  0 lvm  [SWAP]└─openeuler-home 253:2    0 16.2G  0 lvm  /home
sdb                  8:16   0   50G  0 disk 
└─sdb1               8:17   0   50G  0 part 
sr0                 11:0    1 1024M  0 rom  
[root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvsPV         VG        Fmt  Attr PSize   PFree  /dev/sda2  openeuler lvm2 a--  <55.00g      0 /dev/sdb1            lvm2 ---  <50.00g <50.00g## 将新增的pv加入到已有的vg
[root@localhost ~]# vgsVG        #PV #LV #SN Attr   VSize   VFreeopeneuler   1   3   0 wz--n- <55.00g    0 
[root@localhost ~]# vgextend openeuler /dev/sdb1 Volume group "openeuler" successfully extended## 加入vg后可以看到有VFree空间,通过逻辑卷扩容所有空闲分区
[root@localhost ~]# vgsVG        #PV #LV #SN Attr   VSize   VFree  openeuler   2   3   0 wz--n- 104.99g <50.00g[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/openeuler-rootSize of logical volume openeuler/root changed from 33.19 GiB (8497 extents) to <83.19 GiB (21296 extents).Logical volume openeuler/root successfully resized.## 扩容成功后还需要执行以下命令都会生效
## 如果是xfs文件系统使用:xfs_growfs /dev/mapper/openeuler-root
[root@localhost ~]# resize2fs /dev/mapper/openeuler-root
resize2fs 1.46.4 (18-Aug-2021)
Filesystem at /dev/mapper/openeuler-root is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 11
The filesystem on /dev/mapper/openeuler-root is now 21807104 (4k) blocks long.

​ 可以看到根分区已经由原来的33G扩容到82G,说明50G已经成功扩容。

[root@localhost ~]# df -Th
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  3.7G     0  3.7G   0% /dev
tmpfs                      tmpfs     3.7G     0  3.7G   0% /dev/shm
tmpfs                      tmpfs     1.5G  153M  1.4G  11% /run
tmpfs                      tmpfs     4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mapper/openeuler-root ext4       82G  2.4G   76G   4% /
tmpfs                      tmpfs     3.7G     0  3.7G   0% /tmp
/dev/sda1                  ext4      974M   87M  820M  10% /boot
/dev/mapper/openeuler-home ext4       16G  203M   15G   2% /home

---- 钢铁 648403020@qq.com 2024.01.23

参考链接

https://www.cnblogs.com/biyulin-bky/p/16144950.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node 第二十三天 mongoDB shell 命令 CRUD 增删改查 基础

什么是 mongoDB shell 命令 mongoDB shell 命令就是在cmd窗口或者powershell窗口与mongoDB交互的命令, 以下简称mongosh 对应我们上一天安装的 mongosh 工具 有什么用 mongosh 对一般的开发者可能意义不大, 因为在开发过程中我们会基于某一款语言来使用mongoDB, 比如在node端我…

需求分析的结构化和面向对象方法

需求分析的方法&#xff0c;主要有结构化&#xff08;SA&#xff09;方法、面向对象分析&#xff08;OOA&#xff09;方法。另外有面向问题域的分析(Problem Domain Oriented Analysis&#xff0c;PDOA)方法&#xff0c;还有一些形式化方法例如VDM ( Vienna Design Method)和Z等…

基于cubeMX的正点原子miniSTM32对W25Q64的存储使用

一、实现目标 使用cubeMX建立项目工程&#xff0c;结合正点原子提供的hal库对W25Q64闪存调用的例程&#xff0c;实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程&#xff0c;其他项设置不再叙述&#xff0c;只看连接W25Q64的SPI设置&#xff0c;这里使用SPI1&#xf…

2.1 关系模型的数据结构及形式化定义

2.1.1 关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 。 逻辑结构----二维表 从用户角度&#xff0c;关系模型中数据的逻辑结构是一张二维表 。 建立在集合代数的基础上。 1. 域&#xff08;domain&#xff09; 2. 笛卡儿积&#xff08;C…

proxy 代理的接口报错301问题

项目系统里仅仅这个接口报错&#xff0c;反向代理错误导致。 默认情况下&#xff0c;不接受运行在HTTPS上&#xff0c;且使用了无效证书的后端服务器。如果你想要接受&#xff0c;修改配置&#xff1a;secure: false&#xff08;简单意思&#xff1a;如果本地没有进行过https相…

Dify学习笔记-手册(三)

1、应用构建及提示词 在 Dify 中&#xff0c;一个“应用”是指基于 GPT 等大型语言模型构建的实际场景应用。通过创建应用&#xff0c;您可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式&#xff0c;也包含了具体的交付物。 简而言之&#xff0c;一个应…

Linux 一键部署influxd2-telegraf

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

建筑物防雷检测安全接地应用解决方案

雷电是一种自然现象&#xff0c;具有极高的电压和电流&#xff0c;对建筑物及其内部设备、人员和财产可能造成严重的危害&#xff0c;如火灾、爆炸、电击、电磁干扰等。因此&#xff0c;建筑物必须采取有效的防雷措施&#xff0c;以保障建筑物的安全和可靠运行。建筑物防雷检测…

【C/Python】用GTK实现多文档窗体程序

一、用C语言 在GTK&#xff08;GIMP Toolkit&#xff09;中实现多文档接口&#xff08;MDI&#xff09;程序可以使用多种方法。GTK本身并没有提供专用的MDI窗口小部件&#xff0c;但可以使用标签页&#xff08;Notebook&#xff09;或多个窗口&#xff08;Window&#xff09;来…

怎么缩小动图的大小?一分钟快速压缩gif体积

GIF动图是一种使用GIF文件格式创建的动画图像。GIF是一种常见的图像文件格式&#xff0c;它支持多帧图像以形成连续播放的动画效果。与其他图像格式只能表示静态图像不同&#xff0c;GIF格式可以存储多个图像帧&#xff0c;并通过在特定时间间隔内循环播放这些帧来创建动画效果…

【C++记忆站】类和对象(三)

文章目录 再谈构造函数构造函数赋值并非初始化初始化列表explicit关键字 static成员概念特性一、静态成员为所有类对象所共享&#xff0c;不属于某个具体的对象二、静态成员变量必须在类外定义&#xff0c;定义时不添加static关键字三、静态成员函数没有隐藏的this指针&#xf…

基于SpringBoot Vue航空机票预订系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

uniapp canvas做的刮刮乐解决蒙层能自定义图片

最近给湖南中烟做元春活动&#xff0c;一个月要开发4个小活动&#xff0c;这个是其中一个难度一般&#xff0c;最难的是一个类似鲤鱼跃龙门的小游戏&#xff0c;哎&#xff0c;真实为难我这个“拍黄片”的。下面是主要代码。 <canvas :style"{width:widthpx,height:hei…

(学习日记)2024.01.22:各类型占用字节 与 指针

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

专业粉碎文件,数据安全与销毁:数据销毁实践指南

数据销毁处理 为了满足合规要求及组织机构本身的业务发展需求&#xff0c;组织机构需要对数据进行销毁处理。因为数据销毁处理要求针对数据的内容进行清除和净化&#xff0c;以确保攻击者无法通过存储介质中的数据内容进行恶意恢复&#xff0c;从而造成严重的敏感信息泄露问题。…

大模型-提示词工程

提示原则 1.编写明确具体的指令 策略一&#xff1a;使用分隔符清晰地表示输入的不同部分&#xff0c;分隔符可以是&#xff1a;&#xff0c;“”&#xff0c;<>&#xff0c; 你可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。这可以是任何可以使模型…

uniapp微信小程序图片上传功能实现,页面显示文件列表、删除功能

uniapp小程序图片上传功能效果预览 一、template 页面结构 <view class"upload-box"><view class"upload-list"><view class"upload-item" v-for"(item,index) of fileList" :keyindex><image class"img…

Linux sort命令

参考资料 【 sort 】コマンド――テキストファイルを行単位で並べ替えるsortコマンドとは&#xff1f;Linuxコマンドでファイルの中身を並び替えする方法をご紹介 目录 一. 配置项二. -n -r -u 配置项三. -f -b 配置项四. -k -t 配置项4.1 指定CSV文件内字段排序4.2 根据查询出…

Anaconda

包管理: Anaconda提供了conda包管理器,可以方便地安装、升级和删除各种数据科学工具和库,而无需手动处理依赖关系。 环境管理: conda还可以创建和管理独立的Python 环境。这意味着你可以在同一台计算机上同时拥有多个项目&#xff0c;每个项目都有自己独立的 Python 环境和依赖…

力扣518. 零钱兑换 II

动态规划 思路&#xff1a; 假设 dp[i] 为金额 i 使用零钱的组合数&#xff0c;其可以由其中的一种零钱 coin 和 i - coin 组合&#xff1b; 遍历零钱数组&#xff0c;对每一种零钱 coin 进行如下操作&#xff1a; 从 coin 到 amount 金额进行遍历&#xff0c;dp[j] dp[j] d…