首页 > 系统相关 >LVM——让Linux磁盘空间的弹性管理

LVM——让Linux磁盘空间的弹性管理

时间:2024-10-05 21:49:40浏览次数:7  
标签:lv VG dev LV 磁盘空间 Linux LVM root

什么是LVM?

LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都有类似与LVM这种磁盘管理软件。

相关该概念

  • Physical Volume(PV)

物理卷,将实际的磁盘分区(partition)系统识别码(system ID)修改为8e后,在通过pvcreate指令转化为LVM最底层的物理卷,作为后续空间管理的基础。

  • Volume Group(VG)

卷组,将数个PV进行整合,即形成了VG,在32位的操作系统中,LV的大小与PE的大小有关;在64位的操作系统中,LV几乎没有容量限制。

  • Physical Extent(PE)

物理区块,他是LVM中的最小存储单元。PE类似于文件系统中的block。

  • Logical Volume(LV)

逻辑卷,由VG划分而来,LV的大小与PE的大小及PE的数量有关,Size(LV)= Count(PE)* Size(PE)

结构示意图

LVM——让Linux磁盘空间的弹性管理_lvm管理

磁盘划分为PV —> PV组成了VG,同时设置了PE大小 —> 从VG中划分出LV

LVM的工作原理?

它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM的优缺点

优点:

  • 可以在系统运行的状态下动态的扩展文件系统的大小
  • 文件系统跨越多个磁盘,文件系统的大小不受磁盘大小的限制
  • LVM的存储空间可以通过新增磁盘的方式扩容

缺点:

  • 从卷组中移除一个磁盘的时候必须使用reducevg命令
  • 当卷组中有一个磁盘损坏了,整个卷组都会受到影响(由于一份数据可能会存储在不同的磁盘中)
  • 在磁盘创建过程中增加了额外的步骤,所以数据存贮性能会受到影响

LVM的实战使用

LVM——让Linux磁盘空间的弹性管理_lvm管理_02

  • 创建LVM过程

① 通过fdisk修改磁盘分区的SYSTEM ID为8e,将文件系统类型更改为Linux LVM

# fdisk 需要修改的磁盘
选择 t 命令修改
选择分区号,设置系统ID信息

② 创建PV

# pvcreate 需要转化为PV的磁盘分区
其他PV相关指令
pvscan:显示当前PV相关信息
pvdisplay (+ 磁盘分区路径):显示详细的(分区)PV信息

③ 创建VG

# vgcreate [-s N[mgt]] VG名称 PV名称
可以通过 -s 后面接PE的大小,代为可以是m,g,t

其他VG相关指令
vgscan:显示当前VG相关信息
vgdisplay:显示目前系统上的VG状态
vgextend:在VG内增加额外的PV
vgreduce:在VG内一处PV
vgchange:设定VG是否启动(active)
vgremove:删除一个VG

④ 创建LV

# lvcreate [-L N[mgt]] [-n LV名称] VG名称 (-L 后跟lV容量的大小)
# lvcreate [-l N] [-n LV名稱] VG名稱 (-l 后跟PE的个数)

其他相关命令
lvscan:查询系统上的LV
lvdisplay:显示系统上的LV详细信息
lvextend:增加LV的容量
lvreduce:减少LV的容量
lvremove:删除一个LV
lvresize:对LV进行容量大小的调整

⑤ 格式化新建的LV,否则将无法进行目录挂载

⑥ 文件目录的挂载

# mount LV路径 目录路径

过程记录:

创建分区信息如下,注意修改 Id 为 8e

[root@localhost /]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbb091226

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  8e  Linux

LVM创建过程

[root@localhost /]# pvcreate /dev/sdb1       //创建pv
  Physical volume "/dev/sdb1" successfully created
[root@localhost /]# vgcreate pvZHB /dev/sdb1    //创建vg
  Volume group "pvZHB" successfully created
[root@localhost /]# lvcreate -L 2G -n lv_zhb vgZHB    //创建lv
  Logical volume "lv_zhb" created.
[root@localhost /]# mkfs.xfs /dev/vgZHB/lv_zhb      //格式化lv
meta-data=/dev/vgZHB/lv_zhb      isize=256    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost /]# mount /dev/vgZHB/lv_zhb /zhbDir/           //挂载


  • LV扩容(注意需要先对分区进行格式化,若扩容后再可视化会对原有文件造成影响)

① 确定VG是否存在多余的容量

LV是由VG进行划分创建的,若VG无剩余空间则无法对LV进行扩容,所以首先需要新增磁盘,并通过 pvcreate 指令添加PV,vgextend扩展VG空间。
注意:新加磁盘分区后需要进行格式化,否则在最终完成扩容后,扩容空间将无法正常使用。

② LV 进行扩容

在VG剩余空间足够的情况下,只需要通过 lvresize 指令将剩余容量加入到所需要增加的LV装置内即可。
# lvresize -L +N(M/G/T) 进行扩容的LV路径

③ 若目标目录挂载点的文件系统为xfs,则需要执行如下命令才能最终达到扩容

xfs_growfs 目标目录

过程记录

新建逻辑分区sdb5后,执行如下操作进行扩容

[root@localhost 桌面]# pvcreate /dev/sdb5   //创建pv
  Physical volume "/dev/sdb5" successfully created
[root@localhost 桌面]# vgextend vgZHB /dev/sdb5    //扩展vg
  Volume group "vgZHB" successfully extended
