0x00 LVM概述

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

0x01 LVM架构

0x02 LVM创建

# 磁盘分区,模拟创建物理磁盘过程
[root@cdcjtx-centos-001 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):+2G
分区 3 已设置为 Linux 类型,大小设为 2 GiB 命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):w
The partition table has been altered! Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cdcjtx-centos-001 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc950dffb 设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 8e Linux LVM
/dev/sdb2 6293504 14682111 4194304 8e Linux LVM
/dev/sdb3 14682112 18876415 2097152 8e Linux LVM 命令(输入 m 获取帮助):q
# 创建PV
[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@cdcjtx-centos-001 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 3.00g 3.00g
/dev/sdb2 lvm2 --- 4.00g 4.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
# 创建PE大小为12M,名称为TESTvg的逻辑卷组
[root@cdcjtx-centos-001 ~]# vgcreate -s 12M TESTvg /dev/sdb1 /dev/sdb2 /dev/sdb3
Volume group "TESTvg" successfully created
[root@cdcjtx-centos-001 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
TESTvg 3 0 0 wz--n- <8.98g <8.98g
centos 1 2 0 wz--n- <19.00g 0
# 创建大小为4G,名为TESTlv的逻辑分区
[root@cdcjtx-centos-001 ~]# lvcreate -L 4G -n TESTlv TESTvg
Rounding up size to full physical extent <4.01 GiB
Logical volume "TESTlv" created.
[root@cdcjtx-centos-001 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
TESTlv TESTvg -wi-a----- <4.01g
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g

格式化分区和数据准备,准备数据便于后面的数据完整性测试

# 格式化分区为ext4类型,并挂载到/users目录下,将目录/etc/pam.d 复制到/users目录下
[root@cdcjtx-centos-001 ~]# mkfs.ext4 /dev/TESTvg/TESTlv
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
263472 inodes, 1053696 blocks
52684 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1080033280
33 block groups
32768 blocks per group, 32768 fragments per group
7984 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 [root@cdcjtx-centos-001 ~]# partprobe // 在不重新启动机器的情况下系统能够识别这些分区
[root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/
[root@cdcjtx-centos-001 ~]# cp -R /etc/pam.d/ /users/
[root@cdcjtx-centos-001 ~]# ls -l /users/
总用量 20
drwx------ 2 root root 16384 5月 13 16:27 lost+found
drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d

LVM扩展

# 为TESTlv新增加2G容量,并验证数据完整度

[root@cdcjtx-centos-001 ~]# lvextend -L +2G /dev/TESTvg/TESTlv # 扩展物理边界
Rounding size to boundary between physical extents: 2.00 GiB.
Size of logical volume TESTvg/TESTlv changed from <4.02 GiB (343 extents) to 6.02 GiB (514 extents).
Logical volume TESTvg/TESTlv successfully resized. [root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv # 扩展逻辑边界
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/TESTvg/TESTlv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/TESTvg/TESTlv is now 1579008 blocks long. [root@cdcjtx-centos-001 ~]# ls -l /users/ #数据校验
总用量 20
drwx------ 2 root root 16384 5月 13 16:27 lost+found
drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d

LVM缩减

# 将TESTlv缩减到2G大小,并校验数据完整性!
# 这里采用ext4作为文件系统类型
# 先卸载物理文件系统->文件系统的强制检测和修复->缩减逻辑边界->缩减物理边界->重新挂载 [root@cdcjtx-centos-001 ~]# umount /dev/TESTvg/TESTlv # 卸载物理文件系统 [root@cdcjtx-centos-001 ~]# e2fsck -f /dev/TESTvg/TESTlv # 文件系统的强制检测和修复
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/TESTvg/TESTlv: 67/391216 files (0.0% non-contiguous), 61501/1579008 blocks [root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv 2G # 缩减逻辑边界为2G大小
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/TESTvg/TESTlv to 524288 (4k) blocks.
The filesystem on /dev/TESTvg/TESTlv is now 524288 blocks long. [root@cdcjtx-centos-001 ~]# lvreduce -L 2G /dev/TESTvg/TESTlv # 缩减物理边界为2G大小
Rounding size to boundary between physical extents: 2.00 GiB.
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce TESTvg/TESTlv? [y/n]: y # 确认执行,注意风险性
Size of logical volume TESTvg/TESTlv changed from 6.02 GiB (514 extents) to 2.00 GiB (171 extents).
Logical volume TESTvg/TESTlv successfully resized. [root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/ #重新挂载 [root@cdcjtx-centos-001 ~]# ls -l /users/ #数据查看
总用量 20
drwx------ 2 root root 16384 5月 13 16:27 lost+found
drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d

删除LVM卷案例

[root@cdcjtx-centos-001 ~]# umount /users/

[root@cdcjtx-centos-001 ~]# lvremove /dev/TESTvg/TESTlv
Do you really want to remove active logical volume TESTvg/TESTlv? [y/n]: y
Logical volume "TESTlv" successfully removed [root@cdcjtx-centos-001 ~]# vgremove TESTvg
Volume group "TESTvg" successfully removed [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb3
Labels on physical volume "/dev/sdb3" successfully wiped. [root@cdcjtx-centos-001 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0 [root@cdcjtx-centos-001 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0 [root@cdcjtx-centos-001 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g

Linux学习笔记之LVM基本应用,扩展及缩减实现的更多相关文章

  1. Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令

    Linux学习笔记(4)磁盘分区(fdisk).挂载与文件系统命令 1.磁盘分区是怎么表示的? 1.1 对于IDE接口,第一主盘为hda,第1从盘为hdb,第1从盘的第1个分区为hdb1 1.2 对于 ...

  2. deepin linux学习笔记

    目录 deepin linux学习笔记 前言 linux常用命令 ls 显示文件夹内容 cd 切换当前目录 pwd 查看当前工作目录 mkdir 新建文件夹 rm 删除文件或文件夹 mv 移动文件 c ...

  3. Linux 学习笔记之超详细基础linux命令 Part 11

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 10---------------- ...

  4. Linux 学习笔记之超详细基础linux命令 Part 7

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...

  5. Intel® Media SDK Media Samples Linux 学习笔记(转)

    最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行 ...

  6. Linux学习笔记之 Btrfs文件系统简介及使用

    Btrfs 也有一个重要的缺点,当 BTree 中某个节点出现错误时,文件系统将失去该节点之下的所有的文件信息.而 ext2/3 却避免了这种被称为”错误扩散”的问题. Btrfs相关介绍: Btrf ...

  7. Linux学习笔记——管道PIPE

    管道:当从一个进程连接数据流到另一个进程时,使用术语管道(pipe).# include <unistd.h> int pipe(int filedes[2]); //创建管道 pipe( ...

  8. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始

    我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...

  9. linux 学习笔记一

    Linux 学习笔记一 计算机 主要分为五个部分:控制器,运算器,存储器,输入设备,输出设备. 操作系统 操作系统就是针对硬件编写的程序,同时提供硬件接口调用的接口.操作系统需要处理如管理与配置内存. ...

随机推荐

  1. windows10 docker安装使用

    一.安装部署 1.下载安装 https://hub.docker.com/editions/community/docker-ce-desktop-windows 需要注册完后,才可以下载.点击安装 ...

  2. mysql 无法连接提示 Authentication plugin 'caching_sha2_password' cannot be loaded

    mysql 无法连接提示 Authentication plugin 'caching_sha2_password' cannot be loaded 可能是密码没有设置或者,密码设置类型不符,可参考 ...

  3. SpringBoot整合JavaWeb

    一.SpringBoot整合Servlet的两种方式 1.通过注解扫描完成Servlet组件的注册 编写Servlet package com.example.demo.servlet; import ...

  4. InterpretML 微软可解释性机器学习包

    InterpretML InterpretML: A Unified Framework for Machine Learning Interpretability https://github.co ...

  5. 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...

  6. django 权限设置 左侧菜单点击显示,面包屑

    1.左侧菜单点击显示 就是在点击的时候保留点击的功能 方法. 1.加入新的字段,pid来判断 class Permission(models.Model): """ 权限 ...

  7. Nginx反向代理服务器的安装与配置

    Nginx反向代理服务器的安装与配置 时间:10月19日 Nginx反向代理有不少需要我们解决的问题,其中有不少问题是基于安装上的问题,在安装完成后的相关调试也让很多人头疼不已.下面就向大家介绍有关于 ...

  8. Oracle 删除表恢复

    这句是查询Oracle中回收站的数据 select object_name,original_name,partition_name,type,ts_name,createtime,droptime ...

  9. 2019 Nowcoder Multi-University Training Contest 4 E Explorer

    线段树分治. 把size看成时间,相当于时间 $l$ 加入这条边,时间 $r+1$ 删除这条边. 注意把左右端点的关系. #include <bits/stdc++.h> ; int X[ ...

  10. 简述 gevent模块的作用和应用场景。

    当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成, 再在适当的时候切换回来继续执行.由于IO操作非常耗时,经常使程序处于等待状态, 有了geve ...