LVM 逻辑卷管理系统

部署

第一步: 虚拟机创建多块硬盘,这里我有四块硬盘,除了sda,其他的三块都是用于本次测试

- 硬盘
  - sda 40G
	- sdb 8G
	- sdc 10G
	- sdd 9G

#这里我们可以用 fdisk -l 命令查看硬盘信息

shell > fdisk -l
磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa6f2461a

   设备 Boot      Start         End      Blocks   Id  System

磁盘 /dev/sdd:9663 MB, 9663676416 字节,18874368 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbbcc17a9

   设备 Boot      Start         End      Blocks   Id  System

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a05f8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    83886079    41942016   83  Linux

磁盘 /dev/sdb:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7e3acb91

   设备 Boot      Start         End      Blocks   Id  System

# 也可以 使用 lsblk 简单查看硬盘
shell > lsblk
sda      8:0    0  40G  0 disk
└─sda1   8:1    0  40G  0 part /
sdb      8:16   0   8G  0 disk
sdc      8:32   0  10G  0 disk
sdd      8:48   0   9G  0 disk

# 可以看到除了硬盘sda,其他的都是新的,还未进行分区.

第二步: 安装所需要的软件

dnf install -y lvm2 dmsetup mdadm reiserfsprogs xfsprogs

第三步: 对三块硬盘进行分区


	- sdb 总大小8G,划分一个4G分区
	- sdc 总大小10G,划分一个5G分区
	- sdd 总大小9G,划分一个3G分区

shell > fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):
shell > n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
shell > p
Using default response p
分区号 (1-4,默认 1):
shell > 1
起始 扇区 (2048-16777215,默认为 2048):
shell > <ENTER>(这里是直接敲回车键,使用默认的!)
Last 扇区, +扇区 or +size{K,M,G} (2048-16777215,默认为 16777215):
shell > +4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB
shell > t
已选择分区 1
Hex 代码(输入 L 列出所有代码):
shell > L
 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / 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 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 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 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):
shell > 8e
#已将分区“Linux”的类型更改为“Linux LVM”
shell > w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
# 省去交互反馈, 将sdc与sdd硬盘按照计划分区

# sdc 分5G
shell > fdisk /dev/sdc
shell > n
shell > p
shell > 1
shell > <ENTER>(这里是直接敲回车键,使用默认的!)
shell > +5G
shell > t
shell > L
shell > 8e
shell > w

# sdd 分3G
shell > fdisk /dev/sdd
shell > n
shell > p
shell > 1
shell > <ENTER>(这里是直接敲回车键,使用默认的!)
shell > +3G
shell > t
shell > L
shell > 8e
shell > w
# 查看分区情况
shell > lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  40G  0 disk
└─sda1   8:1    0  40G  0 part /
sdb      8:16   0   8G  0 disk
└─sdb1   8:17   0   4G  0 part
sdc      8:32   0  10G  0 disk
└─sdc1   8:33   0   5G  0 part
sdd      8:48   0   9G  0 disk
└─sdd1   8:49   0   3G  0 part

第四步: 将分区标记成LVM物理卷

# 标记
shell > pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.
# 查看
shell > pvdisplay
  "/dev/sdb1" is a new physical volume of "4.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               4.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               UuXQ0q-dIgZ-z4zf-dOgw-63TT-aeak-XWiKc0

  "/dev/sdc1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               0XhL6F-S1Bt-5sao-1Jts-dIw4-hc7g-XMLIBA

  "/dev/sdd1" is a new physical volume of "3.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name
  PV Size               3.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               IhAYSM-yYlK-0gUL-IiKi-mLFu-3mHp-NWi9kJ

第五步: 将分区添加到一个一个卷组,这里我起名web

# 创建卷组
shell > vgcreate web /dev/sdb1 /dev/sdc1 /dev/sdd1
  Volume group "web" successfully created

# 查看卷组详情
shell > vgdisplay
  --- Volume group ---
  VG Name               web
  System ID
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               <11.99 GiB
  PE Size               4.00 MiB
  Total PE              3069
  Alloc PE / Size       0 / 0
  Free  PE / Size       3069 / <11.99 GiB
  VG UUID               8QoSZQ-Juqz-50f7-XOnW-uSzL-X8Cr-oapIfN

# 查看卷组
shell > vgscan
  Reading volume groups from cache.
  Found volume group "web" using metadata type lvm2

