lvm逻辑卷+快照

Lvm逻辑卷

Lvm逻辑卷管理(logical volume manager):

  Lvm是Linux系统中对磁盘分区进行管理的一种逻辑卷机制,他是建立在硬盘和分区之上,文件系统之下的逻辑层,在建立系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性。

  普通的分区在容量用完以后,是不能在扩展的,但是lvm却可以,它可以是多个硬盘组成一个lvm来用。

  注意:Boot文件最好放到普通分区里,不能放进lvm里面,因为lvm就是基于内核来运行的,而内核就放在boot文件中。

逻辑卷经过的几个步骤:

   磁盘分区——>PV——>VG——>LV——>格式化,最后再挂载

创建物理卷(pv)

物理卷里有PE(基本单元,用于记录lvm属性,默认4m)

物理卷,需要在磁盘的基础上进行创建。所以需要先对磁盘进行分区,让磁盘可以正常使用。

[root@bogon ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)

 

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

 

Device does not contain a recognized partition table

使用磁盘标识符 0xd5fcc7f2 创建新的 DOS 磁盘标签。

 

命令(输入 m 获取帮助):n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p):

Using default response p

分区号 (1-4,默认 1)

起始 扇区 (2048-62914559,默认为 2048)

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+7G

分区 1 已设置为 Linux 类型,大小设为 7 GiB

 

命令(输入 m 获取帮助):N

Partition type:

   p   primary (1 primary, 0 extended, 3 free)

   e   extended

Select (default p):

Using default response p

分区号 (2-4,默认 2)

起始 扇区 (14682112-62914559,默认为 14682112)

将使用默认值 14682112

Last 扇区, +扇区 or +size{K,M,G} (14682112-62914559,默认为 62914559):+7G

分区 2 已设置为 Linux 类型,大小设为 7 GiB

 

命令(输入 m 获取帮助):N

Partition type:

   p   primary (2 primary, 0 extended, 2 free)

   e   extended

Select (default p):

Using default response p

分区号 (3,4,默认 3)

起始 扇区 (29362176-62914559,默认为 29362176)

将使用默认值 29362176

Last 扇区, +扇区 or +size{K,M,G} (29362176-62914559,默认为 62914559):+7G

分区 3 已设置为 Linux 类型,大小设为 7 GiB

 

命令(输入 m 获取帮助):N

Partition type:

   p   primary (3 primary, 0 extended, 1 free)

   e   extended

Select (default e): P

已选择分区 4

起始 扇区 (44042240-62914559,默认为 44042240)

将使用默认值 44042240

Last 扇区, +扇区 or +size{K,M,G} (44042240-62914559,默认为 62914559):+7G

分区 4 已设置为 Linux 类型,大小设为 7 GiB

 

命令(输入 m 获取帮助):p

 

磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xd5fcc7f2

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048    14682111     7340032   83  Linux

/dev/sdb2        14682112    29362175     7340032   83  Linux

/dev/sdb3        29362176    44042239     7340032   83  Linux

/dev/sdb4        44042240    58722303     7340032   83  Linux

 

命令(输入 m 获取帮助):w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

正在同步磁盘。

创建物理卷(pv)

[root@bogon ~]# pvcreate /dev/sdb[1234]

  Physical volume "/dev/sdb1" successfully created.

  Physical volume "/dev/sdb2" successfully created.

  Physical volume "/dev/sdb3" successfully created.

  Physical volume "/dev/sdb4" successfully created.

创建卷组(vg)

由一个或多个物理卷组成一个整体,即称之为卷组

这里把pv加入vg此处引入PE的概念

由于vg是多个PE(块)组成的,而去每个vg块的PE最大数量是65534。默认每个PE的大小是4m

也就是说默认的每个vg最大也就是4m乘65534=356G,因此PE块的大小决定了最终vg的大小。

如果我们将PE的大小改为8m或者16m,那么vg的大小就又可以增大了。

如下命令:(更改PE的大小)

vgcreate –s 16M vgname 分区

[root@bogon ~]# vgcreate -s 16M myvg /dev/sdb[1234]

