8.Linux的LVM使用详解

  1. 命令概览:所使用的命令(#代表是数字)
    pvcreate /dev/sd[xx]
    vgcreate -s # vgname /dev/sd[]
    -s 指定PE的大小   默认大小为4M
    vgextend vgname /dev/sd[xx]
    lvcreate -n lvname -L # /dev/vgname
    扩容
    lvs
    lvextend -L # /dev/vgname/lvname
    resize2fs /dev/vgname/lvname
    lvs
    缩减
    umount /dev/vgname/lvname
    e2fsck /dev/vgname/lvname
    resize2fs /dev/vgname/lvname #
    lvreduce -L # /dev/vgname/lvname
    mount
    快照
    lvcreate -L # -s -n snapshot /dev/vgname/lvname
    卸载逻辑卷
    umount /dev/vgname/lvname
    lvremove /dev/vgname/lvname
    vgremove /dev/vgname
    pvremove /dev/sd[xx]

  2. LVM的使用

    LVM(Logical Volume Manager)叫做逻辑卷管理器,有两个版本,早期是LVM1(现在很少使用了),LVM2。

    PV (Physical Volume)物理卷,在分区时需要调整系统 ID为8e(LVM的标识符),使用pvcreate来创建物理卷。

    VG (Volume Group)卷组,是将一个或多个PV组合成一个VG,可以通过vgcreate来实现。

    LV (Logical Volume)逻辑卷,将VG划分成一个或多个LV,可以通过lvcreate来实现。

LVM2使用dm模块来实现将一个或多个底层块设备组织成一个逻辑设备的工具。它能够将一个或多个底层块设备从某种意义上来映射成一个逻辑设备,通过在其上面附加一个逻辑层使得上层看起来像一个设备一样,而且在其之上,还可以再划分逻辑分区。将底层的块设备(VG)进一步分隔成了一个一个可以存储数据空间的块(PE),这种块也称为PE(Physical Extend),再将VG上多个PE组合成一个或多个

LV。也就是说LV的大小是由PE的个数决定的,LVM默认使用4M的PE块,而LVM的VG最多仅能含有65534个PE,因此默认的LVM VG会有4M*65534(1024M/G)=256G,它是整个LVM最小的存储块,也就是说,文件
数据都是由写入PE来处理的。以下就是LVM的简单架构:

在数据写入LV时,LVM有两种实现方式:
     a.线性模式(liner)  就是把其中一块硬盘都使用完后,才使用另外一块硬盘
     b.交错模式(triped) 把要存储的数据分块,第一块写入到LV中的第一个硬盘,第二块写入到LV
中的第二块硬盘如此这样,依次存储,可以提升读写性能,但是注意此时只要出现一个硬盘损坏,那么数据都会丢失,如果要提升读写性能还是使用RAID更佳。

LVM还可以实现动态调整容量,当空间不足时,可在线添加容量;当容量过大,也可以缩减容量。而且还提供了快照功能,能方便的实现备份。下面就来详细讲解他们的实现过程。

3.LVM的使用

实际上LVM使用的设备是放置到/dev/mapper/目录下的

PV,VG,LV他们各自都有一组命令

输入pv按两次tab键就可以看到以pv开头的命令

[root@linux_basic scripts]#pv
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan

其他vg,lv也是一样

[root@linux_basic scripts]#vg
vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit        
vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs            
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan         
[root@linux_basic scripts]#lv
lvchange     lvdisplay    lvmchange    lvmdump      lvmsar       lvrename     lvscan       
lvconvert    lvextend     lvmconf      lvmetad      lvreduce     lvresize     
lvcreate     lvm          lvmdiskscan  lvmsadc      lvremove     lvs

这里我们就说明使用pvcreate,vgcreata的格式

创建物理卷

pvcreate — initialize a disk or partition for use by LVM  初始化磁盘或分区使用LVM

pvcreate /dev/sd[a-z]|/dev/sd[a-z][1-9] ... 可跟多个磁盘或分区,注意此处使用的磁盘分区应该调整其系统标识符为8e,通过fdisk命令

创建卷组

vgcreate — create a volume group  创建一个卷组

vgcreate [-s PESIZE(pe的大小)]  VolumeGroupName(卷组的名字) PhysicalDevicePath [PhysicalDevicePath...](指定刚创建的物理卷)

-s, --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]
   Sets  the physical extent size on physical volumes of this volume group.

创建逻辑卷

lvcreate - create a logical volume in an existing volume group

lvcreate -n lvname -L # /dev/vgname

-n, --name LogicalVolume{Name|Path}
     Sets the name for the new logical volume.  设置这个逻辑卷名

-L, --size LogicalVolumeSize[bBsSkKmMgGtTpPeE] 指定逻辑卷的大小,单位可以是K,M,G,T等
     Gives  the  size  to allocate for the new logical volume.  A size suffix of B for bytes, S for sectors as 512 bytes, K for kilobytes, M for megabytes, G for gigabytes, T  for  terabytes,  Pfor petabytes or E for exabytes is optional.
    Default unit is megabytes. 默认单位

扩展逻辑卷,需要先扩展物理卷再扩展逻辑卷,可在线扩容

如何扩展逻辑卷:
a、先确定扩展的目标大小;并确保对应的卷组中有足够的空闲空间可用;

b、扩展物理边界  仅能在当前卷组中进行扩展
lvextend -L # /dev/vgname/lvname

c、扩展逻辑边界

resize2fs  /dev/vgname/lvname

