1. Create the disk partition for your mirror device
fdisk /dev/sdb ==> /dev/sdb1
fdisk /dev/sdc ==> /dev/sdc1
Note: Make sure you mdadm (multiple device program) package is installed.
2. scan the partition table,
# partprobe /dev/sdb
# partprobe /dev/sdc
or
# echo 1 > /sys/block/sdb/device/rescan
3. Create your mddevice.
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb1 /dev/sdc1
or
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
Options:
-C -> --create ; -l-> --level= ; -n -> --raid-devices; -Q, --query ; -D -> --detail
4. Check the sync status between the array.
# watch cat /proc/mdstat
5. Create a filesystem
# mkfs.ext4 /dev/md0
6. Mount the miror device
# mkdir /opt/myRAID1; mount /dev/md0 /opt/myRAID1
# df -h /opt/myRAID1
7. Add entry to the fstab to make it persistent across the reboot.
# echo '/dev/md0 /opt/myRAID1 ext4 defaults 0 0' >> /etc/fstab
8. Get the detail info about the mddevice.
# mdadm -Q -D /dev/md0
================= Detail =======================
Make sure you mdadm (multiple device program) package is installed.
1. List the disks on your system.
[root@localhost ~]# fdisk -l | more
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000bb87b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2354 18598912 83 Linux
/dev/sda3 2354 2611 2064384 82 Linux swap / Solaris
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0009f391
Device Boot Start End Blocks Id System
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x00053115
Device Boot Start End Blocks Id System
Disk /dev/sdd: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders
Units = cylinders of 352 * 512 = 180224 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a467f
Device Boot Start End Blocks Id System
/dev/sdd1 1 11916 2097151+ 8e Linux LVM
Disk /dev/sdf: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0009422c
Device Boot Start End Blocks Id System
Disk /dev/sdg: 5368 MB, 5368709120 bytes
181 heads, 40 sectors/track, 1448 cylinders
Units = cylinders of 7240 * 512 = 3706880 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdg1 1 1449 5242879+ 8e Linux LVM
Disk /dev/sdh: 5368 MB, 5368709120 bytes
181 heads, 40 sectors/track, 1448 cylinders
Units = cylinders of 7240 * 512 = 3706880 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdh1 1 1449 5242879+ 8e Linux LVM
Disk /dev/sde: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0006dc8b
Device Boot Start End Blocks Id System
/dev/sde1 1 42 337333+ 82 Linux swap / Solaris
[root@localhost ~]#
2. Prepare the disk you will be using for mirro
=================================================
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0009f391
Device Boot Start End Blocks Id System
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x00053115
Device Boot Start End Blocks Id System
=================================================
3. Create disk partition.
a. Creae a partition on first disk /dev/sdb
[root@localhost ~]# fdisk /dev/sdb
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-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0009f391
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]#
b. Create second disk partition,
[root@localhost ~]# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
Command (m for help): p
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x00053115
Device Boot Start End Blocks Id System
/dev/sdc1 1 261 2096451 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.
[root@localhost ~]#
====================================================
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x0009f391
Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 fd Linux raid autodetect
Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0x00053115
Device Boot Start End Blocks Id System
/dev/sdc1 1 261 2096451 fd Linux raid autodetect
====================================================
4. Now, scan the partition table,
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# partprobe /dev/sdc
or
# echo 1 > /sys/block/sdb/device/rescan
5. Create raid 1 (mirror) device
Devices:-
/dev/sdb1
/dev/sdc1
CREATE MODE
Usage: mdadm --create md-device --chunk=X --level=Y --raid-devices=Z devices
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb1 /dev/sdc1
or
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
Options detail
-C, --create --> Create a new array. [ give the name of the metadevice ]
-l, --level= --> RAID level [ options are: linear, raid0, 0, stripe, raid1, 1, mir-ror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container. ]
-n, --raid-devices -->> specify the number of active device followed by the name of the device/s
-r, --remove --> remove listed devices. They must not be active. i.e. they should be failed or spare devices.
-f, --fail --> mark listed devices as faulty.
-Q, --query --> Examine the device
-D, --detail --> Print details the md device/s.
[root@localhost ~]# mdadm -C /dev/md0 -l 1 -n 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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]#
6. Check the sync status between the array.
[root@localhost ~]# watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat Wed Jan 2 00:01:37 2013
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
2095415 blocks super 1.2 [2/2] [UU]
[==================>..] resync = 94.7% (1985024/2095415) finish=0.0min speed=21262K/sec
unused devices: <none>
Every 2.0s: cat /proc/mdstat Wed Jan 2 00:01:45 2013
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
2095415 blocks super 1.2 [2/2] [UU]
unused devices: <none>
7. Create a filesystem
[root@localhost ~]# 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
131072 inodes, 523853 blocks
26192 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]#
8. Mount the miror device
[root@localhost ~]# mkdir /opt/myRAID1; mount /dev/md0 /opt/myRAID1
[root@localhost ~]# df -h /opt/myRAID1
Filesystem Size Used Avail Use% Mounted on
/dev/md0 2.0G 35M 1.9G 2% /opt/myRAID1
[root@localhost ~]#
9. Add entry to the fstab to make it persistent across the reboot.
# echo '/dev/md0 /opt/myRAID1 ext4 defaults 0 0' >> /etc/fstab
[root@localhost ~]# umount /opt/myRAID1/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 4.9G 12G 30% /
tmpfs 504M 420K 504M 1% /dev/shm
/dev/sda1 291M 30M 247M 11% /boot
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 4.9G 12G 30% /
tmpfs 504M 420K 504M 1% /dev/shm
/dev/sda1 291M 30M 247M 11% /boot
/dev/md0 2.0G 35M 1.9G 2% /opt/myRAID1
[root@localhost ~]#
10. Get the detail info about the mirror mddevice.
[root@localhost ~]# mdadm -Q -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Jan 1 23:59:43 2013
Raid Level : raid1
Array Size : 2095415 (2046.65 MiB 2145.70 MB)
Used Dev Size : 2095415 (2046.65 MiB 2145.70 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Jan 2 00:05:12 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : f15ed0ed:59c969c9:f2e4174c:6d0bbaa4
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
[root@localhost ~]#