LVM及其使用

##LVM是什么? LVM(Logical Volume Manager),即磁盘卷管理,是Linux环境下对磁盘分区进行管理的一种机制。经过LVM能够很方便的实现:服务器

  • 在线扩容
  • 跨物理硬盘分区
  • 在线迁移
  • 快照

##LVM原理 LVM是磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上创建文件系统。 LVM架构以下: LVM架构架构

  • 物理存储介质(PhysicalStorageMedia) 指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
  • 物理卷(Physical Volume,PV) 指磁盘分区或从逻辑上与磁盘分区具备一样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
  • 卷组(Volume Group,VG) 相似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。能够在卷组上建立一个或多个LV(逻辑卷)。
  • 逻辑卷(Logical Volume,LV) 相似于非LVM系统中的磁盘分区,逻辑卷创建在卷组VG之上。在逻辑卷LV之上能够创建文件系统(好比/home或者/usr等)。
    • 线性逻辑卷 (Linear Volumes) 一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.好比,若是你有两个60GB硬盘,你能够生成120GB的逻辑卷.
    • 条块化的逻辑卷(Striped Logical Volumes) 当你写数据到此逻辑卷中时,文件系统能够将数据放置到多个物理卷中.对于大量链接读写操做,它能改善数据I/O效率.
    • 镜像的逻辑卷(Mirrored Logical Volumes) 镜像在不一样的设备上保存一致的数据.数据同时被写入原设备及镜像设备.它提供设备之间的容错。
    • 快照卷(Snapshot Volumes) 快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,它复制一份对当前数据区域的改变,因为它优先执行这些改变,因此它能够重构当前设备的状态。
  • 物理块(Physical Extent,PE) 每个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具备惟一编号的PE是能够被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。因此物理卷(PV)由大小等同的基本单元PE组成。因此每个逻辑卷大小都是物理块的整数倍。
  • 逻辑块(Logical Extent,LE) LVM抽象模型 逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,而且一一对应。

建立LVM

如下操做前请肯定保存好硬盘中的数据。。。。app

  1. 首先安装LVM(以Debian为例)布局

    sudo apt-get install lvm2性能

  2. 将硬盘初始化为物理卷 在建立卷组前,首先要将硬盘初始化成物理卷已供LVM使用。code

    pvcreate /dev/sda /dev/sdb /dev/sdc2ip

能够经过pvdisplay或者pvs来查看已经建立的物理卷信息。rem

  1. 建立卷组 将已经建立的物理卷整合成为一个卷组get

    vgcreate mydisk /dev/sda /dev/sdb /dev/sdc2 vgcreate能够经过-s选项来改变PE的默认大小,大小必须是2的阶乘,最小为1kb。 一样能够经过vgdisplay和vgs来查看卷组信息。 能够发现/dev/多了一个mydisk文件夹效率

  2. 建立逻辑卷

    lvcreate -n MyRoot -L +14G mydisk

这样就建立了名字为MyRoot的逻辑卷,块设备文件默认为/dev/mydisk/MyRoot(其是一个链接,指向/dev/mapper/的同名文件)。 一样可使用lvs和lvdisplay来查看逻辑卷的状况。

PS 若是过须要条块化,请参阅7

  1. 在逻辑卷上建立分区 逻辑卷建立完成后就能够当成普通的块文件来使用。

    mkfs.ext4 /dev/mydisk/MyRoot

  2. 挂载使用 挂载到合适的位置。 mount /dev/mydisk/MyRoot/ /mnt/MySecret

  3. 条块化I/O LVM条块化是LVM功能之一,该技术会跨多个磁盘写入数据,而不是对单一物理卷持续写入。条块化优势以下:

    • 它会改善磁盘性能。
    • 避免对单一硬盘的不断的大量写入。
    • 使用对多个硬盘的条块化写入,能够减小硬盘填满的概率。

建立lv的时候能够加上-i[number]选项就可使用条块化方法,若是须要可使用-I选项声明条块尺寸,一样必须是2的阶乘,可是不能超过PE的大小。

##LVM的伸展 LVM能够实如今线扩大分区容量,也就是说,若是分区的空间不够用了,能够随时扩大而不用下线。 从下至上

  1. 初始化要添加的物理分区或硬盘,同上。

  2. 扩展卷组 将一个硬盘或者物理分区添加到卷组之中。 vgextend mydisk /dev/sdd

  3. 扩展逻辑卷 扩大逻辑卷 lvextend -L +1G /dev/mydisk/MyRoot 注意扩大的单位可使用必定不要超过VG的剩余空间。

  4. 更新文件系统 resizefs /dev/mydisk/MyRoot #ext二、ext三、ext4 xfs_growfs /dev/mydisk/MyRoot #XFS

