首页 > 其他分享 >LVM管理

LVM管理

时间:2024-01-24 13:02:50浏览次数:22  
标签:lv01 vg01 160 管理 dev fishman LVM root

1、LVM的基本概念

问题:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办?

image-20230803103949756

 

2、LVM的工作原理

LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘。

它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

逻辑卷管理的核心在于如何处理我们系统中安装的硬盘及其分区,对于我们的逻辑卷管理器来说,把硬盘当作物理卷来看。

 

3、常用术语

  • 物理存储介质(The physical media)

    这里指系统的存储设备文件,可是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用

  • 物理卷PV(physical volume)

    物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数 (注册物理设备以便在卷组中使用),创建物理卷它可以用硬盘分区,也可以用硬盘本身;

  • 卷组VG(Volume Group)

    LVM卷组类似于非LVM系统中的物理硬盘,一个LVM卷组由一个或多个物理卷组成 

  • 逻辑卷LV(logical volume)

    似于非LVM系统中的硬盘分区,LV建立在VG之上,可以在LV之上建立文件系统

  • PE(physical extents)

    PV中可以分配的最少存储单元,PE的大小是可以指定的,默认为4MB

  • LE(logical extent)

    lV中可以分配的最少存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

image-20230803105657519

 

4、优点

  1. 使用卷组,使多个硬盘空间看起来像是一个大的硬盘:

    LVM允许将多个物理硬盘组合成一个或多个卷组(Volume Group),从而将这些硬盘空间合并在一起,形成一个逻辑上的大硬盘。在卷组上创建逻辑卷(Logical Volume)时,可以跨越多个物理硬盘。

  2. 使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf:

    在LVM中,逻辑卷是从卷组中划分出来的逻辑分区,可以在逻辑卷上创建文件系统,并且逻辑卷可以跨越多个物理硬盘上的分区,从而允许更大的文件系统容量。

  3. 在使用逻辑卷时,它可以在空间不足时动态调整它的大小:

    LVM允许在逻辑卷的大小不足时,动态地增加逻辑卷的大小,从而扩展文件系统容量。这种操作对于扩展存储空间非常有用,而不需要重新分区或重新格式化磁盘。

  4. 在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间:

    LVM的优势之一是它抽象了逻辑卷和物理硬盘之间的关系,从而使逻辑卷的大小调整更加灵活和方便。在调整逻辑卷大小时,不需要考虑硬盘上的物理位置,因为LVM会自动管理物理存储和逻辑存储之间的映射。

  5. 可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。

    LVM允许在运行时(在线)对逻辑卷和卷组进行创建、删除、调整大小等操作,而不需要停机或重启系统。但是,对于逻辑卷上的文件系统,调整逻辑卷大小后,需要使用适当的工具(如resize2fs对于ext2/ext3/ext4文件系统)来重新调整文件系统大小,以便文件系统能够识别和使用扩展后的逻辑卷空间。

  6. 可以将正在使用中的硬盘迁移到别的硬盘上(emc--500G DELL---1.2T):

    LVM允许在不中断正在使用的逻辑卷和文件系统的情况下,将逻辑卷从一个物理硬盘迁移到另一个物理硬盘。这对于硬盘升级或替换、平衡存储负载等情况非常有用。

  7. 允许创建快照,可以用来保存文件系统的备份。只能使用一次:

    LVM允许在逻辑卷上创建快照(Snapshot),快照是原始逻辑卷的一个副本,可以用来保存文件系统的备份或创建数据一致的快照点。快照是只读的,只能使用一次,一旦快照被使用或删除,就不能再使用。

LVM是软件的卷管理方式,而RAID是磁盘保护的方法。对于重要的业务来说,一般是同时存在。RAID用来保护物理的磁盘不会因为故障而中断业务。LVM用来实现对卷的良性的管理,更好的利用磁盘资源

 

5、创建LVM的基本步骤

常用命令

