磁盘阵列及逻辑卷的创建

磁盘阵列

软件RAID的实现

mdadm:模式化的工具

命令的语法格式:mdadm[mode] <raiddevice> [options] <component-devices>

支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

模式:

创建:-C

装配: -A

监控: -F

管理:-f, -r, -a

<raiddevice>: /dev/md#

<component-devices>: 任意块设备

-C: 创建模式

-n #: 使用#个块设备来创建此RAID

-l #:指明要创建的RAID的级别

-a {yes|no}:自动创建目标RAID设备的设备文件

-c CHUNK_SIZE: 指明块大小,单位k

-x #: 指明空闲盘的个数

-D:显示raid的详细信息

mdadm-D /dev/md#

管理模式:

-f: 标记指定磁盘为损坏

-a: 添加磁盘

-r: 移除磁盘

观察md的状态:

cat /proc/mdstat

使用mdadm创建并定义RAID设备

mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

用文件系统对每个RAID设备进行格式化

mke2fs -j /dev/md0

测试RAID设备

使用mdadm检查RAID设备的状况

mdadm–detail|D/dev/md0

增加新的成员

mdadm–G /dev/md0 –n4 -a /dev/sdf1

 

软RAID测试和修复

模拟磁盘故障

mdadm /dev/md0 -f /dev/sda1

移除磁盘

mdadm /dev/md0 –r /dev/sda1

从软件RAID磁盘修复磁盘故障

  • 替换出故障的磁盘然后开机
  • 在备用驱动器上重建分区
  • mdadm /dev/md0 -a /dev/sda1

mdadm、/proc/mdstat及系统日志信息

 

软RAID管理

生成配置文件:mdadm –D –s >> /etc/mdadm.conf

停止设备:mdadm –S /dev/md0

激活设备:mdadm –A –s /dev/md0 激活

强制启动:mdadm –R /dev/md0

删除raid信息:mdadm –zero-superblock /dev/sdb1

 

 

创建raid5

准备四块磁盘,分别是,sdc1、sdd1、sde1、和sdb1 大小为20G

1.在sdb1上创建分区,大小为20G,

Command (m for help): p

 

Disk /dev/sdb: 107.4 GB, 107374182400 bytes

255 heads, 63 sectors/track, 13054 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xfc18b8bc

 

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        2612    20980858+  83  Linux

 

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): fd

Changed system type of partition 1 to fd (Linux raid autodetect)

 

Command (m for help): p

 

Disk /dev/sdb: 107.4 GB, 107374182400 bytes

255 heads, 63 sectors/track, 13054 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xfc18b8bc

 

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        2612    20980858+  fd  Linux raid autodetect

 

Command (m for help): w

 

partx -a

 

2.根据sdb1的分区表设置,分别复制分区和标志位

dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446

dd if=/dev/sdb of=/dev/sdd bs=1 count=66 skip=446 seek=446

dd if=/dev/sdb of=/dev/sde bs=1 count=66 skip=446 seek=446

3.创建raid5

[root@centos6 ~]#mdadm -C /dev/md5 -a yes -l5 -c 32 -n 3 -x1 /dev/sd{c1,d1,e1,b1}

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md5 started.

4.创建文件系统

[root@centos6 ~]#mkfs.ext4 /dev/md5

5.挂载

[root@centos6 ~]#mkdir /data/raid5

[root@centos6 ~]#vim /etc/fstab

[root@centos6 ~]#mount -a

6.生成配置文件

[root@centos6 ~]#mdadm -Ds /dev/md5 >/etc/mdadm.conf

[root@centos6 ~]#cat /etc/mdadm.conf

ARRAY /dev/md5 metadata=1.2 spares=1 name=centos6.9:5 UUID=e7cc89fe:0c6ebcf8:5f2d1869:da58575f

 

注:如果磁盘损坏,需要更换新磁盘,先把磁盘假如raid,然后再统一指定同一文件系统

mdadm–G /dev/md0 –n4 -a /dev/sdf1

resize2fs /dev/md5   此命令只适合ext系列文件系统,不适合xfs系列

xfs 系列则使用xfs_growfs /data/raid5   /data/raid5是挂载点

 

 

 

 

 

 