[root@bogon ~]# vgdisplay myvg

  --- Volume group ---

  VG Name               myvg

  System ID            

  Format                lvm2

  Metadata Areas        4

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                4

  Act PV                4

  VG Size               <27.94 GiB

  PE Size               16.00 MiB

  Total PE              1788    //经过一块PE(16m)计算出来的vg PE数量

  Alloc PE / Size       0 / 0  

  Free  PE / Size       1788 / <27.94 GiB

  VG UUID               u2m7cQ-Poi1-0ecI-HydD-s1b3-I90Z-t8G2sF

创建逻辑卷(lv)

从卷组中分割出一块空间,用于创建逻辑卷

卷组也可以根据PE的数量来创建:

[root@bogon ~]# vgcreate -s 16M myvg /dev/sdb[1234]

  Volume group "myvg" successfully created

[root@bogon mylv_bak]# lvdisplay /dev/myvg/mylv

  --- Logical volume ---

  LV Path                /dev/myvg/mylv

  LV Name                mylv

  VG Name                myvg

  LV UUID                RSsJFf-7dW6-74z5-Fl1O-Wml7-Izd0-0N2Jvf

  LV Write Access        read/write

  LV Creation host, time bogon, 2019-04-09 19:18:27 +0800

  LV snapshot status     source of

                         mylv_bak [active]

  LV Status              available

  # open                 1

  LV Size                20.31 GiB

  Current LE             1300

  Segments               3

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     8192

  Block device           253:3

将逻辑卷格式化,然后再挂载

[root@bogon ~]# mkfs.xfs /dev/myvg/mylv

meta-data=/dev/myvg/mylv         isize=512    agcount=4, agsize=1331200 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=5324800, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=2600, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

 

挂载:

[root@bogon ~]# mkdir -p /backup/mylv

[root@bogon ~]# mount /dev/myvg/mylv /backup/mylv

 

创建数据:

[root@bogon mylv]# dd if=/dev/zero of=/backup/mylv/etst bs=1M count=500

记录了500+0 的读入

记录了500+0 的写出

524288000字节(524 MB)已复制,6.75637 秒,77.6 MB/

逻辑卷快照

LVM快照功能--我们知道LVM能够通过增减PE的数量来弹性调整文件系统的大小,除此之外,LVM还有另外一个重要的功能,LV磁盘快照,就是通过快照的功能将此时的文件系统信息记录下来,以后对该文件系统操作的时候,当该文件系统的数据变化的时候,我们可以利用快照将文件系统恢复至当时的状态。

LV的快照(snapshot)原理 

    左边的图表示,LVM会在VG上预留一定的区域作为快照区,原本lv中存放着数据,同时快照区存放着lv中元数据,因此快照区大小不需要和原始lv一样的大小。在刚创建snapshot的时候,快照区中并不会真实地拷贝原始lv中的数据,只是记录了整个原始lv中的元数据,所以这个时间点快照区和原始lv共享文件系统的数据,即两边的数据一样

    右边的图表示,当原始lv中的数据发生改变的时候,原始lv中的发生变化的PE的数据更新之前,会将数据真实地备份至快照区的一个PE中,如图中,A->new A之前,先将A备份至快照区的一个PE,然后lv中A才更新为new A,这样快照区会保存lv中PE发生变化之前的数据,这时候我们再访问快照区的内容仍然为创建snapshot那个时间点的时候lv中的数据,因此我们可以利用快照区进行备份和恢复。

    需要注意的是,由于快照区也有容量的限制,所以呢,当原始lv中发生变化的PE的数量超过快照区的PE的数量的时候,该快照就会立即失效。

    我们在创建快照区的时候,要考虑将来lv数据的变化量,以此来指定快照区的大小,一种解决办法是刚创建完快照之后,立即把快照区中的内容进行备份,这样就不用时刻考虑快照区会失效了,因为我们已经把他的数据备份走了。还有一种简单粗暴的方法就是创建一个和原始lv一样大小的快照区,这样就不用担心数据变化量的因素了。

上面逻辑卷已经创建好了,并且也往里面添加了数据,我们基于上面的环境来做快照。

创建lv快照

[root@localhost ~]# lvcreate -s -l 100 -n mylv /dev/myvg/mylv

Logical volume "mylv" created.

-s    关键选项,创建快照snap的意思    

 -l    后面跟快照包含多少个PE的数量

 -n    后面跟创建的快照的名字

    -p r  由于快照大多为只读,改选项为为修改权限位只读(r)

