{"id":3052,"date":"2024-05-23T04:49:55","date_gmt":"2024-05-23T04:49:55","guid":{"rendered":"https:\/\/bigboxhost.com\/blog\/?p=3052"},"modified":"2024-05-23T04:51:00","modified_gmt":"2024-05-23T04:51:00","slug":"how-to-replace-a-failed-hard-drive-in-a-software-raid1-array","status":"publish","type":"post","link":"https:\/\/bigboxhost.com\/blog\/how-to-replace-a-failed-hard-drive-in-a-software-raid1-array\/","title":{"rendered":"How to Replace a Failed Hard Drive in a Software RAID1 Array"},"content":{"rendered":"\n<p>This guide demonstrates how to remove a failed hard drive from a Linux RAID1 array (software RAID) and add a new hard disk to the RAID1 array without losing data.<\/p>\n\n\n\n<p><strong>Note:<\/strong> A newer version of this tutorial is available that uses gdisk instead of sfdisk to support GPT partitions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Initial Note:<\/h3>\n\n\n\n<p>In this example I have two hard drives,&nbsp;<em>\/dev\/sda<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb<\/em>, with the partitions&nbsp;<em>\/dev\/sda1<\/em>&nbsp;and&nbsp;<em>\/dev\/sda2<\/em>as well as&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb2<\/em>.<\/p>\n\n\n\n<p><em>\/dev\/sda1<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;make up the RAID1 array&nbsp;<em>\/dev\/md0<\/em>.<\/p>\n\n\n\n<p><em>\/dev\/sda2<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb2<\/em>&nbsp;make up the RAID1 array&nbsp;<em>\/dev\/md1<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/dev\/sda1 + \/dev\/sdb1 = \/dev\/md0<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/dev\/sda2 + \/dev\/sdb2 = \/dev\/md1<\/code><\/pre>\n\n\n\n<p><em>\/dev\/sdb<\/em>&nbsp;has failed, and we want to replace it.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: How to check if a hard disk has failed?<\/h3>\n\n\n\n<p>If a disk has failed, you will probably find a lot of error messages in the log files, e.g.&nbsp;<em>\/var\/log\/messages<\/em>or&nbsp;<em>\/var\/log\/syslog<\/em>.<\/p>\n\n\n\n<p>You can also run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<p>and instead of the string&nbsp;<em>[UU]<\/em>&nbsp;you will see&nbsp;<em>[U_]<\/em>&nbsp;if you have a degraded RAID1 array.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Removing the failed disk<\/h3>\n\n\n\n<p>To remove&nbsp;<em>\/dev\/sdb<\/em>, we will mark&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb2<\/em>&nbsp;as failed and remove them from their respective RAID arrays (<em>\/dev\/md0<\/em>&nbsp;and&nbsp;<em>\/dev\/md1<\/em>).<\/p>\n\n\n\n<p>First we mark&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;as failed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md0 --fail \/dev\/sdb1<\/code><\/pre>\n\n\n\n<p>The output of<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<p>should look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]&nbsp;sdb1&#91;2](F)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]&nbsp;sdb2&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/2]&nbsp;&#91;UU]<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<p>Then we remove&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;from&nbsp;<em>\/dev\/md0<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md0 --remove \/dev\/sdb1<\/code><\/pre>\n\n\n\n<p>The output should be like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~# mdadm --manage \/dev\/md0 --remove \/dev\/sdb1<br>mdadm: hot removed \/dev\/sdb1<\/code><\/pre>\n\n\n\n<p>And<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<p>should show this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]&nbsp;sdb2&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/2]&nbsp;&#91;UU]<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<p>Now we do the same steps again for&nbsp;<em>\/dev\/sdb2<\/em>&nbsp;(which is part of&nbsp;<em>\/dev\/md1<\/em>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md1 --fail \/dev\/sdb2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]&nbsp;sdb2&#91;2](F)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md1 --remove \/dev\/sdb2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~# mdadm --manage \/dev\/md1 --remove \/dev\/sdb2<br>mdadm: hot removed \/dev\/sdb2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<p>Then power down the system:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>shutdown -h now<\/code><\/pre>\n\n\n\n<p>and replace the old&nbsp;<em>\/dev\/sdb<\/em>&nbsp;hard drive with a new one (<strong>it must have at least the same size as the old one &#8211; if it&#8217;s only a few MB smaller than the old one then rebuilding the arrays will fail<\/strong>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Adding The New Hard Disk<\/h3>\n\n\n\n<p>After you have changed the hard disk&nbsp;<em>\/dev\/sdb<\/em>, boot the system.<\/p>\n\n\n\n<p>The first thing we must do now is to create the exact same partitioning as on&nbsp;<em>\/dev\/sda<\/em>. We can do this with one simple command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sfdisk -d \/dev\/sda | sfdisk \/dev\/sdb<\/code><\/pre>\n\n\n\n<p>You can run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fdisk -l<\/code><\/pre>\n\n\n\n<p>to check if both hard drives have the same partitioning now.<\/p>\n\n\n\n<p>Next we add&nbsp;<em>\/dev\/sdb1<\/em>&nbsp;to&nbsp;<em>\/dev\/md0<\/em>&nbsp;and&nbsp;<em>\/dev\/sdb2<\/em>&nbsp;to&nbsp;<em>\/dev\/md1<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md0 --add \/dev\/sdb1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~# mdadm --manage \/dev\/md0 --add \/dev\/sdb1<br>mdadm: re-added \/dev\/sdb1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>mdadm --manage \/dev\/md1 --add \/dev\/sdb2<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~# mdadm --manage \/dev\/md1 --add \/dev\/sdb2<br>mdadm: re-added \/dev\/sdb2<\/code><\/pre>\n\n\n\n<p>Now both arays (<em>\/dev\/md0<\/em>&nbsp;and&nbsp;<em>\/dev\/md1<\/em>) will be synchronized. Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/mdstat<\/code><\/pre>\n\n\n\n<p>to see when it&#8217;s finished.<\/p>\n\n\n\n<p>During the synchronization the output will look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]&nbsp;sdb1&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;=&gt;...................]&nbsp;&nbsp;recovery&nbsp;=&nbsp;&nbsp;9.9%&nbsp;(2423168\/24418688)&nbsp;finish=2.8min&nbsp;speed=127535K\/sec<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]&nbsp;sdb2&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/1]&nbsp;&#91;U_]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;=&gt;...................]&nbsp;&nbsp;recovery&nbsp;=&nbsp;&nbsp;6.4%&nbsp;(1572096\/24418688)&nbsp;finish=1.9min&nbsp;speed=196512K\/sec<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<p>When the synchronization is finished, the output will look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1:~#&nbsp;cat&nbsp;\/proc\/mdstat<br>Personalities&nbsp;:&nbsp;&#91;linear]&nbsp;&#91;multipath]&nbsp;&#91;raid0]&nbsp;&#91;raid1]&nbsp;&#91;raid5]&nbsp;&#91;raid4]&nbsp;&#91;raid6]&nbsp;&#91;raid10]<br>md0&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda1&#91;0]&nbsp;sdb1&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/2]&nbsp;&#91;UU]<br> <br>md1&nbsp;:&nbsp;active&nbsp;raid1&nbsp;sda2&#91;0]&nbsp;sdb2&#91;1]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24418688&nbsp;blocks&nbsp;&#91;2\/2]&nbsp;&#91;UU]<br> <br>unused&nbsp;devices:&nbsp;&lt;none&gt;<\/code><\/pre>\n\n\n\n<p>That&#8217;s it, you have successfully replaced&nbsp;<em>\/dev\/sdb<\/em>!<\/p>\n\n\n\n<p>*Source: <a href=\"https:\/\/www.howtoforge.com\/replacing_hard_disks_in_a_raid1_array\" data-type=\"link\" data-id=\"https:\/\/www.howtoforge.com\/replacing_hard_disks_in_a_raid1_array\">Howtoforge<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide demonstrates how to remove a failed hard drive from a Linux RAID1 array (software RAID) and add a new hard disk to the RAID1 array without losing data. Note: A newer version of this tutorial is available that uses gdisk instead of sfdisk to support GPT partitions. Initial Note: In this example I [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3053,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"How to Replace a Failed Hard Drive in a Software RAID1 Array - BigBox","_seopress_titles_desc":"","_seopress_robots_index":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[2],"tags":[36,69,74,71,73],"class_list":["post-3052","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kb","tag-disk","tag-hard","tag-mdstat","tag-replace","tag-software"],"_links":{"self":[{"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/posts\/3052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/comments?post=3052"}],"version-history":[{"count":4,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/posts\/3052\/revisions"}],"predecessor-version":[{"id":3057,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/posts\/3052\/revisions\/3057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/media\/3053"}],"wp:attachment":[{"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/media?parent=3052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/categories?post=3052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bigboxhost.com\/blog\/wp-json\/wp\/v2\/tags?post=3052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}