0x00 LVM概述

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

0x01 LVM架构

0x02 LVM创建

  1. # 磁盘分区,模拟创建物理磁盘过程
  2. [root@cdcjtx-centos-001 ~]# fdisk /dev/sdb
  3. 欢迎使用 fdisk (util-linux 2.23.2)。
  4.  
  5. 更改将停留在内存中,直到您决定将更改写入磁盘。
  6. 使用写入命令前请三思。
  7.  
  8. 命令(输入 m 获取帮助):n
  9. Partition type:
  10. p primary (0 primary, 0 extended, 4 free)
  11. e extended
  12. Select (default p):
  13. Using default response p
  14. 分区号 (1-4,默认 1):
  15. 起始 扇区 (2048-41943039,默认为 2048):
  16. 将使用默认值 2048
  17. Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+3G
  18. 分区 1 已设置为 Linux 类型,大小设为 3 GiB
  19.  
  20. 命令(输入 m 获取帮助):n
  21. Partition type:
  22. p primary (1 primary, 0 extended, 3 free)
  23. e extended
  24. Select (default p):
  25. Using default response p
  26. 分区号 (2-4,默认 2):
  27. 起始 扇区 (6293504-41943039,默认为 6293504):
  28. 将使用默认值 6293504
  29. Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+4G
  30. 分区 2 已设置为 Linux 类型,大小设为 4 GiB
  31.  
  32. 命令(输入 m 获取帮助):n
  33. Partition type:
  34. p primary (2 primary, 0 extended, 2 free)
  35. e extended
  36. Select (default p):
  37. Using default response p
  38. 分区号 (3,4,默认 3):
  39. 起始 扇区 (14682112-41943039,默认为 14682112):
  40. 将使用默认值 14682112
  41. Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):+2G
  42. 分区 3 已设置为 Linux 类型,大小设为 2 GiB
  43.  
  44. 命令(输入 m 获取帮助):t
  45. 分区号 (1-3,默认 3):
  46. Hex 代码(输入 L 列出所有代码):8e
  47. 已将分区“Linux”的类型更改为“Linux LVM
  48.  
  49. 命令(输入 m 获取帮助):t
  50. 分区号 (1-3,默认 3):2
  51. Hex 代码(输入 L 列出所有代码):8e
  52. 已将分区“Linux”的类型更改为“Linux LVM
  53.  
  54. 命令(输入 m 获取帮助):t
  55. 分区号 (1-3,默认 3):1
  56. Hex 代码(输入 L 列出所有代码):8e
  57. 已将分区“Linux”的类型更改为“Linux LVM
  58.  
  59. 命令(输入 m 获取帮助):w
  60. The partition table has been altered!
  61.  
  62. Calling ioctl() to re-read partition table.
  63. 正在同步磁盘。
  64. [root@cdcjtx-centos-001 ~]# fdisk /dev/sdb
  65. 欢迎使用 fdisk (util-linux 2.23.2)。
  66.  
  67. 更改将停留在内存中,直到您决定将更改写入磁盘。
  68. 使用写入命令前请三思。
  69.  
  70. 命令(输入 m 获取帮助):p
  71.  
  72. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  73. Units = 扇区 of 1 * 512 = 512 bytes
  74. 扇区大小(逻辑/物理):512 字节 / 512 字节
  75. I/O 大小(最小/最佳):512 字节 / 512 字节
  76. 磁盘标签类型:dos
  77. 磁盘标识符:0xc950dffb
  78.  
  79. 设备 Boot Start End Blocks Id System
  80. /dev/sdb1 2048 6293503 3145728 8e Linux LVM
  81. /dev/sdb2 6293504 14682111 4194304 8e Linux LVM
  82. /dev/sdb3 14682112 18876415 2097152 8e Linux LVM
  83.  
  84. 命令(输入 m 获取帮助):q
  1. # 创建PV
  2. [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb1
  3. Physical volume "/dev/sdb1" successfully created.
  4. [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb2
  5. Physical volume "/dev/sdb2" successfully created.
  6. [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb3
  7. Physical volume "/dev/sdb3" successfully created.
  8. [root@cdcjtx-centos-001 ~]# pvs
  9. PV VG Fmt Attr PSize PFree
  10. /dev/sda2 centos lvm2 a-- <19.00g 0
  11. /dev/sdb1 lvm2 --- 3.00g 3.00g
  12. /dev/sdb2 lvm2 --- 4.00g 4.00g
  13. /dev/sdb3 lvm2 --- 2.00g 2.00g
  1. # 创建PE大小为12M,名称为TESTvg的逻辑卷组
  2. [root@cdcjtx-centos-001 ~]# vgcreate -s 12M TESTvg /dev/sdb1 /dev/sdb2 /dev/sdb3
  3. Volume group "TESTvg" successfully created
  4. [root@cdcjtx-centos-001 ~]# vgs
  5. VG #PV #LV #SN Attr VSize VFree
  6. TESTvg 3 0 0 wz--n- <8.98g <8.98g
  7. centos 1 2 0 wz--n- <19.00g 0
  1. # 创建大小为4G,名为TESTlv的逻辑分区
  2. [root@cdcjtx-centos-001 ~]# lvcreate -L 4G -n TESTlv TESTvg
  3. Rounding up size to full physical extent <4.01 GiB
  4. Logical volume "TESTlv" created.
  5. [root@cdcjtx-centos-001 ~]# lvs
  6. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  7. TESTlv TESTvg -wi-a----- <4.01g
  8. root centos -wi-ao---- <17.00g
  9. swap centos -wi-ao---- 2.00g

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

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

LVM扩展

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

LVM缩减

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

删除LVM卷案例

  1. [root@cdcjtx-centos-001 ~]# umount /users/
  2.  
  3. [root@cdcjtx-centos-001 ~]# lvremove /dev/TESTvg/TESTlv
  4. Do you really want to remove active logical volume TESTvg/TESTlv? [y/n]: y
  5. Logical volume "TESTlv" successfully removed
  6.  
  7. [root@cdcjtx-centos-001 ~]# vgremove TESTvg
  8. Volume group "TESTvg" successfully removed
  9.  
  10. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb1
  11. Labels on physical volume "/dev/sdb1" successfully wiped.
  12.  
  13. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb2
  14. Labels on physical volume "/dev/sdb2" successfully wiped.
  15.  
  16. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb3
  17. Labels on physical volume "/dev/sdb3" successfully wiped.
  18.  
  19. [root@cdcjtx-centos-001 ~]# pvs
  20. PV VG Fmt Attr PSize PFree
  21. /dev/sda2 centos lvm2 a-- <19.00g 0
  22.  
  23. [root@cdcjtx-centos-001 ~]# vgs
  24. VG #PV #LV #SN Attr VSize VFree
  25. centos 1 2 0 wz--n- <19.00g 0
  26.  
  27. [root@cdcjtx-centos-001 ~]# lvs
  28. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  29. root centos -wi-ao---- <17.00g
  30. 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. django rest_framework vue 实现用户登录

    django rest_framework vue 实现用户登录 后端代码就不介绍了,可以参考  django rest_framework 实现用户登录认证 这里介绍一下前端代码,和前后端的联调过程 ...

  2. Nginx 核心配置-可优化配置参数

    Nginx 核心配置-可优化配置参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx的官网查看指令帮助信息方法 1>.打开nginx的官网(https://ng ...

  3. DML(数据库操作语言)(六)

    一.INSERT插入语句 语法: INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);# 在表名后给出要插入的列名,其他没有指定的列等同与插入null ...

  4. Websocket --socket.io的用法

    <!DOCTYPE html> <html> <head> <title>Hello WebSocket</title> <link ...

  5. django使用pycharm目录打开不正确导致的问题

    1.在目录D:\software\pycharmpython\djangoProject下新建helloworld的项目:django-admin startproject helloworld 2. ...

  6. vue-loader作用

    (1)浏览器本身并不认为.vue文件,所以必须对.vue文件进行加载解析,此时需要vue-loader (2)类似的loader还有许多,如:html-loader.css-loader.style- ...

  7. nodejs,npm 安装配置步骤

    http://xiaoyaojones.blog.163.com/blog/static/28370125201351501113581/ 参照上述网址中的方法 特别强调一下,在第三步的时候,在命令行 ...

  8. 【oracle】select into from 和 insert into select 的用法和区别

    select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建.insert ...

  9. 【pytorch】持续踩坑 & 错误解决经历

    报错 1.[invalid argument 0: Sizes of tensors must match except in dimension 0.] {出现在 torch.utils.data. ...

  10. 图的遍历 | 1076 bfs

    bfs踩了很多坑才写完.注意:出队时不做是否vis判断,但是要加上vis[出队顶点]=1 .入队时进行判断,并且也要 vis[入队顶点]=1 #include <stdio.h> #inc ...