如何理解LVM以及其管理

什么是LVM

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

为什么要使用LVM?

在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间会越来越小,因为硬盘有价,数据无价,我们不能直接更换大硬盘,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。
因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

LVM工作机制?

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

逻辑卷管理概念

  1. 物理卷(PV, Physical Volume)
    物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

  2. 卷组(VG, Volume Group)
    LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

  3. 逻辑卷(LV, Logical Volume)
    LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。

一、理论及命令框图

1.LVM结构图

在这里插入图片描述

2.LVM 与文件系统之间的关系

在这里插入图片描述

3、PV-VG-LV 的设备名

在这里插入图片描述

4、LVM 常用命令集

在这里插入图片描述

二、实验前期准备

1.配置yum源

1.删除原有yum源
[root@localhost ~]# rm  -rfv  /etc/yum.repos.d/*   
2.下载阿里源
[root@localhost~]# wget  http://mirrors.aliyun.com/repo/Centos-7.repo
	//yum源配置有很多方法,我这里列举了其中的一种
3.将下载的阿里源复制到源目录下
[root@localhost~]#cp  Centos-7.repo   /etc/yum.repos.d/ 
4.清除缓存并加载yum源
[root@localhost ~] yum clean  all 
[root@localhost ~] yum  repolist all
	//yum repoolist all 也可以换成 yum list (唯一区别就是前者可以看到源信息,后者是列出所有源,特此推荐使用yum repolist all)

2.磁盘分区

  • 分区要求:在/dev/sdc上划分3个分区:
  • /dev/sdc1 1G
    /dev/sdc2 2G
    /dev/sdc3 2G
[root@localhost ~]# fdisk /dev/sdc 
[root@localhost ~]# partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)/dev/sr0 已按照只读方式打开。
[root@localhost ~]# fdisk -l
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe64138e1

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     2099199     1048576   83  Linux
/dev/sdc2         2099200     6293503     2097152   83  Linux
/dev/sdc3         6293504    10487807     2097152   83  Linux
  • 修改分区类型
    使用fdisk命令的t子命令把分区文件类型修改为8e类型(即LVM格式)修改磁盘类型:8e
    注:这里演示我只修改了“#/dev/sdc1” sdc2和sdc3方法一样
[root@localhost ~]# fdisk /dev/sdc 
欢迎使用 fdisk (util-linux 2.23.2)。

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

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe64138e1

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     2099199     1048576   8e  Linux LVM
/dev/sdc2         2099200     6293503     2097152   8e  Linux LVM
/dev/sdc3         6293504    10487807     2097152   8e  Linux LVM

三、开始创建:

1.创建物理卷

  • 操作要求
    使用pvcreate命令把分区/dev/sdc1创建成物理卷
    使用pvcreate命令把分区/dev/sdc2创建成物理卷
    使用pvcreate命令把分区/dev/sdc3创建成物理卷
[root@localhost ~]# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created.
[root@localhost ~]# pvcreate /dev/sdc3
  Physical volume "/dev/sdc3" successfully created.
  • 验证

注: /dev/sda2是系统在安装系统的时候自动创建,不用管

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree   
  /dev/sda2  centos lvm2 a--  <19.51g   40.00m
  /dev/sdc1         lvm2 ---    1.00g    1.00g
  /dev/sdc2         lvm2 ---    2.00g    2.00g
  /dev/sdc3         lvm2 ---    2.00g    2.00g

2.创建卷组:VG和卷组扩容

1.创建卷组:vg100

• 使用/dev/sdc1和/dev/sdc2创建卷组vg100
[root@localhost ~]# vgcreate vg100 /dev/sdc1 /dev/sdc2 
  Volume group "vg100" successfully created
  • 使用vgdisplay命令查看卷组详细情况
[root@localhost ~]# vgdisplay    
  --- Volume group ---
  VG Name               vg100
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       0 / 0   
  Free  PE / Size       766 / 2.99 GiB
  VG UUID               9IUUDi-ilvO-5npL-O6ru-gRcH-Qtxx-IIyGRR

2.卷组扩容

  • 把/dev/sdb3物理卷添加到vg100卷组中
[root@localhost ~]# vgextend vg100 /dev/sdc3 
  Volume group "vg100" successfully extended
  • 使用vgdisplay命令查看卷组详细情况
[root@localhost ~]# vgextend vg100 /dev/sdc3 
  Volume group "vg100" successfully extended
