Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

制作软RAID

[复制链接]
three9 发表于 2005-1-2 10:11:37 | 显示全部楼层 |阅读模式
今天新装一个FREEBSD服务器,机器上面没有阵列卡,两个72G SCSI硬盘做RAID1,找遍所有的论坛,新闻组也没有一篇好一点关于VINUM的文档,特别是中文的资料,简直是少之又少,趁着硬盘正在同步,将自己的一点安装心得写出来

参考文档:http://devel.reinikainen.net/docs/how-to/Vinum/
一:安装环境
SERVER: HP COMPAQ DL140
SCSI卡:普通SCSI卡
硬盘:HP U320 72G HARD DISK
操作系统:FreeBSD 5.2.1

二:安装过程
1:系统安装
安装系统的过程和普通安装一样,需要注意的是安装的过程中不需要将第二个硬盘进行分区工作,后面直接导入DISKLABEL的方法会比较简单。尤其需要注意的是,在对主硬盘进行分区的时候建议最好先建立SWAP,然后建立根文件系统,最后才建立其他(我的安装中为了图方便,只建立了ROOT和SWAP),因为这样的话SWAP的地址偏移量就从0开始,方便后面对OFFSET的计算。
系统安装完毕后,启动选择画面选择4进入单用户模式,输入命令:
  1. mount -u /
复制代码

VINUM必须在启动时刻在内核中有效,所以编辑/boot/loader.conf文件,加入下面的语句
  1. vinum_load="YES"
  2. vinum.autostart="YES"
复制代码

第二句话的含义是VINUM在启动时候自动从内核中收集需要的磁盘信息。
2:设置第一个硬盘
现在我们需要在第一个硬盘上增加一个新的文件系统,文件系统的类型为VINUM,输入命令:
  1. bsdlabel  /dev/da0s1
复制代码

你将看到下面的信息:
  1. 8 partitions:
  2. #             size               offset         fstype       [fsize  bsize  bps/cpg]
  3.   a:    140158360     2097152      4.2BSD       2048   16384 28552
  4.   b:       2097152                  0         swap      
  5.   c:     142255512                0        unused      0            0         0
复制代码

现在我们需要增加一个新的文件系统,需要从硬盘的16扇区开始覆盖整个硬盘,也就是说将把整个硬盘当作镜像MIRROR RAID1中的一个盘,首先将原始的信息保存为一个文件,输入命令:
  1. bsdlabel /dev/da0s1 > /home/root/da0s1
复制代码

然后将原始信息备份:
  1. cp /home/root/da0s1 /home/root/da0s1.bak
复制代码

然后编辑文件/home/root/da0s1,形成如下的:
  1. 8 partitions:
  2. #             size               offset         fstype       [fsize  bsize  bps/cpg]
  3.   a:    140158360     2097152      4.2BSD       2048   16384 28552
  4.   b:       2096871                  281       swap      
  5.   c:     142255512                0        unused      0            0         0
  6.   e:     142255496              16      vinum
复制代码

和上面相比较,总共有三个地方发生了变化,第一是SWAP的offset,第二是swap的大小,第三是增加了一个新的文件系统,类型为vinum。
先说第一处变化是将原来扇区为0的SWAP变为了开始扇区281,第二是为了保持根文件系统的不变化,所以将SWAP的大小减少281个扇区(这个很重要,不然就会发生两个分区重叠的现象),第三个增加了新的开始扇区为16,大小为整个硬盘大小减去16个扇区的大小,实际上这个大小就是UNUSED类型的大小减去16。
然后将这个配置文件导入现在的系统,输入命令:
  1. bsdlabel -R /dev/da0s1 /home/root/da0s1
复制代码

如果没有提示,则说明成功的编辑了disklabel,如果提示分区重叠等提示,则说明OFFSET和SIZE计算错误,重新输入
  1. bsdlabel /dev/da0s1
复制代码

则可以看见新的变化
注意:原来的英文文档中是使用bsdlabel -e /dev/da0s1这样的方式来进行编辑的,强烈建议不要这样,因为这样的方式作出的更改,如果出现错误,例如分区重叠等错误没有任何的提示,同时文件系统也不会有任何的变化3:开始VINUM
到现在为止我们已经成功的修改了文件系统信息,下面将配置VINUM的第一个硬盘,输入命令
  1. vinum
