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 空间利用率;至少 块盘。

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 空间利用率; 至少需要 块。

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文件     中,以便下次重启时,系统自动加载。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
[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逻辑卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[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、 扩展卷组,添加物理卷至卷组中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[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、 缩减逻辑边界

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[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:限制为只读访问

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[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