创建raid10

准备4个硬盘,sdc,sdd,sde,sdf。

1.先创建raid0

[root@centos6 ~]#mdadm -C /dev/md0 -a yes -l0 -c 32 -n 2 /dev/sd{c,d}

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@centos6 ~]#mdadm -C /dev/md1 -a yes -l0 -c 32 -n 2 /dev/sd{e,f}

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md1 started.

2.再用两个raid0创建raid1

[root@centos6 ~]#mdadm -C /dev/md10 -a yes -l1 -c 32 -n 2 /dev/{md0,md1}

3.格式化

[root@centos6 ~]#mkfs.ext4 /dev/md10

4.自动挂载

[root@centos6 ~]#mkdir /data/md10

[root@centos6 ~]#vim /etc/fstab

[root@centos6 ~]#mount -a

5.生成配置文件

[root@centos6 ~]#mdadm -Ds /dev/md1 >/etc/mdadm.conf

[root@centos6 ~]#mdadm -Ds /dev/md0 >>/etc/mdadm.conf

 

[root@centos6 ~]#mdadm -Ds /dev/md10 >>/etc/mdadm.conf

 

 

 

卸载raid10

1.卸载挂载

[root@centos6 ~]#umount /dev/md10

2.停止md10设备

[root@centos6 ~]#mdadm -S /dev/md10

mdadm: stopped /dev/md10

[root@centos6 ~]#mdadm -S /dev/md0

mdadm: stopped /dev/md0

[root@centos6 ~]#mdadm -S /dev/md1

mdadm: stopped /dev/md1

Number   Major   Minor   RaidDevice

3.删除配置文件,修改/etc/fstab

[root@centos6 ~]#\rm -rf /etc/mdadm.conf

[root@centos6 ~]#vim /etc/fstab

4.删除raid信息

删除raid信息:mdadm –zero-superblock /dev/sdb1

[root@centos6 ~]#mdadm –zero-superblock /dev/sdc

[root@centos6 ~]#mdadm –zero-superblock /dev/sdd

[root@centos6 ~]#mdadm –zero-superblock /dev/sde

[root@centos6 ~]#mdadm –zero-superblock /dev/sdf

 

 

 

 

逻辑卷管理

pv管理工具

显示pv信息

pvs:简要pv信息显示

pvdisplay

创建pv

pvcreate /dev/DEVICE

 

vg管理工具

显示卷组

vgs

vgdisplay

创建卷组

vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

管理卷组

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]

删除卷组

先做pvmove,再做vgremove

 

lv管理工具

显示逻辑卷

lvs

Lvdisplay

创建逻辑卷

lvcreate-L #[mMgGtT] -n NAME VolumeGroup

lvcreate-l 60%VG -n mylvtestvg

lvcreate-l 100%FREE -n yourlvtestvg

删除逻辑卷

lvremove/dev/VG_NAME/LV_NAME

重设文件系统大小

fsadm[options] resize device [new_size[BKMGTEP]]

resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

 

扩展和缩减逻辑卷

扩展逻辑卷:

lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

resize2fs /dev/VG_NAME/LV_NAME

lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME

缩减逻辑卷:

umount/dev/VG_NAME/LV_NAME

e2fsck -f /dev/VG_NAME/LV_NAME

resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

mount

 

跨主机迁移卷组

源计算机上

1 在旧系统中,umount所有卷组上的逻辑卷

vgrename vg0 centos6vg0

lvrename vg0 centos6lv0

2 vgchange–a n vg0

lvdisplay

3 vgexportvg0

pvscan

vgdisplay

拆下旧硬盘

在目标计算机上

4 在新系统中安装旧硬盘,并vgimportvg0.

5 vgchange–ay vg0

6 mount所有卷组上的逻辑卷

 

删除所有逻辑卷

1.取消所有挂载,包括配置文件里的设置

2.删除逻辑卷

lvremove /dev/vg1/lv1

3.删除vg卷组

vgremove vg1

4.将pv物理设备删除

pvremov /dev/sdx

 

实验一、创建逻辑卷

准备2个磁盘sdc,sdd,大小20G

1.创建物理卷

[root@centos6 ~]#pvcreate /dev/sd{c,d}