功能 PV管理命令 VG管理命令 LV管理命令
scan 扫描 pvscan vgscan lvscan
create 创建 pvcreate vgcreate lvcreate
display显示 pvdisplay vgdisplay lvdisplay
remove 移除 pvremove vgremove *vremove
extend 扩展   vgextend lvextend
reduce减少   vgreduce lvreduce
  1. 创建物理卷

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0    2G  0 part [SWAP]
    └─sda3   8:3    0   50G  0 part /
    sdb      8:16   0   20G  0 disk 
    ├─sdb1   8:17   0    1G  0 part 
    ├─sdb2   8:18   0    2G  0 part 
    ├─sdb3   8:19   0    1G  0 part 
    └─sdb4   8:20   0  1.2G  0 part 
    sr0     11:0    1  950M  0 rom  /mnt
    [root@fishman-160 ~]# pvc /dev/sdb{1..4} #创建物理卷

     

  2. 加入到卷组

    [root@fishman-160 ~]# vgcreate vg01 /dev/sdb{1..4}
      Volume group "vg01" successfully created
    [root@fishman-160 ~]# vgdisplay vg01
      --- Volume group ---
      VG Name               vg01
      System ID             
      Format                lvm2
      Metadata Areas        4
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                4
      Act PV                4
      VG Size               <5.18 GiB
      PE Size               4.00 MiB
      Total PE              1326
      Alloc PE / Size       0 / 0   
      Free  PE / Size       1326 / <5.18 GiB
      VG UUID               jgUxEF-8JRf-cQtx-XtBe-Caze-AQpZ-uYacux
  3. 创建逻辑卷

    [root@fishman-160 ~]# lvcreate -n lv01 -L 2G vg01 #创建逻辑卷lv01,2G空间
      Logical volume "lv01" created.
    [root@fishman-160 ~]# lvcreate -n lv02 -L 1G vg01 #创建逻辑卷lv02,1G空间
      Logical volume "lv02" created.
    [root@fishman-160 ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vg01/lv01
      LV Name                lv01
      VG Name                vg01
      LV UUID                EU2pQq-pln7-l02h-pL1p-Jkid-cuVW-bOM9fU
      LV Write Access        read/write
      LV Creation host, time fishman-160, 2023-08-03 10:33:49 +0800
      LV Status              available
      # open                 0
      LV Size                2.00 GiB
      Current LE             512
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
       
      --- Logical volume ---
      LV Path                /dev/vg01/lv02
      LV Name                lv02
      VG Name                vg01
      LV UUID                AnPHky-7f8F-PNxB-doeq-uXVY-a2LW-XDI672
      LV Write Access        read/write
      LV Creation host, time fishman-160, 2023-08-03 10:35:04 +0800
      LV Status              available
      # open                 0
      LV Size                1.00 GiB
      Current LE             256
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:1
  4. 格式化文件系统

    [root@fishman-160 ~]# ls -l /dev/vg01/lv01
    lrwxrwxrwx 1 root root 7 8月   3 10:33 /dev/vg01/lv01 -> ../dm-0  #lv01软链接到dm-0
    
    [root@fishman-160 ~]# mkfs.ext4 /dev/dm-0  #格式化lv01
    mke2fs 1.45.6 (20-Mar-2020) 
    创建含有 524288 个块(每块 4k)和 131072 个inode的文件系统
    文件系统UUID:99624c85-7457-410f-b891-0884d70f6f83
    超级块的备份存储于下列块: 
    	32768, 98304, 163840, 229376, 294912
    
    正在分配组表: 完成                            
    正在写入inode表: 完成                            
    创建日志(16384 个块)完成
    写入超级块和文件系统账户统计信息: 已完成
    
    [root@fishman-160 ~]# mkfs.ext4 /dev/dm-1   #格式化lv02
    mke2fs 1.45.6 (20-Mar-2020)
    创建含有 262144 个块(每块 4k)和 65536 个inode的文件系统
    文件系统UUID:67a62a7e-4d0f-40b3-a33c-76522daa3b70
    超级块的备份存储于下列块: 
    	32768, 98304, 163840, 229376
    
    正在分配组表: 完成                            
    正在写入inode表: 完成                            
    创建日志(8192 个块)完成
    写入超级块和文件系统账户统计信息: 已完成
  5. 挂载

[root@fishman-160 ~]# mount /dev/vg01/lv01 /lv01
[root@fishman-160 ~]# mount /dev/vg01/lv02 /lv02
[root@fishman-160 ~]# lsblk   #挂载成功
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0  100G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
├─sda2          8:2    0    2G  0 part [SWAP]
└─sda3          8:3    0   50G  0 part /
sdb             8:16   0   20G  0 disk 
├─sdb1          8:17   0    1G  0 part 
│ └─vg01-lv01 253:0    0    2G  0 lvm  /lv01 
├─sdb2          8:18   0    2G  0 part 
│ └─vg01-lv01 253:0    0    2G  0 lvm  /lv01
├─sdb3          8:19   0    1G  0 part 
└─sdb4          8:20   0  1.2G  0 part 
  └─vg01-lv02 253:1    0    1G  0 lvm  /lv02
sr0            11:0    1  950M  0 rom  /mnt

 

6、指定PE的大小

基本语法

vgcreate -s 16M vg1 /dev/sdX #-s是指定PE大小
#指定卷组中的物理区块大小为16 MiB

例:

[root@fishman-160 ~]# vgcreate -s 16M vg01 /dev/sdb1
  Volume group "vg01" successfully created
[root@fishman-160 ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1008.00 MiB
  PE Size               16.00 MiB
  Total PE              63
  Alloc PE / Size       0 / 0   
  Free  PE / Size       63 / 1008.00 MiB
  VG UUID               cUWnlt-v5RT-7ijU-ugPL-SZOb-dXZJ-fXwlwk

 

7、lv扩容

确定一下是否还有可扩容的空间,因为空间是从VG里面创建的。所以我们要保证VG还有剩余空间,而且LV不能够跨VG扩容的

基础命令

lvextend -L +30M /dev/vg01/lv01 #逻辑卷增加30M
lvextend -l 30M /dev/vg01/lv01 #逻辑卷增加到30M

例:

[root@fishman-160 ~]#  lvextend -L +30M /dev/vg01/lv01  #lv01逻辑卷增加30M
  Rounding size to boundary between physical extents: 32.00 MiB.
  Size of logical volume vg01/lv01 changed from 208.00 MiB (13 extents) to 240.00 MiB (15 extents).
  Logical volume vg01/lv01 successfully resized.
[root@fishman-160 ~]# lvs #lvs查看逻辑卷信息
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-a----- 240.00m                                                    
  lv02 vg01 -wi-a-----  64.00m    
[root@fishman-160 ~]# df -h /lv01  #df -h 查看,文件系统并没有扩充成功
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01  227M   14K  211M    1% /lv01
[root@fishman-160 ~]# lvextend -L +100M /dev/vg01/lv01  #lv01再扩容100M
  Rounding size to boundary between physical extents: 112.00 MiB.
  Size of logical volume vg01/lv01 changed from 240.00 MiB (15 extents) to 352.00 MiB (22 extents).
  Logical volume vg01/lv01 successfully resized.
[root@fishman-160 ~]# df -Th /lv01 #文件系统依然能是227M
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 ext4  227M   14K  211M    1% /lv01

[root@fishman-160 ~]# resize2fs /dev/vg01/lv01  #通过resize2fs命令对ext4的格式做扩容,扩容文件系统
resize2fs 1.45.6 (20-Mar-2020)
/dev/vg01/lv01 上的文件系统已被挂载于 /lv01;需要进行在线调整大小

old_desc_blocks = 2, new_desc_blocks = 3
/dev/vg01/lv01 上的文件系统现在为 360448 个块(每块 1k)。

[root@fishman-160 ~]# df -Th /lv01  #再次查看,扩容成功
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 ext4  335M   14K  315M    1% /lv01

直接扩容(省略resize2fs和xfs_growfs的步骤)

[root@fishman-160 ~]# lvextend -L -r +200m /dev/vg01/lv01  #-r选项是一个自动调整选项,用于告诉lvextend命令在扩展逻辑卷后,自动调整逻辑卷上的文件系统大小,使其与逻辑卷的新大小保持一致。
  Size requires number argument.
  Invalid argument for --size: -r
  Error during parsing of command line.
[root@fishman-160 ~]# lvextend -L +200m -r /dev/vg01/lv01 
  Rounding size to boundary between physical extents: 208.00 MiB.
  Size of logical volume vg01/lv01 changed from 352.00 MiB (22 extents) to 560.00 MiB (35 extents).
  Logical volume vg01/lv01 successfully resized.
resize2fs 1.45.6 (20-Mar-2020)
/dev/mapper/vg01-lv01 上的文件系统已被挂载于 /lv01;需要进行在线调整大小
[root@fishman-160 ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 ext4  537M   14K  508M    1% /lv01
#先扩充逻辑卷,再扩充文件系统

 

8、vg扩容

基础语法

vgextend vg01 /dev/sdX #sdX需先完成pvcreate

例:

root@fishman-160 ~]# vgextend vg01 /dev/sdb2 #vg01添加sdb2
  Volume group "vg01" successfully extended
[root@fishman-160 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg01   2   2   0 wz--n- <2.97g <2.36g
[root@fishman-160 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree  
  /dev/sdb1  vg01 lvm2 a--  1008.00m 384.00m
  /dev/sdb2  vg01 lvm2 a--     1.98g   1.98g
  /dev/sdb3       lvm2 ---     1.00g   1.00g
  /dev/sdb4       lvm2 ---    <1.20g  <1.20g

 

9、lvm缩小

9.1、lv缩小

基础语法

lvreduce -L -100m -r /dev/sdX

例:

[root@fishman-160 ~]# lvreduce -L -100m -r /dev/vg01/lv01 #建议提前卸载
  Rounding size to boundary between physical extents: 96.00 MiB.
Do you want to unmount "/lv01" ? [Y|n] y
fsck,来自 util-linux 2.32.1
/dev/mapper/vg01-lv01:11/143360 文件(0.0% 为非连续的), 24502/573440 块
resize2fs 1.45.6 (20-Mar-2020)
将 /dev/mapper/vg01-lv01 上的文件系统调整为 475136 个块(每块 1k)。
/dev/mapper/vg01-lv01 上的文件系统现在为 475136 个块(每块 1k)。

[root@fishman-160 ~]# lvs #查看lv
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-ao---- 464.00m                                                    
  lv02 vg01 -wi-a-----  64.00m 

ext4,xfs不支持动态缩小

9.2、vg缩小(pv要没有被使用)

基础语法

vgreduce vg01 /dev/sdX 

例:

[root@fishman-160 ~]# vgreduce vg01 /dev/sdb4
  Removed "/dev/sdb4" from volume group "vg01"
[root@fishman-160 ~]# pvs
  PV         VG   Fmt  Attr PSize    PFree   
  /dev/sdb1  vg01 lvm2 a--  1008.00m  480.00m
  /dev/sdb2  vg01 lvm2 a--     1.98g    1.98g
  /dev/sdb3  vg01 lvm2 a--  1008.00m 1008.00m
  /dev/sdb4       lvm2 ---     3.00g    3.00g

 

10、lvm删除

删除: umount ----> lvremove lv -----> vgremove vg -----> pvremove

卸载挂载

[root@fishman-160 ~]# umount /lv01

移除逻辑卷

[root@fishman-160 lv01]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
  Logical volume "lv01" successfully removed.

移除卷组

[root@fishman-160 lv01]# vgremove vg01
  Volume group "vg01" successfully removed

移除物理卷

[root@fishman-160 lv01]# pvs   #通过pvs确认物理卷
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  1.00g 1.00g
  /dev/sdb2     lvm2 ---  2.00g 2.00g
  /dev/sdb3     lvm2 ---  1.00g 1.00g
  /dev/sdb4     lvm2 ---  3.00g 3.00g
[root@fishman-160 lv01]# pvremove /dev/sdb{1..4} #移除物理卷
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdb2" successfully wiped.
  Labels on physical volume "/dev/sdb3" successfully wiped.
  Labels on physical volume "/dev/sdb4" successfully wiped.

标签:lv01,vg01,160,管理,dev,fishman,LVM,root
From: https://www.cnblogs.com/kcloveworld/p/17984425

相关文章

  • 信息安全管理与评估整理-ipv6无状态地址自动配置
    无状态地址自动配置实验一1.接口下配置ipv6地址,关闭ra消息抑制,没有建立dhcp地址池只在接口下面将o位置一实验过程截图Wriershark抓包数据前缀信息A,O比特数据交换机配置Pc获取到的地址实验二2.接口下配置ipv6地址,关闭ra消息抑制,接口下未再进行其他配置Wireshark抓......
  • Linux计划任务与日志的管理
    1、什么是计划任务我们可以通过一些设置来让电脑定时提醒我们该做什么事了,或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务。而遇到一些需要执行的事情或任务。我们也可以通过命令来告诉电脑一会临时把这个工作给做一下在我们LINUX中,我们可以通过cront......
  • 进程管理
    一、什么是进程进程是已启动的可执行程序的运行实例,进程有以下组成部分:已分配内存的地址空间安全属性,包括所有权凭据和特权程序代码的一个或多个执行线程进程状态程序:二进制文件,静态/bin/date,/usr/sbin/sshd进程:是程序运行的过程,动态,有生命周期及运行状态......
  • 信息安全管理与评估整理--ipv6有状态自动配置
    Ipv6地址池自动配置有状态以下是关闭ra消息抑制,配置前缀地址池方式,有状态自动配置l不自动获取网关,通过修改网卡—高级设置添加默认网关方式建立本地地址池调用l接口下调用通过wireshark抓包,需要将消息开启才能看到M,O为位比特前缀地址池信息A位与O位含义A比特位:f......
  • 用户管理
    一、用户与用户组的概念用户与用户组概念Linux是一个多用户、多任务的服务器操作系统,多用户多任务指可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。Linux用户是根据角色定义的,具体分为三种角色:超级用户:拥有对系统的最高管......
  • 文件管理
    1、创建文件touch文件名1文件名2[root@fishman-160~]#touch1.txt[root@fishman-160~]#ls1.txt公共模板视频图片文档下载音乐桌面anaconda-ks.cfginitial-setup-ks.cfg[root@fishman-160~]#touch{2..10}.txt[root@fishman-160~]#ls10.txt......
  • C#析构函数解析:资源管理的精要和使用技巧
     在C#中,析构函数(Destructor)是一个特殊的方法,用于清理对象占用的资源。它是由垃圾回收器在对象被销毁时自动调用的。析构函数的原理是在对象即将被回收时执行一些清理操作,例如释放非托管资源或执行一些对象销毁前的必要操作。析构函数的基本原理:调用时机: 当对象被垃圾回收......
  • 如何提升供应链文件收发的安全和效率,进行高质量管理?
    供应链文件收发是供应链管理中的一个重要环节,涉及到信息流、物流和资金流的有效传递。这些文件可能包括采购订单、发货通知、发票、运输单据、收货确认等。以下是一些关于供应链文件收发的文件类型基本信息:采购订单(PO):供应商收到的正式文件,表明客户已同意购买特定数量和规格的产品......
  • nodejs多版本管理
    github下载包               https://sites.ipaddress.com/raw.githubusercontent.com/     https://sites.ipaddress.com/github.com/            1.下载安装包到本地wgethttps://github.com/nvm-sh/nvm/ar......
  • minio 支持基于yaml 的配置管理
    minio23年底的一个版本中,支持了基于yaml的配置参数,以前基于环境变量的模式还是支持的,只是yaml成为一个首选模式参考配置yaml配置version:v1address:':9000'rootUser:'minioadmin'rootPassword:'pBU94AGAY85e'console-address:':9001'certs......