# /boot on RAID1

## Setup KVM

{% hint style="info" %}
Все действия происходят в **QUME/KVM**. В системе должно быть смонтирована 2 диска до начала установки
{% endhint %}

Рассмотрим шаги про добавление 2-го диска.

На последнем шаге обязательно ставим галочку:

{% hint style="info" %}
Customize configuration before install
{% endhint %}

![](/files/-M8VRErStlh5pNyUWvR7)

в следующем шаге в **Add Hardware** добавляем второй диск:

![](/files/-M8VS3yMdyhkYEaUQxn3)

только после этого запускаем установку.&#x20;

## Установка Ubuntu 18.04

Рассмотрим часть про создание разделов:

![выбираем Manual](/files/-M8VSrW_qAarDa90lx8j)

Далее создаем на обеих дисках разметку без указания файловой системы:

![](/files/-M8VdadijxwBNLWeLLkY)

Делаем разбивку каждого диска на 2-е части (1Gb и остаток от диска), в Вашем случае размеры могут быть другими.

![](/files/-M8VeLvA9quAiZ541vvB)

![1G](/files/-M8VeCK3g_ZWrlcNvFtR)

![](/files/-M8VeJ90JsQkTgoGWSNe)

Указав пустое поле **Size**, будет задействован весь оставшийся размер диска.

![](/files/-M8VeS2f8kiDxkUolCJT)

в итоге у нас получится:

![](/files/-M8VenUv2kDkJIG4lyQh)

Приводим второй диск к такому же состоянию:

![](/files/-M8Vex3NNlYk6jhmaqpm)

{% hint style="info" %}
У вас в **USED DEVICES** появился **bios\_grub**, оставляем его нетронутым, в дальнейшем (уже после установки системы) мы создадим на втором диске раздел под **GRUB**
{% endhint %}

![](/files/-M8VfjY1GUU3Pz-If_tl)

Теперь мы можем создать **RAID1** - 2 штука:

![](/files/-M8Vfyzpblv93Y_FK175)

Выбираем **partition** одинакового размера:

![Создание "первого" RAID1](/files/-M8VgMnxbfxGNCwM5r1w)

![Создание "второго" RAID1](/files/-M8Vhzi-Vw53AaEkcGWd)

В итоге у нас должно получится в **AVAILABLE DEVICES** два устройства:

![](/files/-M8ViSUDPB23ngDYVFIB)

Приступаем к созданию **partition** на устройствах **md0**  и  **md1**:

![](/files/-M8ViidZxcsvzTHxy5NV)

В моем случае **md0** (он меньшего размера) идет под **/boot:**

![](/files/-M8Vj2vcUvFBDLFbLxVS)

А **md1** идет под корень системы:

![](/files/-M8VjJD0sT7hOzhVzwtG)

В итоге у нас должна получится такая разметка:

![](/files/-M8VjZLj7GJmj_OYkF0t)

Далее **Done** и в следующем окне **Continue :**

{% hint style="danger" %}
Вся информация будет удалена, диски будут отформатированы
{% endhint %}

![](/files/-M8VqincCQahzjMPRcSx)

Далее следуем по меню чтобы завершить установку системы:

![](/files/-M8VrOLB7G_N7UqJJx1F)

**Reboot**

## Install GRUB

{% hint style="info" %}
все последующие действия в системы выполняются от **root**
{% endhint %}

Смотрим информацию по дискам:

{% tabs %}
{% tab title="Command" %}

```bash
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdb         252:16   0   15G  0 disk  
├─vdb1      252:17   0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vdb2      252:18   0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
```

{% endtab %}
{% endtabs %}

В **output** интересуют имена дисков (**vda** и **vdb**), далее сам процес установки **grub:**

{% tabs %}
{% tab title="Command" %}

```bash
grub-install /dev/vda
```

{% endtab %}

{% tab title="Output" %}

```bash
root@test:~# grub-install /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.
root@test:~# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
grub-install /dev/vdb
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# grub-install /dev/vdb
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
root@test:~# 
```

{% endtab %}
{% endtabs %}

Ошибка при выполнении **grub-install** на **vdb** ожидаемая, так как там нету раздела по него.

Создаем раздел:

{% tabs %}
{% tab title="Command" %}