Physical volume “/dev/sdc” successfully created

Physical volume “/dev/sdd” successfully created

2.创建vg卷组

[root@centos6 ~]#vgcreate -s 8M vg1 /dev/sd{c,d}

Volume group “vg1” successfully created

3.创建lv1和lv2

[root@centos6 ~]#lvcreate -n lv1 -L 10G vg1

Logical volume “lv1” created.

[root@centos6 ~]#lvcreate -n lv2 -l 100%FREE vg1

Logical volume “lv2” created.

[root@centos6 ~]#lvs

LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

lv1  vg1  -wi-a—– 10.00g

lv2  vg1  -wi-a—– 29.98g

4.创建文件系统

[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv1

[root@centos6 ~]#mkfs.ext4 /dev/vg1/lv2

5.自动挂载

[root@centos6 ~]#mkdir /data/lv1

[root@centos6 ~]#vim /etc/fstab

[root@centos6 ~]#mount -a

 

 

在试验一基础上扩容,增加一块新硬盘sde

  1. [root@centos6 ~]#pvcreate /dev/sde

Physical volume “/dev/sde” successfully created

2.扩展vg卷组

[root@centos6 ~]#vgextend vg1 /dev/sde

Volume group “vg1” successfully extended

[root@centos6 ~]#vgs

VG   #PV #LV #SN Attr   VSize  VFree

vg1    3   2   0 wz–n- 59.98g 19.99g

3.扩展lv1

[root@centos6 ~]#lvextend -l +100%FREE  /dev/vg1/lv1

Size of logical volume vg1/lv1 changed from 10.00 GiB (1280 extents) to 19.99 GiB (2559 extents).

Logical volume lv1 successfully resized.

4.新假如vg,重新指定文件系统

resize2fs /dev/vg1/lv1

也可以在步骤3时指定,加上-r选项,即:

lvextend -r -l +100%FREE  /dev/vg1/lv1

 

 

 

缩减逻辑卷,在xfs文件系统中不支持缩减功能

1.将逻辑卷里面的数据备份

用tar 或者cp

2.卸载挂载

umount MOUNTPOINT

3.检查文件系统

fsck -f /dev/vg1/lv1

4.缩减文件系统

resize2fs /dev/vg1/lv1 20G

5.缩减lv大小

lvreduce -L 20G /dev/vg1/lv1

6.缩减完成后重新挂载

mount -a

 

删除vg中pv,删减其中一块硬盘,但是硬盘中还有数据

1.pvdisplay 查看pv情况

2.把需要移除的硬盘里的数据转移到别的硬盘

pvmove /dev/sde

3.把pv从vg卷组删除

vgreduce vg1 /dev/sde

4.把pv变成普通硬盘

pvremove /dev/sde

 

 

逻辑卷跨主机迁移

1.把能空出来的硬盘都清理出来,

pvdisplay

pvmove

vgreduce vg0 /dev/sdx

pvremove /dev/sdx

2.把卷组都改名,以防和新设备逻辑卷名产生冲突

vgrename vg0 centos6vg0

lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centoslv0

3.取消挂载,然后禁用

[root@centos6 ~]#umount /data/lv0

[root@centos6 ~]#vgchange -an centos6vg0

0 logical volume(s) in volume group “centos6vg0” now active

lvdisplay查看此时状态,显示LV Status              NOT available

4.让vg卷组处于导出状态,

[root@centos6 ~]#vgexport centos6vg0

Volume group “centos6vg0” successfully exported

5.然后把带有数据的逻辑卷硬盘拆出,添加到新主机

6.在新主机上,把vg卷从导出状态变成导入状态

vgimport centos6vg0

7.启用vg卷

vgchange -ay centos6vg0

 

 

 

 

逻辑卷管理器快照

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择

快照只有在它们和原来的逻辑卷不同时才会消耗空间

在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。

快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照

 

使用LVM快照

为现有逻辑卷创建快照

lvcreate-l 64 -s -n data-snapshot -p r /dev/vg0/data

挂载快照

mkdir-p /mnt/snap

mount -o ro/dev/vg0/data-snapshot /mnt/snap

恢复快照

umount/dev/vg0/data-snapshot

umount/dev/vg0/data

lvconvert–merge /dev/vg0/data-snapshot

删除快照

umount/mnt/databackup

lvremove/dev/vg0/databackup

 

 

创建快照

1.复制3个文件到逻辑卷挂载的目录下

[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f1

[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f2

[root@centos7 ~]#cp /etc/passwd /data/centos6lv0/f3

2.创建快照

[root@centos7 ~]#lvcreate -n centos6lv0-snapshot -s -L 2G -p r /dev/centos6vg0/centoslv0

Using default stripesize 64.00 KiB.

Logical volume “centos6lv0-snapshot” created.

-p r 只读属性,防止误删除快照中的内容

-n 名字

 

在/dev/centos6vg0/centoslv0这个逻辑卷下创建一个centos6lv0-snapshot的快照

3.挂载创建的快照逻辑卷

[root@centos7 ~]#mkdir /data/snapshot

[root@centos7 ~]#mount  /dev/centos6vg0/centos6lv0-snapshot /data/snapshot

[root@centos7 ~]#cd /data/snapshot

[root@centos7 snapshot]#ll

total 28

-rw-r–r– 1 root root  2901 Apr 27 04:17 f1

-rw-r–r– 1 root root  2901 Apr 27 04:17 f2

-rw-r–r– 1 root root  2901 Apr 27 04:17 f3

drwx—— 2 root root 16384 Apr 26 14:47 lost+found

 

此时看到的数据并不是真实的数据,真实的数据不在这,还在逻辑卷

4.修改逻辑卷文件中的内容,然后对比

 

[root@centos7 snapshot]#ll /data/centos6lv0/ /data/snapshot/

/data/centos6lv0/:

total 28

-rw-r–r– 1 root root   176 Apr 27 04:34 f1

-rw-r–r– 1 root root  2901 Apr 27 04:17 f2

-rw-r–r– 1 root root  2901 Apr 27 04:17 f3

drwx—— 2 root root 16384 Apr 26 14:47 lost+found

 

/data/snapshot/:

total 28

-rw-r–r– 1 root root  2901 Apr 27 04:17 f1

-rw-r–r– 1 root root  2901 Apr 27 04:17 f2

-rw-r–r– 1 root root  2901 Apr 27 04:17 f3

drwx—— 2 root root 16384 Apr 26 14:47 lost+found

 

这时体现除快照的备份效果

 

 

 

 

 

在xfs文件系统上创建快照

已经创建了一个逻辑卷lv0大小为20G并且剩余20Gvg卷组

1.在剩余的vg卷组创建快照

[root@centos7 ~]#lvcreate -n lv0-snapshot -L 5G -p r -s /dev/vg0/lv0

-s 表示这不是一般逻辑卷,是快照逻辑卷

-p r 指定只读属性

2.查看他们的uuid,结果相同,在xfs文件系统中,相同uuid不能挂载不同目录

[root@centos7 ~]#blkid

/dev/mapper/vg0-lv0: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”

/dev/sdc1: UUID=”nvuDcD-TEAe-xbGQ-az3V-emG0-aasY-bCImkO” TYPE=”LVM2_member”

/dev/mapper/vg0-lv0–snapshot: UUID=”663f8ea0-fbb1-470e-9d0f-878510ff30a9″ TYPE=”xfs”

3.创建目录给快照逻辑卷挂载,挂载时指定nouuid

[root@centos7 ~]#mkdir /data/snap

[root@centos7 ~]#mount -o nouuid /dev/vg0/lv0-snapshot /data/snap

mount: /dev/mapper/vg0-lv0–snapshot is write-protected, mounting read-only

mount: cannot mount /dev/mapper/vg0-lv0–snapshot read-only

4.在目录中修改文件,或者删除文件,然后恢复快照

[root@centos7 ~]#umount /data/lv0/

[root@centos7 ~]#umount /data/snap

umount: /data/snap: not mounted

[root@centos7 ~]#lvconvert –merge /dev/vg0/lv0-snapshot

Merging of volume vg0/lv0-snapshot started.

lv0: Merged: 100.00%

5.重新挂载逻辑卷,看有没有恢复到原来状态

mount /dev/vg0/lv0 /data/lv0

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97259

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班