创建分区
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Sep 19 22:50 /dev/sda brw-rw----. 1 root disk 8, 1 Sep 19 22:50 /dev/sda1 brw-rw----. 1 root disk 8, 2 Sep 19 22:50 /dev/sda2 brw-rw----. 1 root disk 8, 16 Sep 19 22:54 /dev/sdb brw-rw----. 1 root disk 8, 32 Sep 19 22:52 /dev/sdc
检查我们的设备还没有被配置为raid
# mdadm --examine /dev/sdb /dev/sdc mdadm: No md superblock detected on /dev/sdb. mdadm: No md superblock detected on /dev/sdc.
可以看到,还没有为磁盘配置 raid
接下来开始创建分区
# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklab el Building a new DOS disklabel with disk identifier 0x37a6235e. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1):[Leave blank and hit ENTER for default] Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):[Leave blank and hit ENTER for default] Using default value 652 Command (m for help): p Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes/512 bytes I/O size (minimum/optimal): 512 bytes/512 bytes Disk identifier: 0x37a6235e Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
第二块硬盘
# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklab el Building a new DOS disklabel with disk identifier 0x31c93154. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-783, default 1):[Leave blank and hit ENTER for default] Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-783, default 783):[Leave blank and hit ENTER for default] Using default value 783 Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
通知操作系统我们添加了新的分区,并进行了分区更改。
让系统重新检测分区
# partprobe /dev/sdb # partprobe /dev/sdc
重新检查我们的磁盘的变化
# mdadm --examine /dev/sdb /dev/sdc /dev/sdb: MBR Magic : aa55 Partition[0] : 10474317 sectors at 63 (type fd) /dev/sdc: MBR Magic : aa55 Partition[0] : 12578832 sectors at 63 (type fd)
创建 RAID 分区
使用mdadm命令创建软 raid1
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: largest drive (/dev/sdc1) exceeds size (5233024K) by more than 1% Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
值 | 说明 |
---|---|
--level | 设置RAID级别。当和--create一起使用时,可以使用的选项有:linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container |
--raid-devices | 指定数组中的活动设备的数量。 |
下面的命令将显示RAID上的活动设备
# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc1[1] sdb1[0] 5233024 blocks super 1.2 [2/2] [UU] unused devices: <none>
查看有关md设备的更多详细信息:
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Sep 19 23:02:52 2014 Raid Level : raid1 Array Size : 5233024 (4.99 GiB 5.36 GB) Used Dev Size : 5233024 (4.99 GiB 5.36 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Fri Sep 19 23:07:39 2014 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : test2.example:0 (local to host test2.example) UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd Events : 17 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1
格式化 mdadm 设备
现在要记住的一件事是,现在我们不使用任何一个分区,而是在一个包含两个分区的 raid 文件系统上工作
我们将使用 ext4 文件系统进行格式化,因为我使用的CentOS 6.4
# mkfs.ext4 /dev/md0 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1308256 blocks 65412 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
该文件系统将每 22 次挂载或者每180 天检查一次。
我们可以使用 tune2fs -c 或者 -i 来修改这两个值。
挂载 md 设备
# mkdir /myraid # mount /dev/md0 /myraid/
检查分区:
# df -h /myraid/ Filesystem Size Used Avail Use% Mounted on /dev/md0 5.0G 138M 4.6G 3% /myraid
如果有一个驱动器(硬盘)停止工作了,会发生什么?
要查看结果如何。
首先让我们在raid中创建一些文件,以便我们可以验证数据是否丢失。
我们把一些文件从 /root 复制到 /myraid/目录。用来测试。
# cp -rvf /root/* /myraid/ `/root/anaconda-ks.cfg' -> `/myraid/anaconda-ks.cfg' `/root/Desktop' -> `/myraid/Desktop' `/root/Documents' -> `/myraid/Documents' `/root/Downloads' -> `/myraid/Downloads' `/root/install.log' -> `/myraid/install.log' `/root/install.log.syslog' -> `/myraid/install.log.syslog' `/root/log' -> `/myraid/log' `/root/Music' -> `/myraid/Music' `/root/Pictures' -> `/myraid/Pictures' `/root/Public' -> `/myraid/Public' `/root/Templates' -> `/myraid/Templates' `/root/Videos' -> `/myraid/Videos'
现在我们有了需要保护的文件,即使raid设备出现任何硬盘故障。
让我们手动把其中一个硬盘弄失效
# mdadm --fail /dev/md0 /dev/sdb1 mdadm: set /dev/sdb1 faulty in /dev/md0
检查数据文件:
[root@test2 myraid]# ll total 120 -rw-------. 1 root root 1629 Sep 19 23:18 anaconda-ks.cfg drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Desktop drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Documents drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Downloads -rw-r--r--. 1 root root 49565 Sep 19 23:18 install.log -rw-r--r--. 1 root root 10033 Sep 19 23:18 install.log.syslog drwxr-xr-x. 2 root root 4096 Sep 19 23:18 log drwx------. 2 root root 16384 Sep 19 23:14 lost+found drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Music drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Pictures drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Public drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Templates drwxr-xr-x. 2 root root 4096 Sep 19 23:18 Videos
文件都在,没有问题。
重要提示:需要再次记住,RAID 1至少需要2个硬盘用于镜像,因为如果这时另一块硬盘出现故障,您将丢失所有数据.
检查 mdraid 设备下的活动和可用设备
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Sep 19 23:02:52 2014 Raid Level : raid1 Array Size : 5233024 (4.99 GiB 5.36 GB) Used Dev Size : 5233024 (4.99 GiB 5.36 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Fri Sep 19 23:21:54 2014 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 Spare Devices : 0 Name : test2.example:0 (local to host test2.example) UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd Events : 19 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 33 1 active sync /dev/sdc1 0 8 17 - faulty /dev/sdb1
在本文中,我们将介绍如何配置具有级别 1 的软件 RAID,即镜像功能。
首先,您需要了解RAID 1的前提条件,即它至少需要2个硬盘,并且由于我们正在配置软件RAID,因此您可以将同一硬盘划分为两个分区进行测试,但始终建议使用两个单独的硬盘,以便在出现任何故障时不会丢失任何数据。
我们将在 VMware Workstation 完成本次实验。
虚拟机已经添加了2块硬盘。
接下来我将从创建分区开始