```
parted /dev/vdb set 1 bios_grub on
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# parted /dev/vdb set 1 bios_grub on
Information: You may need to update /etc/fstab.

root@test:~# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
parted /dev/vdb print
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# parted /dev/vdb print                                        
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 16.1GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1075MB  1074MB                     bios_grub
 2      1075MB  16.1GB  15.0GB

root@test:~# 
```

{% endtab %}
{% endtabs %}

Все прошло успешно, повторяем попытку **grub-install:**

{% tabs %}
{% tab title="Command" %}

```
grub-install /dev/vdb
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# grub-install /dev/vdb
Installing for i386-pc platform.
Installation finished. No error reported.
root@test:~# 
```

{% endtab %}
{% endtabs %}

Мы получили систему которая может грузиться с любого из **/boot** в случае выхода какого то из дисков. Далее мы протестируем как это работает и возможные применения такой схемы на практике.

## Тесты

### Переключение на загрузку со второго диска

Проверяем что с рейдами все **ОК!**

{% tabs %}
{% tab title="Command" %}

```
cat /proc/mdstat
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 vdb1[1] vda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 vdb2[1] vda3[0]
      14667776 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
root@test:~# 
```

{% endtab %}
{% endtabs %}

\[UU] - нам говорит о том что рейдах участвует по два диска, в нашем случае **partition**.

![Система грузится с VirtIO Disk 1](/files/-M8W0RTzqUyg2jN2u-Do)

Выключаем систему, меняем загрузочный диск:

{% tabs %}
{% tab title="Command" %}

```bash
shutdown now
```

{% endtab %}
{% endtabs %}

![](/files/-M8W3JCTSIkPccBocCy-)

Запускаем систему. Система загрузилась с **VirtIO Disk 2**.&#x20;

**VirtIO Disk 1** мы можем безболезненно отключить от системы, и система у нас останется в рабочем состоянии.

### Второй диск вышел из строя

Представим ситуацию что какой-то из дисков, в нашем случае будет **VirtlO Disk2**, вышел из строя. Для имитации поломки, мы его удалим из системы.

До начала эксперимента проверяем что у нас все ок, и создадим в папке **root** файл, чтоб проверить синхронизацию с новым диском при отключении **VirtlO Disk1** :grin: .&#x20;

*P.S. Да у нас авария за аварией!*

{% tabs %}
{% tab title="Command" %}

```
cat /proc/mdstat
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 vdb1[1] vda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 vdb2[1] vda3[0]
      14667776 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
root@test:~# 

```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
cd && echo text in file >> test.file && cat test.file && ll 
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# cd && echo text in file >> test.file && cat test.file && ll
text in file
total 28
drwx------  3 root root 4096 May 29 15:58 ./
drwxr-xr-x 24 root root 4096 May 29 13:39 ../
-rw-------  1 root root  408 May 29 15:32 .bash_history
-rw-r--r--  1 root root 3106 Apr  9  2018 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwx------  2 root root 4096 May 29 14:41 .ssh/
-rw-r--r--  1 root root   13 May 29 15:58 test.file
root@test:~# 
```

{% endtab %}
{% endtabs %}

Выключаем машину, удаляем диск из системы, а загрузочным ставим **VirtlO** **Disk1**

![](/files/-M8WAUTnLL0YuZ7B_PtK)

![Удаляем его из системы -> Remove](/files/-M8WB57tmzDE7oy_Hqdh)

В системе остался один диск:

![](/files/-M8WBciQbHgYAeEz4JuG)

![](/files/-M8WBUNm5lyOmUL-UVMx)

Запускаем систему и проверяем состояние дисков, рейдов, файлов

{% tabs %}
{% tab title="Command" %}

```
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
cat /proc/mdstat
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 vda2[0]
      1046528 blocks super 1.2 [2/1] [U_]
      
md1 : active raid1 vda3[0]
      14667776 blocks super 1.2 [2/1] [U_]
      
unused devices: <none>
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

\[U\_] - у нас в **md0/md1** не хватает по одному диску.

{% tabs %}
{% tab title="Command" %}

