Because LVM so cattle(Logical Volume Manager)

LVM: Logical Volume Manager

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

        LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

        LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

基本的逻辑卷管理概念:

PV(Physical Volume)- 物理卷 

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VG(Volumne Group)- 卷组 

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LV(Logical Volume)- 逻辑卷 

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

PE(Physical Extent)- 物理块

    LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。

    将pv提供的存储空间划分为大小相同的n个存储块,pe大小是在pv加入vg之后决定的,


dm:vevice mapper

    将一个或多个底层块设备组织成一个逻辑设备的模块,存放在:/dev/dm-#

关系图如下:  

LVM.jpg

lvcreate

在卷组中创建逻辑卷:

# lvcreate -L 100 /dev/vg00

lvdisplay

显示有关逻辑卷的信息:

# lvdisplay -v /dev/vg00/lvol1

lvextend

为逻辑卷添加镜像

# lvextend -m 1 /dev/vg00/lvol3

lvextend

增加逻辑卷的大小

# lvextend -L 120 /dev/vg00/lvol3

lvreduce

减小逻辑卷的大小:

# lvreduce -L 100 /dev/vg00/lvol3

lvremove

从卷组中删除逻辑卷:

# lvremove /dev/vg00/lvol6

pvcreate

创建用作卷组的一部分的物理卷:

# pvcreate /dev/rdisk/disk2

pvdisplay

显示有关物理卷的信息:

# pvdisplay -v /dev/disk/disk2

pvmove

将盘区从一个物理卷移动到另一个物理卷:

# pvmove /dev/disk/disk2 /dev/disk/disk3

pvremove

从物理卷中删除 LVM 数据结构:

# pvremove /dev/rdisk/disk2

vgcreate

创建卷组:

# vgcreate /dev/vg01 /dev/disk/disk2 /dev/disk/disk3

vgdisplay

显示有关卷组的信息:

# vgdisplay -v /dev/vg00

vgextend

通过添加物理卷来扩充卷组:

# vgextend /dev/vg00 /dev/disk/disk2

vgexport

从系统中删除卷组:

# vgexport /dev/vg01

vgscan

扫描卷组的系统磁盘:

# vgscan -v

vgreduce

通过从卷组中删除一个或多个物理卷来缩小卷组:

# vgreduce /dev/vg00 /dev/disk/disk2

vgremove

从系统和磁盘中删除卷组定义:

# vgremove /dev/vg00 /dev/disk/disk2

vgsync

同步卷组中的所有镜像逻辑卷:

# vgsync vg00


VG:Volume Group 卷组

vg管理工具:

