Linux下做软RAID

0、切换到root用户

1、查看有多少块硬盘可用
$ fdisk -l
嗯,一般而言,留下系统盘不动,其它的盘如果大小相同的话,统统合起来做一个raid。

2、决定做什么类型的raid。
raid-0、raid-1、raid-5?
如果有三块一样大小的盘(或者更多),那么极力推荐raid-5。
否则请根据实际情况选择raid-0或者raid-1

3、卸载已挂载的数据盘
首先查看下,要做raid的几块盘是不是已经被挂载过了
$ mount
如果有,那么挨个删除数据、然后用umount卸载。
然后,还有,打开/etc/fstab,注释掉那些刚卸载的分区。免得万一操作中失误,导致机器重起,然后它又起不来……

4、使用fdisk更改硬盘分区类型为Linux raid auto
以/dev/sdb为例:
$ fdisk /dev/hde

The number of cylinders for this disk is set to 8924.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

嗯,如果不了解linux下的fdisk的用法,可以先输入m看看帮助。
(注意:freebsd和windows、dos下也有fdisk,但是只是名字相同,界面和用法都相差很大。windows xp及以后版本摒弃了fdisk)
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

我们要做的是更改硬盘分区类型,所以输入t
Command (m for help): t
Selected partition 1
Hex code (type L to list codes):
因为我的这个硬盘只有一个partition,所以它就自动选择partition 1了。
下面,就是应该输入分区类型的16进制代码了。可是,我怎么知道该输入什么呢?
没关系,先输入大写的L,看看有哪些类型
0 Empty 1e Hidden W95 FAT1 75 PC/IX be Solaris boot
1 FAT12 24 NEC DOS 80 Old Minix bf Solaris
2 XENIX root 39 Plan 9 81 Minix / old Lin c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 82 Linux swap c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 83 Linux c6 DRDOS/sec (FAT-
5 Extended 41 PPC PReP Boot 84 OS/2 hidden C: c7 Syrinx
6 FAT16 42 SFS 85 Linux extended da Non-FS data
7 HPFS/NTFS 4d QNX4.x 86 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 87 NTFS volume set de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3
找到了没?应该输入fd
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

你确信你没有输入错误吗?输入p检查一下
Command (m for help): p

Disk /dev/sdb: 73.4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 8924 71681998+ fd Linux raid autodetect

好吧,没有错,那么,下一步就是把我们的更改写入硬盘
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

哈哈。wonderful!

下面……按照上面的步骤,把各个硬盘挨个干一遍吧。

5、最核心的一步:做RAID
我挑了4块一样大小的硬盘做RAID-5。
$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=71681996K mtime=Mon Jul 2 15:18:11 2007
mdadm: /dev/sdc1 appears to contain an ext2fs file system
size=71681996K mtime=Mon Jul 2 15:18:11 2007
mdadm: /dev/sdd1 appears to contain an ext2fs file system
size=71681996K mtime=Mon Jul 2 15:18:11 2007
mdadm: /dev/sde1 appears to contain an ext2fs file system
size=71681996K mtime=Mon Jul 2 15:18:11 2007
mdadm: size set to 71681920K
Continue creating array?
它会让我确认一下,输入y即可。
嗯,几个参数,简单的介绍下:
--level=5 : 代表作raid-5,如果你要做raid-1,那么就是--level=1
--raid-devices=4: 有多少块硬盘用来做raid? 嗯,我有4块。
后面几个就是用来做raid的分区啦。注意,后面的数字1哦。
如果不出什么意外,它会告诉你
mdadm: array /dev/md0 started.

6、查看raid状态。
$ cat /proc/mdstat

Personalities : [raid5]
md0 : active raid5 sde1[4] sdd1[2] sdc1[1] sdb1[0]
215045760 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]
[>....................] recovery = 0.4% (299776/71681920) finish=35.7min speed=33308K/sec
unused devices: <none>
那个……需要等等。
一直到这样
$ cat /proc/mdstat

Personalities : [raid5]
md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0]
215045760 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>

7、格盘
这个...就不多说了吧
$ mkfs.ext3 /dev/md0
然后就刷拉刷拉看它格去了。

8、创建mdadm.conf
首先,用文本编辑器打开/etc/mdadm.conf(没有就创建一个),写入这样一行
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
就是,在DEVICE后面把所有的raid盘都列出来。
然后运行
$ mdadm --detail --scan
可以看到一些有趣的信息吧?
ARRAY /dev/md0 level=raid5 num-devices=4 UUID=af563620:2568f63a:face1db6:9d9f34f1
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
这些是需要添加到/etc/mdadm.conf中的。
$ mdadm --detail --scan >> mdadm.conf
嗯,最好是再检查一番
$ more /etc/mdadm.conf

9、修改/etc/fstab并挂载
嗯,挂哪里呢?我一般是挂载在/data1下面
把这样的东西添加到/etc/fstab中
/dev/md0 /data1 ext3 defaults 1 2
然后挂载
$ mount /data1

ok,大功告成!

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