5.4 RAID与LVM基础

RAID

    磁盘阵列(Redundant Arrays of Independent Disks,RAID),全称独立磁盘冗余阵列。

    磁盘阵列是由很多廉价的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

    利用同位检查(ParityCheck)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

    相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上(冗余),输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。

分类:硬RAID:磁盘阵列柜、磁盘阵列卡   软RAID:软件实现

本篇只介绍常见的:RAID0、RAID1、RAID5、RAID6

RAID0


    RAID0又称为Stripe或Striping,中文称之为条带化存储,它代表了所有RAID级别中最高的存储性能。是把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

磁盘空间 = 磁盘总量 = 100%

需要的磁盘数 ≥ 2

优点:

1、  充分利用I/O总线性能使其带宽翻倍,读/写速度翻倍。

2、  充分利用磁盘空间,利用率为100%。

缺点:

1、  不提供数据冗余。
2、  无数据检验,不能保证数据的正确性。

3、  存在单点故障

RAID1


    RAID1又称为Mirror或者Mirroring,中文称之为镜像存储。RAID1是磁盘阵列中单位成本最高的,磁盘利用率最低,但提供了很高的数据安全性和可用性。将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”通过镜像实现数据冗余,成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。最大允许互为镜像内的单个磁盘故障,如果出现互为镜像的两块磁盘故障则数据丢失。

磁盘空间 = 磁盘总量/2 = 50%

需要的磁盘数(n) ≥ 2*n

优点:

1、  提供数据冗余,数据双倍存储。

2、  提供良好的读性能

缺点:

1、  无数据校验
2、  磁盘利用率低,成本高

RAID-01


    先做RAID 0再将RAID 0组合成RAID 1,拥有两种RAID的特性。

磁盘空间= n/2 = 50%

4 ≥ 需要的磁盘数 ≥ 2*n

优点:

1、  较高的IO性能
2、  有数据冗余

3、  无单点故障

缺点:

1、  成本稍高

2、  安全性比RAID 10 差

RAID-10


    先做RAID 1再将RAID 1组合成RAID 0,拥有两种RAID的特性,安全性能高。

磁盘空间= n/2 = 50%

4 ≤ 需要的磁盘数 ≥ 2*n

优点:

1、RAID10的读性能将优于RAID01
2、较高的IO性能
3、有数据冗余
4、 无单点故障

5、安全性能高

缺点:

成本稍高

RAID5


    奇偶校验(XOR),RAID0和RAID1的折中方案。数据以块分段条带化存储。校验信息交叉地存储在所有的数据盘上。数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据

磁盘空间 = n-1
需要的磁盘数 ≥ 3

优点:

1、  读写性能高
2、  有校验机制

3、  磁盘空间利用率高

缺点:

磁盘越多安全性能越差

RAID6


    与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。双重奇偶校验。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,写性能比RAID5差。

磁盘空间 = n-2

需要的磁盘数 ≥ 4

优点:

1、  良好的随机读性能

2、  有校验机制

缺点:

1、  写入速度差

2、  成本高

RAID-50


    先做RAID 5再将RAID 5组合成RAID 0,拥有两种RAID的特性。

需要的磁盘数 ≥ 6

软RAID

    RAID设备被命名为 mdmdadm 工具提供了软件实现RAID的功能。

    语法:mdadm [模式] RAID [选项] 设备

1、构建RAID,并为RAID设备命名。

