LVM2常见用法详解

1.简介

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

2.特点

可以对磁盘进行动态管理,动态增加或较少逻辑卷大小,而不会丢失现有的数据。

3.基本的逻辑管理概念

PV(physical volume)- 物理卷

通常是一个分区,也可以是整个物理硬盘,也可以是raid设备。

VG(volume group)- 卷组

多个物理卷的集合,创建在物理卷之上,在卷组创建时候,可以动态添加物理卷到卷组中。一个逻辑卷系统工程中可以只有一个卷组,也可以有多个卷组。

LV(logical volume)- 逻辑卷

创建在卷组之上,逻辑卷也可以动态的扩展或缩小空间。卷组中未被分配的卷组空间可以用于创建新的逻辑卷。多个逻辑卷可以属于同一个卷组,也可以属于不同的卷组。

PE(physical extent)- 物理块

4.通过联系学习使用lvm

练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录;

练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;

练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;

练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;

练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;

5.开始练习

练习1:

首先准备两个分区,并调整分区类型为linux lvm(8e)

我呢,准备了两个分区/dev/sda5(11G)和/dev/sda6(9G)

##创建PV

语法:pvcreate PhysicalVolume [PhysicalVolume...]

pv的创建很简单,使用命令pvcrete后面直接加你想创建的分区,硬盘或者raid设备,在这里是/dev/sda5和/dev/sda6

pvcreate /dev/sda5 /dev/sda6

##使用pvs和pvdisplay查看pv

~]# pvs

PV         VG   Fmt  Attr PSize  PFree

/dev/sda2  vg0  lvm2 a--  59.99g  7.99g

/dev/sda5       lvm2 ---  11.01g 11.01g

/dev/sda6       lvm2 ---   9.01g  9.01g

(pvs和pvdisplay都可以显示pv信息,只是pvs显示简要信息,pvdisplay显示详细信息。不带参数会显示所有pv。/dev/sda2是虚拟机自动创建的,对比可以看到,此时,我们创建的pv还并不适于任何一个VG)

##创建Vg

vgcreate [-s|--physicalextentsize PhysicalExtent-Size[bBsSkKmMgGtTpPeE]]

vgcreate -s 8M testvg /dev/sda5

(-s指定PE大小,其实可以一步创建20G的vg 使用vgcreate -s 8M  test vg /dev/sda5 /dev/sda6,之所以不这样做,是下面为了演示动态扩展VG大小)

然后看看效果

~]# vgs

VG     #PV #LV #SN Attr   VSize  VFree

testvg   1   0   0 wz--n- 11.00g 11.00g

vg0      1   4   0 wz--n- 59.99g  7.99g

~]# pvdisplay /dev/sda5

--- Physical volume ---

PV Name               /dev/sda5

VG Name               testvg

PV Size               11.01 GiB / not usable 7.16 MiB

Allocatable           yes

PE Size               8.00 MiB

Total PE              1408

Free PE               1408

Allocated PE          0

PV UUID               rzEsIK-uHnM-cCTi-Cu82-HQXA-7VH9-Xktpd

(可以看到vg name为testvg,pe大小为8M,pv只有加入到卷组后,才有pe大小的,而且,一旦创建,不能更改)

##使用pvextend动态扩展VG

语法:pvextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

pvextend testvg /dev/sda6

~]# vgs

VG     #PV #LV #SN Attr   VSize  VFree

testvg   2   0   0 wz--n- 20.00g 20.00g

vg0      1   4   0 wz--n- 59.99g  7.99g

(可以看到testvg的大小变成了20g)

##使用lvcreate创建逻辑卷

语法:lvcreate -L  LogicalVolumeSize[bBsSkKmMgGtTpPeE]} -n|--name  LogicalVolume{Name|Path} Volumgroup

lvcreate -L 5G -n testlv testvg

~]# lvs

LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

testlv testvg -wi-a-----  5.00g

....

~]# ls -l /dev/testvg/

total 0

lrwxrwxrwx 1 root root 7 Dec 19 17:38 testlv -> ../dm-4

(同时,系统在/dev目录下创建了相应的设备文件和符号链接)

最后一步,创建逻辑卷后,在制作文件系统就可以挂在并且使用了

mke2fs -t ext4 /dev/testvg

~]# mke2fs -t ext4 /dev/testvg/testlv

现在就可以挂在并且使用了

mkdir /users

mount /dev/testvg/testlv /users

~]# mkdir /users

[root@localhost ~]# mount /dev/testvg/testlv /users

[root@localhost ~]# ls /users

lost+found

练习2:

mkdir /users/archlinux

useradd -d /users/archlinux archlinux

su - archlinux

cp -r /etc/pam.d .

练习3:

首先查看testvg是否有足够的剩余空间

~]# vgs testvg

VG     #PV #LV #SN Attr   VSize  VFree

testvg   2   1   0 wz--n- 20.00g 15.00g

然后,扩展lv"物理边界",在扩展文件系统边界

~]# lvextend -L +2G /dev/testvg/testlv

Size of logical volume testvg/testlv changed from 5.00 GiB (640 extents) to 7.00 GiB (896 extents).