vgcreate   [-s #[kmgtpe]] volumegroupname physicaldevicepath [physicaldevicepath...]
vgcreate    -s  pe大小创建卷组的名称   指定pv路径(可以多个)
    #vgcreate  vg1  /dev/sdb
    -s:pe大小


扩展vg:(加磁盘)

vgextend volumegroupname physicaldevicepath [physicaldevicepath...]
vgextend  要扩展的vg组名添加的磁盘路径(可以多个)
#vgextend  vg1 /dev/sdc1


缩减vg:(减磁盘)

vgreduce volumegroupname physicaldevicepath [physicaldevicepath…]

vgreduce  要缩减的vg组   缩减的磁盘路径(可以是多个)

    vgreduce参数:

        -a:如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷;

        –removemissing:删除卷组中丢失的物理卷,使卷组恢复正常状态。

    #vgreduce myvg /dev/sda5


注:缩减vg时,缩减的是磁盘,所以务必先使用vgmove命令移动磁盘上的数据(将要移除的vg上的数据移动到同一个vg组的pv上)

LV:Logical Volume  逻辑卷管理

lvcreate -L #[mMgGtT] -n  NAME  VolumeGroup
lvcreate -L  指定lv大小     -n   指定lv名称    指定在哪个vg组里创建lv
    -L:指定lv大小 (卷组有足够的空间情况下)
    -n:name
    #lvremove /dev/VG_name/lv_name

扩展逻辑卷:

    lvextend  -L [+]num[mMgGtT]   /dev/vg_name/LV_NAME

    +:加+号代表在原有基础上增加多少,不带+号则代表增加到

    如:原有2G,现要扩展到5G

    1.加+号,#lvextend  -L   +3G    /dev/vg1/lv1

    2.不加+号,#lvextend  -L   5G    /dev/vg1/lv1

扩展后需要修改逻辑边界

     resize2fs  /dev/VG_NAME/LV_NAME

     #resize2fs  /dev/myvg/mylv

     扩展到此lv大小

     只针对ext系列文件系统

    


lv:lvreduce缩减逻辑卷

先缩减内部文件系统大小(逻辑边界)到指定大小,再缩减物理大小

    1.卸载文件系统:

    umount  /dev/vg_name/lv_name
    #umount  /dev/vg1/lv1

    2.文件系统强制检测

e2fsck -f /dev/VG_NAME/LV_NAME
#e2fsck -f /dev/vg1/lv1

    3.缩减文件系统逻辑边界(缩减至多大)

resize2fs  /dev/VG_name/LV_NAME #[mMgGtT]
resize2fs /dev/vg1/lv1  10G

    4.再次执行缩减

lvreduce -L [-]num[mMgGtT]  /dev/VG-name/LV-name
-:加-号代表在原有基础上减少多少,不带-号则代表减少到多少
如:原有5G,现要缩减到2G
1.加-号,#lvextend  -L   -3G    /dev/vg1/lv1
2.不加-号,#lvextend  -L   2G    /dev/vg1/lv1

    5.重新挂载

    mount  /dev/vg_name/lv_name  /path/to/somefile
    #mount  /dev/vg1/lv1  /mnt/lv1

示例:

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

###创建pv和vg:

-s指定pe大小

[root@localhost ~]# vgcreate testvg -s 16M /dev/sd{b,c}1
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
  Volume group "testvg" successfully created

###创建lv

-L:指定lv大小

-n:指定lv名称

[root@localhost ~]# lvcreate -L 5G -n testlv testvg
  Logical volume "testlv" created.

###格式化testlv

-t:指定文件系统

-L:指定LABEL

[root@localhost ~]# mke2fs -t ext4 -L testlvm /dev/testvg/testlv

###挂载目录

[root@localhost ~]# touch /users

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

###创建所有信息

##物理卷信息(pv)

[root@localhost /]# pvs /dev/sd{b,c}1
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sdb1  testvg lvm2 a--u 10.00g  5.00g
  /dev/sdc1  testvg lvm2 a--u 10.00g 10.00g

##卷组信息(vg

[root@localhost /]# vgs /dev/testvg
  VG     #PV #LV #SN Attr   VSize  VFree 
  testvg   2   1   0 wz--n- 20.00g 15.00g

##逻辑卷信息(lv)

[root@localhost /]# lvs /dev/testvg/testlv 
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-ao---- 5.00g

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

###新建用户

-d:指定家目录

[root@localhost users]# useradd -d /users/archlinux archlinux
[root@localhost users]# getent passwd archlinux
archlinux:x:501:501::/users/archlinux:/bin/bash

###复制pam.d 目录到用户家目录

[root@localhost ~]# cp -r /etc/pam.d /users/archlinux/
[root@localhost ~]# ls /users/archlinux/
pam.d

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

####查看原逻辑分区

[root@localhost ~]# lvs /dev/testvg/testlv
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-ao----  5.00g

####扩展逻辑分区

    -L:指定扩展的大小

    +2G:在原有的5G上增加2G

[root@localhost ~]#lvextend -L +2G /dev/testvg/testlv

###发现实际容量并没有变化,因为我们的系统还不认识刚刚添加进来的磁盘的文件系统,所以还需要对文件系统进行扩容

    [root@localhost ~]#resize2fs /dev/testvg/testlv
    [root@localhost ~]# lvs  /dev/testvg/testlv
      LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      testlv testvg -wi-ao----  7.00g

###查看分区是否增加容量,如我们没有使用resize2fs 对文件系统进行扩容,此大小还是原有大小5G

    [root@localhost pam.d]# df -TH
    Filesystem           Type   Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root ext4    22G  352M   20G   2% /
    tmpfs                tmpfs  515M     0  515M   0% /dev/shm
    /dev/sda1            ext4   199M   35M  154M  19% /boot
    /dev/mapper/vg0-usr  ext4    11G  2.1G  7.9G  21% /usr
    /dev/mapper/vg0-var  ext4    22G  122M   20G   1% /var
    /dev/mapper/testvg-testlv
                         ext4   7.3G   13M  6.9G   1% /users

###验证

[root@localhost pam.d]# du -sh
204K.
[root@localhost pam.d]# pwd
/etc/pam.d
[root@localhost pam.d]# cd /users/archlinux/pam.d/
[root@localhost pam.d]# du -sh
204K.
[root@localhost pam.d]# pwd
/users/archlinux/pam.d

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

缩减逻辑卷(lv)

lvreduce

先缩减内部文件系统大小(逻辑边界)到指定大小,再缩减物理大小

     1.卸载文件系统:

        [root@localhost ~]# umount /dev/testvg/testlv

    2.文件系统强制检测

    列如:e2fsck -f /dev/VG_NAME/LV_NAME

        [root@localhost ~]# e2fsck -f /dev/testvg/testlv
        e2fsck 1.41.12 (17-May-2010)
        .......

     3.缩减文件系统逻辑边界(缩减至多大)

        例:resize2fs  /dev/VG_name/LV_NAME #[mMgGtT]

    [root@localhost ~]# resize2fs /dev/testvg/testlv 3G
        resize2fs 1.41.12 (17-May-2010)
        Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks.
        The filesystem on /dev/testvg/testlv is now 786432 blocks long.

    4).再次执行缩减

         lvreduce -L [-]num[mMgGtT]  /dev/VG-name/LV-name

         -:加-号代表在原有基础上减少多少,不带-号则代表减少到多少

         如:原有5G,现要缩减到2G

         1.加-号,#lvextend  -L   -3G    /dev/vg1/lv1

         2.不加-号,#lvextend  -L   2G    /dev/vg1/lv1

  [root@localhost ~]# lvreduce -L 3G /dev/testvg/testlv 
          WARNING: Reducing active logical volume to 3.00 GiB.
          THIS MAY DESTROY YOUR DATA (filesystem etc.)
        Do you really want to reduce testvg/testlv? [y/n]: y
          Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).
          Logical volume testlv successfully resized.

    5).mount 重新挂载

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

