4.1、RAID简介

  RAID(Redundant Arrays of Independent Disks),名为独立冗余磁盘阵列,可以把RAID理解为一种使用磁盘驱动器的方法,它将一组磁盘驱动器用某种逻辑组合起来,作为一个逻辑磁盘驱动器来使用。主要优点有:提高IO能力,磁盘并行读写,提高耐用性;主要利用磁盘冗余来实现。其常用等级主要有:0、1、5、10、01、jbod等。等级划分只是多块磁盘组织在一起的工作方式有所不同,没有上下之分。RAID的实现方式主要有三种:

外接式磁盘阵列:通过扩展卡提供适配能力
内接式
RAID:主板集成 RAID 控制器
Software RAIDmd(内核模块实现)

RAID0:条带技术
  提升读写能力;无容错能力;
100%空间利用率;至少2块盘。

wKioL1jzb_7QnZejAAAqXT9DhnA682.png-wh_50

RAID1:镜像
  写性能下降,读性能提升;有硬件容错能力;
1/2 空间利用率;至少 2 块盘。

wKiom1jzcEOCMuMuAAAhLKWlG-w776.png-wh_50

RAID5:数据校验(轮流校验)

提升读写能力;允许一块盘出错;(n-1)/n空间利用率;至少需要3块。

wKioL1jzcETx-WrJAAA3ISirpeY437.png-wh_50

RAID 1+0 RAID 0+1
  RAID 1+0
: 

    (1)先让两颗磁盘组成 RAID 1,并且这样设定两组;
    (2)将这两组 RAID 1 再組成一組 RAID0
    提升读写提升;允许不同组内各坏一块盘;
1/2 空间利用率;至少需要4块。

  RAID 0+1:先組成 RAID-0 再組成 RAID-1
    提升读写提升; 允许同组内坏盘;
1/2 空间利用率; 至少需要 4 块。

wKiom1jzcETz4mf7AADRmm3BuTM118.png-wh_50

jbod:多个小盘叠加,对应用程序看来是一块大的磁盘
    不提升读写能力;无容错能力;
100%空间利用率;至少需要2块。

4.2、软件磁盘阵列/mdadm

  通过内核模块md可以模拟实现软Raid,用户通过mdadm命令在用户空间管理md模块,但是生产环境中不建议使用。
  mdadm: 将任何块设备做成 RAId,模式化管理工具。

创建模式:
 -C:创建一个新的RAID

  -l: 指定级别 

  -n #: 设备个数 

  -x #: 指定空闲盘个数,即备份磁盘

  -a {yes|no}: 是否自动为其创建设备文件
  -c: CHUNK 大小, 2^n, 默认为 64K

管理模式 --add, --remove, --fail 

  如: mdadm /dev/md# --fail /dev/sda7(模拟磁盘损坏)

监控模式 -F
增长模式 -G

装配模式 -A,重新识别此前实现的RAID

mdadm -S ( --stop) /dev/md# 停止阵列