[root@linux_basic test]#df -hP /mnt/test
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/vg_lvm-test  4.9G  6.6M  4.7G   1% /mnt/test  扩展成功
[root@linux_basic test]#du -sh /mnt/test
2.6M    /mnt/test    扩展后内容为改变

缩减逻辑卷,需要先缩减逻辑卷在缩减物理卷

缩减很危险!!!!
缩减需要离线
a、先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据;
b、先卸载文件系统,并要执行强制检测
  e2fsck -f
c、缩减逻辑边界
  resize2fs DEVICE #
  [root@linux_basic ~]#resize2fs -help
  resize2fs 1.41.12 (17-May-2010)
  Usage: resize2fs [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [new_size]
d、缩减物理边界
   lvreduce -L # /dev/vg_xx/xxx

创建快照卷:
  lvcreate
    -L   #指定快照卷大小
    -n   指定快照卷名字
    -s 指定快照卷
    -p r 只读

注意:快照卷是对某逻辑卷进行的,因此必须跟目标逻辑卷在同一个卷组中;无须指明卷组;
它只备份又被改动的数据,文件系统内没有被更改的数据依旧保持在原本的区块内,但是LVM快照
功能会知道那些数据放置在哪里,因此“快照”当时的文件系统就得以“备份”下来,且快照所占用的
容量又非常小。       
由于快照区与原本的LV共享很多PE区块,因此快照区与被快照的LV必须要在同一个VG上面。

LV snapshot status     active destination for test
  LV Status              available
  # open                 1
  LV Size                2.00 GiB
  Current LE             64
  COW-table size         512.00 MiB
  COW-table LE           16
  Allocated to snapshot  0.07%
  快照区已经被使用了0.07%,因为原数据改变了
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:5

利用快照区恢复原系统
复原的系统数据量不能够高于快照区所能负载的实际容量。由于原始数据会被
移到快照区,如果快照区不够大,若原始数据被改动的实际数据量比快照区大,
那么快照区当然容纳不了,这时候快照功能会失效。

转载于:https://blog.51cto.com/wdllife/1599979

8.Linux的LVM使用详解相关推荐

  1. Linux系统守护进程详解

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   Linux系统守护进程详解 不要关闭下面这几个服务: acpid, haldaemon, messagebus, klogd, network, ...

  2. Linux开启动过程详解

    Linux开启动过程详解 Linux启动过程 前言: Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布.在加上用户空间的应用程序之后 ...

  3. linux ps命令使用详解

    PS是LINUX下最常用的也是非常强大的进程查看命令 1. ps简介 前面介绍的两个命令都是用于查看当前系统用户的情况,下面就来看看进程的情况,这也是本章的主题. 要对进程进行监测和控制,首先必须要了 ...

  4. linux+fdisk+分区,Linux下Fdisk分区详解

    那么你知道Linux下Fdisk分区详解么?接下来是小编为大家收集的Linux下Fdisk分区详解,欢迎大家阅读: Linux下Fdisk分区详解 1. 通过Fdisk查看系统分区详细信息: Fdis ...

  5. linux动态库注册函数,Linux动态库函数的详解

    linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: rtld_lazy rtld_now rtld_ ...

  6. linux网络命名空间详解,Linux Network Namespace (netns) 详解

    Linux Network Namespace (netns) 详解 Network Namespace (以下简称netns)是Linux内核提供的一项实现网络隔离的功能,它能隔离多个不同的网络空间 ...

  7. uboot linux内核传递参数,Uboot与Linux之间的参数传递详解

    原标题:Uboot与Linux之间的参数传递详解 U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux kernel也会读取和处理这些参数.两者之间通 ...

  8. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

  9. linux ln(link) 命令详解

    linux ln(link) 命令详解 功能说明:连接文件或目录. 语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--v ...

最新文章

  1. 根据status信息对MySQL服务器进行优化-2
  2. MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?
  3. linux 内核参数 max_map_count 进程可拥有的虚拟内存区域数量 简介
  4. 常考数据结构与算法:二叉树的镜像
  5. 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
  6. Centos6.5下升级Python版本
  7. scm中mysql作用_scm项目问题
  8. leetcode题解108-将有序数组转换为二叉排序树
  9. oracle百万级数据导入,用Perl从oracle导出百万级数据到excel
  10. Htmlimg标签特写 2017-03-10 AM
  11. JAVA判断数组最大值
  12. AFNetWorking 之 网络请求的基本知识
  13. storage相关网站
  14. 分布式存储之GlusterFS软件安装及使用
  15. ae万能弹性表达式_干货丨AE表达式知多少?4大常用表示式解决80%难题
  16. 怎么从pdf中提取图片
  17. 基于android的资源文件管理器
  18. 电脑一启动吃鸡就重启计算机,租号器登录电脑重启-租号玩绝地求生提示登录出现异请重启客户端...
  19. NoSQL(MongoDB) + GraphQL 快速入门环境和资料
  20. win7计算机总是卡住,win7系统电脑画面定格死机的解决方法

热门文章

  1. 【转】snmpwalk命令常用方法
  2. Kotlin StandardKt 标准库源码走一波
  3. configure make make install in linux
  4. 微信开发,自定义菜单不生效怎么办?重新关注也无效
  5. JetBrains IDEs
  6. 另类网页设计:30个复古怀旧风格的网站作品
  7. 中美印日四国程序员比较[转自http://www.myexception.cn]
  8. 中兴V880使用手记之二——取得root权限
  9. 简单电子相册视频制作的步骤和要点
  10. pytorch 优化器调参