[root@CentOS6 ~]#echo "- -mdadm -C /dev/md0 -a yes -l5 -n3 -x1 -c32 /dev/sd{b,c,d,e}   #将sdb、c、d做RAID5名为md0,sde为空闲盘
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@CentOS6 ~]#mkfs.ext4 /dev/md0   #在md0上创建ext4文件系统
……
[root@CentOS6 ~]#blkid
/dev/sda1: UUID="056668aa-7ecd-4235-8351-c8fb02372e3b" TYPE="ext4" LABEL="bootdisk" 
/dev/sda2: UUID="481fa90c-b9f1-459b-ba67-f4f4c8d7942b" TYPE="ext4" 
/dev/sda3: UUID="b98328eb-21c7-4114-b3d5-93cd4aec6bc8" TYPE="ext4" LABEL="app" 
/dev/sda5: UUID="5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417" TYPE="swap" 
/dev/sdb: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="dc3f6167-386d-414b-356b-10a0af4584a9" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" 
/dev/sdc: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="eab8698b-d21a-8553-114b-0980c14916f6" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" 
/dev/sdd: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="6a20e49b-beca-9c7c-b14e-2611cadd3fb5" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member" 
/dev/md0: UUID="955ac152-589a-4717-9bbb-9e9510dd1b12" TYPE="ext4" 
/dev/sde: UUID="612baa8e-e67f-8bb8-fa27-c39a34ec35d9" UUID_SUB="76d59026-fc76-0680-9ef8-01a3390270d2" LABEL="CentOS6.miriam:0" TYPE="linux_raid_member"

2、修改 /etc/fstab,添加RAID设备。

[root@CentOS6 ~]#vim /etc/fstab 
#在/etc/fstab中添加:UUID=955ac152-589a-4717-9bbb-9e9510dd1b12 /mnt/md0                ext4    defaults        0 0
[root@CentOS6 ~]#mdadm -Ds /dev/md0 > /etc/mdadm.conf
[root@CentOS6 ~]#ll /etc/mdadm.conf 
-rw-r--r--. 1 root root 100 Apr  2 16:36 /etc/mdadm.conf

3、查看指定RAID设备信息

[root@CentOS6 ~]#mdadm -D /dev/md0   #查看md0的详细信息
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr  2 16:27:51 2018
     Raid Level : raid5
     Array Size : 4190208 (4.00 GiB 4.29 GB)
  Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Apr  2 16:31:58 2018
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 32K

           Name : CentOS6.miriam:0  (local to host CentOS6.miriam)
           UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde

4、当 RAID 中有硬盘损坏,查看 RAID 信息确定损坏情况后移除对应硬盘,并添加新的硬盘。

[root@CentOS6 ~]#mdadm /dev/md0 -f /dev/sdd   #模拟sdd硬盘损坏
mdadm: set /dev/sdd faulty in /dev/md0
[root@CentOS6 ~]#mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr  2 16:27:51 2018
     Raid Level : raid5
     Array Size : 4190208 (4.00 GiB 4.29 GB)
  Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Apr  2 16:46:02 2018
          State : clean, degraded, recovering    #degraded:降级的,表明当前只是用了两块硬盘
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 32K

 Rebuild Status : 71% complete

           Name : CentOS6.miriam:0  (local to host CentOS6.miriam)
           UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9
         Events : 31

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       64        2      spare rebuilding   /dev/sde   #状态表明其他硬盘正在反算原硬盘中的数据

       4       8       48        -      faulty   /dev/sdd    #状态表明为已损坏