mdadm -D ( --detail) /dev/md# 查看 RAID 详细信息
mdamd -D --scan > /etc/mdadm.conf 创建好raid后,须将raid信息保存在/etc/mdadm.conf文件     中,以便下次重启时,系统自动加载。
[root@mylinux ~]# fdisk -l /dev/vdb       #在当前系统创建了8个500MB的逻辑分区
Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b4fd
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb4               1       10404     5243584+   5  Extended
/dev/vdb5               1        1017      512505   83  Linux
/dev/vdb6            1018        2034      512536+  83  Linux
/dev/vdb7            2035        3051      512536+  83  Linux
/dev/vdb8            3052        4068      512536+  83  Linux
/dev/vdb9            4069        5085      512536+  83  Linux
/dev/vdb10           5086        6102      512536+  83  Linux
/dev/vdb11           6103        7119      512536+  83  Linux
/dev/vdb12           7120        8136      512536+  83  Linux
[root@mylinux ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb5 /dev/vdb6 #创建raid0
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@mylinux ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/vdb7 /dev/vdb8 #创建raid1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@mylinux ~]# mdadm -C /dev/md5 -a yes -l 5 -n 3  /dev/vdb9 /dev/vdb10 /dev/vdb11
mdadm: Defaulting to version 1.2 metadata                 #创建raid5
mdadm: array /dev/md5 started.
[root@mylinux ~]# ls -l /dev/md*               #查看当前系统创建的raid
brw-rw---- 1 root disk 9, 0 4月  17 10:18 /dev/md0
brw-rw---- 1 root disk 9, 1 4月  17 10:20 /dev/md1
brw-rw---- 1 root disk 9, 5 4月  17 10:26 /dev/md5

/dev/md:
总用量 4
-rw------- 1 root root 159 4月  17 10:25 md-device-map
[root@mylinux ~]# cat /proc/mdstat             #raid的详细信息
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md5 : active raid5 vdb11[3] vdb10[1] vdb9[0]
      1022976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md1 : active raid1 vdb8[1] vdb7[0]
      512256 blocks super 1.2 [2/2] [UU]
      
md0 : active raid0 vdb6[1] vdb5[0]
      1022464 blocks super 1.2 512k chunks
      
unused devices: <none>
[root@mylinux ~]# mdadm -D /dev/md5    #单独查看raid5的详细信息
/dev/md5:
        Version : 1.2
  Creation Time : Mon Apr 17 10:25:59 2017
     Raid Level : raid5
     Array Size : 1022976 (999.00 MiB 1047.53 MB)
  Used Dev Size : 511488 (499.50 MiB 523.76 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Apr 17 10:26:42 2017
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : mylinux:5  (local to host mylinux)
           UUID : 7f13e874:e92e40a2:691d96a5:153dfc7b
         Events : 18

    Number   Major   Minor   RaidDevice State
       0     252       25        0      active sync   /dev/vdb9
       1     252       26        1      active sync   /dev/vdb10
       3     252       27        2      active sync   /dev/vdb11
[root@mylinux ~]# mkfs.ext4 /dev/md0   #在raid0上创建文件系统
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
64000 inodes, 255616 blocks
12780 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=264241152
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@mylinux ~]# mount /dev/md0 /mnt      #挂载文件系统
[root@mylinux ~]# cd /mnt/
[root@mylinux mnt]# ls
lost+found
[root@mylinux mnt]# 
[root@mylinux home]# mdadm -S /dev/md0      #停止阵列,停止阵列前需要先卸载文件系统
mdadm: stopped /dev/md0
[root@mylinux home]# mdadm -D /dev/md0      
mdadm: cannot open /dev/md0: No such file or directory
[root@mylinux home]# mdadm -R /dev/md0      #无法重启,此时需要重启系统才能开启raid
mdadm: error opening /dev/md0: No such file or directory
[root@mylinux home]# mdadm /dev/md1 -f /dev/vdb7  #模拟raid磁盘故障
mdadm: set /dev/vdb7 faulty in /dev/md1
[root@mylinux home]# mdadm -D /dev/md1          
/dev/md1:
        Version : 1.2
  Creation Time : Mon Apr 17 10:20:56 2017
     Raid Level : raid1
     Array Size : 512256 (500.25 MiB 524.55 MB)
  Used Dev Size : 512256 (500.25 MiB 524.55 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Apr 17 10:43:40 2017
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : mylinux:1  (local to host mylinux)
           UUID : 89931eac:3c4ad21e:aa143535:e30bdf15
         Events : 19

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1     252       24        1      active sync   /dev/vdb8

       0     252       23        -      faulty   /dev/vdb7   #/dev/vdb7故障
[root@mylinux home]# mdadm /dev/md1 -a /dev/vdb12   #添加新硬盘
mdadm: added /dev/vdb12
[root@mylinux home]# mdadm /dev/md1 -r /dev/vdb7    #移除损坏的硬盘
mdadm: hot removed /dev/vdb7 from /dev/md1
[root@mylinux home]# mdadm -D /dev/md1           
/dev/md1:
        Version : 1.2
  Creation Time : Mon Apr 17 10:20:56 2017
     Raid Level : raid1
     Array Size : 512256 (500.25 MiB 524.55 MB)
  Used Dev Size : 512256 (500.25 MiB 524.55 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Apr 17 10:45:55 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : mylinux:1  (local to host mylinux)
           UUID : 89931eac:3c4ad21e:aa143535:e30bdf15
         Events : 39

    Number   Major   Minor   RaidDevice State
       2     252       28        0      active sync   /dev/vdb12
       1     252       24        1      active sync   /dev/vdb8
 #删除RAID,先删除RAID中的所有设备,然后停止该RAID 
[root@mylinux ~]# mdadm /dev/md1 --fail /dev/vdb12 --remove /dev/vdb12  
mdadm: set /dev/vdb12 faulty in /dev/md1
mdadm: hot removed /dev/vdb12 from /dev/md1
[root@mylinux ~]# mdadm /dev/md1 --fail /dev/vdb8 --remove /dev/vdb8
mdadm: set device faulty failed for /dev/vdb8:  Device or resource busy
[root@mylinux ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@mylinux ~]# mdadm --remove /dev/md1
mdadm: error opening /dev/md1: No such file or directory
[root@mylinux ~]# rm -f /etc/mdadm.conf

4.3、LVM逻辑卷

  LVM的全名是Logical Volume Manager,逻辑卷管理器。LVM 的做法是將几个分区(disk)通过软件组合为物理卷 (VG),然后将物理卷分割为逻辑卷(LV),格式化后就可以挂载使用。lvm最大的优点是不再考虑物理磁盘的特性,中间架构了一层服务层,提供磁盘空间服务。

wKiom1j0aIeCmnVXAAbON--NUQE106.png-wh_50

  lvm中常用的术语:

Physical Media(PM)物理存储介质

  系统的存储设备,硬盘或者硬盘上的分区,如/dev/sdb。

Physical Extend(PE)物理区域

  每个物理卷被划分为大小相等的基本单元。物理区域是物理卷中可以用于分配的最小存储单元,物理区域大小一旦确定将不能修改,用一卷组中的所有物理卷的物理区域大小必须一致。

Physical Volume(PV)物理卷

  硬盘分区或逻辑分区上与硬盘分区具有相同功能的设备,是lvm的基本存储逻辑块。和基本的物理存储介质(如分区、硬盘等)不同的是,它包含lvm管理参数。

Volume Group(VG)卷组

 lvm中最高抽象层,由一个或多个物理卷组成,一个逻辑卷管理系统可以只有一个卷组或多个。

Logical Extent(LE)逻辑区域

  逻辑卷也被划分为被称为LE的可寻址的基本单元,在同一卷组中,LE的大小和PE相同,一一对应。 

Logical Volume(LV)逻辑卷

  逻辑卷建立在卷组之上,相当于非lvm系统中的分区,可以在其上建立文件系统,系统中的多个逻辑卷可以属于一个卷组,也可以属于多个不同的卷组。

  lvm的创建流程:

wKiom1j0cAPgQeeXAADaYklGRRU731.png-wh_50

物理卷的管理命令 PV:

pvcreate :将分区创建成为PV; -s:PE 大小
pvscan :搜寻目前系统里面任何具有 PV 的磁碟;
pvdisplay :显示出目前系统上面的 PV 状态;

pvremove:将 PV 属性移除,移除物理卷上的 PE;

pvchange:设置PV的性能,允许或拒绝从这个磁盘上分配另外的PE;

pvs:显示物理卷信息 

卷组管理命令 VG:

vgcreate :创建 VG 的命令啦! 他的参数比较多, 等一下介绍。
vgscan :搜寻系统上面是否有 VG 存在
vgdisplay :显示目前系统上面的 VG 状态;
vgextend :在 VG 内添加额外的 PV 
vgreduce :在 VG 内移除 PV
vgchange :配置 VG 是否启动 (active)
vgremove:删除一个 VG

逻辑卷管理命令 LV:


lvcreate : 创建 LV -L:空间大小 -n:lv 名称
lvscan : 查询系统上面的 LV 
lvdisplay : 显示系统上面的 LV 状态
lvextend : 在 LV 里面添加容量
lvreduce : 在 LV 里面减少容量
lvremove : 删除一个 LV
lvresize 
: 对 LV 进行容量大小的调整
  • 创建lvm逻辑卷


[root@mylinux ~]# fdisk -l           #查看当前系统分区,使用vdb5/vdb6/vdb7创建lvm
Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b4fd
   Device Boot      Start         End      Blocks   Id  System
/dev/vdb4               1       10404     5243584+   5  Extended
/dev/vdb5               1        1017      512505   83  Linux
/dev/vdb6            1018        2034      512536+  83  Linux
/dev/vdb7            2035        3051      512536+  83  Linux
/dev/vdb8            3052        4068      512536+  83  Linux
/dev/vdb9            4069        5085      512536+  83  Linux
/dev/vdb10           5086        6102      512536+  83  Linux
/dev/vdb11           6103        7119      512536+  83  Linux
/dev/vdb12           7120        8136      512536+  83  Linux
[root@mylinux ~]# pvcreate /dev/vdb5 /dev/vdb6         #创建物理卷
WARNING: software RAID md superblock detected on /dev/vdb5. Wipe it? [y/n]: y
  Wiping software RAID md superblock on /dev/vdb5.
  Physical volume "/dev/vdb5" successfully created
WARNING: software RAID md superblock detected on /dev/vdb6. Wipe it? [y/n]: y
  Wiping software RAID md superblock on /dev/vdb6.
  Physical volume "/dev/vdb6" successfully created
[root@mylinux ~]# pvdisplay                             #查看信息
  "/dev/vdb5" is a new physical volume of "500.49 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb5
  VG Name               
  PV Size               500.49 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ZJYYan-p21n-stId-FI1X-v0Y5-OpbM-4n2ao0
   
  "/dev/vdb6" is a new physical volume of "500.52 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb6
  VG Name               
  PV Size               500.52 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               GF4F0H-xEA2-yX7m-Siss-cVBw-d8Mr-bhmBCZ
[root@mylinux ~]# vgcreate vgroup /dev/vdb5 /dev/vdb6   #创建卷组,并取名
 Volume group "vgroup" successfully created  
[root@mylinux ~]# vgdisplay vgroup                      #查看卷组信息
  --- Volume group ---
  VG Name               vgroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               992.00 MiB
  PE Size               4.00 MiB
  Total PE              248
  Alloc PE / Size       0 / 0   
  Free  PE / Size       248 / 992.00 MiB
  VG UUID               IUEkEt-0bsI-f9br-25Nc-qkLB-iJjd-evi0BD
[root@mylinux ~]# lvcreate -n mylv -L 500M vgroup    #基于卷组创建逻辑卷
  Logical volume "mylv" created.
  Cannot process volume group mylv
[root@mylinux ~]# lvdisplay                          #查看逻辑卷信息
  --- Logical volume --- 
  LV Path                /dev/vgroup/mylv
  LV Name                mylv
  VG Name                vgroup
  LV UUID                I3FcQQ-9Bk7-QU6s-KOi2-agQc-6BK9-HvpWGa
  LV Write Access        read/write
  LV Creation host, time mylinux, 2017-04-17 15:49:34 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
[root@mylinux ~]# vgs                           #查看vg信息
  VG     #PV #LV #SN Attr   VSize   VFree  
  vgroup   2   1   0 wz--n- 992.00m 492.00m
[root@mylinux ~]# pvs                           #查看pv信息
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/vdb5  vgroup lvm2 a--u 496.00m      0 
  /dev/vdb6  vgroup lvm2 a--u 496.00m 492.00m
[root@mylinux ~]# mkfs.ext4 /dev/vgroup/mylv    #格式化逻辑卷
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@mylinux ~]# mount /dev/vgroup/ /mnt/       #挂载使用
mount: you must specify the filesystem type
[root@mylinux ~]# mount /dev/vgroup/mylv /mnt/
[root@mylinux ~]# cd /mnt/
[root@mylinux mnt]# ls
lost+found
  • 删除逻辑卷

1、将逻辑卷使用的逻辑卷卸载,使用umount

2、逻辑卷删除,使用lvremove

3、删除卷组,使用vgremove

4、删除物理卷,使用pvremove

  • 拉伸逻辑卷

1、 先确定扩展的大小;并确保所属的卷组有足够的剩余空间
2、 扩展逻辑边界

wKiom1j0dv6RpqJgAAJQBgTqf0M215.png-wh_50

[root@mylinux home]# vgdisplay     #查看卷组剩余容量
  --- Volume group ---
  VG Name               vgroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               992.00 MiB
  PE Size               4.00 MiB
  Total PE              248
  Alloc PE / Size       125 / 500.00 MiB
  Free  PE / Size       123 / 492.00 MiB
  VG UUID               IUEkEt-0bsI-f9br-25Nc-qkLB-iJjd-evi0BD
   
[root@mylinux home]# lvs           #当前卷组大小
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv vgroup -wi-ao---- 500.00m                                                    
[root@mylinux home]# lvextend -L +200M /dev/vgroup/mylv    #扩展200M
  Size of logical volume vgroup/mylv changed from 500.00 MiB (125 extents) to 700.00 MiB (175 extents).
  Logical volume mylv successfully resized.
[root@mylinux home]# lvs           #扩展后大小
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv vgroup -wi-ao---- 700.00m                                                    
[root@mylinux home]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              20G  4.1G   15G  22% /
/dev/mapper/vgroup-mylv
                      477M  2.3M  449M   1% /mnt
[root@mylinux home]# resize2fs /dev/vgroup/mylv    #更新文件系统
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vgroup/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vgroup/mylv to 716800 (1k) blocks.
The filesystem on /dev/vgroup/mylv is now 716800 blocks long.
[root@mylinux home]# df -h                         #扩展后,文件系统的大小
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              20G  4.1G   15G  22% /
/dev/mapper/vgroup-mylv
                      670M  2.6M  633M   1% /mnt
  • 扩展卷组

1、 准备要添加的物理卷;
2、 扩展卷组,添加物理卷至卷组中
[root@mylinux mnt]# pvcreate /dev/vdb7    #创建物理卷
WARNING: software RAID md superblock detected on /dev/vdb7. Wipe it? [y/n]: y
  Wiping software RAID md superblock on /dev/vdb7.
  Physical volume "/dev/vdb7" successfully created
[root@mylinux mnt]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/vdb5  vgroup lvm2 a--u 496.00m      0 
  /dev/vdb6  vgroup lvm2 a--u 496.00m 292.00m
  /dev/vdb7         lvm2 ---- 500.52m 500.52m
[root@mylinux mnt]# vgextend vgroup /dev/vdb7    #添加至卷组
  Volume group "vgroup" successfully extended
[root@mylinux mnt]# vgdisplay                    #显示当前卷组大小
  --- Volume group ---
  VG Name               vgroup
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               1.45 GiB
  PE Size               4.00 MiB
  Total PE              372
  Alloc PE / Size       175 / 700.00 MiB
  Free  PE / Size       197 / 788.00 MiB
  VG UUID               IUEkEt-0bsI-f9br-25Nc-qkLB-iJjd-evi0BD
  • 缩小逻辑卷

wKiom1j0efvgRMq4AAL1Hb3vMxI043.png-wh_50

1、 卸载卷,并执行强制检测,逻辑卷的缩小必须离线执行 

2、 缩减逻辑边界

缩小逻辑卷是危险操作,一般不要对逻辑卷进行缩小操作

[root@mylinux home]# umount /mnt/    #卸载文件系统
[root@mylinux home]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv vgroup -wi-a----- 700.00m                                                    
[root@mylinux home]# resize2fs /dev/vgroup/mylv 500M   #减小文件系统大小
resize2fs 1.41.12 (17-May-2010)
请先运行 'e2fsck -f /dev/vgroup/mylv'.
[root@mylinux home]# e2fsck -f /dev//vgroup/mylv       #检查文件系统
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev//vgroup/mylv: 12/178816 files (0.0% non-contiguous), 33325/716800 blocks
[root@mylinux home]# resize2fs /dev/vgroup/mylv 500M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vgroup/mylv to 512000 (1k) blocks.
The filesystem on /dev/vgroup/mylv is now 512000 blocks long.
[root@mylinux home]# lvreduce -L -200M /dev/vgroup/mylv    #减小逻辑卷大小
  WARNING: Reducing active logical volume to 500.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgroup/mylv? [y/n]: y
  Size of logical volume vgroup/mylv changed from 700.00 MiB (175 extents) to 500.00 MiB (125 extents).
  Logical volume mylv successfully resized.
[root@mylinux home]# lvs                                    #缩减之后的大小
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv vgroup -wi-a----- 500.00m
  • 缩小卷组

wKiom1j0fqHw3zkRAAIrdqzb5Yg066.png-wh_50

卷组:
1、 确定要移除的物理卷的总空间大小,要小于 VG 当前的可用空间大小;
2、 将要移除的物理卷上的所有 PE 移动至其它 PV
3
、 缩减 vg
[root@mylinux home]# pvs                 #查看当前pv
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/vdb5  vgroup lvm2 a--u 496.00m      0 
  /dev/vdb6  vgroup lvm2 a--u 496.00m 492.00m
  /dev/vdb7  vgroup lvm2 a--u 496.00m 496.00m
[root@mylinux home]# pvmove /dev/vdb6    #移出vdb6上的pe
  /dev/vdb6: Moved: 0.0%
  /dev/vdb6: Moved: 100.0%
[root@mylinux home]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/vdb5  vgroup lvm2 a--u 496.00m      0 
  /dev/vdb6  vgroup lvm2 a--u 496.00m 496.00m
  /dev/vdb7  vgroup lvm2 a--u 496.00m 492.00m
[root@mylinux home]# vgreduce vgroup /dev/vdb6   #从指定卷组上移除一个pv
  Removed "/dev/vdb6" from volume group "vgroup"
[root@mylinux home]# vgdisplay 
  --- Volume group ---
  VG Name               vgroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               992.00 MiB
  PE Size               4.00 MiB
  Total PE              248
  Alloc PE / Size       125 / 500.00 MiB
  Free  PE / Size       123 / 492.00 MiB
  VG UUID               IUEkEt-0bsI-f9br-25Nc-qkLB-iJjd-evi0BD
   
[root@mylinux home]# pvremove /dev/vdb6         #删除pv
  Labels on physical volume "/dev/vdb6" successfully wiped
[root@mylinux home]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/vdb5  vgroup lvm2 a--u 496.00m      0 
  /dev/vdb7  vgroup lvm2 a--u 496.00m 492.00m

4.4、快照卷

  快照卷是逻辑卷的一种,快照就是将当时的系统资讯记录下来,就好像照相记录一般!未来若有

任何数据更动了,则原始数据会被搬移到快照区,没有被更动的区域则由快照区与文件系统共享。
快照卷属性要求:
  1、生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;
  2、快照卷应该是只读的;
  3、跟原卷在同一卷组内。

wKiom1j0f-fTsVMnAAGOYF6XOWs727.png-wh_50


快照卷命令:
  lvcreate -s -L SIZE -n SLV_NAME -p r /PATH/TO/LV

  -s :创建快照卷

  -p r:限制为只读访问

快照卷是对某逻辑卷进行的,因此必须跟目标逻辑卷在同一个卷组中;无须指明卷组。

[root@mylinux mnt]# mount /dev/vgroup/mylv /mnt/lvm        
[root@mylinux mnt]# cd lvm
[root@mylinux lvm]# cp /etc/fstab .
[root@mylinux lvm]# cp /etc/passwd .
[root@mylinux lvm]# ls                        #原逻辑卷中的文件
fstab  lost+found  passwd
[root@mylinux lvm]# lvcreate -s -L 200M -n snap_lvm -p r /dev/vgroup/mylv  #创建快照卷
  Logical volume "snap_lvm" created.
[root@mylinux lvm]# mount /dev/vgroup/snap_lvm /mnt/lvm_back/    #挂载
mount: block device /dev/mapper/vgroup-snap_lvm is write-protected, mounting read-only
[root@mylinux mnt]# cd /mnt/lvm               #查看快照卷中的文件
[root@mylinux lvm]# ls
fstab  lost+found  passwd
[root@mylinux lvm]# cd /mnt/lvm               #原逻辑卷中操作
[root@mylinux lvm]# cp /etc/gr
group      group-     grub.conf  
[root@mylinux lvm]# cp /etc/grub.conf .
[root@mylinux lvm]# ls /mnt/lvm
fstab  grub.conf  lost+found  passwd
[root@mylinux lvm]# ls /mnt/lvm_back/         #快照卷中不产生新增的文件
fstab  lost+found  passwd
[root@mylinux mnt]# cd lvm_back/
[root@mylinux lvm_back]# tar -cvj -f /backups/lvm.tar.bz2 *    #备份快照卷中的文件     
fstab
lost+found/
passwd
[root@mylinux lvm_back]# cd ..
[root@mylinux mnt]# umount /mnt/lvm_back/           #卸载快照卷
[root@mylinux mnt]# lvremove /dev/vgroup/snap_lvm   #删除快照卷
Do you really want to remove active logical volume snap_lvm? [y/n]: y
  Logical volume "snap_lvm" successfully removed
[root@mylinux mnt]# umount /mnt/lvm                 #卸载原逻辑卷
[root@mylinux mnt]# lvremove /dev/vgroup/mylv       #删除逻辑卷,文件丢失
Do you really want to remove active logical volume mylv? [y/n]: y
  Logical volume "mylv" successfully removed
[root@mylinux mnt]# lvcreate -n mylv -L 500M vgroup #创建逻辑卷
  Logical volume "mylv" created.
[root@mylinux mnt]# mkfs
mkfs          mkfs.ext2     mkfs.ext4     
mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  
[root@mylinux mnt]# mkfs.ext4
mkfs.ext4     mkfs.ext4dev  
[root@mylinux mnt]# mkfs.ext4 /dev/vgroup/mylv 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@mylinux mnt]# mount /dev/vgroup/mylv /mnt/lvm  #挂载
[root@mylinux mnt]# tar -xjv -f /backups/lvm.tar.bz2 -C /mnt/lvm  #还原备份的文件
fstab
lost+found/
passwd
[root@mylinux mnt]# cd /mnt/lvm      
[root@mylinux lvm]# ls            
fstab  lost+found  passwd