Logical volume testlv successfully resized

(还有另一种格式lvextend -L 7G /dev/testvg/testlv,+意为在原有的基础上增加空间,不带加号代表绝对空间,然后指定逻辑卷路径)

~]# lvs

LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

testlv testvg -wi-ao----  7.00g

df -h

/dev/mapper/testvg-testlv  4.8G   11M  4.6G   1% /users

虽然物理边界增大,但文件系统大小还是不变,下面扩展文件系统边界

resize2fs /dev/testvg/testlv

练习4:

##lvreduce  — reduce the size of a logical volume

不像lvextend在扩展lv和resize2fs支持挂在时扩展

在使用lvreduce缩减物理边界前,必须先卸载文件系统,还得使用e2fsck -f some_filesystem 强行检查文件系统,resize2fs之后,才能使用lvreduce。

umount /dev/testvg/testlv

e2fsck -f /dev/testvg/testlv

resize2fs /dev/testvg/testlv 3G

lvreduce -L 3G /dev/testvg/testlv

(保持缩减大小一致)

然后检查是否有文件丢失

练习5:

注意:快照区与被快照区必须要在同一个vg里

lvcreate -L 200M -s -n snap_testlv /dev/testvg/testlv

cd /users

tar cjf /tmp/snap-for-testlv.bz2 *

rm -rf /users/*

ls -l

tar xjf /tmp/snap-for-testlv.bz2

补充两个知识点,就是vg的缩减和删除lvm

类似lv的缩减,在缩减vg之前,必须先使用pvmove先把你想撤掉的块设备的数据移动到其他还在工作中的pv上

pvmove /dev/sda6

vgreduce testvg /dev/sda6

然后在检查一下

要彻底删除lvm,只需按创建lv相反的操作即可

umount /users

lvremove /dev/testvg/testlv

vgremove testvg

pvremove /dev/sda5 /dev/ada6 ...

linux lvm2,LVM2常见用法详解相关推荐

  1. Linux中head和tail命令作用,Linux 命令head和tail常见用法详解

    head和tail是一组想对应的命令,默认分别显示文件的开头和末尾10行记录. head head 命令可以将一段文本的开头一部分输出到标准输出. head命令既可以处理文本文件也可以处理标准输入. ...

  2. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  3. Linux下find命令用法详解

    Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...

  4. 《算法笔记》学习日记——6.1 vector的常见用法详解

    目录 6.1 vector的常见用法详解 问题 A: Course List for Student (25) 问题 B: Student List for Course (25) 小结 6.1 ve ...

  5. linux bin fuser,Linux中fuser命令用法详解

    描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...

  6. C++/C--unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  7. C++/C--set常见用法详解【转载】

    1 概念 set是一个内部自动有序且不含重复元素的容器,其实现自动去重按升序排序.使用set,需要添加头文件:#include <set>.可以通过迭代器*it来访问set里面的元素,但是 ...

  8. C++中的unordered_map常见用法详解

    文章目录 1. std::unordered_map 的定义与特性 2. 构造 std::unordered_map 3. 赋值操作 4. 迭代器操作 4.1 指向整个容器中的元素 4.2 指向某个桶 ...

  9. linux系统中drrwx-xr-x 用法详解

    drrwx-xr-x  用法详解 drwxr-xr-x  用法详解: 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x ...

最新文章

  1. 算法基础知识科普:8大搜索算法之AVL树(下)
  2. p2596 书架(Treap)
  3. mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解
  4. 碎片化学习的三大障碍及破解之道
  5. 基于C#开发的浏览器隐身工具-上班别乱开
  6. CodeForces 560A,B,C
  7. git实现审核功能_一文教你如何搭建PDD分佣小程序实现财富自由
  8. 多功能pdf编辑器PDF Office Max for mac
  9. ENVI入门系列教程---一、数据预处理---5. 图像自动配准
  10. 练习12——二叉树与表达式
  11. 推荐免费下载380套大型商业源码
  12. 数据结构 —— 静态链表
  13. LWN: lockless编程模式——relaxed access和partial memory barrier
  14. 生物特征识别的种族偏见,肤色偏见,性别偏见
  15. php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识 度量声音强度,大 - phpStudy...
  16. 矩阵中行向量两两之间的欧氏距离
  17. 共享单车大败局:谁是凶手,谁在买单?
  18. 2004年高考数学压轴题(利用对数齐次化或主元法解决)
  19. 关于跳出while(1)死循环问题
  20. 【收藏】计算机专业常用学习网站

热门文章

  1. TensorFlow 之 构建人物识别系统
  2. MySQL学习笔记(3)
  3. 华为S9300交换机CFM和Y.1731配置
  4. MAC MII PSY及MDI MDIX辨析
  5. 怎么给锋云服务器打无线网卡驱动,高手教你怎么安装和使用usb无线网卡
  6. java wrapper作用_Java Service Wrapper使用总结
  7. logback快速启动
  8. 品牌如何利用Instagram网红营销做好2023斋月推广?
  9. impdp 不兼容_Oracle exp/expdp imp/impdp导入导出数据
  10. C#读写配置文件(config.ini)入门