```
cd && cat test.file && ll
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# cd && cat test.file && ll
text in file
total 28
drwx------  3 root root 4096 May 29 15:58 ./
drwxr-xr-x 24 root root 4096 May 29 13:39 ../
-rw-------  1 root root  871 May 29 16:03 .bash_history
-rw-r--r--  1 root root 3106 Apr  9  2018 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwx------  2 root root 4096 May 29 14:41 .ssh/
-rw-r--r--  1 root root   13 May 29 15:58 test.file
root@test:~# 
```

{% endtab %}
{% endtabs %}

Но система продолжает быть в рабочем состоянии.

### Восстанавливаемся:

Создаем чистый не размеченный диск, подключаем его к системе, такого же размера как оставшийся диск в системе, предварительно выключив систему.

![](/files/-M8WFQSphjeC3WMWnPU9)

![](/files/-M8WFW1ghhfXhE4-ct_t)

Запускаем систему, проверяем диски, рейд

{% tabs %}
{% tab title="Command" %}

```
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdb         252:16   0   15G  0 disk  
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
cat /proc/mdstat
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 vda2[0]
      1046528 blocks super 1.2 [2/1] [U_]
      
md1 : active raid1 vda3[0]
      14667776 blocks super 1.2 [2/1] [U_]
      
unused devices: <none>
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

Размечаем диск **vdb** по **partition** как у **vda,** для более корректного отображения в дереве, разметку делаем в том же порядке:

{% hint style="info" %}
более детальную информацию по команде **fdisk** можно посмотреть в **man fdisk**
{% endhint %}

{% tabs %}
{% tab title="Command" %}

```
fdisk /dev/vdb
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9bc6d9da.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-31457279, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-31457279, default 31457279): +1M

Created a new partition 1 of type 'Linux' and of size 1 MiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
First sector (4096-31457279, default 4096): 
Last sector, +sectors or +size{K,M,G,T,P} (4096-31457279, default 31457279): +1G

Created a new partition 2 of type 'Linux' and of size 1 GiB.

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (3,4, default 3): 
First sector (2101248-31457279, default 2101248): 
Last sector, +sectors or +size{K,M,G,T,P} (2101248-31457279, default 31457279): 

Created a new partition 3 of type 'Linux' and of size 14 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

смотрим что у нас получилось по дискам:

{% tabs %}
{% tab title="Command" %}

```
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdb         252:16   0   15G  0 disk  
├─vdb1      252:17   0    1M  0 part  
├─vdb2      252:18   0    1G  0 part  
└─vdb3      252:19   0   14G  0 part  
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

Теперь можем восстановить "первый" **RAID1 (md0)**:

{% tabs %}
{% tab title="Command" %}

```
mdadm /dev/md0 --add /dev/vdb2
```

{% endtab %}
{% endtabs %}

К сожалению вывода у команды нет, но если запустить в отдельном окне:

{% tabs %}
{% tab title="Command" %}

```
watch cat /proc/mdstat
```

{% endtab %}
{% endtabs %}

можно увидеть как идет восстановление **md0** :

![](/files/-M8WJgXvj-6dBsjs0FFU)

Восстанавливаем "второй" **RAID1 (md1):**

{% tabs %}
{% tab title="Command" %}

```
mdadm /dev/md1 --add /dev/vdb3
```

{% endtab %}
{% endtabs %}

![](/files/-M8WLKYymT2RlRPIzSsR)

Дожидаемся конца восстановления.

Проверяем состояние:

{% tabs %}
{% tab title="Command" %}

```
cat /proc/mdstat
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 vdb2[2] vda2[0]
      1046528 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 vdb3[2] vda3[0]
      14667776 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdb         252:16   0   15G  0 disk  