[root@localhost 桌面]# lvresize -L +2G /dev/vgZHB/lv_zhb    //扩展lv
  Size of logical volume vgZHB/lv_zhb changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume lv_zhb successfully resized.
[root@localhost 桌面]# df -Th                       //查看挂载信息,发现空间无变化
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/vg_zhbcentos-lv_root
                     ext4      45G  5.5G   39G  13% /
tmpfs                tmpfs    939M  228K  939M   1% /dev/shm
/dev/sda1            ext4     477M   41M  411M  10% /boot
/dev/sr0             iso9660  2.0G  2.0G     0 100% /media/CentOS-6.10-x86_64-LiveDVD
/dev/mapper/vgZHB-lv_zhb
                     xfs      2.0G   33M  2.0G   2% /zhbDir
[root@localhost /]# xfs_growfs /zhbDir/           //执行xfs_growfs
meta-data=/dev/mapper/vgZHB-lv_zhb isize=256    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 1048576
[root@localhost /]# df -Th                     //查看挂载信息,发现空间已扩容
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/vg_zhbcentos-lv_root
                     ext4      45G  5.5G   39G  13% /
tmpfs                tmpfs    939M  228K  939M   1% /dev/shm
/dev/sda1            ext4     477M   41M  411M  10% /boot
/dev/sr0             iso9660  2.0G  2.0G     0 100% /media/CentOS-6.10-x86_64-LiveDVD
/dev/mapper/vgZHB-lv_zhb
                     xfs      4.0G   33M  4.0G   1% /zhbDir

标签:lv,VG,dev,LV,磁盘空间,Linux,LVM,root
From: https://blog.51cto.com/u_12531389/12175264

相关文章

  • linux systemctl 指令
    一、由来历史上,Linux的启动一直采用init进程。下面的命令用来启动服务。$sudo/etc/init.d/apache2start#或者$serviceapache2start这种方法有两个缺点。一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。二是启动脚本复杂。init进......
  • 帝国cms使用Linux系统数据盘扩容后宝塔控制面板数据盘大小不变的解决方法
    当遇到磁盘空间不足的情况时,可以通过以下步骤对数据盘进行扩容,并确保宝塔控制面板能够正确识别新的磁盘大小。以下是详细的步骤:步骤1:备份数据在操作硬盘扩容前,通过磁盘快照功能备份服务器系统盘与数据盘。步骤2:关闭服务器并购买磁盘空间关闭服务器。购买并等待配置完成......
  • Fastadmin(thinkphp5)安装集成workerman(gatewayworker)Linux环境
    一、安装直接上命令composerrequiretopthink/think-worker1.0.1//因为fastadmin的tp版本是5,所以这里1.0.1composerupdate--with-all-dependencies找到根目录的composer.json修改制定版本composerrequireworkerman/gateway-worker至此安装完成。二、启动然......
  • Linux_权限理解(详细PLUS)Gu
    1.用户Linux下有两种用户:超级用户(root)和普通用户;超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是"#",普通用户的命令提示符是"$"超级用户:普通用户:2.用户切换用户间切换:su+用户名//可用exit回退到原用户1)普......
  • Linux系统安装Pycharm专业版【附破解方法】
    ​写在前面本教程适用于Pycharm2022.2.3以下所有版本一、版本信息虚拟机产品:VMware®Workstation17Pro 虚拟机版本:17.0.0build-20800274ISO映像文件:ubuntukylin-22.04-pro-amd64.isoPycharm版本:PyCharm2022.3.3(ProfessionalEdition)资源链接:https://pan.baidu......
  • Cisco Secure Client 5.1.6.103 (macOS, Linux, Windows & iOS, Andrord) - 远程访问
    CiscoSecureClient5.1.6.103(macOS,Linux,Windows&iOS,Andrord)-远程访问客户端思科安全客户端(包括AnyConnect)请访问原文链接:https://sysin.org/blog/cisco-secure-client-5/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoSecureClient(includi......
  • linux---zip
    linux---zipubuntu安装命令:sudoaptinstallzip压缩文件:#将file1、file2压缩到all.zip中zipall.zipfile1file2#将非空文件夹递归压缩到folder.zip中zip-rfolder.zipmy_folder#-e选项可以设置密码解压缩:unzipa.zip查看压缩文件:unzip-va.zip解压缩......
  • 【GT240X】【04】你必须知道的 50 多个 Linux 命令
    文章目录一、介绍二、五十个linux命令一览表三、50个命令详解四、结论你必须知道的50多个Linux命令一、介绍你经常使用Linux命令?今天,我们将介绍50多个你必须知道的Linux命令。下面列出的命令是一些最有用和最常用的Linux命令,以及使用案例。先决条件......
  • Linux ifconfig 命令详解
    ifconfig配置和显示Linux系统网卡的网络参数补充说明ifconfig命令 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。语法ifconfig(参......
  • Linux中 文字界面、X Window系统以及图形界面的关系
    Linux中文字界面、XWindow系统以及图形界面的关系在Linux系统中,文字界面(TTY)、XWindow系统(X11)以及图形界面(GUI)之间有明确的关系。下面分别解释它们的功能和相互之间的联系:1.文字界面(TTY)TTY(Teletypewriter)是Linux系统中的文本控制台。Linux系统默认提供了多个TTY,通常通过Ctr......