LVM逻辑卷管理

目录

一、基础概念

二、基本操作

[1、fdisk -l](#1、fdisk -l)

[2、fdisk /dev/sdb](#2、fdisk /dev/sdb)

3、pvcreate

5、pvremove

6、pvdisplay/pvs

7、vgcreate

8、vgremove

9、vgextend

10、vgdisplay/vgs

11、lvcreate

12、lvremove

13、lvextend

14、lvdisplay/lvs

15、格式化与挂盘

三、其他操作

1、lsblk

2、查看文件系统


一、基础概念

Linux 系统内的存储设备,可以直接将整个磁盘分区后,格式化为文件系统挂载使用。也可以使用 LVM (逻辑卷管理)进行管理,下面将介绍 LVM 的相关知识点与操作。

LVM 逻辑卷管理有以下优点:

(1)灵活的磁盘管理:将多个物理磁盘分区或整个磁盘合并成一个逻辑卷,从而提供了更大的存储空间。这种灵活性使得用户可以根据需要动态地调整逻辑卷的大小,无需重新分区或重新格式化文件系统。同时,LVM还支持跨多个物理磁盘分配存储,不受单个物理磁盘容量的限制。

(2)LVM提供数据快照功能:可以在不中断系统运行的情况下创建磁盘快照,以便进行数据备份或恢复操作。

名词介绍如下:

  1. 磁盘分区(Disk Partition):在 Linux 中,磁盘分区是将硬盘划分为多个独立区域的过程。这些分区可以单独格式化,并用于不同的目的,如存储操作系统、应用程序数据或备份文件。Linux 磁盘分区主要分为基本分区(primary partition)和扩充分区(extension partition)两种。基本分区可以立即使用,但不能进一步划分;而扩充分区则必须再次进行分区后才能使用。
  2. PV(物理卷):PV 即 Physical Volume,是指物理磁盘或磁盘分区。在 Linux 的逻辑卷管理(LVM)中,PV 是 LVM 操作的基本单位。它可以是硬盘的一部分,也可以是整个硬盘。通过PV,LVM能够识别和管理底层的物理存储。
  3. VG(卷组):VG 即 Volume Group,是由一个或多个 PV 组合而成的虚拟存储池。VG 允许用户将多个 PV 聚合在一起,从而形成一个统一的、可管理的存储资源。VG 内部可以包含多个PV,这些PV的大小和类型可以不同。
  4. LV(逻辑卷):LV 即 Logical Volume,是从 VG 中划分出来的逻辑存储单元。LV 的大小可以在 VG 的总容量范围内灵活调整,因此它比传统的磁盘分区具有更高的灵活性。LV 可以像普通的磁盘分区一样进行格式化、挂载和使用

二、基本操作

1、fdisk -l

扫描系统中所有的磁盘设备(不仅会显示物理设备的信息,也会显示逻辑卷设备的信息),并显示每个磁盘的分区信息。这包括每个分区的起始和结束位置、大小、文件系统类型(如果已格式化)以及是否为主分区或逻辑分区等。

在 Linux 系统中,磁盘和分区是通过设备文件进行管理的,而逻辑卷设备也是其中的一部分。因此,当使用 fdisk -l 命令时,它会扫描系统中的所有磁盘设备,并列出它们的信息,包括物理磁盘和逻辑卷设备。

若磁盘设备名为"/dev/mapper/",通常与逻辑卷管理(LVM)相关。

[root@localhost ~]# fdisk -l
# (物理)显示第一块磁盘设备名、磁盘总大小
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
# 显示扇区等属性大小
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e4cc8
# 显示磁盘下分区,需要使用 LVM 进行管理, ID 需要为 8e
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

# (逻辑)显示第二块磁盘设备信息
Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# 显示第三块磁盘信息
Disk /dev/mapper/centos-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# 显示第四块磁盘信息
Disk /dev/mapper/centos-home: 44.1 GB, 44149243904 bytes, 86228992 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

2、fdisk /dev/sdb

对设备 /dev/sdb 进行分区操作。

3、pvcreate

使用 pvcreate 将 /dev/sdb 磁盘创建为物理卷,需要注意 sdb 的磁盘 ID 需要为 8e,若不是 8e 则需要使用 fdisk 进行修改。

[root@masterdb ~]# fdisk /dev/sdb
 Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.


 Command (m for help): t     #t可以修改分区代码
 Partition number (1,2, default 2): 1            #选择1分区进行修改
 Hex code (type L to list all codes): L          #如果不知道类型,可以用"L"列出可以选择的修改代码

  0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
  1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
  2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
  3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
  4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
  5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
  6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
  7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
  8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
  9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
  a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
  b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
  c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
  e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
  f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
 10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
 11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
 12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
 14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
 16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
 17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
 18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
 1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
 1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
 1e  Hidden W95 FAT1 80  Old Minix      
 Hex code (type L to list all codes): 8e         #选择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.

[root@masterdb ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdc" successfully created.

5、pvremove

pvremove 命令是 Linux 系统中用于永久删除一个存在的物理卷的命令。

使用 pvremove 指令删除物理卷时,它将 LVM 分区上的物理卷信息删除,使其不再被视为一个物理卷。在删除物理卷时,可以使用一些常用参数。例如,使用"-f"参数可以强制删除物理卷,不需要用户确认。

若该 PV 已经添加到 VG 中,并且该 VG 中已经创建了 LV。则需要先删除 LV、再删除 VG,最后再删除 PV。

6、pvdisplay/pvs

pvdisplay 命令可以显示一个或多个物理卷的信息,包括物理卷的名称、所属的卷组(Volume Group,简称 VG)、物理卷的大小、PE(Physical Extent)大小、总PE数、可用PE数、已分配的PE数和UUID(Universally Unique Identifier,通用唯一识别码)等。

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               centos
  PV Size               <99.00 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              25343
  Free PE               1
  Allocated PE          25342
  PV UUID               JhX6kO-2dyH-bSlS-CdPG-gM8f-DHFn-aaxEZ9

7、vgcreate

vgcreate 是 Linux 系统中用于创建卷组(Volume Group)的命令。在 Linux 的逻辑卷管理(LVM)中,卷组是由一个或多个物理卷(Physical Volume)组成的集合,它提供了一个用于分配逻辑卷(Logical Volume)的池。

vgcreate [选项] 卷组名 物理卷路径 [物理卷路径 ...]

-s 或 --physicalextentsize:设置物理扩展区(PE)的大小(以 KB 为单位)。
-l 或 --maxlogicalvolumes:设置卷组中允许的最大逻辑卷数量。
-p 或 --maxphysicalvolumes:设置卷组中允许的最大物理卷数量。
-v 或 --verbose:显示详细信息。

# 使用vgcreate创建卷组 VG_TEST, 包含物理卷:/dev/sdb1 和 /dev/sdb2
[root@masterdb ~]# vgcreate VG_TEST /dev/sdb1 /dev/sdb2
  Volume group "VG_TEST" successfully created

8、vgremove

用于删除 VG。需要注意,删除 VG 之前需要先将 VG 内 LV 全部删除掉。

vgremove VG_TEST

9、vgextend

vgextend 命令是 Linux 系统中用于动态扩展 LVM VG 的命令。它通过向 VG 中添加 PV 来增加 VG 的容量。

请注意,在使用 vgextend 命令之前,应确保该 PV 无其他用途,并且具有足够的权限来执行此操作。

# 使用 vgextend 扩容卷组VG_TEST
[root@masterdb ~]# vgextend VG_TEST /dev/sdb3
  Volume group "VG_TEST" successfully extended

10、vgdisplay/vgs

通过 vgdisplay 命令,可以查看卷组的详细信息,包括卷组名、物理卷数量、逻辑卷数量、卷组空间使用情况等。

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <99.00 GiB
  PE Size               4.00 MiB
  Total PE              25343
  Alloc PE / Size       25342 / 98.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               FoBujC-nLU8-PqfT-ATAx-z1Lt-qgBY-Heev7O

11、lvcreate

用于从 VG 中创建逻辑卷(LV)

# 创建逻辑卷,指定 LV 大小、名称以及所属 VG
lvcreate --L SIZE --n LV_NAME VG_NAME

# 使用lvcreate创建逻辑卷lv_test
[root@masterdb ~]# lvcreate -L 1g -n lv_test VG_TEST
  Logical volume "lv_test" created.

12、lvremove

在执行 lvremove 命令之前,请确保逻辑卷没有被正在使用。如果逻辑卷处于活动状态或正在使用,通常无法直接删除。

# 指定 lv path 进行删除
lvremove /dev/VG_TEST/lv_test 
# 强制删除
lvremove -f /dev/VG_TEST/lv_test 
# 来自动回答"yes"以确认删除
lvremove -y /dev/VG_TEST/lv_test 
# 删除多个 lv
lvremove /dev/VG_TEST/lv_test1 /dev/VG_TEST/lv_test2

13、lvextend

lvextend 是 Linux 系统中用于扩展逻辑卷(Logical Volume)的命令。在逻辑卷管理(LVM,Logical Volume Manager)环境中,当逻辑卷的空间不足时,可以使用 lvextend 命令来增加逻辑卷的大小,从而满足存储需求。

在扩展逻辑卷之前,请确保所属的卷组(Volume Group)有足够的未分配空间或可以从其他逻辑卷中释放空间。

如果逻辑卷上挂载了文件系统,并且在扩展逻辑卷后想要文件系统能够使用新增的空间,通常需要执行文件系统调整大小的命令(如 resize2fs 对于 ext2/ext3/ext4 文件系统)。但如果你使用了 -r 选项,lvextend 会自动为你完成这一步。

lvextend [选项] <逻辑卷路径> [大小]
-L 或 --size:指定新的逻辑卷大小,支持运算。
-r 或 --resizefs:在扩展逻辑卷后自动调整文件系统的大小。

示例如下:

lvextend -L 20G -r /dev/VG_TEST/lv_test
lvextend -L +10G -r /dev/VG_TEST/lv_test

14、lvdisplay/lvs

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                k9OdpR-dI74-BcMX-WV4s-c7ON-nvK8-A2vHB6
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-10-19 01:55:25 +0800
  LV Status              available
  # open                 2
  LV Size                <7.88 GiB
  Current LE             2016
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                dkEDwC-cVfK-aVeT-bkjm-9Tug-4IRt-EKbDpg
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-10-19 01:55:26 +0800
  LV Status              available
  # open                 1
  LV Size                <41.12 GiB
  Current LE             10526
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                6RI94s-zOmB-R21f-N95c-FZXU-gOhm-65TZki
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-10-19 01:55:27 +0800
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

15、格式化与挂盘

格式化 LV 可以主要使用 mkfs 或 mkfs.xxx,具体如下所示:

[root@localhost ~]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs

常见的文件系统如下所示:

  1. ext2:是 Linux 中最早的文件系统之一,适用于那些分区容量不是太大,更新也不频繁的情况。

  2. ext3:是 ext2 的改进版本,增加了日志功能,有助于系统从异常中恢复,提高了文件系统的可靠性。

  3. ext4:是 ext 文件系统的最新版本,具有更强的稳定性和可靠性,支持大文件和高容量的文件系统,同时提供了更高的性能和更好的容错能力。

  4. XFS:是另一种常见的 Linux 文件系统,它采用异步日志记录,可以高效地处理大量小文件的读写操作。

    [root@masterdb ~]# mkfs.ext3 /dev/VG_TEST/lv_test
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    65536 inodes, 262144 blocks
    13107 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=268435456
    8 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Allocating group tables: done
    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done

    创建挂载点

    [root@masterdb ~]# mkdir /test

    挂载文件系统

    [root@masterdb ~]# mount /dev/VG_TEST/lv_test /test

    确认结果

    [root@masterdb ~]# df --h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/centos-root 10G 4.1G 5.9G 42% /
    ...
    /dev/mapper/VG_TEST-lv_test 976M 1.3M 924M 1% /test

三、其他操作

1、lsblk

lsblk 命令会列出系统上的所有块设备,包括磁盘、分区以及逻辑卷(LV)等,可以根据 Type 进行识别。

当你使用 lsblk 命令时,它会按照层次结构展示这些块设备。这意味着它会显示磁盘作为顶级设备,然后是磁盘上的分区,接着是这些分区上可能存在的逻辑卷。这样,你可以清晰地看到整个存储系统的布局和层次关系。

[root@localhost ~]# 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   99G  0 part
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 41.1G  0 lvm  /home
sr0              11:0    1  4.2G  0 rom  /run/media/roo/CentOS 7 x86_64

需要注意区别,上述 pv、vg 和 lv 都是 LVM 里面的概念。对于磁盘来说,是可以直接格式化使用的。

2、查看文件系统

可以使用 lsblk -f 或者 mount

[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         55eed7fa-d7e8-4ed2-829e-2f0c783e5a3a   /boot
└─sda2          LVM2_member                 GR0XIJ-IMc0-zN5M-Euw3-VM5w-BNoB-iVRdsY
  ├─centos-root xfs                         83e1636e-21a3-4354-ae51-8f7b1a098949   /
  ├─centos-swap swap                        8955a905-81c4-4f53-be0d-bdd9a64e31a9   [SWAP]
  └─centos-home xfs                         ccda1c11-a7ab-4641-9bde-2b296828ba22   /home
sdb             xfs                         a95db32b-2882-472f-b86d-eaf2742a4e22   /oracleclp/oracle/240411151451
sr0             iso9660     CentOS 7 x86_64 2018-05-03-20-55-23-00                 /run/media/root/CentOS 7 x86_64

[root@localhost ~]# mount | grep oracleclp
/dev/sdb on /oracleclp/oracle/240411151451 type xfs (rw,relatime,nouuid,attr2,inode64,sunit=8,swidth=1024,noquota)
相关推荐
内核程序员kevin3 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
朝九晚五ฺ7 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream7 小时前
Linux的桌面
linux
xiaozhiwise7 小时前
Makefile 之 自动化变量
linux
意疏10 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
BLEACH-heiqiyihu10 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿10 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
我的K840911 小时前
Flink整合Hudi及使用
linux·服务器·flink
19004311 小时前
linux6:常见命令介绍
linux·运维·服务器