• lvm逻辑卷管理器


      LVM:Logical Volume Manager 。LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便。

     

    LVM的基本组成部分如下:

    物理卷 (PV)一个可供存储LVM的块设备. 例如: 一块硬盘, 一个MBR或GPT分区, 一个回环文件, 一个被内核映射的设备 (例如 dm-crypt).它包含一个特殊的LVM头。

    卷组 (VG):物理卷的一个组,作为存放逻辑卷的容器。 PEs are allocated from a VG for a LV.

    逻辑卷 (LV):"虚拟/逻辑卷"存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备,例如,你可以直接在它上面创建一个文件系统文件系统。

    物理块 (PE):一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。

    创建lvm步骤

    1、fdisk进行分区,并将磁盘分区格式调整成lvm。(如果是某个分区需要此步骤,如果是某块硬盘略过此步)

           #fdisk

                  t

                  8e

    2、创建pv物理卷(可以将某个分区划分为pv,也可以将某块硬盘化为pv)

           查看pv命令

               # pvdisplay          

                  # pvs

           创建pv步骤               

                  # pvcreate /dev/sda3(某分区) /dev/sdb(某硬盘)

    注意:如创建某个硬盘如/dev/sda创建的pv时报错(如下):

    Device /dev/sda excluded by a filter

    原因:此硬盘已经分区,存在分区表,可以将某个分区划分为pv如/dev/sda1等,如果要将/dev/sda整个硬盘划分为pv可以破坏硬盘/dev/sda的分区表,然后再创建

    破坏分区表的两种方法:

        # dd if=/dev/urandom of=/dev/sda bs=512 count=1

        # wipefs -a /dev/sda

       

    3、创建vg卷组

           查看vg命令:

                  # vgs

                  # vgdisplay

           创建vg步骤1:

                  # vgcreate [-s 16M] VG_Name /dev/sda3 /dev/sdb  

                         -s 16M #指定PE大小为16M,如不指定默认为4M

           步骤2(扩展vg时用):

                  # vgextend VG_Name /dev/sda4

    4、创建lv逻辑卷

           查看lv命令

                  # lvs

                  # lvdisplay

           创建lv步骤1:

           # lvcreate -L #[mMgGtT] -n LV_Name VG_Name

                  -l 3000    # 3000为pe的个数

                  -L 8G        # 8G为实际容量容量,建议采用此方法

           步骤2:对创建好的lv逻辑卷生成文件系统

                  # mke2fs -t ext4 /dev/VG_Name/LV_Name

           步骤3:将lv挂载

                  # mount /dev/VG_Name/LV_Name /media

    5、扩大lv逻辑卷

    方法一:

           步骤1:扩大逻辑卷

                  # lvextend -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name   

                         -l +100%FREE                           #将所有剩余空间都进行扩展

     

           步骤2:将扩大的逻辑卷空间进行文件系统扩展调整

                  (1)ext系列扩展文件系统采用此命令

                         # resize2fs /dev/VG_Name/LV_Name

                  (2)xfs系列扩展文件系统采用此命令,注意:要接挂载的目录/media

                         # xfs_growfs /media         

    方法二:

           可通过一条命令直接扩展文件系统,替代步骤1和步骤2,包括ext,xfs    

                  # lvextend -r -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name        

    6、缩减lv逻辑卷:只有ext系列支持缩减,xfs不支持缩减

           步骤一:取消挂载

                  # umount  /dev/VG_Name/LV_Name

           步骤2:检查文件系统完整性

                  # e2fsck -f /dev/VG_Name/LV_Name   

           步骤3:缩减文件系统容量

                  # resize2fs /dev/VG_Name/LV_Name #[mMgGtT]           

           步骤4:缩减逻辑卷容量

                  # lvreduce -L [-]#[mMgGtT] /dev/ VG_Name/LV_Name

           步骤5:重新挂载缩减好的逻辑卷

                  # mount  /dev/VG_Name/LV_Name  /media

      

    7、快照:创建快照相当于针对某个逻辑卷lv创建了还原点。快照卷和原逻辑卷lv在同一个卷组vg中。

           需要查看vg中空间是不是够创建快照,创建快照也相当于创建一个lv

    创建快照:

           # lvcreate  -L #[mGgGtT] -p r -s -n snapshot_lv_name /dev/VG_Name/LV_Name

                  -p r  # 设置快照为只读属性

                  -s    # 创建快照

           示例:

                  # lvcreate -L 1G -p r -s -n kuaizhao /dev/VG_Name/LV_Name     

           注意:快照可以像一般的lv一样挂载,xfs的快照挂载的时候需要给mount加扩展选项 # mount -o nouuid,ro

     

    快照还原:

           步骤1:取消快照和逻辑卷的挂载

             # umount /users

           步骤2:将快照合并到源lv上,注意还原后快照自动删除

             # lvconvert --merge /dev/VG_Name /kuaizhao

    lvm创建举例:

    1) 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
    # pvcreate /dev/sdb /dev/sdc                 #创建pv
    # vgcreate -s 16M  testvg /dev/sdb  /dev/sdc     #创建vg
    # lvcreate -L 5G -n testlv testvg             #创建lv
    # mkfs.ext4 /dev/testvg/testlv                #创建lv的文件系统
    # mkdir  /users                              #创建挂载目录
    # mount /dev/testvg/testlv /users/            #挂载
    
    2) 扩展testlv至7G,要求archlinux用户的文件不能丢失
    # cp -a /etc/ /users/                         #复制测试文件
    # lvextend -r -L 7G -n /dev/testvg/testlv      #扩展lv到7G
    
    3) 收缩testlv至3G,要求archlinux用户的文件不能丢失
    # umount /users/                           #卸载
    # e2fsck -f /dev/testvg/testlv             #检查文件系统
    # resize2fs /dev/testvg/testlv 3G          #缩减文件系统
    # lvreduce -L 3G /dev/testvg/testlv        #缩减lv容量
    # mount /dev/testvg/testlv /users/         #挂载
    
    4) 对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
    # lvcreate -L 1G -p r -s -n kuaizhao /dev/testvg/testlv   #创建快照
    # rm /users/etc/passwd                       #删除文件测试
    # umount /users/
    # lvconvert --merge /dev/testvg/kuaizhao            #快照恢复
    # mount /dev/testvg/testlv /users/                 #重新挂载恢复后的lv
    # ls /users/etc/passwd                        #查看文件是否恢复
  • 相关阅读:
    安卓使用socket建立通信客户端不显示数据
    使用bmob后端云中listview如何实现数据显示在第一个item
    安卓如何实现点击一个按钮退出整个程序?
    Python安装与准备
    敏感度——区分平庸和伟大
    fragment中设置点击事件(onclick)使用intent进行通信
    listview的几种简单用法
    Android开发现在是不是该学?
    数据包重放
    Sql注入一种dump所有数据的方法
  • 原文地址:https://www.cnblogs.com/ysuwangqiang/p/11484776.html
Copyright © 2020-2023  润新知