[root@bogon ~]# lvcreate -s -l 488 -n mylv_bak /dev/myvg/mylv

  Logical volume "mylv_bak" created.

挂载快照:(注意,快照不需要格式化)

[root@bogon ~]# mkdir /backup/mylv_bak

[root@bogon ~]# mount /dev/myvg/mylv_bak /backup/mylv_bak/ -onouuid,ro

注意:如果快照源逻辑卷使用的是xfs的文件系统,挂载的时候需要加入-onouuid,ro选项

且创建快照的时候不能指定-p r 选项

查看数据信息:

[root@bogon mylv_bak]# ls

etst

[root@bogon mylv_bak]# df

文件系统                     1K-块    已用     可用 已用% 挂载点

/dev/mapper/centos-root   40137576 4244908 35892668   11% /

devtmpfs                    481844       0   481844    0% /dev

tmpfs                       498976       0   498976    0% /dev/shm

tmpfs                       498976   14356   484620    3% /run

tmpfs                       498976       0   498976    0% /sys/fs/cgroup

/dev/sr0                   4364408 4364408        0  100% /media/cdrom

/dev/sda1                  1038336  160460   877876   16% /boot

/dev/mapper/centos-home   19593216   42792 19550424    1% /home

tmpfs                        99796       0    99796    0% /run/user/0

/dev/mapper/myvg-mylv     21288800  544944 20743856    3% /backup/mylv

/dev/mapper/myvg-mylv_bak 21288800  544944 20743856    3% /backup/mylv_bak

可以看见两个数据一样。

快照恢复

 当利用快照恢复系统的时候,不能使得要复原的数据量大于快照区所能承受的最大范围

①  修改原始lvm中的内容

[root@bogon mylv]# dd if=/dev/zero of=/backup/mylv/test bs=1M count=1000

记录了500+0 的读入

记录了500+0 的写出

524288000字节(524 MB)已复制,23.2335 秒,22.6 MB/

两个目录的使用率发生变化

 [root@bogon mylv]# df

文件系统                     1K-块    已用     可用 已用% 挂载点

/dev/mapper/centos-root   40137576 4244888 35892688   11% /

devtmpfs                    481844       0   481844    0% /dev

tmpfs                       498976       0   498976    0% /dev/shm

tmpfs                       498976   14356   484620    3% /run

tmpfs                       498976       0   498976    0% /sys/fs/cgroup

/dev/sr0                   4364408 4364408        0  100% /media/cdrom

/dev/sda1                  1038336  160460   877876   16% /boot

/dev/mapper/centos-home   19593216   42792 19550424    1% /home

tmpfs                        99796       0    99796    0% /run/user/0

/dev/mapper/myvg-mylv     21288800 1056944 20231856    5% /backup/mylv

/dev/mapper/myvg-mylv_bak 21288800  512176 20776624    3% /backup/mylv_bak

 

②  对快照区的数据进行打包压缩并备份

[root@bogon mylv_bak]#tar zcf test.tar.gz test

卸载原始lv重新格式化,再挂载

   [root@bogon ~]#umount /dev/myvg/mylv

   [root@bogon ~]#mkfs.xfs /dev/myvg/mylv

   [root@bogon ~]#mount /dev/myvg/mylv /backup/mylv

③  对原始lv进行数据恢复

[root@bogon mylv_bak]#tar zxf test.tar.gz –C /backup/mylv

④  始lv恢复至原样

 [root@bogon mylv_bak]# df

文件系统                     1K-块    已用     可用 已用% 挂载点

/dev/mapper/centos-root   40137576 4244908 35892668   11% /

devtmpfs                    481844       0   481844    0% /dev

tmpfs                       498976       0   498976    0% /dev/shm

tmpfs                       498976   14356   484620    3% /run

tmpfs                       498976       0   498976    0% /sys/fs/cgroup

/dev/sr0                   4364408 4364408        0  100% /media/cdrom

/dev/sda1                  1038336  160460   877876   16% /boot

/dev/mapper/centos-home   19593216   42792 19550424    1% /home

tmpfs                        99796       0    99796    0% /run/user/0

/dev/mapper/myvg-mylv     21288800  544944 20743856    3% /backup/mylv

/dev/mapper/myvg-mylv_bak 21288800  544944 20743856    3% /backup/mylv_bak

猜你喜欢

转载自www.cnblogs.com/JIAlinux/p/11726222.html