diff options
Diffstat (limited to 'articles/mdadm-raid.html')
-rw-r--r-- | articles/mdadm-raid.html | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/articles/mdadm-raid.html b/articles/mdadm-raid.html new file mode 100644 index 0000000..dd2a014 --- /dev/null +++ b/articles/mdadm-raid.html | |||
@@ -0,0 +1,120 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <html lang=en> | ||
3 | <head> | ||
4 | <title></title> | ||
5 | <meta charset="utf-8"/> | ||
6 | <link rel="shortcut icon" href="favicon.ico"/> | ||
7 | <link rel='stylesheet' href='../style.css'/> | ||
8 | <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
9 | </head> | ||
10 | <body> | ||
11 | <header><h1>Linux Software RAID</h1></header> | ||
12 | <main> | ||
13 | <p><strong>mdadm</strong> is a tool that allows for creation and | ||
14 | management of software RAID arrays on Linux. Creating an array | ||
15 | is a rather straightforward process.</p> | ||
16 | |||
17 | <h2>Install packages</h2> | ||
18 | <p>The only package needed is mdadm itself</p> | ||
19 | <pre><code>apt install mdadm</code></pre> | ||
20 | |||
21 | <h2>Partition disks</h2> | ||
22 | <p>We'll need to parition the disks to be used in the array before | ||
23 | creating it. This isn't anything complicated, we will just be | ||
24 | creating a single partition using all the space on each disk.</p> | ||
25 | |||
26 | <p>Use <strong>lsblk</strong> to get a list of disks attached to your system.</p> | ||
27 | |||
28 | <img src=../images/raid/lsblk.png alt="lsblk command"> | ||
29 | |||
30 | <p>Then use <strong>fdisk</strong> to edit the partition table of the | ||
31 | first disk. In my case this would be <strong>/dev/sdb</strong>. | ||
32 | Be sure that you are selecting the correct disk as selecting the | ||
33 | wrong one can result in data being lost.</p> | ||
34 | |||
35 | <pre><code>fdisk /dev/sdb</code></pre> | ||
36 | |||
37 | <p>Use <strong>g</strong> to create a new GUID partition table. | ||
38 | Use <strong>n</strong> to create a new partition, and then just press | ||
39 | enter at all of the prompts to accept the defaults. Finally use | ||
40 | <strong>w</strong> to write the changes. You can use lsblk again | ||
41 | to verify the change and you should see that /dev/sdb now has a | ||
42 | partition <strong>/dev/sdb1</strong>.</p> | ||
43 | |||
44 | <img src=../images/raid/fdisk.png alt="fdisk command"> | ||
45 | |||
46 | <p>Repeat this process for your other disks before continuing.</p> | ||
47 | |||
48 | |||
49 | <h2>Create the array</h2> | ||
50 | <p>Creating the array is done with a single command, but takes just a | ||
51 | bit of planning.</p> | ||
52 | <ul> | ||
53 | <li>Define an ID for the array, which is just a | ||
54 | number identifier. I use <em>0</em> in the command.</li> | ||
55 | <li>Determine the RAID level you want to use. I am going to | ||
56 | use RAID5 in this example. The argument to --level is the | ||
57 | number of the RAID level</li> | ||
58 | <li>Determine the devices that will be used in the array. | ||
59 | Somewhat contrary to the argument name, these devices | ||
60 | will actually be the partitions of the disks and not the | ||
61 | disks themselves. In the command, give the number of | ||
62 | partitions (<em>3</em>) and then a space-separated list of the | ||
63 | partitions that will be active in the array | ||
64 | (<em>/dev/sdb1 /dev/sdc1 /dev/sdd1</em>).</li> | ||
65 | <li>If you want to have any spare devices in the array you | ||
66 | will define them with the --spare-devices argument. These are | ||
67 | defined in the exact same way as the active RAID devices. In | ||
68 | the example I use <em>1</em> spare <em>/dev/sde1</em>. Spare | ||
69 | devices are hot-spares that will automatically be inserted into | ||
70 | the array if one of the disks fails.</li> | ||
71 | </ul> | ||
72 | |||
73 | <pre><code>mdadm --create /dev/md<em>0</em> --level=<em>5</em> --raid-devices=<em>3</em> <em>/dev/sdb1 /dev/sdc1 /dev/sdd1</em> --spare-devices=<em>1</em> <em>/dev/sde1</em></code></pre> | ||
74 | |||
75 | <p>After creating the array run the following command to get details | ||
76 | and the status of the array. It will take a bit to initialize the | ||
77 | array, you will know this is done when the state is clean. You do not | ||
78 | need to wait for the array to completely intialize to continue.</p> | ||
79 | |||
80 | <pre><code>mdadm --detail /dev/md<em>0</em></code></pre> | ||
81 | |||
82 | <p>Take note of the UUID and name values as we will need them in the | ||
83 | next step.</p> | ||
84 | |||
85 | <p>Before moving on we need to make a filesystem on the array. I'm | ||
86 | going to make a simple EXT4 filesystem here.</p> | ||
87 | |||
88 | <pre><code>mkfs.ext4 /dev/md<em>0</em></code></pre> | ||
89 | |||
90 | |||
91 | <h2>Configuration Files</h2> | ||
92 | |||
93 | <p>Open the mdadm configuration file at | ||
94 | <strong>/etc/mdadm/mdadm.conf</strong> and append this line. Replace | ||
95 | <em>uuid</em> and <em>name</em> with the values you got when running | ||
96 | mdadm --detail, replace <em>0</em> whatever ID you chose.</p> | ||
97 | |||
98 | <pre><code>ARRAY /dev/md<em>0</em> metadata=1.2 UUID=<em>uuid</em> name=<em>name</em></code></pre> | ||
99 | |||
100 | <p>Optionally, create an <strong>/etc/fstab</strong> entry for | ||
101 | automounting of the array. Replace /mnt/raid with the directory | ||
102 | where you want to mount the array. If you made a filesystem other than | ||
103 | ext4 make sure to change that value.</p> | ||
104 | |||
105 | <pre><code>/dev/md<em>0</em> /mnt/raid ext4 defaults 0 1</code></pre> | ||
106 | |||
107 | <p> | ||
108 | <hr> | ||
109 | Consider <a href=../donate.html>donating</a> if this article was useful. | ||
110 | <a class=qr href=../images/bitcoin.png>[BTC]</a> | ||
111 | </p> | ||
112 | </main> | ||
113 | <footer> | ||
114 | <a href=../kb.html>Knowledge Base</a> | ||
115 | <br> | ||
116 | <a href=../index.html>www.chudnick.com</a> | ||
117 | </footer> | ||
118 | </body> | ||
119 | </html> | ||
120 | |||