[root@CentOS6 ~]#mdadm /dev/md0 -r /dev/sdd    #移除sdd硬盘
mdadm: hot removed /dev/sdd from /dev/md0
[root@CentOS6 ~]#mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr  2 16:27:51 2018
     Raid Level : raid5
     Array Size : 4190208 (4.00 GiB 4.29 GB)
  Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Apr  2 16:46:57 2018
          State : clean        #状态为clean,说明备用新硬盘已经工作
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 32K

           Name : CentOS6.miriam:0  (local to host CentOS6.miriam)
           UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9
         Events : 38

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       64        2      active sync   /dev/sde   #反算结束,原硬盘中数据已恢复
[root@CentOS6 ~]#mdadm /dev/md0 -a /dev/sdd   #将sdd新增加至md0
mdadm: added /dev/sdd
[root@CentOS6 ~]#mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr  2 16:27:51 2018
     Raid Level : raid5
     Array Size : 4190208 (4.00 GiB 4.29 GB)
  Used Dev Size : 2095104 (2046.00 MiB 2145.39 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Apr  2 16:47:32 2018
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 32K

           Name : CentOS6.miriam:0  (local to host CentOS6.miriam)
           UUID : 612baa8e:e67f8bb8:fa27c39a:34ec35d9
         Events : 39

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb    #因为设置为3块硬盘做的RAID5
       1       8       32        1      active sync   /dev/sdc
       3       8       64        2      active sync   /dev/sde

       4       8       48        -      spare   /dev/sdd      #所以sdd只能做空闲盘

5、停止RAID设备。

[root@CentOS6 ~]#umount /dev/md0   #在停止RAID时,首先要取消挂载
[root@CentOS6 ~]#mdadm -S /dev/md0   #停止md0
mdadm: stopped /dev/md0
[root@CentOS6 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  5.8G  0 rom  /media/CDROM
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0    3G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdb      8:16   0    2G  0 disk 
sdc      8:32   0    2G  0 disk 
sdd      8:48   0    2G  0 disk 
sde      8:64   0    2G  0 disk 
[root@CentOS6 ~]#mdadm -A /dev/md0   #启用md0
mdadm: /dev/md0 has been started with 3 drives and 1 spare.
[root@CentOS6 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0     11:0    1  5.8G  0 rom   /media/CDROM
sda      8:0    0  100G  0 disk  
├─sda1   8:1    0    1G  0 part  /boot
├─sda2   8:2    0   50G  0 part  /
├─sda3   8:3    0    3G  0 part  /data
├─sda4   8:4    0    1K  0 part  
└─sda5   8:5    0    2G  0 part  [SWAP]
sdb      8:16   0    2G  0 disk  
└─md0    9:0    0    4G  0 raid5 
sdc      8:32   0    2G  0 disk  
└─md0    9:0    0    4G  0 raid5 
sdd      8:48   0    2G  0 disk  
└─md0    9:0    0    4G  0 raid5 
sde      8:64   0    2G  0 disk  
└─md0    9:0    0    4G  0 raid5 

LVM

    LVM在每个物理卷头部都维护了一个metadata,每个metadata中都包含了整个VG(volume group:卷组)的信息,包括每个VG的布局配置,PV(physical volume:物理卷)的编号,LV(logical volume:逻辑卷)的编号,以及每个PE(physical extends:物理扩展单元)LE(logical extends:物理扩展单元)的映射关系。同一个VG中的每个PV头部的信息都是相同的,这样有利于故障时进行数据恢复。

    LVM对上层文件系统提供LV层,隐藏了操作细节。对文件系统而言,对LV的操作与原先对partition的操作没有差别。当对LV进行写入操作的时候,LVM定位相应的LE,通过PV头部的映射表将数据写入到相应的PE上。LVM实现的关LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。键在于PE和LE之间建立映射关系,不同的映射规则决定了不同的LVM存储模型。LVM支持多个PV 的stripe和mirror。

    LVM最大的特点就是可以对磁盘进行动态管理,因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据,如果我们增加了硬盘也不会改变现有的上层逻辑卷。

优点:

1. 文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
2. 可以在系统运行的状态下动态的扩展文件系统的大小。
3. 可以增加新的磁盘到LVM的存储池中。
4. 可以以镜像的方式冗余重要的数据到多个物理磁盘。

5. 可以方便的导出整个卷组到另外一台机器。

缺点:

1. 在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
2. 当卷组中的一个磁盘损坏时,整个卷组都会受到影响。

3. 因为加入了额外的操作,存贮性能受到影响。

pv物理卷管理

    pvcreate命令用于创建pv。

    语法:pvcreate 设备

[root@CentOS6 ~]#pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
    pvs 或  pvdisplay命令用于显示pv 的信息。
[root@CentOS6 ~]#pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb        lvm2 ---- 2.00g 2.00g
  /dev/sdc        lvm2 ---- 2.00g 2.00g
  /dev/sdd        lvm2 ---- 2.00g 2.00gvh

vg卷组管理

    vgcreate命令用于创建vg。

    语法:vgcreate [-s] vgName pv

[root@CentOS6 ~]#vgcreate -s 10M vg0 /dev/sd{b,c,d}   #-s选项后跟PE大小
  Volume group "vg0" successfully created

    vgsvgdisplay命令用于显示 vg 的信息。

[root@CentOS6 ~]#vgdisplay
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               5.98 GiB
  PE Size               10.00 MiB
  Total PE              612
  Alloc PE / Size       0 / 0   
  Free  PE / Size       612 / 5.98 GiB
  VG UUID               9tmr41-HuGf-3DaP-HmC1-mivO-FhCb-IUDbGJ

    vgextend命令用于向卷组增加物理卷。

    语法:vgextend vgName pv

[root@CentOS6 ~]#vgextend vg0 /dev/sde
  Volume group "vg0" successfully extended
[root@CentOS6 ~]#vgs
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    4   0   0 wz--n- 7.97g 7.97g

    vgreduce命令用于将卷组中的物理卷移除。

    语法:vgreduce vgName pv

[root@CentOS6 ~]#vgreduce vg0 /dev/sde
  Removed "/dev/sde" from volume group "vg0"
[root@CentOS6 ~]#vgs
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    3   0   0 wz--n- 5.98g 5.98g

lv逻辑卷管理命令

    lvcreate命令用于创建逻辑卷。

    语法:lvcreate 选项 参数 vgName

[root@CentOS6 ~]#lvcreate -L 3G -n lv0 vg0    
  Rounding up size to full physical extent 3.01 GiB
  Logical volume "lv0" created.
[root@CentOS6 ~]#lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas
  LV Write Access        read/write
  LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800
  LV Status              available
  # open                 0
  LV Size                3.01 GiB
  Current LE             308
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

    选项

-l:以目标卷组指定容量的百分比进行划分
    VG 整体容量
    FREE 剩余容量
-L:以指定容量划分,+/-为增加/减少容量     不写为指定到容量

-n:指定逻辑卷名

    lvslvdispaly命令用于显示 lv 的信息。

[root@CentOS6 ~]#lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 3.01g

    lvextend命令用于扩容逻辑卷。

    语法:lvextend [-r] -L/-l 容量 逻辑卷

[root@CentOS6 ~]#lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 3.01g                                                    
[root@CentOS6 ~]#lvextend -r -l +50%FREE /dev/vg0/lv0    #-r调整容量,在调整时自动会将新加入的卷组FS同化
fsck from util-linux-ng 2.17.2
/dev/mapper/vg0-lv0: clean, 11/197200 files, 29929/788480 blocks
  Size of logical volume vg0/lv0 changed from 3.01 GiB (308 extents) to 4.49 GiB (460 extents).
  Logical volume lv0 successfully resized.
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg0-lv0 to 1177600 (4k) blocks.
The filesystem on /dev/mapper/vg0-lv0 is now 1177600 blocks long.

[root@CentOS6 ~]#lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 4.49g        

    resize2fs命令用于调整文件系统的大小。

一般情况下使用resize2fs前,命令会要求使用 fsck 对文件系统进行检查。

    语法:resize2fs [选项] 设备 新容量

[root@CentOS6 ~]#resize2fs -p /dev/vg0/lv0 3G 
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg0/lv0 to 786432 (4k) blocks.
Begin pass 3 (max = 32)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg0/lv0 is now 786432 blocks long.

    选项

-f 强制开始文件系统重定义大小操作,推翻一些resize2fs平常的强制安全检查。
-F 开始之前排除文件系统设备的缓冲区的缓存。真正只对resize2fs的时间检验有用。
-M 减小文件系统到最小的大小。

-p 为了每一个resize2fs操作打印一个百分比完成条,因此用户可以保持注意程序正在运作的动态。

    lvreduce命令用于缩减逻辑卷容量。

    先卸载!!!

    语法:lvreduce -L [-]容量 逻辑卷

[root@CentOS6 ~]#lvreduce -L 3G /dev/vg0/lv0 
  Rounding size to boundary between physical extents: 3.01 GiB.
  WARNING: Reducing active logical volume to 3.01 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from 4.49 GiB (460 extents) to 3.01 GiB (308 extents).
  Logical volume lv0 successfully resized.

[root@CentOS6 ~]#lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 3.01g           

LVM常用操作

    将逻辑卷中的物理卷移除

[root@CentOS6 ~]#pvmove /dev/sdd    #将sdd硬盘中的数据移动到对应的逻辑卷中
  /dev/sdd: Moved: 5.8%
  /dev/sdd: Moved: 100.0%
[root@CentOS6 ~]#vgreduce vg0 /dev/sdd      
  Removed "/dev/sdd" from volume group "vg0"
[root@CentOS6 ~]#pvremove /dev/sdd        #移除sdd硬盘中的pv属性
  Labels on physical volume "/dev/sdd" successfully wiped

    重命名卷组、逻辑卷

[root@CentOS6 ~]#vgrename vg0 CentOSvg0    #可以写卷名
  Volume group "vg0" successfully renamed to "CentOSvg0"
[root@CentOS6 ~]#vgs
  VG        #PV #LV #SN Attr   VSize VFree   
  CentOSvg0   2   1   0 wz--n- 3.98g 1000.00m                                            
[root@CentOS6 ~]#lvrename /dev/CentOSvg0/lv0 /dev/CentOSvg0/6_lv0   #只能写路径
  Renamed "lv0" to "6_lv0" in volume group "CentOSvg0"
[root@CentOS6 ~]#lvs /dev/CentOSvg0/6_lv0 
  LV    VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  6_lv0 CentOSvg0 -wi-a----- 3.01g      
    跨主机迁移卷组

1、设置需要迁移的卷组

注意目的主机中是否有同名的卷名,有的话改名后再进行迁移

[root@CentOS6 ~]#vgchange -an CentOSvg0      #冻结需要迁移的卷组
  0 logical volume(s) in volume group "CentOSvg0" now active
[root@CentOS6 ~]#lvdisplay     
  --- Logical volume ---
  LV Path                /dev/CentOSvg0/6_lv0
  LV Name                6_lv0
  VG Name                CentOSvg0
  LV UUID                23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas
  LV Write Access        read/write
  LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800
  LV Status              NOT available     #逻辑卷状态为“非活动”
  LV Size                3.01 GiB
  Current LE             308
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
   
[root@CentOS6 ~]#vgexport CentOSvg0        #将卷组导出,此时便可以拆除硬盘
  Volume group "CentOSvg0" successfully exported

2、将硬盘迁移到目的主机

[root@CentOS7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0  2.4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   20G  0 part /data
sdb      8:16   0    2G  0 disk     #目的主机已识别硬盘
sdc      8:32   0    2G  0 disk 
sdd      8:48   0    2G  0 disk 
sde      8:64   0    2G  0 disk 
sr0     11:0    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64
[root@CentOS7 ~]# pvdisplay 
  Physical volume "/dev/sdb" of volume group "CentOSvg0" is exported
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               CentOSvg0 (exported)     #物理卷仍是导出状态
  PV Size               2.00 GiB / not usable 8.00 MiB
  Allocatable           yes (but full)
  PE Size               10.00 MiB
  Total PE              204
  Free PE               0
  Allocated PE          204
  PV UUID               zspkge-kxHA-OZ2b-4xou-MsUG-qpuq-64eoRf
   
  Physical volume "/dev/sdd" of volume group "CentOSvg0" is exported
  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               CentOSvg0 (exported)
  PV Size               2.00 GiB / not usable 8.00 MiB
  Allocatable           yes 
  PE Size               10.00 MiB
  Total PE              204
  Free PE               100
  Allocated PE          104
  PV UUID               NneEqT-t8sI-WJzk-1i96-5R4m-QhW3-XY2Hkb
   
  "/dev/sde" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sde
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               hGJFGk-ro4T-8o0U-Ae9K-3ANb-mB8U-hHwTdo

3、激活卷组,启用逻辑卷

[root@CentOS7 ~]# vgimport CentOSvg0   #导入卷组
  Volume group "CentOSvg0" successfully imported
[root@CentOS7 ~]# vgchange -ay CentOSvg0     #激活卷组
  1 logical volume(s) in volume group "CentOSvg0" now active
[root@CentOS7 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/CentOSvg0/6_lv0
  LV Name                6_lv0
  VG Name                CentOSvg0
  LV UUID                23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas
  LV Write Access        read/write
  LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800
  LV Status              available    #逻辑卷状态已启用
  # open                 0
  LV Size                <3.01 GiB
  Current LE             308
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0  
逻辑卷快照

    snaphot:关于指定数据集合的一个完全可用的拷贝,该拷贝包括相应数据在某个时间点(拷贝的时间点)的映像。快照可以是其所表示的数据的一个副本也可以是数据的一个复制品。从具体细节上说,快照是指向保存在存储设备中的数据的引用标记或指针。

    如果快照逻辑卷变满,它将被丢弃变得不可用,因此分配给快照足够的空间是非常重要的。所需的空间大小取决于快照的使用,所以没有可循的方法来设置此大小。如果快照的大小等于原始卷的大小那么快照永远可用。

    当创建快照的时候,仅拷贝原始卷里数据的元数据。并不会有数据的物理拷贝,因此快照的创建几乎是实时的。当原始卷上有写操作时,快照跟踪原始卷块的改变,此时原始卷上将要改变的数据在改变之前被拷贝到快照的空间里。因此这个原理的实现叫做写时复制(CoW)。使用CoW时,快照大小并不需要和原始卷一样大,其大小只需考虑两个方面:从快照创建到释放的这段时间内数据块的改变量有多大,数据更新的频率。一旦快照的空间记录满了原始卷数据块的改变的信息,那么这个快照就无效了。

    在写操作写入块之前,CoW将原始数据移动到快照空间里,这样就保证了所有的数据在快照创建时候保持一致性,而对于快照的读操作,如果是读取的数据块是没有修改过的,那么就会将读操作直接重定向到原始卷上,如果是读取已经修改过的数据快,那么就读取拷贝到快照上的数据快。

当删除逻辑卷的时候,在该逻辑卷上创建的所有快照会被全部删除。

创建逻辑卷快照与创建逻辑卷操作一样,只需要添加 -s 选项,但是创建之前要确保卷组中有足够的空间。

[root@CentOS7 ~]# lvcreate -n 6_lv0_snapshot -s -L 1G /dev/CentOSvg0/6_lv0    #使用-s选项创建逻辑卷快照
  Using default stripesize 64.00 KiB.
  Rounding up size to full physical extent <1.01 GiB
  Logical volume "6_lv0_snapshot" created.
[root@CentOS7 ~]# lvdisplay  
  --- Logical volume ---                                   #逻辑卷信息
  LV Path                /dev/CentOSvg0/6_lv0
  LV Name                6_lv0
  VG Name                CentOSvg0
  LV UUID                23CmEh-EUbn-eix2-uIEG-QWfp-v4vv-P88Gas
  LV Write Access        read/write
  LV Creation host, time CentOS6.miriam, 2018-04-03 16:27:04 +0800
  LV snapshot status     source of                           #说明该逻辑卷拥有快照
                         6_lv0_snapshot [active]
  LV Status              available
  # open                 1
  LV Size                <3.01 GiB
  Current LE             308
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---                                  #逻辑卷快照信息
  LV Path                /dev/CentOSvg0/6_lv0_snapshot
  LV Name                6_lv0_snapshot
  VG Name                CentOSvg0
  LV UUID                RtiT2V-YrRk-b1s0-tjIP-2DW1-PtV5-8PpUoq
  LV Write Access        read/write
  LV Creation host, time CentOS7.miriam, 2018-04-28 21:08:18 +0800
  LV snapshot status     active destination for 6_lv0
  LV Status              available
  # open                 0
  LV Size                <3.01 GiB
  Current LE             308
  COW-table size         <1.01 GiB
  COW-table LE           103
  Allocated to snapshot  0.00%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
创建快照时,逻辑卷中有 file1..5 五个文件,挂载后查看两个文件夹。
[root@CentOS7 lv0]# ls /mnt/lv0/ /mnt/snap/
/mnt/lv0/:
file1  file2  file3  file4  file5  lost+found

/mnt/snap/:
file1  file2  file3  file4  file5  lost+found

快照成功~~




 












  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值