Files
homework02/README.md
2026-02-05 21:47:09 +03:00

505 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 2
## Работа с mdadm
Для выполнение задания используется Ubuntu Server 24.04
### Добавляем 5 hdd в VM
Добавил в VM 5 дисков по 1Gb.
Проверяем через lsblk, что диски присутствуют в системе
```bash
nimda@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 16G 0 lvm /
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
sde 8:64 0 1G 0 disk
sdf 8:80 0 1G 0 disk
sr0 11:0 1 3.1G 0 rom
```
### Создаем RAID 10
С помощью mdadm создаем RAID 10 из 4 дисков /dev/sdb, /dev/sdc, /dev/sdd и /dev/sde
```bash
nimda@ubuntu:~$ sudo mdadm --create /dev/md10 -l 10 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
```
Проверим, что массив создался
```bash
nimda@ubuntu:~$ sudo mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Sat Nov 8 10:04:56 2025
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat Nov 8 10:05:06 2025
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : ubuntu:10 (local to host ubuntu)
UUID : 324f837b:c5d3c762:18b2b81c:4821f1bd
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync set-A /dev/sdb
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
nimda@ubuntu:~$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid4] [raid5] [raid6] [raid10] [linear]
md10 : active raid10 sde[3] sdd[2] sdc[1] sdb[0]
2093056 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
unused devices: <none>
nimda@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 16G 0 lvm /
sdb 8:16 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
sdc 8:32 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
sdd 8:48 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
sde 8:64 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
sdf 8:80 0 1G 0 disk
sr0 11:0 1 3.1G 0 rom
```
### Разбиваем созданный райд md10 на разделы
Открываем утилиту parted
```bash
nimda@ubuntu:~$ sudo parted
GNU Parted 3.6
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
```
Выбираем наш рейд уомандой select
```bash
(parted) select /dev/md10
Using /dev/md10
(parted)
```
С помощью команды print, можем убедиться, что разметки на нашем md10 нет
```bash
(parted) print
Error: /dev/md10: unrecognised disk label # вот тут parted говорит, что не видит размеку
Model: Linux Software RAID Array (md)
Disk /dev/md10: 2143MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
```
Создаем разметку GPT
```bash
(parted) mklabel gpt
(parted)
```
Создаем 3 раздела, 1 разде будет занимать 30% диска, второй 40% и 3 30%
```bash
(parted) mkpart primari 0% 30%
(parted) mkpart primari 30% 70%
(parted) mkpart primari 70% 100%
```
Снова выполним комду print, чтобы увидить изменения
```bash
(parted) print
Model: Linux Software RAID Array (md)
Disk /dev/md10: 2143MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 643MB 642MB primari
2 643MB 1501MB 858MB primari
3 1501MB 2142MB 642MB primari
(parted)
```
Выйти можно при помощи команды quit
```bash
(parted) quit
Information: You may need to update /etc/fstab.
nimda@ubuntu:~$
```
Посмотрим, как отображаются наши разделы через lsblk
```bash
nimda@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 16G 0 lvm /
sdb 8:16 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
├─md10p1 259:0 0 612M 0 part
├─md10p2 259:1 0 818M 0 part
└─md10p3 259:2 0 612M 0 part
sdc 8:32 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
├─md10p1 259:0 0 612M 0 part
├─md10p2 259:1 0 818M 0 part
└─md10p3 259:2 0 612M 0 part
sdd 8:48 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
├─md10p1 259:0 0 612M 0 part
├─md10p2 259:1 0 818M 0 part
└─md10p3 259:2 0 612M 0 part
sde 8:64 0 1G 0 disk
└─md10 9:10 0 2G 0 raid10
├─md10p1 259:0 0 612M 0 part
├─md10p2 259:1 0 818M 0 part
└─md10p3 259:2 0 612M 0 part
sdf 8:80 0 1G 0 disk
sr0 11:0 1 3.1G 0 rom
```
### Создаем файловую систему на наших разделах
С помощью утилиты mkfs, создаем файловую систему ext4 на наших разделах
```bash
nimda@ubuntu:~$ sudo mkfs.ext4 /dev/md10p1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 156672 4k blocks and 39200 inodes
Filesystem UUID: fac0baf0-446d-46e2-b0d0-aa50b8546cd8
Superblock backups stored on blocks:
32768, 98304
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
nimda@ubuntu:~$ sudo mkfs.ext4 /dev/md10p2
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 209408 4k blocks and 52416 inodes
Filesystem UUID: d4fd92a8-ed87-4c77-981d-51dd996d0c03
Superblock backups stored on blocks:
32768, 98304, 163840
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
nimda@ubuntu:~$ sudo mkfs.ext4 /dev/md10p3
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 156672 4k blocks and 39200 inodes
Filesystem UUID: 0e4fdeef-684c-4941-9e2a-4ac78e10c040
Superblock backups stored on blocks:
32768, 98304
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
```
### Примонтируем наши созданные разделы
Создаем 3 каталога
```bash
nimda@ubuntu:~$ sudo mkdir /mnt/part1
nimda@ubuntu:~$ sudo mkdir /mnt/part2
nimda@ubuntu:~$ sudo mkdir /mnt/part3
```
Монтируем разделы
```bash
nimda@ubuntu:~$ sudo mount /dev/md10p1 /mnt/part1
nimda@ubuntu:~$ sudo mount /dev/md10p2 /mnt/part2
nimda@ubuntu:~$ sudo mount /dev/md10p3 /mnt/part3
```
С помощь утилиты df и ключа -T (который покажет файловую систему), выведим информацию о монтированных дисках
```bash
nimda@ubuntu:~$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 192M 1.3M 191M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 16G 5.1G 9.7G 35% /
tmpfs tmpfs 960M 0 960M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 ext4 1.8G 199M 1.5G 13% /boot
tmpfs tmpfs 192M 12K 192M 1% /run/user/1000
/dev/md10p1 ext4 586M 24K 543M 1% /mnt/part1
/dev/md10p2 ext4 788M 24K 731M 1% /mnt/part2
/dev/md10p3 ext4 586M 24K 543M 1% /mnt/part3
```
### Ломаем и чиним RAID
Перед тем как начнем ломать raid, создим по 1 файлу на каждом из разделов
```bash
nimda@ubuntu:~$ echo "Файл на part 1" | sudo tee /mnt/part1/file_part1.txt
Файл на part 1
nimda@ubuntu:~$ echo "Файл на part 2" | sudo tee /mnt/part2/file_part2.txt
Файл на part 2
nimda@ubuntu:~$ echo "Файл на part 3" | sudo tee /mnt/part3/file_part3.txt
Файл на part 3
```
Удаляем диск /dev/sdb из виртуальной машины перезагржаемся, и смотрим что происходит с raid массивом.
```bash
nimda@ubuntu:~$ sudo mdadm -D /dev/md10
mdadm: cannot open /dev/md10: No such file or directory
```
После перезагрузки, mdadm не видит наш raid массив. Смотрим что находиться в mdstat
```bash
nimda@ubuntu:~$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid4] [raid5] [raid6] [raid10] [linear]
md127 : active (auto-read-only) raid10 sdb[1] sdd[2] sdc[3]
2093056 blocks super 1.2 512K chunks 2 near-copies [4/3] [_UUU]
unused devices: <none>
```
После удаление диска имя нашего raid поменялось на md127. Так же диски сменили имена, тот что был /dev/sdc стал /dev/sdb и т.д.
**Вопрос проверяющему: А почему так происходит?**
Ну ладно, продолжим работать с md127. Посмотрим состояние массива
```bash
nimda@ubuntu:~$ sudo mdadm -D /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Sat Nov 8 10:04:56 2025
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sat Nov 8 11:07:08 2025
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : ubuntu:10 (local to host ubuntu)
UUID : 324f837b:c5d3c762:18b2b81c:4821f1bd
Events : 22
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 16 1 active sync set-B /dev/sdb
2 8 48 2 active sync set-A /dev/sdd
3 8 32 3 active sync set-B /dev/sdc
```
Статум нашего массива degraded, и так же отсутсвеет 1 диск в массиве
Примонтируем наши разделы
```bash
nimda@ubuntu:~$ sudo mount /dev/md127p1 /mnt/part1
nimda@ubuntu:~$ sudo mount /dev/md127p2 /mnt/part2
nimda@ubuntu:~$ sudo mount /dev/md127p3 /mnt/part3
```
Убедимся, что созданные файлы присутствуют на месте, даже на поломаном разделе
```bash
nimda@ubuntu:~$ ls /mnt/part1 /mnt/part2 /mnt/part3
/mnt/part1:
file_part1.txt lost+found
/mnt/part2:
file_part2.txt lost+found
/mnt/part3:
file_part3.txt lost+found
nimda@ubuntu:~$
```
Добавляем в наш reid диск /dev/sde (при начале выполнения задания он был /dev/sdf)
```bash
nimda@ubuntu:~$ sudo mdadm /dev/md127 --add /dev/sde
mdadm: added /dev/sde
```
И смотрим состояние массива
```bash
nimda@ubuntu:~$ sudo mdadm -D /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Sat Nov 8 10:04:56 2025
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat Nov 8 11:32:33 2025
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 19% complete
Name : ubuntu:10 (local to host ubuntu)
UUID : 324f837b:c5d3c762:18b2b81c:4821f1bd
Events : 60
Number Major Minor RaidDevice State
4 8 64 0 spare rebuilding /dev/sde
1 8 16 1 active sync set-B /dev/sdb
2 8 48 2 active sync set-A /dev/sdd
3 8 32 3 active sync set-B /dev/sdc
```
Видим, что диск встал на место удаленного, и происходит ребилд raid массива.
Через некоторое время, как пройдет ребилд, вновь смотрим состояние массива и убеждаемся, что с рейдом все впорядке
```bash
nimda@ubuntu:~$ sudo mdadm -D /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Sat Nov 8 10:04:56 2025
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sat Nov 8 11:32:38 2025
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : ubuntu:10 (local to host ubuntu)
UUID : 324f837b:c5d3c762:18b2b81c:4821f1bd
Events : 74
Number Major Minor RaidDevice State
4 8 64 0 active sync set-A /dev/sde
1 8 16 1 active sync set-B /dev/sdb
2 8 48 2 active sync set-A /dev/sdd
3 8 32 3 active sync set-B /dev/sdc
```
Вопрос про смену названия с md10 на md127, а так же смена наздвание дисков, остается открытым.