zoukankan      html  css  js  c++  java
  • Linux LVM(逻辑卷管理)

    Lvm基本应用

    什么是LVM?

    LVM 的全称是 Logical Volume Manager。中文为逻辑卷管理。它是Linux对磁盘分区的一种管理机制。它在传统的硬盘(或硬盘分区)和文件系统之间建立一个逻辑层,将一个或多个底层块设备组织成为一个逻辑设备。LVM 的重点在于能够动态的调整磁盘分区的大小。而并非数据的冗余性和完整性。


    LVM的组成


    PV:Physical Volume。物理卷

    PV是LVM的基本存储逻辑块。


    PE:Physical Exten。物理块

    把每个物理卷PV被划分为PE的基本单元,默觉得4MB,是整个LVM最小的储存区块。一般在创建卷组VG中划分大小。也能够由PV划分大小。

    组成VG的一个或多个PV中PE必须统一大小。


    VG:Volumen Group。卷组

    由一个或多个物理卷PV组成,而VG最多仅能含有65534个PE,默认VG能够有 4M*65534/(1024M/G)=256G。


    LV:Logical Volume。逻辑卷

    逻辑卷建立在卷组VG之上。将逻辑卷LV格式化后建立文件系统进行使用。


    LE:Logical Extent。逻辑块

    逻辑卷LV也被划分为可被寻址的基本单位LE。在同一卷组中,LE的大小和PE大小同样,且有一一相应关系。


    LVM的实现

    磁盘的准备

    通过使用fdisk -l /dev/sdb。我们能够查看到/dev/sdb分区例如以下。且ID为83


    准备磁盘分区,并不要求分区的大小一致。可是必须将分区类型改为“8e使它能够用于LVM


    反复上述操作,将/dev/sdb全部分区类型改动为8e。



    创建物理卷(PV)

    PV的管理工具有:pvs,pvdisplay,pvcreate,pvremove

    pvs:显示pv的简要信息

    pvdisplay:显示pv的具体信息

    pvcreate:创建pv

    pvremove:删除pv

    使用 pvcreate /dev/sdb# 命令创建物理卷



    创建卷组(VG)

    VG的管理工具有:vgs,vgdisplay。vgcreate,vgremove。vgextend。vgreduce

    vgextend:VG的扩充

    语法: vgextend 卷组名 设备名..

    vgreduce:VG的缩减

    语法:vgreduce 卷组名 设备名..

    vgcreate [-s #[mgt]] VG名称 PV名称

    选项:-s:后面接PE的大小(size),单位能够是m,g,t(不区分大写和小写)。默觉得4MB

    使用 vgcreate Vol_MyVg /dev/sdb1 /dev/sdb2 /dev/sdb3,显示successfully,创建成功



    创建逻辑卷(LV)

    LV的管理工具有:lvs,lvdisplay,lvcreate。lvremove

    lvcreate -L #[mgt] -n 逻辑卷名 卷组名

    选项:-L:后接大小,-n:后接LV的名称

    使用 lvcreate -L 3G -n MyLv Vol_MyVg,该命令会从指定MyVg的卷组之上,创建一个名为”MyLv“、大小为3G的逻辑卷



    格式化加挂载

    逻辑卷设备的位置在 /dev/卷组名(VG名)/逻辑卷名(LV名),我们能够格式化和挂载逻辑卷。就像ext分区一样。

    我们使用例如以下命令:

    mkfs -t ext4 /dev/Vol_MyVg/MyLv

    mkdir /mnt/LVM

    mount /dev/dev/Vol_MyVg/MyLv




    LVM扩展实现

    设备/dev/sdb的总大小为8G。在上述LVM实现过程中,我们将/dev/sdb分成四个分区,每一个分区2G,然后用了sdb1。sdb2,sdb3三个分区组成了卷组名为Vol_MyVg的卷组且大小为6GB,并在此卷组之上建立了大小为3GB且卷名为MyLv的逻辑卷。此时Vol_MyVg卷组还省下3GB。


    1、扩大卷组(VG)- Vol_MyVg

    vgextend:VG的扩充

    语法: vgextend 卷组名 设备名..

    使用命令 vgextend Vol_MyVg /dev/sdb4 创建,使用vgs 命令显示,具体信息能够使用vgdisplay,由下图可知成功将VG(Vol_MyVg)扩展为8GB


    2、扩展逻辑卷(LV) - My_Lv

    lvextend:LV的扩充

    使用方法:lvextend -L [+]#[mMgGtT] /dev/卷组名/逻辑卷名

    -L指定大小,+ 号是指在原有逻辑卷上进行添加不带则是指调整大小为指定数值

    先用 lvs 或者 df -h 看看原来逻辑卷的大小,这里为3GB。

    我们使用命令 lvextend -L +2G MyLv 来扩展逻辑卷MyLv


    此时使用命令 lvs 可见的名为MyLv逻辑卷已变成5GB。可是命令 df -h下挂载点仍然为3GB,我们需使用命令 resize2fs /dev/卷组名/逻辑卷名 来通知内核




    LVM缩减实现

    经过LVM扩展后,LVM大小情况为。卷组Vol_MyVg的大小为8GB,逻辑卷MyLv的大小为5GB。
    如果我们要将卷组Vol_MyVg大小缩减至2GB。逻辑卷MyLv的大小缩减至1GB。需进行下面操作。

    1、缩减逻辑卷(LV) - My_Lv

    第一步、使用 umount /dev/卷组名/逻辑卷名 命令 卸载已挂载的逻辑卷
    第二步、e2fsck -f /dev/卷组名/逻辑卷名 命令 检測逻辑卷是否正常
    第三步、resize2fs /dev/卷组名/逻辑卷名 #[mMgGtT] 命令通知内核
    第四步、lvreduce -L [-]#[mMgGtT] /dev/卷组名/逻辑卷名 命令缩减大小,注意 - 号(有则缩减多少。无则缩减多少)
    第五步、mount 挂载使用

    2、缩减卷组(VG)- Vol_MyVg

    注意事项
    a. 卷组大小必须大于由此卷组(VG)建立的逻辑卷(LV)的大小之和。
    b. 因为卷组是由物理卷(PV)构成。缩减时,必须将所移除的物理卷(PV)的数据(物理块(PE))移动到该卷组中的其他PV中去。

    第一步、使用 pvs 命令查看各PV空间状态,选择要移除的PV,用来缩减VG的大小
    第二步、使用 pvmove 移除的PV设备名 其他PV设备名 命令将卷组上的所要移除的PV,移动到该卷组中的其他PV中
    第三步、是用 vgreduce 卷组名 移除的PV设备名 命令进行VG的缩减




    实现LVM快照(snapshot)

    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
    选项:
    -L #[mMgGtT]:指定快照的大小
    -p|--permission:指定权限 r 仅仅读,w仅仅写。rw读写
    -n:snapshot_lv_name,快照名 original_lv_name,被快照的LV名
  • 相关阅读:
    npm 中设置环境NODE_ENV变量,判断失败打印process.env.NODE_ENV确实是"development",但是判断process.env.NODE_ENV === "development" 是false
    NuxtJS踩坑日记,一步一步爬出我自己挖的坑。
    Django模型层1
    Django模板层2
    Centos 6.5 版本的下载教程
    上传文件到github
    CSS完整
    前端之JavaScript
    CSS
    多表 查询习题
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6979557.html
Copyright © 2011-2022 走看看