raid1是linux服务器最常用的一种硬盘冗余备份的方案,它能在硬盘损坏的情况下保证硬盘数据内的安全。需要至少两块硬盘,最好是完全相同的两块硬盘,所创建的若磁盘中有谁损坏,则备用盘自动替补上去。
一、搭建Linux raid1环境
1. 准备好要制作raid1的硬盘,至少两块,最好是两块同型号同容量的硬盘。
2. 用fdisk工具对硬盘进行分区(用sda做示例)
#fdisk /dev/sda
#m(你可以键入m命令获取帮助信息)
#n(添加新的分区,选择primary分区类型,再选择分区起止位置,如果你要将整张盘划分为一个分区的话,全部选择default)
#t(更改分区类型,你可以输入字母l获取类型列表,这里我们选择fd,即linuxraid
auto类型)
#w(保存并退出)
3. 安装mdadm
可以用apt-get进行安装:
#apt-getinstall mdadm
二、使用mdadm工具创建和管理磁盘阵列
1. 创建md0磁盘阵列,类型为raid1,磁盘数量为2,备用磁盘数量为1:
2. #mdadm --create --auto=yes /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
3. 建立文件系统, 文件系统设置成ext3:
#mkfs -t ext3 /dev/md0
4. 在/dev/md0下创建三个分区:
/dev/md0p1
/dev/md0p2
/dev/md0p3
5. 建立文件系统, 文件系统设置成ext3
#mkfs -t ext3 /dev/md0p1
#mkfs -t ext3 /dev/md0p2
#mkfs -t ext3 /dev/md0p3
6. 挂载磁盘阵列, 将磁盘阵列挂载到下:
#mount /dev/md0p1 /home
#mount /dev/md0p2 /mnt
#mount /dev/md0p3 /root
7. 将磁盘阵列设置为开机自动挂载:
#mdadm -D -s >>/etc/mdadm.conf (先将磁盘阵列信息保存到配置文件,否则系统启动时会将其命名为/dev/md127)
#vi /etc/fstab
编辑fstab文件,加入如下脚本:
/dev/md0p1 /home ext3 defaults 0 0
/dev/md0p2 /mnt ext3 defaults 0 0
/dev/md0p3 /root ext3 defaults 0 0
8. 查看磁盘阵列的状态:
#mdadm --detail /dev/md0
三、磁盘阵列的一些操作
1. 删除磁盘阵列:
#mdadm/dev/md0 --f ail/dev/sda1 --remove /dev/sda1
#mdadm/dev/md0 --f ail/dev/sdb1 --remove /dev/sdb1(标记sda1磁盘为坏盘,并从阵列中移除)
#mdadm--stop /dev/md0
#mdadm--zero-superblock/dev/sda1
#mdadm--zero-superblock/dev/sdb1(清除磁盘中的raid标记)
2. 更换并同步数据
#mdadm /dev/md0 --f ail/dev/sda1 --remove /dev/sda1(标记sda1磁盘为坏盘,并从阵列中移除)
#mdadm /dev/md0 --add/dev/sdc1(这里假设sdc为新硬盘,sdc1为fdisk工具处理后的新硬盘分区,完成后,数据则会自动从sda1中同步到sdc1)
#cat/proc/mdstat(查看md状态,可以是sync、resync等状态)
3. 有一块硬盘坏了, 换上另一块盘
#mdadm--create --auto=yes/dev/md0 --level=1 --force --raid-devices=1 /dev/sda1
#mount/dev/md0/mnt(挂载,不格式化)
1. fstab文件的作用
文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、 mount、umount的等命令都利用该程序。
2. 格式详解:
挂载硬盘的格式为:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec :该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为 /dev/hdaXN,X是IDE 设备通道(a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN。对于NFS情况,格式一般为:,例如: `knuth.aeb.nl:/'。对于procfs,使用`proc'来定义。
fs_file:该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。
fs_type:定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。
fs_options:指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用"defaults"就可以满足需要。其他常见的选项包括:
选项 |
含义 |
ro |
以只读模式加载该文件系统 |
sync |
不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 |
user |
允许普通用户加载该文件系统 |
quota |
强制在该文件系统上进行磁盘定额限制 |
noauto |
不再使用mount -a命令(例如系统启动时)加载该文件系统 |
fs_dump:该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0;
fs_pass:该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0;