[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg100
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  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               <4.99 GiB
  PE Size               4.00 MiB
  Total PE              1277
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1277 / <4.99 GiB
  VG UUID               9IUUDi-ilvO-5npL-O6ru-gRcH-Qtxx-IIyGRR

3.创建逻辑卷

1.创建逻辑卷并加入到卷组

创建逻辑卷lv100A为100M并加入到卷组vg100
创建逻辑卷lv100B为200M并加入到卷组vg100
创建逻辑卷lv100C为300M并加入到卷组vg100

[root@localhost ~]# lvcreate -L 100M -n lv100A vg100
  Logical volume "lv100A" created.
[root@localhost ~]# lvcreate -L 200M -n lv100B vg100
  Logical volume "lv100B" created.
[root@localhost ~]# lvcreate -L 300M -n lv100C vg100
  Logical volume "lv100C" created.

注释:
-L 参数表示大小
-n 参数表示要加入到的卷组名称

2.以ext4数据类型格式化逻辑卷

注:在这里我只格式化了/dev/vg100/lv100A, vg100B和vg100C的格式化方法与/dev/vg100/lv100A一样

[root@localhost ~]# mkfs.ext4 /dev/vg100/lv100A 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

注释:
mkfs是格式化命令
.ext4表示格式化类型为ext4类型

3.逻辑卷挂载

  • 创建逻辑卷挂载目录:
[root@localhost ~]# mkdir /root/{myhome1,myhome2,myhome3}
[root@localhost ~]# ll /root/
总用量 8
-rw-------. 1 root root  955 5月   2 06:30 anaconda-ks.cfg
-rw-r--r--. 1 root root 2523 6月  16 2018 Centos-7.repo
drwxr-xr-x. 2 root root    6 5月   5 03:26 myhome1
drwxr-xr-x. 2 root root    6 5月   5 03:26 myhome2
drwxr-xr-x. 2 root root    6 5月   5 03:26 myhome3
  • 把逻辑卷挂载到创建的挂载目录
[root@localhost ~]# mount /dev/vg100/lv100A /root/myhome1/
[root@localhost ~]# mount /dev/vg100/lv100B /root/myhome2/
[root@localhost ~]# mount /dev/vg100/lv100C /root/myhome3/
[root@localhost ~]# 
[root@localhost ~]# df -h
文件系统                  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root    18G 1018M   17G    6% /
devtmpfs                  903M     0  903M    0% /dev
tmpfs                     913M     0  913M    0% /dev/shm
tmpfs                     913M  8.7M  904M    1% /run
tmpfs                     913M     0  913M    0% /sys/fs/cgroup
/dev/sda1                 497M  125M  373M   25% /boot
tmpfs                     183M     0  183M    0% /run/user/0
/dev/mapper/vg100-lv100A   93M  1.6M   85M    2% /root/myhome1
/dev/mapper/vg100-lv100B  190M  1.6M  175M    1% /root/myhome2
/dev/mapper/vg100-lv100C  283M  2.1M  262M    1% /root/myhome3

4.逻辑卷扩容

  • 要求:把逻辑卷/dev/vg100/lv100A由原来的100M扩容为400M
	//取消dev/vg100/lv100A在/root/myhome1/目录的挂载
[root@localhost ~]# umount /root/myhome1/

	//重新设置lv100A卷大小为300M; -L 指定新的大小
[root@localhost ~]# lvresize -L 400M /dev/vg100/lv100A 
  Size of logical volume vg100/lv100A changed from 100.00 MiB (25 extents) to 400.00 MiB (100 extents).
  Logical volume vg100/lv100A successfully resized.

	//检查磁盘错误  (ext4执行)
[root@localhost ~]# e2fsck -f /dev/vg100/lv100A 
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg100/lv100A: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
		
	//更新逻辑卷信息(ext4执行)
[root@localhost ~]# resize2fs /dev/vg100/lv100A 
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg100/lv100A to 409600 (1k) blocks.
The filesystem on /dev/vg100/lv100A is now 409600 blocks long.

	//重新挂载到/root/myhome1/
[root@localhost ~]# mount /dev/vg100/lv100A /root/myhome1
  • 验证
[root@localhost ~]# df -h
文件系统                  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root    18G 1018M   17G    6% /
devtmpfs                  903M     0  903M    0% /dev
tmpfs                     913M     0  913M    0% /dev/shm
tmpfs                     913M  8.7M  904M    1% /run
tmpfs                     913M     0  913M    0% /sys/fs/cgroup
/dev/sda1                 497M  125M  373M   25% /boot
tmpfs                     183M     0  183M    0% /run/user/0
/dev/mapper/vg100-lv100B  190M  1.6M  175M    1% /root/myhome2
/dev/mapper/vg100-lv100C  283M  2.1M  262M    1% /root/myhome3
/dev/mapper/vg100-lv100A  384M  2.3M  358M    1% /root/myhome1

四、删除LVM

如果要彻底的来移除LVM的话,需要把创建的步骤反过来操作。
1.卸载文件系统
卸载文件系统就是把文件系统从挂载目录取消挂载

[root@localhost ~]# umount /root/myhome1/
[root@localhost ~]# umount /root/myhome2/
[root@localhost ~]# umount /root/myhome3/
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G 1019M   17G    6% /
devtmpfs                 903M     0  903M    0% /dev
tmpfs                    913M     0  913M    0% /dev/shm
tmpfs                    913M  8.7M  904M    1% /run
tmpfs                    913M     0  913M    0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M   25% /boot
tmpfs                    183M     0  183M    0% /run/user/0

2.删除lv

[root@localhost ~]# lvremove /dev/vg100/lv100A
Do you really want to remove active logical volume vg100/lv100A? [y/n]: y
  Logical volume "lv100A" successfully removed
  
[root@localhost ~]# lvremove /dev/vg100/lv100B
Do you really want to remove active logical volume vg100/lv100B? [y/n]: y
  Logical volume "lv100B" successfully removed
  
[root@localhost ~]# lvremove /dev/vg100/lv100C
Do you really want to remove active logical volume vg100/lv100C? [y/n]: y
  Logical volume "lv100C" successfully removed

3:删除vg

[root@localhost ~]# vgremove /dev/vg100
  Volume group "vg100" successfully removed

4:删除pv

[root@localhost ~]# pvremove /dev/sdc1
  Labels on physical volume "/dev/sdc1" successfully wiped.
  
[root@localhost ~]# pvremove /dev/sdc2
  Labels on physical volume "/dev/sdc2" successfully wiped.
  
[root@localhost ~]# pvremove /dev/sdc3
  Labels on physical volume "/dev/sdc3" successfully wiped.

感谢您的阅读,如有不足,请您谅解,尚在学习中

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值