Setup
software RAID1(data mirroring) using mdadm tool on two disks in linux with step
by step guide
In this
article we learn how to create software RAID1 using mdadm tool on two hard
disks in linux operating system.
What
is RAID1
It is called data mirroring because it read
write the identical data among the multiple disks. While one disk is failure we
can retrieve data from the other working disk. So it provides redundancy .while
we replace the new disk in the place of failure disk data will automatically
sync with each other.
Setup
software RAID1(data mirroring) using mdadm tool
Step1:
Before creating software RAID1 we need to verify the partition table. To verify
it we need to execute the below command.
#fdisk
-l
Disk
/dev/sda: 8589 MB, 8589934592 bytes
255
heads, 63 sectors/track, 1044 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: 0x000ef612
Device Boot Start End Blocks
Id System
/dev/sda1 *
1 64 512000
83 Linux
Partition
1 does not end on cylinder boundary.
/dev/sda2 64 1045
7875584 8e Linux LVM
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: 0x00000000
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: 0x00000000
In the above output we
saw that we have two disks that is /dev/sdb and /dev/sdc. Using these two disks
we create RAID1.
Step2: Now we need to
verify that is there existing raid is configured or not using the below
command.
[root@localhost
~]# mdadm --examine /dev/sd[b-c]
mdadm:
No md superblock detected on /dev/sdb.
mdadm:
No md superblock detected on /dev/sdc.
There is no existing
raid is configured.
Step3: Now
creating(sdb and sdc) partition for RAID using fdisk command.
[root@localhost
~]# fdisk /dev/sdb
Device
contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building
a new DOS disklabel with disk identifier 0xc77fae91.
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-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/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: 0xc77fae91
Device Boot Start End Blocks
Id System
/dev/sdb1 1 261
2096451 83 Linux
After that we press
“L” key to list all available types. And then press “t” to choose the partition
and then choose “fd” for linux auto raid.after that press “w” to write changes.
Command
(m for help): 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
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): 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: 0xc77fae91
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.
Same above steps we
have to follow to create partition on /dev/sdc.
Step4: Once
partitions has been created we need to verify the changes using the below
command.
[root@localhost
~]# mdadm --examine /dev/sd[b-c]
/dev/sdb:
MBR Magic : aa55
Partition[0]
: 4192902 sectors at 63 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0]
: 4192902 sectors at 63 (type fd)
Step5: creating RAID
md devices using the below command.
[root@localhost
~]# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[b-c]1
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.
Step6: verify raid
creation using the following command.
[root@localhost
~]# cat /proc/mdstat
Personalities
: [raid0] [raid1]
md0 :
active raid1 sdc1[1] sdb1[0]
2095424 blocks super 1.2 [2/2] [UU]
[==============>......] resync = 74.7% (1565888/2095424)
finish=0.5min speed=16704K/sec
unused
devices: <none>
|
Setup software RAID1(data mirroring) using mdadm tool on two disks in linux with step by step guide |
you can also execute
the below command to know the md details.
[root@localhost
~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Dec 31 21:00:39 2010
Raid Level : raid1
Array Size : 2095424 (2046.31 MiB 2145.71
MB)
Used Dev Size : 2095424 (2046.31 MiB 2145.71
MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Dec 31 21:02:23 2010
State : clean, resyncing
Active Devices : 2
Working
Devices : 2
Failed Devices : 0
Spare Devices : 0
Resync Status : 83% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID :
94fe9ea1:18bef4c8:d5cd7760:4af176a7
Events : 13
Number
Major Minor RaidDevice State
0
8 17 0
active sync /dev/sdb1
1
8 33 1
active sync /dev/sdc1
Step7: now create a
directory , assign a file system and mount on the creating directory.
[root@localhost
~]# mkdir /raid1
[root@localhost
~]# mkfs.ext4 /dev/md0
mke2fs
1.43-WIP (20-Jun-2013)
Filesystem
label=
OS type:
Linux
Block
size=4096 (log=2)
Fragment
size=4096 (log=2)
Stride=0
blocks, Stripe width=0 blocks
131072
inodes, 523856 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
Allocating
group tables: done
Writing
inode tables: done
Creating
journal (8192 blocks): done
Writing
superblocks and filesystem accounting information: done
[root@localhost
~]# mount /dev/md0 /raid1
Step8: now check using
df –h command.
[root@localhost
~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
6.5G 862M
5.3G 14% /
tmpfs 244M 0
244M 0% /dev/shm
/dev/sda1 477M 72M
376M 17% /boot
/dev/md0 2.0G 3.0M
1.9G 1% /raid1