简单而优雅。

##LVM的缩小 LVM缩小操做必须离线,并且必定要备份数据 相比伸展,LVM的缩小操做就有必定的风险了,必定要当心。 自上而下

  1. 卸载LV umount /mnt/MySecret
  2. 缩小文件系统 resize2fs /dev/mydisk/MyRoot 1G #将文件系统改变为1G,请肯定已存在的文件体积小于1G
  3. 检查文件系统 e2fsck -f /dev/mydisk/MyRoot
  4. 缩小LV lvreduce -L -1G /dev/mydisk/MyRoot #将MyRoot缩小成1G
  5. 从新挂载 mount /dev/mydisk/MyRoot /mnt/MySecret 必定要当心谨慎。。

##缩小卷组 缩小卷组其实就是将物理硬盘移出卷组,移出前必定要保证移出的物理硬盘是空的。若是使用了条块化I/O的化,备份数据吧(求大神指教)。 vgreduce mydisk /dev/sda vgreduck -a mydisk #自动移除空的卷

##删除LVM 由上至下。。

1.删除LV lvremove /dev/mydisk/MyRoot 2.删除VG vgremove mydisk 3.删除PV pvremove /dev/sda`

##LVM快照

LVM快照是以空间换时间时间的方式制做的lvm卷副本。它只在lvm中工做,并只在源逻辑卷发生改变时占用快照卷的空间。若是源卷的变化达到1GB这么大,快照卷一样也会产生这样大的改变。于是,对于空间有效利用的最佳途径,就是老是进行小的修改。若是快照将存储空间消耗殆尽,咱们可使用lvextend来扩容。而若是咱们须要缩减快照所占用卷的大小,可使用lvreduce。

说白了快照就是保存变化前的文件,因此快照不能用于备份,它并非完整的副本,因此当遇到硬盘物理损坏等非正常情况是没法恢复的。

步骤:

  1. 查看卷组中是否有足够剩余空间(vgdisplay信息里的Free PE/Size项)来建立快照,没有的话请参考上面扩容部分扩容。

2.建立快照

lvcreate --size 1G --snapshot --name my_snap /dev/mydisk/MyRoot
  1. 验证快照 使用lvs查看,会发现多了一个my_snap,而它的origin栏对应着MyRoot,这就是存放快照的卷,能够经过df -Th来查看占用的空间。

  2. 扩充快照 在使用过程当中可能发生空间不够用的状况,这时候请必定在空间占慢前扩充快照的空间,也就是其逻辑卷的空间(参考上文)。

  3. 快照恢复 恢复操做是没法在线的。 首先要卸载要回复的物理卷,而后在进行合并操做。

    umount /mnt/MyRoot lvconvert --merge /dev/mydisk/my_snap

在合并完成后,快照卷将被自动移除。

##LVM迁移

LVM迁移是LVM众多优秀特性之一,经过它,咱们能够迁移逻辑卷到一个新的磁盘而不会丢失数据,也不用关机操做。该特性的功能是将数据从旧磁盘移动到新磁盘。一般,咱们只是在一些磁盘发生错误时,才将数据从一个磁盘迁移到另一个磁盘存储。 特色:

  • 将逻辑卷从一个磁盘移动到另外一个磁盘。
  • 咱们可使用任何类型的磁盘,如SATA、SSD、SAS、SAN storage iSCSI或者FC。
  • 在线迁移磁盘,并且数据不会丢失。

###方法一:

  1. 确认磁盘情况,肯定要将数据从那个硬盘迁移,迁移到那个硬盘。 经过df -hlvdisplayvgdisplay查看磁盘和LVM状态

2.在要迁移到的硬盘/分区上建立物理卷

`pvcreate /dev/sdc1`
  1. 添加到已有卷组

    ` vgextend mydisk /dev/sdc1`
     `vgs`
  2. 建立镜像到新物理卷

    `lvconvert -m 1 /dev/mydisk/MyRoot /dev/sdc1`

-m为--mirror的缩写,数字是表示镜像份数,过程时间稍长。。

  1. 验证镜像

    lvs -o+devices
  2. 删除原镜像 这时候MyRoot对应者/dev/sdc1的镜像和对应原来的多个物理卷组成的镜像。要将原来的移除,要先删除原来的镜像

    lvconvert -m 0 /dev/mydisk/MyRoot

0即移除。

  1. 将MyRoot从vg中移除,参考上面的删除lv

###方法2 方法一第三步日后:直接使用`pvmove /dev/mydisk/MyRoot /dev/sdc1 方法一的意义在于,服务器环境LVM通常会有不少镜像,相似raid 1,直接建立镜像要快的多。(听人说的,待肯定)

相关文章
相关标签/搜索