###验证

[root@localhost ~]# du -sh /etc/pam.d
204K/etc/pam.d
[root@localhost ~]# du -sh /users/archlinux/pam.d
204K/users/archlinux/pam.d
[root@localhost ~]#

5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

快照:snapshot

lvcreate -L  #[mMgGtT] -p r  -s -n snapshot_lv_name  original_lv_name

lvcreate -L  size  -p  权限(r,rw) -s 创建快照卷   -n  快照卷名称   原lv卷

    -L:变化量大小,原卷和快照卷的大小变化

[root@localhost ~]# lvcreate -s -L 1G -p r -n lvsnap /dev/testvg/testlv 
  Logical volume "lvsnap" created.
[root@localhost users]# mount /dev/testvg/lvsnap /testdir/snap/
mount: block device /dev/mapper/testvg-lvsnap is write-protected, mounting read-only
[root@localhost users]# ls
aaa  abcd  archlinux  lost+found
[root@localhost users]# ls /testdir/snap/
archlinux  lost+found
[root@localhost users]# touch abc 
[root@localhost users]# ls /testdir/snap/
archlinux  lost+found

dd命令:convert and  copy file

    用法:dd  if=/path/from/src  of=/path/to/dest

        bs=num  复制单元大小block size(单位字节)

        count=num  :复制多少个bs

#dd  if=/etc/fstab of=/tmp/fstab
#dd  if=/etc/fstab of=/tmp/fstab  bs=1 count=100

磁盘复制:

    dd  if=/dev/sda of=/dev/sdb

备份MBR:

    dd if=/dev/sda  of=/tmp/mbr_bak bs=512 count=1

清除磁盘分区:

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

破坏mbr的bootloader:

   bs=256


原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/41107

(0)
LiiLii
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • 文件系统的挂载使用总结

    文件系统使用 除根文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问,挂载点即分区设备文件关联的某个目录文件,挂载命令mount和 卸载命令umount; 挂载点: mount_point,作为被挂载的文件系统的访问入口; 作为挂载点需要满足三个条件:  (1)这个目录事先存在  (2)使用未被或不会被其他进程使用到的目录…

    系统运维 2016-11-19
  • 小工具(维基百科)

     维基百科  方法:复制C:\Windows\System32\drivers\etc到我的电脑地址栏               打开hosts,选择文本文档方式打开              19…

    Linux干货 2017-07-10
  • 6

    请详细总结vim编辑器的使用并完成以下练习题; 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/ rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; #   cp /etc/rc.d/rc.sysinit /tmp/ #   vim…

    Linux干货 2017-02-07
  • Linux用户和组管理

    Linux用户和组管理 Username / UID 管理员:root,0 普通用户 : 1–65535 系统用户 :系统已经已经存在专门用来对系统服务或者系统资源进行管理的 1–499(CentOS 6.X) 1–999 (CentOS 7.X) 登录用户:平时专门做系统管理的用户 500+ (CentOS 6.X) 1000+ (CeentOS 7.X)…

    Linux干货 2017-04-01
  • 11. vim备查の小手札

    三种模式 命令模式(默认)      command mode:移动光标,剪切/粘贴文本 插入(编辑)模式         edit mode:修改文本 扩展命令模式 extend…

    Linux干货 2016-08-18

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 15:17

    文章对lvm知识把我的很全面,同时通过具体操作对此命令进行了练习,但是前面的命令和选项连在一起了,这需要作者多加注意。同时需要注意的是lvm对于数据的物理备份是很关键的,需要多加练习,熟练掌握。