Powered by Typecho)))
Optimized by EAimTY
需求:为内部网络的 PC 提供共享存储、备份,没有太强的读写压力,资金投入也有限,但需要够安全,而且为逐渐增长的数据量考虑,需要扩容方便。
打算通过 mdadm 和 LVM 来实现。用这样的硬件:内部空间够大,电源够强劲,扇热要好,支持多个 SATA 接口的塔式机。
为了不浪费空间,用一块小硬盘装系统,比如一块 20G 的 IDE 硬盘。3块别的老 PC 上拆下来 80G SATA 硬盘。
在 VMware 上模拟了一下。因为需要模拟 SATA 硬盘,建立虚拟机时用了 SCSI 硬盘。要选择 RedHat Enterprise 版才能支持 SCSI 硬盘。
使用 VMware-gsx-server-3.2.1 发现在较大的(试验了 160G/250G)虚拟硬盘上的 RAID5 recovery 到尾声时会死机,重启后又要从头再来,但依然会死机,周而复始。换成 VMware-server-1.0.3 后就没有问题了。
在 hda 安装了 CentOS 5.1 ,最小化安装。安装过程没有对 sda, sdb, sdc 进行分区。
用 mdadm 创建 RAID
# mdadm -C /dev/md0 -l5 -n3 -c128 /dev/sd[a,b,c]
参数所代表的意思可以用 man mdadm 查看。
基本命令
# mdadm -A /dev/md0 #启动阵列
# mdadm -S /dev/md0 #停止阵列(停止前必须先 umount)
# mdadm -D /dev/md0 #显示阵列详细信息
# watch "cat /proc/mdstat"
可以看到 RAID 的 recovery 过程。
此时 RAID 已经可以使用了。
LVM 初始化
# vgscan
创建 PV
# pvcreate /dev/md0
创建 VG
# vgcreate vga /dev/md0
创建 LV
# lvcreate -l 40959 -n lv1 vga
在 LV 上建立文件系统
# mkfs -t ext3 -L /data /dev/vga/lv1
挂载
# mkdir /data
# mount -t ext3 -o defaults /dev/vga/lv1 /data
测试
# cd /data
# dd if=/dev/zero of=test bs=1024k count=1k
# dd if=test of=/dev/null
recovery 结束后,生成 /etc/mdadm.conf 文件,在系统重启后自动启用 RAID
# mdadm -Ds > /etc/mdadm.conf
编辑 /etc/mdadm.conf 文件,在顶部加入如下一行:
DEVICE /dev/sd*
磁盘分区设置开始时 Alt+F2 切换到 shell 进行如下操作:
fdisk /dev/sda
分两个主分区, sda1 100M ,剩下的全给 sda2 ,并且把分区类型都设为 fd
/dev/sdb 也做同样操作。
创建 RAID1
mdadm -C /dev/md0 -l1 -n2 -c128 /dev/sd[a,b]1
mdadm -C /dev/md1 -l1 -n2 -c128 /dev/sd[a,b]2
创建 VG
lvm pvcreate /dev/md1
lvm vgcreate vg0 /dev/md1
然后 Alt+F1 切换回安装界面继续使用 Disk Druid 进行分区操作:
编辑 /dev/md0 ,格式化为 ext3 ,挂载点设为 /boot
在 vg0 上添加逻辑卷挂载根 swap 及其它目录。
安装完成进入系统后执行如下操作:
grub
> device (hd0) /dev/sda
> root (hd0,0)
> setup (hd0)
> device (hd1) /dev/sdb
> root (hd1,0)
> setup (hd1)
如果不能引导,重新用光盘引导系统, linux rescue 进入修复模式执行以上操作。
更换从盘 sdb :
进入系统后执行 fdisk /dev/sdb ,创建和安装系统时一样的分区结构。
然后重新加入 RAID
mdadm /dev/md0 --add /dev/sdb1
mdadm /dev/md1 --add /dev/sdb2
再把 grub 写入 MBR
grub
> device (hd1) /dev/sdb
> root (hd1,0)
> setup (hd1)
更换主盘 sda 需要互换 sda 和 sdb 的数据线接口再进行上述操作。