# 重命名卷组(非主线学习,实验后请还原,如无法还原请勿执行)
shell > vgrename web web2
  Volume group "web" successfully renamed to "web2"

# 删除卷组(非主线学习,实验后请还原,如无法还原请勿执行)
shell > vgremove web2
  Volume group "web2" successfully removed

# 增加分区至卷组(非主线学习,实验后请还原,如无法还原请勿执行)
shell > vgextend web2 /dev/sdctest01
  Volume group "web2" successfully extended

# 查看卷组与分区的关系
shell > pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/sdb1  web lvm2 a--  <4.00g <4.00g
  /dev/sdc1  web lvm2 a--  <5.00g <5.00g
  /dev/sdd1  web lvm2 a--  <3.00g <3.00g

# 查看简要信息
shell > vgs
  VG  #PV #LV #SN Attr   VSize   VFree
  web   3   0   0 wz--n- <11.99g <11.99g

第六步: 创建逻辑卷,来源 web卷组

	- 3G大小 test1  逻辑卷
	- 3G大小 test2  逻辑卷
	- 剩余大小 test3 逻辑卷


# 创建逻辑卷
shell > lvcreate -L 3G -n test1 web
  Logical volume "test1" created.
shell > lvcreate -L 3G -n test2 web
  Logical volume "test2" created.
shell > lvcreate -l 100%FREE -n test3 web
  Logical volume "test3" created.

# 查看逻辑卷
shell > vgs -o +lv_size,lv_name
  VG  #PV #LV #SN Attr   VSize   VFree LSize  LV
  web   3   3   0 wz--n- <11.99g    0   3.00g test1
  web   3   3   0 wz--n- <11.99g    0   3.00g test2
  web   3   3   0 wz--n- <11.99g    0  <5.99g test3


# 删除逻辑卷轴(非主线学习,实验后请还原,如无法还原请勿执行)
shell > lvremove /dev/web/test3
Do you really want to remove active logical volume web/test3? [y/n]: y
  Logical volume "test3" successfully removed

# 将test3逻辑卷大小减小到2G(非主线学习,实验后请还原,如无法还原请勿执行)
shell > lvreduce -L2G /dev/web/test3
  WARNING: Reducing active logical volume to 2.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce web/test3? [y/n]: y
  Size of logical volume web/test3 changed from <5.99 GiB (1533 extents) to 2.00 GiB (512 extents).
  Logical volume web/test3 successfully resized.

# 将test2逻辑卷大小减小到4G(非主线学习,实验后请还原,如无法还原请勿执行)
shell > lvextend -L4G /dev/web/test2
  Size of logical volume web/test2 changed from 3.00 GiB (768 extents) to 4.00 GiB (1024 extents).
  Logical volume web/test2 successfully resized.

# 将test2逻辑卷大小增加到所有VG大小(非主线学习,实验后请还原,如无法还原请勿执行)
shell > lvextend -l +100%FREE /dev/web/test2
  Size of logical volume web/test2 changed from <4 GiB (5629 extents) to 12 GiB (7164 extents).
    Logical volume web/test2 successfully resized.

第七步: 在逻辑卷上创建文件系统,并且挂载至 var下

	- test1 -> ext3
	- test2 -> xfs
	- test3 -> btrfs


# 创建文件系统
shell > mkfs.ext3 /dev/web/test1
shell > mkfs.xfs /dev/web/test2
shell > mkfs.btrfs /dev/web/test3

# 创建挂载目录
shell > mkdir /var/test1 /var/test2 /var/test3

# 临时挂载
shell > mount /dev/web/test1 /var/test1
shell > mount /dev/web/test2 /var/test2
shell > mount /dev/web/test3 /var/test3

# 查看
shell > df -h
/dev/mapper/web-test1  2.9G  4.6M  2.8G    1% /var/test1
/dev/mapper/web-test2  3.0G   33M  3.0G    2% /var/test2
/dev/mapper/web-test3  6.0G   17M  5.4G    1% /var/test3

# 永久挂载
shell > vim /etc/fstab
# 追加以下代码
/dev/web/test1 /var/test1      ext3       rw,noatime    0 0
/dev/web/test2 /var/test2      xfs        rw,noatime    0 0
/dev/web/test3 /var/test3      btrfs      rw,noatime    0 0