Linux LVM磁盘管理与FS挂载

背景

公司使用的服务器一般为Linux虚拟机(云主机),其系统盘构成完整的Linux文件系统,数据盘大小在申请时自己指定,但没有被挂载到系统中。如下所示,sda、sdb构成Linux文件系统,100G的sdc没有挂载点。因而,有了此篇文章---Linux LVM分区与FS挂载。

[[email protected] mnt]<20180926 09:22:35># lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0                         2:0    1    4K  0 disk 
sda                         8:0    0   70G  0 disk 
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   69G  0 part 
  ├─VolGroup-lv_root      253:0    0   10G  0 lvm  /
  ├─VolGroup-lv_swap      253:1    0    8G  0 lvm  [SWAP]
  ├─VolGroup-lv_home      253:3    0    5G  0 lvm  /home
  ├─VolGroup-lv_var       253:4    0   10G  0 lvm  /var
  ├─VolGroup-lv_tmp       253:5    0    5G  0 lvm  /tmp
  ├─VolGroup-lv_opt       253:6    0   10G  0 lvm  /opt
  └─VolGroup-lv_var_crash 253:7    0   10G  0 lvm  /var/crash
sdb                         8:16   0   30G  0 disk 
└─sdb1                      8:17   0   30G  0 part 
  └─VolApp-lv_app         253:2    0   30G  0 lvm  /opt/app
sdc                         8:32   0  100G  0 disk 
sr0                        11:0    1 1024M  0 rom  

基本概念与术语

概念

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

术语

1. PhysicalStorageMedia物理存储介质

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

2. 物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

3. 卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

4. 逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等);

5. 物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

6. 逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

相关命令

pvcreate

  1. DESCRIPTION

pvcreate  initializes  PhysicalVolume  for later use by the Logical Volume Manager (LVM).  Each PhysicalVolume can be a disk partition, whole disk, meta device, or loopback file. For DOS disk partitions, the partition id should be set to 0x8e using fdisk(8), cfdisk(8), or a equivalent. For whole disk devices only the partition table must be erased, which will      effectively destroy all data on that disk. This can be done by zeroing the first sector with:

       dd if=/dev/zero of=PhysicalVolume bs=512 count=1

Continue with vgcreate(8) to create a new volume group on PhysicalVolume, or vgextend(8) to add PhysicalVolume to an existing volume group.

pvcreate用于初始化物理卷(包括磁盘分区、整个磁盘、元设备等)以便后续的LVM(逻辑卷管理器使用)。后续使用vgcreate在物理卷上创建一个逻辑卷组,或者使用vgextend将物理卷添加到一个已存在的逻辑卷组。命令样式:

pvcreate /dev/sdc

vgcreate

  1. DESCRIPTION

vgcreate creates a new volume group called VolumeGroupName using the block special device PhysicalDevicePath.       If PhysicalDevicePath was not previously configured for LVM with pvcreate(8), the device will be initialized with the same default values used with pvcreate(8). If non-default pvcre-ate values are desired, they may be given on the commandline with the same options as pvcreate(8).  See PHYSICAL DEVICE OPTIONS for available options. Note that the restore-related       options such as --restorefile, --uuid and --physicalvolumesize are not available.  If a restore operation is needed, use pvcreate(8) and vgcfgrestore(8).

vgcreate创建一个名为VolumeGroupName的新逻辑卷组,如果物理设备路径之前没有被pvcreate过,本命令将以与pvcreate相同的默认参数初始化物理卷。命令样式:

vgcreate oravg /dev/sdc;

lvcreate

  1. DESCRIPTION

lvcreate creates a new logical volume in a volume group (see vgcreate(8), vgchange(8)) by allocating logical extents from the free physical extent pool of that volume group. If there are not enough free physical extents then the volume group can be extended (see vgextend(8)) with other physical volumes or by reducing existing logical volumes of this volume group in size (see lvreduce(8)). If you specify one or more PhysicalVolumes, allocation of physical extents will be restricted to these volumes. The second form supports the creation of snapshot logical volumes which keep the contents of the original logical volume for backup purposes.

lvcreate通过分配逻辑扩展块在逻辑卷组中创建一个新的逻辑卷。命令样式:

lvcreate -L 20G -n lv_u01 oravg;

其中:-L(--size)指定逻辑卷组的大小;-n(--name)指定逻辑卷名;oravg为逻辑卷组名。

其他

pvdisplay

lvm

lvextend

一套完成的磁盘LVM分区与磁盘挂载

以下以oracle安装教程为基础,简要介绍一套完整的LVM分区与文件系统挂载流程,更加深入的知识需要仔细研究LVM命令集的哪些命令行选项(option)。

逻辑卷组准备

pvcreate /dev/sdc;
vgcreate oravg /dev/sdc;

 创建逻辑卷

lvcreate -L 20G -n lv_u01 oravg;
lvcreate -L 80G -n lv_data oravg;

构建文件系统

mkfs -t ext4 /dev/oravg/lv_u01;
mkfs -t ext4 /dev/oravg/lv_data;

挂载文件系统

mkdir -p /u01;
mkdir -p /data;
mount /dev/oravg/lv_u01 /u01;
mount /dev/oravg/lv_data /data;

最总形成这样的系统挂载图:

[[email protected] ~]<20180926 10:08:01># lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   70G  0 disk 
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   69G  0 part 
  ├─VolGroup-lv_root      253:0    0   10G  0 lvm  /
  ├─VolGroup-lv_swap      253:1    0    8G  0 lvm  [SWAP]
  ├─VolGroup-lv_home      253:4    0    5G  0 lvm  /home
  ├─VolGroup-lv_var       253:6    0   10G  0 lvm  /var
  ├─VolGroup-lv_tmp       253:7    0    5G  0 lvm  /tmp
  ├─VolGroup-lv_opt       253:8    0   10G  0 lvm  /opt
  └─VolGroup-lv_var_crash 253:9    0   10G  0 lvm  /var/crash
sdb                         8:16   0   30G  0 disk 
└─sdb1                      8:17   0   30G  0 part 
  └─VolApp-lv_app         253:5    0   30G  0 lvm  /opt/app
sdc                         8:32   0  180G  0 disk 
├─oravg-lv_u01            253:2    0   20G  0 lvm  /u01
└─oravg-lv_data           253:3    0   80G  0 lvm  /data
sr0                        11:0    1 1024M  0 rom  

扩展思考:

1. 永久挂载

上面解释的mount命令敲下去会挂载文件系统,但是系统重启后需要重新挂载。如何让系统启动后自动挂载磁盘呢?答案是:/etc/fstab文件

2. 剩余空间分割

上面的逻辑卷创建时,都指定了卷大小。在实际应用中,往往前几个卷用于特定目地,并将卷组的最后剩余空间分配给最后一个逻辑卷,那该如何?答案是:

 lvcreate --name newvol -l 100%FREE oravg

如图:

Linux LVM磁盘管理与FS挂载

完,感谢关注。