在
Redhat Linux AS 4
下实现软件
RAID
一
,
系统配置信息
:
●
操作系统为
RedHat Linux AS 4
;
●
内核版本为
2.6.9
-5.EL
;
●
支持
RAID0
、
RAID1
、
RAID4
、
RAID5
、
RAID6
;
●
五块
36GB SCSI
接口的磁盘,其中
RedHat AS 4
安装在第一块磁盘,其它四块组成
RAID 5
用来存放数据(
RAID 5
级将基带条和
"
奇偶校验
"
组合在了一起,这种情况下,数据分布于在线组的硬盘中。奇偶校验数据使
RAID
控制器可以了解数据在硬盘上的存储位置。假定某一硬盘发生故障,控制器就可以使用奇偶校验信息重新创建丢失的数据。
RAID5
级允许同时进行数据读写,这为要求高性能的数据密集型应用提供了支持。可以通过调整基带条的大小来优化性能,英特尔集成式
RAID
软件支持这一特性。
RAID5
级以合理的价位提供了最佳的性能和数据安全性,因此目前它很受欢迎
)。
在
RedHat AS 4
下实现软件
RAID
是通过
mdadm
工具实现的,其版本为
1.6.0
,它是一个单一的程序,创建、管理
RAID
都非常方便,而且也很稳定。而在早期
Linux
下使用的
raidtools
,由于维护起来很困难,而且其性能有限,在
RedHat AS 4
下已经不支持了。
1
.创建分区
五块
SCSI
磁盘分别对应
/dev/sda
、
/dev/sdb
、
/dev/sdc
、
/dev/sdd
、
/dev/sde
。其中第一块磁盘
/dev/sda
分两个区,用于安装
RedHat AS 4
和做交换分区,其他四块磁盘每块只分一个主分区,分别为
/dev/sdb1
、
/dev/sdc1
、
/dev/sdd1
、
/dev/sde1
,并且将分区类型指定为
“fd”
,这将使
Linux
内核能将它们识别为
RAID
分区,且在每次引导时自动被检测并启动。创建分区使用
fdisk
命令。
# fdisk /dev/sdb
进入
fdisk
命令行后,使用命令
n
创建分区,命令
t
改变分区类型,命令
w
保存分区表并退出,命令
m
为帮助。
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
(添加分区)
Command action
e extended
p primary partition (1-4)
p
(创建一个主分区)
Partition number (1-4): 1
First cylinder (1-130, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130
Command (m for help): p
(查看分区信息)
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Command (m for help): t
(更改
ID
号)
Selected partition 1
Hex code (type L to list codes): fd
(
将分区类型指定为“fd”)
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ fd Linux raid autodetect
Command (m for help): w
(保存推出)
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# mkfs -t ext3 /dev/sdb1
mke2fs 1.35 (
28-Feb-2004
)
max_blocks 267313152, rsv_groups = 8158, rsv_gdb = 63
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
130560 inodes, 261048 blocks
13052 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
inode.i_blocks = 2528, i_size = 4243456
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
备注:其它的分区类似于
sdb
2
.创建
RAID 5
这里使用了
/dev/sdb1
、
/dev/sdc1
、
/dev/sdd1
、
/dev/sde1
四个设备创建
RAID 5
,其中
/dev/sde1
作为备份设备,其他为活动设备。备份设备主要起备用作用,一旦某一设备损坏可以立即用备份设备替换,当然也可以不使用备份设备。命令格式如下
:
# mdadm -Cv /dev/md0 -l5 -n3 -x1 -c128 /dev/sd[b,c,d,e]1
命令中各参数分别表示如下作用:
“-C”
指创建一个新的阵列;
“/dev/md
0”
表示阵列设备名称;
“-l5”
表示设置阵列模式,可以选择
0
、
1
、
4
、
5
、
6
,它们分别对应于
RAID0
、
RAID1
、
RAID4
、
RAID5
、
RAID6
,这里设为
RAID5
模式;
“-n3”
指设置阵列中活动设备的数目,该数目加上备用设备的数目应等于阵列中的总设备数
; “-x1”
设置阵列中备份设备的数目,当前阵列中含有
1
个备份设备;
“-c128”
指设置块的尺寸为
128KB
,缺省为
64KB
;
“/dev/sd[b, c,d,e]
1”
指当前阵列中包含的所有设备标识符,也可以分开来写,中间用空格分开,其中最后一个为备份设备。
3
.查看阵列状态
当创建一个新阵列或者阵列重构时,设备需要进行同步操作,这一过程需要一定时间,可以通过查看
/proc/mdstat
文件,来显示阵列的当前状态以及同步进度、所需时间等。
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[3] sde1[4] sdc1[1] sdb1[0]
75469842 blocks level 5, 128k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 4.3% (1622601/37734912) finish=1.0min speed=15146K/sec
unused devices:
|
当新建或重构完成后,再次查看
/proc/mdstat
文件
:
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[0]
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:
|
通过以上内容,可以很清楚地看出当前阵列的状态,各部分所代表的意思如下:
“[3/3]”
中的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,如果有一个设备损坏,则第二位数将减
1
;
“[UUU]”
标记当前阵列可以正常使用的设备情况,现假设
/dev/sdb1
出现故障,则该标记将变成
[_UU]
,这时的阵列以降级模式运行,即该阵列仍然可用,但是不再具有任何冗余;
“sdd1[2]”
指阵列所包含的设备数为
n
,若方括号内的数值小于
n
,则表示该设备为活动设备,若数值大于等于
n
,则该设备为备份设备,当一个设备出现故障的时候,相应设备的方括号后将被标以
(F)
。
4
.生成配置文件
mdadm
的缺省配置文件为
/etc/mdadm.conf
,它主要是为了方便阵列的日常管理而设置的,对于阵列而言不是必须的,但是为了减少日后管理中不必要的麻烦,还是应该坚
持把这一步做完。
在
mdadm.conf
文件中要包含两种类型的行:一种是以
DEVICE
开头的行,它指明在阵列中的设备列表;另一种是以
ARRAY
开头的行,它详细地说明了阵列的名称、模式、阵列中活动设备的数目以及设备的
UUID
号。格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=
8f
128343:
715a
42df: baece
2a
8: a5b878e0
|
以上的这些信息可以通过扫描系统的阵列来获取,命令为:
# mdadm -Ds
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=
8f
128343:
715a
42df: baece
2a
8: a5b878e0
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
|
使用
vi
命令,按照规定的格式编辑修改
/etc/mdadm.conf
文件
# vi /etc/mdadm.conf
5
.创建文件系统并挂接
(mount)
使用
RAID5
已经启动并处于运行状态,现在要做的就是在其上创建一个文件系统,这里使用
mkfs
命令,文件系统类型为
ext3
。命令如下:
# mkfs -t ext3 /dev/md0
当新的文件系统生成之后,就可以将
/dev/md0
挂接到指定的目录了。命令如下:
# mount -t ext3 /dev/md0 /mnt/raid
为了让系统在启动时自动将
/dev/md0
挂接到
/mnt/raid
,还需要修改
/etc/fstab
文件,添加如下内容:
/dev/md0 /mnt/raid ext3 defaults 0 0
故障模拟
上面的实例,让我们对
Redhat Linux AS 4
的软件
RAID
功能有了一定的认识,并且通过详细的步骤说明了如何创建
RAID5
。有了
RAID
做保障,电脑里的数据看起来似乎已经很安全了,然而现有的情况还是不能让我们高枕无忧,想一想,万一磁盘出现故障怎么办?下面我们模拟一个更换
RAID5
故障磁盘的完整过程,希望以此丰富大家处理
RAID5
故障的经验,提高管理和维护水平。
我们仍然沿用上面的
RAID5
配置,首先往阵列中拷贝一些数据,接下来开始模拟
/dev/sdb1
设备故障。不过,对于无备份设备的
RAID5
的模拟过程也要经过如下三步,只是阵列重构和数据恢复是发生在新设备添加到阵列中之后,而不是设备损坏时。
1
.将
/dev/sdb1
标记为已损坏的设备
# mdadm /dev/md0 -f /dev/sdb1
查看当前阵列状态
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[4](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/2] [_UU]
[=>...................] recovery = 8.9% (3358407/37734912) finish=1.6min speed=9382K/sec
unused devices:
因为有备份设备,所以当阵列中出现设备损坏时,阵列能够在短时间内实现重构和数据的恢复。从当前的状态可以看出,阵列正在重构,且运行在降级模式,
sdb1[4]
的后面已经标上了
(F)
,活动设备数也降为
2
个。
经过几分钟后,再次查看当前阵列状态。
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[0] sdc1[1] sdb1[3](F)
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:
|
此时阵列重构已经完成,数据恢复完毕,原有的备份设备
sde1
成为了活动设备。
2
.移除损坏的设备
# mdadm /dev/md0 -r /dev/sdb1
查看当前阵列的状态:
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[0] sdc1[1]
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:
损坏的
sdb1
已经从阵列中移掉。
3
.将新设备添加到阵列中
因为是模拟操作,可以通过下面的命令再次将
/dev/sdb1
添加到阵列中。如果是实际操作则要注意两点:一是在添加之前要对新磁盘进行正确的分区;二是添加时要用所添加设备的设备名替换
/dev/sdb1
。
# mdadm /dev/md0 -a /dev/sdb1
查看当前阵列的状态:
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdb1[3] sdd1[2] sde1[0] sdc1[1]
75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
unused devices:
|
|
这时
sdb1
作为备份设备再次出现在阵列中
常用阵列维护命令
1
.启动阵列
# mdadm -As /dev/md0
该命令指启动
/dev/md0
阵列,其中
“-A”
指装载一个已存在的阵列;
“-s”
指查找
mdadm.conf
文件中的配置信息,并以此为依据启动阵列。
#mdadm -As
该命令指启动
mdadm.conf
文件中的所有阵列。
#mdadm -A /dev/md0 /dev/sd[b,c,d,e]1
如果没有创建
mdadm.conf
文件则可以采用上面这种启动方式。
2
.停止阵列
# mdadm -S /dev/md0
3
.显示指定阵列的详细信息
# mdadm -D /dev/md0
制定备份策略,对网络中重要的数据定时有效的备份
备份是一项重要的工作,但是很多人没有去做。一旦由于使用不当造成数据丢失,备份就成了真正的救命者。本内容将结合tar与NFS,如何来有效的备份数据!
备份工具tar是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它。 Linux中以.tar结尾的文件都是用tar创建的。它的使用超出了单纯的备份,可用来把许多不同文件放到一起组成一个易于分开的文件。tar是从Tape ARchiver备份工具起步的。包含在Linux中的GNU tar工具简便易用,包含了一个用来压缩的选项,且支持不断增加的备份。tar是一个命令行的工具,没有图形界面。
络文件系统(
NFS
,
Network File System
)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作!
第一步、配置
NFS
修改
/etc/exports,
增加共享目录
/home/backup * ( sync , rw)
启动服务器
/home/backup * ( sync , rw)
启动服务器
Service portmap start
Service nfs start
重新输出共享目录
exportfs –rv
挂载
NFS
服务器中的共享目录
mount -t nfs 192.168.1.17 : /home/backup /mnt/backup_share
将目录挂载进来后,只要进入 /mnt/backup_share 目录,就等于到了 IP 地址: 192.168.1.7 那部 NFS 计算机的 /home/backup 目录中。
mount -t nfs 192.168.1.17 : /home/backup /mnt/backup_share
将目录挂载进来后,只要进入 /mnt/backup_share 目录,就等于到了 IP 地址: 192.168.1.7 那部 NFS 计算机的 /home/backup 目录中。
第二步、配置备份脚本
配置
tar
备份,假设需要备份的数据是每天的
MYSQL
数据库,需要每周对数据保存一次,同时要求保存为不同的文件名称,我们可以通过日期来分辨文件的新旧,命令如下
vi /etc/backup.sh
tar –zpcvf /mnt/backup_share / mysql.`date +
%
Y-%m-%d`.tar.gz /var/lib/mysql
chmod a+x /etc/backup.sh
第三步、配置
crontab,
每周五的三点定时执行
backup.sh
脚本
[root@localhost ~]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0 3 * * 5 root /etc/backup.sh
在
恢复
root
用户口令
学员进行
linux
系统安装时,可能由于忘记
root
用户名口令导致无法正常登陆系统,这时需要通过进入系统的单用户模式(运行级别
1
)来重置
root
用户口令,步骤如下:
1
、以
grub
系统引导管理器,单用户登录方法;
2
、在
grub
启动后,移动键盘到
Linux
的启动项;按
e
键;然后再移动键盘到类似下面的一行,也就是
kernel
的那行:
kernel /boot/vmlinuz-
2.6.9
-5EL ro root=/dev/sda1 rhgb quiet
3
、把光标移动这行后,再按一下
e
键,进入编辑这行;在行尾条一个空格
,然后输入
single
,也就是类似如下的:
kernel /boot/ vmlinuz-
2.6.9
-5EL ro root=/dev/sda1 rhgb quiet single
4
、结束编辑,按回车返回;
5
、接着我们要启动系统,按一下
b
键启动;
6
、当进入单用户模式运行后,使用命令
passwd
命令重新新建密码即可