├─vdb1      252:17   0    1M  0 part  
├─vdb2      252:18   0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vdb3      252:19   0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
cd && cat test.file && ll
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# cd && cat test.file && ll
text in file
total 28
drwx------  3 root root 4096 May 29 15:58 ./
drwxr-xr-x 24 root root 4096 May 29 13:39 ../
-rw-------  1 root root  959 May 29 16:21 .bash_history
-rw-r--r--  1 root root 3106 Apr  9  2018 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwx------  2 root root 4096 May 29 14:41 .ssh/
-rw-r--r--  1 root root   13 May 29 15:58 test.file
root@test:~# 
```

{% endtab %}
{% endtabs %}

**RAID1(md0/md1)** в порядке, мы обратно вернули разметку дискам, файлы на месте, с теми же данными что были созданы на отключенном (удаленном) диске.&#x20;

Устанавливаем **grub** на новый диск и пробуем с него запустить систему.

{% tabs %}
{% tab title="Command" %}

```
grub-install /dev/vdb
```

{% endtab %}

{% tab title="Output" %}

```
root@test:~# grub-install /dev/vdb
Installing for i386-pc platform.
Installation finished. No error reported.
root@test:~# 
```

{% endtab %}
{% endtabs %}

Выключаем систему, переключаем диск для загрузки

![](/files/-M8WPa1iqH9_C2u9L95y)

![](/files/-M8WPdY3bpMGkjQyp3lV)

Запускаем систему, система загрузилась с **VirtIO Disc 2**.

### Добавление 3-го диска

Создаем и добавляем в систему 3-й диск

![](/files/-M8WaJH-CHeBFa5YYRxP)

![](/files/-M8WaMOtKPU81kSbh6OM)

Запускаем систему, смотрим имя диска, и розмечаем его как при востановлении:

{% tabs %}
{% tab title="Command" %}

```
lsblk
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0 93.9M  1 loop  /snap/core/9066
loop1         7:1    0 89.1M  1 loop  /snap/core/8268
sr0          11:0    1 1024M  0 rom   
vda         252:0    0   15G  0 disk  
├─vda1      252:1    0    1M  0 part  
├─vda2      252:2    0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vda3      252:3    0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdb         252:16   0   15G  0 disk  
├─vdb1      252:17   0    1M  0 part  
├─vdb2      252:18   0    1G  0 part  
│ └─md0       9:0    0 1022M  0 raid1 
│   └─md0p1 259:0    0 1018M  0 md    /boot
└─vdb3      252:19   0   14G  0 part  
  └─md1       9:1    0   14G  0 raid1 
    └─md1p1 259:1    0   14G  0 md    /
vdc         252:32   0   15G  0 disk  
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
fdisk /dev/vdc
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# fdisk /dev/vdc

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x395de8c7.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-31457279, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-31457279, default 31457279): +1M

Created a new partition 1 of type 'Linux' and of size 1 MiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
First sector (4096-31457279, default 4096): 
Last sector, +sectors or +size{K,M,G,T,P} (4096-31457279, default 31457279): +1G

Created a new partition 2 of type 'Linux' and of size 1 GiB.

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (3,4, default 3): 
First sector (2101248-31457279, default 2101248): 
Last sector, +sectors or +size{K,M,G,T,P} (2101248-31457279, default 31457279): 

Created a new partition 3 of type 'Linux' and of size 14 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@test:/home/test#
```

{% endtab %}
{% endtabs %}

Добавляем новые разделы в **md0/md1:**

{% tabs %}
{% tab title="Command" %}

```
mdadm /dev/md0 --add /dev/vdc2
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# mdadm /dev/md0 --add /dev/vdc2
mdadm: added /dev/vdc2
root@test:/home/test#
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
mdadm /dev/md1 --add /dev/vdc3
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# mdadm /dev/md1 --add /dev/vdc3
mdadm: added /dev/vdc3
root@test:/home/test#
```

{% endtab %}
{% endtabs %}

Расширяем рейды с 2-х дисков до 3-ч.

{% tabs %}
{% tab title="Command" %}

```
mdadm -G /dev/md0 --raid-devices=3
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Command" %}

```
mdadm -G /dev/md1 --raid-devices=3
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Опция -**-raid-devices** указывает новое количество дисков используемое в массиве. Например, было 2 диска, а теперь расширяем до 3-х - указываем 3.
{% endhint %}

![](/files/-M8WcRayU3rHvHntFl9M)

Устанавливаем на него **grub**

{% tabs %}
{% tab title="Command" %}

```
grub-install /dev/vdc
```

{% endtab %}

{% tab title="Output" %}

```
root@test:/home/test# grub-install /dev/vdc
Installing for i386-pc platform.
Installation finished. No error reported.
root@test:/home/test# 
```

{% endtab %}
{% endtabs %}

Теперь в системе 3 диска в **RAID1** и с любого из них можно произвести загрузку системы.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://agrat.gitbook.io/admin/utility/mdadm/boot-on-raid1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