复制代码

将进入VINUM的命令行模式,退出输入CTRL+D
编辑文件/etc/vinum.conf(这个文件名称随便取,没有关系的),内容如下:
  1. drive m1 device /dev/da0s1e
  2.    volume root
  3.       plex org concat
  4.         sd len 140158360s driveoffset 2097136s drive m1
  5.    volume swap
  6.       plex org concat
  7.          sd len 2096871s driveoffset 265s drive m1
复制代码

在这个文件中,其中第一行是声明有一个盘,名称为m1,在设备/dev/da0s1e上,其中da0s1e就是我们刚才编辑的新增加的partition e
,这里最值得注意的是driveoffset的值,因为len即size是不变的,但是driveoffset一定是原来的offset值减去16s,S即sector,因为这个偏移值是在/dev/da0s1e基础上的偏移扇区值,da0s1e已经是从第16扇区开始的,所以driveoffset一定是原来的offset值减去16s。
输入命令VINUM进入VINUM命令行模式,输入LIST命令可以看到现在还没有建立任何DRIVE,PLEX以及SUBDISK。
输入命令:
  1. create -f /etc/vinum.conf
复制代码



可以看到成功的建立了DRIVE,PLEX以及SUBDISK和VOLUME,退出VINUM命令行模式,现在已经成功的建立了两个设备,分别为/dev/vinum/root以及/dev/vinum/swap,现在来测试root的大小以及开始位置是否正确,输入命令:
  1. fsck -n -t ufs /dev/vinum/root
复制代码



如果成功的话可以看到进行5个步骤的磁盘检查,如果错误的话将收到下面的提示信息:
  1. # fsck -n -t ufs /dev/vinum/root
  2. ** /dev/vinum/root (NO WRITE)
  3. Cannot find file system superblock
  4. /dev/vinum/root: CANNOT FIGURE OUT FILE SYSTEM PARTITION
复制代码


这样的错误表示在vinum.conf文件中VOLUME的LEN或者DRIVEOFFSET计算错误,在 vinum命令行下输入resetconfig命令可以清除原来的配置,重新使用create命令导入修改后的配置文件,再次进行fsck检查,重复上面的步骤直到root文件系统正确为止。
4:修改fstab文件
修改/etc/fstab文件,将原来的/挂接点由/dev/da0s1a改为/dev/vinum/root,同时将原来的交换分区由/dev/da0s1b改为/dev/vinum/swap,现在可以重新启动系统来查看只有一个主盘的RAID1系统:-)
5:设置第二个硬盘
第二个硬盘的设置大同小异,完全可以使用命令
  1. bsdlabel -R /dev/da1s1 /home/root/da0s1
复制代码

来对第二个硬盘进行分区。
在原来的/etc/vinum.conf文件后面增加一段,内容如下:
  1. drive m2 device /dev/da1s1e
  2.    volume root
  3.       plex org concat
  4.         sd len 140158360s driveoffset 2097136s drive m2
  5.    volume swap
  6.       plex org concat
  7.          sd len 2096871s driveoffset 265s drive m2
复制代码


最后进入VINUM的命令行模式,首先resetconfig清除原来的配置,然后使用
create -f /etc/vinum.conf命令来导入配置,成功之后我们可以使用list命令查看现在已经有了2 drivers,2 volumes,4 plexes,4 subdisks
其中subdisk有两个的状态为empy,plex有两个的状态为faulty,这是正常的,因为现在只有m1上面有数据,m2上面没有数据,两个plex有差异,所以其状态为faulty。输入命令:
  1. start root.p1.s0
复制代码


可以将root.p0.s0的数据copy到root.p1.s0上面,至此RAID1系统完毕

写得好累,写这个的主要目的是将我安装过程中容易出错的一些地方罗列出来,方便大家以后配置VINUM少走弯路,要详细了解VINUM的原理才能举一反三的配置RAID 0+1 RAID 5等等,这里建议一定要将man vinum以及vinum官方网站的文档全部啃一遍...

[ Last edited by three9 on 2005-1-2 at 10:21 ]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 02:47 , Processed in 0.032425 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表