Linux高级磁盘管理

 

一、RAID

磁盘阵列(Redundant Arrays of Independent DisksRAID),有“价格便宜具有冗余能力的磁盘阵列”之意。原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任一颗硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

1. 优点:

a) 提高读取与存储的速度

b) 增加容错功能。

 

Raid5整体容量计算方法:

整体容量 = (n -1)/n  * n * 单块磁盘容量 = (n -1) * 单块磁盘容量

 

Linux下软RAID操作

 

主设备号在/usr/include/linux/major.h中定义的

 

 

案例:创建一个RAID5,其放置Oracle数据库文件。

1. 硬件准备:至少3块磁盘

a) 准备好4块磁盘,将其分区,分区类型为fd

2. 使用mdadm命令生成Raid设备文件

a) mdadm几种主要模式:

i. Assemble:将以前定义的raid加入到当前的raid

ii. Build创建一个新的raid,没有superblocks

iii. Create创建一个新的raid,带有superblocks

iv. Manage:管理阵列,比如addremove

b) OPTIONS

i. -A, --assemble 加入以前定义的阵列

ii. -B, --build

iii. -C, --create   创建一个新的阵列

iv. -Q, --query:查看一个device

v. -D, --detail:查看设备的详细的信息

# mdadm -C /dev/md5 --level=5 --raid-devices=3 /dev/sd[bcd]1 --spare-devices=1 /dev/sde �Cv

 

3.Raid5进行分区及格式化

 # fdisk /dev/md5

/dev/md5p1  /dev/md5p2

 

# mkfs.ext4 /dev/md5p1

# mkfs.ext4 /dev/md5p2

 

3. 挂载使用

# mount /dev/md5p1 /root/d1

 

4. 写入配置文件,使其永久生效:

# echo DEVICE /dev/sd[bcde]1 > /etc/mdadm.conf

# mdadm --detail --scan >> /etc/mdadm.conf

 

删除备用磁盘:

# mdadm /dev/md5 --remove /dev/sde

 

一块普通的磁盘一般都要分区格式化进行使用,但在Raid中,可以直接将裸盘进行使用。

不分区建立Raid实验:

创建Raid

# mdadm -C /dev/md5 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde --verbose

等价于:

# mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[bcd] -x1 /dev/sde

 

查看Raid状态

# cat /proc/mdstat

# mdadm -D /dev/md5

 

格式化

# mkfs.ext4 /dev/md5

 

挂载使用:

# mount /dev/md5 /mnt

[root@StudyServer mnt]# cp -ax /app/* .

 

生成Raid的配置文件:

# echo DEVICE /dev/sd[bcde] > /etc/mdadm.conf

# mdadm --detail --scan >> /etc/mdadm.conf

 

停止Raid

# umount /mnt

# mdadm --stop /dev/md5

 

重新启动Raid

# mdadm -As /dev/md5

 

模拟故障

# mdadm /dev/md5 --fail /dev/sdc   #搞坏掉一块磁盘:/dev/sdc

 

查看状态

# mdadm -D /dev/md5

…………………………………………

Number   Major   Minor   RaidDevice State

       0       8       16        0      active sync   /dev/sdb

       3       8       64        1      spare rebuilding   /dev/sde

       4       8       48        2      active sync   /dev/sdd

       1       8       32        -      faulty spare   /dev/sdc

# watch cat /proc/mdstat

 

再弄坏一块磁盘

# mdadm /dev/md5 --fail /dev/sde

 

可以查看Raid的运行状态,发现仍然可以正常提供服务。

 

 

从阵列中移除坏掉的磁盘

# mdadm /dev/md5 --remove /dev/sdc

# mdadm /dev/md5 --remove /dev/sde

 

重新添加磁盘到阵列

# mdadm /dev/md5 --add /dev/sdc

# mdadm /dev/md5 --add /dev/sde

 

查看Raid状态

cat /proc/mdstat                                                                    Sun Nov 17 06:48:39 2013

 

Personalities : [raid6] [raid5] [raid4]

md5 : active raid5 sde[5](S) sdc[3] sdb[0] sdd[4]

      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]

      [===========>.........]  recovery = 57.6% (1209736/2095616) finish=0.5min speed=27003K/sec

 

Logical Volume Manager

(Physical Volumn,PV)物理卷 

处于LVM最底层,可以是物理硬盘或分区

(Volume Group,VG)卷组

建立在PV之上,可以含有一个到多个PV,将一组物理卷收集为一个管理单元

LV(Logical Volume)逻辑卷

建立在VG之上,相当于原来分区的概念,不过大小可以动态改变

 

PV管理相关命令

pvdisplay显示PV属性

pvscan 在系统所有硬盘上查找PV

pvcreate创建PV(PV上初始化VGDA)

pvdata显示PV上的VGDA信息

pvchange改变PV属性

 

动态添加一块新的磁盘

# echo "scsi add-single-device 2 0 5 0" > /proc/scsi/scsi

# echo "scsi add-single-device 2 0 6 0" > /proc/scsi/scsi

分区磁盘

# fdisk /dev/sdf   #分区时注意将其分区类型设为8e

建立LVM类型的分区(8e)

 

因为要生成一个PV,不需要将其格式化

 

创建PV

# pvcreate /dev/sdf1

# pvcreate /dev/sdg1

 

显示PV

# pvdisplay /dev/sdf1

 

LVMVG管理相关命令

vgdisplay显示VG卷组属性

vgscan查找系统现有VG卷组

vgcreate创建VG卷组(VG上初始化VGDA)

vgdata显示VG卷组上的VGDA信息

 

创建VG

# vgcreate MyVg /dev/sdf1 /dev/sdg1

 

显示VG

# vgdisplay

 

LV管理相关命令

lvdisplay显示LV卷组属性

lvscran查找系统现有LV卷组

lvcreate创建LV卷组(LV上初始化LVDA)

lvdata显示LV卷组上的LVDA信息

lvchange改变LV卷组属性

 

创建LV

# lvcreate -L 3G -n oracledata_lv MyVg

 

格式化LV

# mkfs.ext4 /dev/MyVg/oracledata_lv

 

挂载使用

# mount /dev/MyVg/oracledata_lv /root/mylv

 

永久挂载

/etc/fstab中添加挂载项

 

为逻辑卷扩容

扩容之前先测容量

# df �Chl

扩容

# lvextend -L +6G /dev/mapper/MyVg-oracledata_lv

查看容量

# lvdisplay /dev/mapper/MyVg-oracledata_lv  #容量已变

# df �Chl   #容量未变

更新文件系统

# resize2fs /dev/mapper/MyVg-oracledata_lv

再查看容量

# df �Chl   #已变

成功扩容

 

 

 

 


你可能感兴趣的:(raid)