{"id":25806117,"url":"https://github.com/yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array","last_synced_at":"2026-06-09T18:31:22.958Z","repository":{"id":277814860,"uuid":"769059045","full_name":"yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array","owner":"yandex-cloud-examples","description":"Восстановление дискового массива, собранного на NRD дисках, после сбоя одного из дисков.","archived":false,"fork":false,"pushed_at":"2025-06-06T11:57:09.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-11-21T18:02:48.680Z","etag":null,"topics":["nrd-disk","raid","terraform","yandex-cloud","yandexcloud"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yandex-cloud-examples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-08T09:01:41.000Z","updated_at":"2025-06-06T11:57:09.000Z","dependencies_parsed_at":"2025-02-16T10:29:22.253Z","dependency_job_id":"3cdeef00-c931-4bb6-8bdb-45c86c58375f","html_url":"https://github.com/yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array","commit_stats":null,"previous_names":["yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yandex-cloud-examples","download_url":"https://codeload.github.com/yandex-cloud-examples/yc-nrd-disk-replacement-in-raid-array/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34121020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nrd-disk","raid","terraform","yandex-cloud","yandexcloud"],"created_at":"2025-02-27T19:59:32.775Z","updated_at":"2026-06-09T18:31:22.923Z","avatar_url":"https://github.com/yandex-cloud-examples.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Восстановление дискового массива после сбоя одного из дисков.\n\nДанное решение показывает возможность восстановления диска в RAID-1 массиве, собранном на 2х [NRD](https://cloud.yandex.ru/docs/compute/concepts/disk#nr-disks) дисках.\n\nЭтот сценарий тестировался на Linux дистрибутиве **Ubuntu 20.04 LTS**. \n\nПроцедура восстановления диска по шагам описана в разделе [Восстановление диска](#dr)\n\n## Условия для использования (prerequisities)\n\n* существующая папка в Облаке\n* установленный инструмент [YC CLI](https://cloud.yandex.ru/docs/cli/quickstart)\n* настроенный YC [профиль](https://cloud.yandex.ru/docs/cli/operations/authentication/service-account)\n\nВ данном решении показано развертывание виртуальной машины с дисковым массивом RAID-1, собранном из 2х отдельных NRD дисков. При отказе одного из дисков в массиве, его можно восстановить (заменить на другой).  \n\n## Идентификаторы и имена устройств.\nЗамена отказавшего диска это ответственный процесс, в котором очень важно не ошибиться с объектом воздействия и по неосторожности удалить данные не там где хотелось. Для исключения подобных ситуаций рекомендуется **всегда** работать с дисками через их идентификаторы `device-id`, и не использовать для таких операций имена устройств, например, */dev/vdb*. \n\nИдентификаторы дисков `device-id` могут выглядеть по разному внутри VM. Если при создании диска с помощью YC CLI был указан ключ **--device-name nrd2**, то именно это имя и будет являться частью device-id внутри виртуальной машины, например, \"virtio-nrd2\" (см. вывод ниже). Если же ключ **--device-name** не использовался при создании диска, то device-id виртуальной машины будет выглядеть по другому - \"virtio-fhmjrhl1vjv8p2j68cm8\" (см. вывод ниже).\n\nИдентификаторы устройств обычно уникальны, а имена устройств могут динамически меняться в случаях добавления и удаления устройств.\n\nЧтобы посмотреть связь между device-id и device-name можно воспользоваться командой: `ls -l /dev/disk/by-id/`. Ниже приведен пример вывода этой команды.\n\n`$ ls -l /dev/disk/by-id/`\n```bash\nlrwxrwxrwx 1 root root 11 Oct 15 11:30 md-name-nrd-raid-test:100 -\u003e ../../md100\nlrwxrwxrwx 1 root root 11 Oct 15 11:30 md-uuid-c4ba6e99:0b18df98:5dc8a734:ac8a6d48 -\u003e ../../md100\nlrwxrwxrwx 1 root root  9 Oct 15 11:29 virtio-fhmjrhl1vjv8p2j68cm8 -\u003e ../../vda\nlrwxrwxrwx 1 root root 10 Oct 15 11:29 virtio-fhmjrhl1vjv8p2j68cm8-part1 -\u003e ../../vda1\nlrwxrwxrwx 1 root root 10 Oct 15 11:29 virtio-fhmjrhl1vjv8p2j68cm8-part2 -\u003e ../../vda2\nlrwxrwxrwx 1 root root  9 Oct 15 11:30 virtio-nrd1 -\u003e ../../vdb\nlrwxrwxrwx 1 root root  9 Oct 15 11:30 virtio-nrd2 -\u003e ../../vdc \n```\n\n## Рекомендации по созданию нереплицируемых дисков (NRD) в Яндекс.Облаке\n* [Нереплицируемые SSD-диски](https://cloud.yandex.ru/docs/compute/concepts/disk) (network-ssd-nonreplicated) — это сетевой диск с повышенной производительностью.\n* При создании NRD дисков через Terraform или YC CLI всегда задавать параметр device-name, в котором указывать понятное вам имя диска.\n* Для повышния отказоустойчивости дисковой подсистемы, для NRD дисков рекомндуется использовать [группы размещения](https://cloud.yandex.ru/docs/compute/concepts/disk-placement-group), которые размещают диски в разных стойках ЦОД.\n\n\n## Развертывание VM и симуляция отказа диска\n\n### План развертывания\n  1. [Создаем группу размещения дисков](https://cloud.yandex.ru/docs/compute/operations/disk-placement-groups/create)\n  2. [Создаем нереплицируемые диски в группе размещения](https://cloud.yandex.ru/docs/compute/operations/disk-create/nonreplicated#nr-disk-in-group)\n  3. [Создаем VM и подключаем к ней созданные NRD диски](https://cloud.yandex.ru/docs/compute/operations/vm-create/create-linux-vm)\n\nВ качестве примера для развертывания можно использовать подготовленный terraform код ниже.\n\n### Развертывание VM с помощью Terraform\n\n#### Задать параметры развертывания в [**variables.tf**](./variables.tf)\n* `vm_name` - имя виртуальной машины\n* `vm_zone` - название зоны доступности, в которой будет развертываться VM\n* `vm_disk_size` - размер одного диска в Гб кратно 93Гб. Все диски будут создаваться одинакового размера\n* `vm_image` - образ из которого будет развертываться VM\n\n#### Запустить развертывание\n1. Проверяем конфигурацию рабочего окружения YC в файле [**env-yc-prod.sh**](./env-yc-prod.sh).\\\n   Меняем имя профиля \"prod\" на нужный.\n\n2. Активируем рабочее окружение\\\n    `source env-yc-prod.sh`\n\n3. Инициализируем Terraform\\\n    `terraform init`\n\n4. Развертываем виртуальную машину\\\n    `terraform apply`\n\n5. Подключаемся к VM по SSH\\\n    `ssh admin@\u003cvm-public-ip\u003e`\n\n6. Проверяем состояние дисков после развертывания\\\n    `$ ls -l /dev/disk/by-id/`\n    ```bash\n    md-name-nrd-raid-test:100                   -\u003e ../../md100\n    md-uuid-663a720f:b0c8ab74:be2d83ae:70677d6d -\u003e ../../md100\n    virtio-fhmni7jprp8264t8i5mg                 -\u003e ../../vda\n    virtio-fhmni7jprp8264t8i5mg-part1           -\u003e ../../vda1\n    virtio-fhmni7jprp8264t8i5mg-part2           -\u003e ../../vda2\n    virtio-nrd1                                 -\u003e ../../vdb\n    virtio-nrd2                                 -\u003e ../../vdc\n    ```\n\n    `$ sudo mdadm --query /dev/md100`\n      ```bash\n      /dev/md100: 92.94GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.\n      ```\n\n    `$ sudo mdadm --detail /dev/md100`\n      ```bash\n      /dev/md100:\n                Version  : 1.2\n          Creation Time  : Sun Oct 10 16:14:26 2021\n              Raid Level : raid1\n              Array Size : 97451008 (92.94 GiB 99.79 GB)\n          Used Dev Size  : 97451008 (92.94 GiB 99.79 GB)\n            Raid Devices : 2\n          Total Devices  : 2\n            Persistence  : Superblock is persistent\n\n            Update Time  : Sun Oct 10 16:30:37 2021\n                  State  : clean\n          Active Devices : 2\n        Working Devices  : 2\n          Failed Devices : 0\n          Spare Devices  : 0\n\n      Consistency Policy : resync\n\n                    Name : nrd-raid-test:100 (local to host nrd-raid-test)\n                    UUID : 663a720f:b0c8ab74:be2d83ae:70677d6d\n                  Events : 29\n\n          Number   Major   Minor   RaidDevice State\n            0     252       16        0      active sync   /dev/vdb\n            1     252       32        1      active sync   /dev/vdc\n      ```\n\n7. Записываем тестовые данные на диск\n```bash\n$ sudo -i\n$ echo \"test-1234567890-987654321-abcdefghiklmnopqrstuvwxyz\" \u003e /data/test.txt\n$ cat /data/test.txt\n$ sha1sum /data/test.txt # -\u003e 1108f5f9021d4ba066da47debaa24aea28d8bc9b\n```\n\n### Симулируем отказ одного из дисков в RAID массиве\nВ нашем примере мы используем два диска, собранные в один [RAID-1](https://ru.wikipedia.org/wiki/RAID#RAID_1) массив. Такой массив обеспечивает полную сохранность данных в случае выхода из строя одного из дисков. Для быстрого восстановления уровня отказоустойчивости массива после сбоя одного из дисков необходима его замена.\n\nЧтобы быстро узнавать о подобного рода проблемах рекомендуется настраивать [Уведомления об инциндентах](https://console.cloud.yandex.ru/cloud?section=incident-notifications). Здесь можно увидеть кто уже есть в списке оповещений об инциндентах вашего облака, а также скорректировать этот список, при необходимости. Подробности в [документации](https://cloud.yandex.ru/docs/resource-manager/operations/cloud/notify).\n\nНа практике, перед тем как выполнять какие-то операции с диском, необходимо понимать его состояние. Нормально работащий диск должен находится в состоянии \"READY\" (поле status). В случае отказа, диск будет находится в состоянии \"ERROR\". Состояние диска можно оценить с помощью команды YC CLI, указав в ней id диска как аргумент. Например, `yc compute disk get fhmd0e91sfmksudo9io4`. Результат выполнения команды:\n```yml\nid: fhmd0e91sfmksudo9io4\nfolder_id: u1g32j0789iog4d3cnk3\ncreated_at: \"2021-10-16T11:53:12Z\"\nname: nrd1\ntype_id: network-ssd-nonreplicated\nzone_id: ru-central1-a\nsize: \"99857989632\"\nblock_size: \"4096\"\nstatus: READY\ndisk_placement_policy:\n  placement_group_id: fhm26q5eq2341rgbmhgs\n```\n\n`$ sudo mdadm --manage /dev/md100 --fail /dev/disk/by-id/virtio-nrd1`\n```bash\nmdadm: set /dev/disk/by-id/virtio-nrd1 faulty in /dev/md100\n```\n\n\n## Восстановление диска \u003ca id=\"dr\"/\u003e\n\n  1. [Проверяем состояние дискового массива](#dr-1)\n  2. [Проверяем device-id отказавшего диска](#dr-2)\n  3. [Выводим отказавший диск из массива](#dr-3)\n  4. [Получаем список групп размещения дисков](#dr-4)\n  5. [Определяем группу размещения для отказавшего диска](#dr-5)\n  6. [Отключаем отказавший диск от VM](#dr-6)\n  7. [Создаем новый NRD диск](#dr-7)\n  8. [Подключаем новый диск к VM](#dr-8)\n  9. [Проверяем доступность нового диска после подключения](#dr-9)\n  10. [Копируем таблицу разделов с рабочего диска на новый](#dr-10)\n  11. [Добавляем новый диск в RAID массив](#dr-11)\n  12. [Проверяем состояние массива после добавления диска](#dr-12)\n  13. Проверяем целостность данных\n\n\n### 1. Проверяем состояние дискового массива \u003ca id=\"dr-1\"/\u003e\n\n```bash\n/dev/md100:\n           Version : 1.2\n     Creation Time : Mon Oct 11 15:50:12 2021\n        Raid Level : raid1\n        Array Size : 97451008 (92.94 GiB 99.79 GB)\n     Used Dev Size : 97451008 (92.94 GiB 99.79 GB)\n      Raid Devices : 2\n     Total Devices : 2\n       Persistence : Superblock is persistent\n\n       Update Time : Tue Oct 12 09:18:37 2021\n             State : clean, degraded \n    Active Devices : 1\n   Working Devices : 1\n    Failed Devices : 1\n     Spare Devices : 0\n\nConsistency Policy : resync\n\n              Name : nrd-raid-test:100  (local to host nrd-raid-test)\n              UUID : b64eb7cd:6c0c1924:872fe4c0:bb5487c8\n            Events : 23\n\n    Number   Major   Minor   RaidDevice State\n       -       0        0        0      removed\n       1     252       32        1      active sync   /dev/vdc\n       0     252       16        -      faulty        /dev/vdb\n```\n\n`$ sudo cat /proc/mdstat`\n```bash\nPersonalities : [raid1] \nmd100 : active raid1 vdc[1] vdb[0](F)\n      97451008 blocks super 1.2 [2/1] [_U]      \nunused devices: \u003cnone\u003e\n```\nСбойный диск будет помечен как \"`(F)`\"\n\n\n### 2. Проверяем device-id отказавшего диска \u003ca id=\"dr-2\"/\u003e \n  `$ ls -l /dev/disk/by-id/`\n\n    ```bash\n    md-name-nrd-raid-test:100 -\u003e ../../md100\n    md-uuid-9a5e8799:5d6db030:e7c959c2:38ce99ce -\u003e ../../md100\n    virtio-fhm8rsgmrjc9vmi1kj85 -\u003e ../../vda\n    virtio-fhm8rsgmrjc9vmi1kj85-part1 -\u003e ../../vda1\n    virtio-fhm8rsgmrjc9vmi1kj85-part2 -\u003e ../../vda2\n    virtio-nrd1 -\u003e ../../vdb\n    virtio-nrd2 -\u003e ../../vdc\n    ```\n\n### 3. Выводим отказавший диск из массива \u003ca id=\"dr-3\"/\u003e \nВыводим отказавший диск из массива, используя его device-id\n\n`$ sudo mdadm --manage /dev/md100 --remove /dev/disk/by-id/virtio-nrd1`\n```bash\nmdadm: hot removed /dev/disk/by-id/virtio-nrd1 from /dev/md100\n```\n\n### 4. Получаем список групп размещения дисков \u003ca id=\"dr-4\"/\u003e \n`yc compute disk-placement-group list`\n```bash\n+----------------------+------+---------------+--------+\n|          ID          | NAME |     ZONE      | STATUS |\n+----------------------+------+---------------+--------+\n| fhm26q5eq2341rgbmhgs |      | ru-central1-a | READY  |\n+----------------------+------+---------------+--------+\n```\n\n### 5. Определяем группу размещения для отказавшего диска \u003ca id=\"dr-5\"/\u003e \nСмотрим диски в каждой группе размещения пока не найдем сбойный диск. Фиксируем id группы размещения.\n\n`yc compute disk-placement-group list-disks --id fhm26q5eq2341rgbmhgs`\n```bash\n+----------------------+------+-------------+---------------+--------+----------------------+-------------+\n|          ID          | NAME |    SIZE     |     ZONE      | STATUS |     INSTANCE IDS     | DESCRIPTION |\n+----------------------+------+-------------+---------------+--------+----------------------+-------------+\n| fhmd0e91sfmksudo9io4 | nrd1 | 99857989632 | ru-central1-a | READY  | fhmtfc9ggo2qc6ude23e |             |\n| fhmidi40rdmj4km5u9vd | nrd2 | 99857989632 | ru-central1-a | READY  | fhmtfc9ggo2qc6ude23e |             |\n+----------------------+------+-------------+---------------+--------+----------------------+-------------+\n```\n\n### 6. Отключаем отказавший диск от VM \u003ca id=\"dr-6\"/\u003e \n`yc compute instance list`\n```bash\n+----------------------+---------------+---------------+---------+-----------------+-------------+\n|          ID          |     NAME      |    ZONE ID    | STATUS  |   EXTERNAL IP   | INTERNAL IP |\n+----------------------+---------------+---------------+---------+-----------------+-------------+\n| fhmtfc9ggo2qc6ude23e | nrd-raid-test | ru-central1-a | RUNNING | 62.84.119.106   | 10.128.0.29 |\n+----------------------+---------------+---------------+---------+-----------------+-------------+\n```\n`yc compute instance detach-disk nrd-raid-test --disk-id fhmd0e91sfmksudo9io4`\n```yml\ndone (11s)\nid: fhmtfc9ggo2qc6ude23e\nfolder_id: b1g44j0674iog4o3ovh7\ncreated_at: \"2021-10-16T11:53:17Z\"\nname: nrd-raid-test\nzone_id: ru-central1-a\nplatform_id: standard-v1\nresources:\n  memory: \"4294967296\"\n  cores: \"2\"\n  core_fraction: \"100\"\nstatus: RUNNING\nboot_disk:\n  mode: READ_WRITE\n  device_name: fhmvcmo4p8gs8vu99k0r\n  auto_delete: true\n  disk_id: fhmvcmo4p8gs8vu99k0r\nsecondary_disks:\n- mode: READ_WRITE\n  device_name: nrd2\n  disk_id: fhmidi40rdmj4km5u9vd\nnetwork_interfaces:\n- index: \"0\"\n  mac_address: d0:0d:1d:7b:13:08\n  subnet_id: e9bkhb79tegftff4tfqf\n  primary_v4_address:\n    address: 10.128.0.29\n    one_to_one_nat:\n      address: 62.84.119.106\n      ip_version: IPV4\nfqdn: nrd-raid-test.ru-central1.internal\nscheduling_policy: {}\nnetwork_settings:\n  type: STANDARD\nplacement_policy: {}\n```\n\n### 7. Создаем новый NRD диск \u003ca id=\"dr-7\"/\u003e \nСоздаем новый NRD диск (nrd3) и помещаем его в уже существующую группу размещения.\n\n`yc compute disk create nrd3 \\`\\\n`--type network-ssd-nonreplicated \\`\\\n`--size 93 --zone ru-central1-a \\`\\\n`--disk-placement-group-id fhm26q5eq2341rgbmhgs`\n```yml\ndone (5s)\nid: fhmlnioblb9co9pill3e\nfolder_id: b1g44j0674iog4o3ovh7\ncreated_at: \"2021-10-17T07:04:38Z\"\nname: nrd3\ntype_id: network-ssd-nonreplicated\nzone_id: ru-central1-a\nsize: \"99857989632\"\nblock_size: \"4096\"\nstatus: READY\ndisk_placement_policy:\n  placement_group_id: fhm26q5eq2341rgbmhgs\n```\n\n### 8. Подключаем новый диск к VM \u003ca id=\"dr-8\"/\u003e \n`yc compute instance attach-disk --name nrd-raid-test --disk-name nrd3 --device-name nrd3 --mode rw`\n```yml\ndone (3s)\nid: fhmtfc9ggo2qc6ude23e\nfolder_id: b1g44j0674iog4o3ovh7\ncreated_at: \"2021-10-16T11:53:17Z\"\nname: nrd-raid-test\nzone_id: ru-central1-a\nplatform_id: standard-v1\nresources:\n  memory: \"4294967296\"\n  cores: \"2\"\n  core_fraction: \"100\"\nstatus: RUNNING\nboot_disk:\n  mode: READ_WRITE\n  device_name: fhmvcmo4p8gs8vu99k0r\n  auto_delete: true\n  disk_id: fhmvcmo4p8gs8vu99k0r\nsecondary_disks:\n- mode: READ_WRITE\n  device_name: nrd2\n  disk_id: fhmidi40rdmj4km5u9vd\n- mode: READ_WRITE\n  device_name: nrd3\n  disk_id: fhmlnioblb9co9pill3e\nnetwork_interfaces:\n- index: \"0\"\n  mac_address: d0:0d:1d:7b:13:08\n  subnet_id: e9bkhb79tegftff4tfqf\n  primary_v4_address:\n    address: 10.128.0.29\n    one_to_one_nat:\n      address: 62.84.119.106\n      ip_version: IPV4\nfqdn: nrd-raid-test.ru-central1.internal\nscheduling_policy: {}\nnetwork_settings:\n  type: STANDARD\nplacement_policy: {}\n```\n\n### 9. Проверяем доступность нового диска после подключения \u003ca id=\"dr-9\"/\u003e \n`$ ls -l /dev/disk/by-id/`\n\n  ```bash\n  md-name-nrd-raid-test:100 -\u003e ../../md100\n  md-uuid-9a5e8799:5d6db030:e7c959c2:38ce99ce -\u003e ../../md100\n  virtio-fhm8rsgmrjc9vmi1kj85 -\u003e ../../vda\n  virtio-fhm8rsgmrjc9vmi1kj85-part1 -\u003e ../../vda1\n  virtio-fhm8rsgmrjc9vmi1kj85-part2 -\u003e ../../vda2\n  virtio-nrd2 -\u003e ../../vdc\n  virtio-nrd3 -\u003e ../../vdb\n  ```\n\n### 10. Копируем таблицу разделов с рабочего диска на новый \u003ca id=\"dr-10\"/\u003e \n`$ sudo sfdisk -d /dev/disk/by-id/virtio-nrd2 | sudo sfdisk /dev/disk/by-id/virtio-nrd3`\n```bash\nChecking that no-one is using this disk right now ... OK\n\nDisk /dev/disk/by-id/virtio-nrd3: 93 GiB, 99857989632 bytes, 195035136 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 4096 bytes\nI/O size (minimum/optimal): 4096 bytes / 4096 bytes\nDisklabel type: dos\nDisk identifier: 0x00000000\n\nOld situation:\n\nDevice                            Boot Start       End   Sectors Size Id Type\n/dev/disk/by-id/virtio-nrd3-part1          1 195035135 195035135  93G ee GPT\n\nPartition 1 does not start on physical sector boundary.\n\n\u003e\u003e\u003e Script header accepted.\n\u003e\u003e\u003e Script header accepted.\n\u003e\u003e\u003e Script header accepted.\n\u003e\u003e\u003e Script header accepted.\n\u003e\u003e\u003e Created a new DOS disklabel with disk identifier 0x00000000.\n/dev/disk/by-id/virtio-nrd3-part1: Created a new partition 1 of type 'GPT' and of size 93 GiB.\n/dev/disk/by-id/virtio-nrd3-part2: Done.\n\nNew situation:\nDisklabel type: dos\nDisk identifier: 0x00000000\n\nDevice                            Boot Start       End   Sectors Size Id Type\n/dev/disk/by-id/virtio-nrd3-part1          1 195035135 195035135  93G ee GPT\n\nPartition 1 does not start on physical sector boundary.\n\nThe partition table has been altered.\nCalling ioctl() to re-read partition table.\nSyncing disks.\n```\n\n### 11. Добавляем новый диск в RAID массив \u003ca id=\"dr-11\"/\u003e \n`$ sudo mdadm --manage /dev/md100 --add /dev/disk/by-id/virtio-nrd3`\n```bash\nmdadm: added /dev/disk/by-id/virtio-nrd3\n```\n\n### 12. Проверяем состояние массива после добавления диска \u003ca id=\"dr-12\"/\u003e \n`$ sudo mdadm --detail /dev/md100`\n```bash\n/dev/md100:\n           Version : 1.2\n     Creation Time : Sat Oct 16 11:54:57 2021\n        Raid Level : raid1\n        Array Size : 97451008 (92.94 GiB 99.79 GB)\n     Used Dev Size : 97451008 (92.94 GiB 99.79 GB)\n      Raid Devices : 2\n     Total Devices : 2\n       Persistence : Superblock is persistent\n\n       Update Time : Sun Oct 17 07:12:14 2021\n             State : clean, degraded, recovering\n    Active Devices : 1\n   Working Devices : 2\n    Failed Devices : 0\n     Spare Devices : 1\n\nConsistency Policy : resync\n\n    Rebuild Status : 11% complete\n\n              Name : nrd-raid-test:100  (local to host nrd-raid-test)\n              UUID : 95f26a09:a7e89ebf:65dac840:815cb020\n            Events : 27\n\n    Number   Major   Minor   RaidDevice State\n       2     252       16        0      spare rebuilding   /dev/vdb\n       1     252       32        1      active sync   /dev/vdc\n```\n\n`$ cat /proc/mdstat`\n```bash\nPersonalities : [raid1]\nmd100 : active raid1 vdb[2] vdc[1]\n      97451008 blocks super 1.2 [2/1] [_U]\n      [===\u003e.................]  recovery = 15.8% (15470464/97451008) finish=13.4min speed=101943K/sec\n\nunused devices: \u003cnone\u003e\n```\nНв выводах команд выше видно, что идет процесс восстановления (rebuild/recovery) дискового массива.\nПосле завершения процесса восстановления выводы команд должны стать такими:\n\n`$ sudo mdadm --detail /dev/md100`\n```bash\n/dev/md100:\n           Version : 1.2\n     Creation Time : Sat Oct 16 11:54:57 2021\n        Raid Level : raid1\n        Array Size : 97451008 (92.94 GiB 99.79 GB)\n     Used Dev Size : 97451008 (92.94 GiB 99.79 GB)\n      Raid Devices : 2\n     Total Devices : 2\n       Persistence : Superblock is persistent\n\n       Update Time : Sun Oct 17 07:27:16 2021\n             State : clean\n    Active Devices : 2\n   Working Devices : 2\n    Failed Devices : 0\n     Spare Devices : 0\n\nConsistency Policy : resync\n\n              Name : nrd-raid-test:100  (local to host nrd-raid-test)\n              UUID : 95f26a09:a7e89ebf:65dac840:815cb020\n            Events : 43\n\n    Number   Major   Minor   RaidDevice State\n       2     252       16        0      active sync   /dev/vdb\n       1     252       32        1      active sync   /dev/vdc\n```\n\n`$ cat /proc/mdstat`\n```bash\nPersonalities : [raid1]\nmd100 : active raid1 vdb[2] vdc[1]\n      97451008 blocks super 1.2 [2/2] [UU]\n\nunused devices: \u003cnone\u003e\n```\n### 13. Проверяем целостность данных\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyandex-cloud-examples%2Fyc-nrd-disk-replacement-in-raid-array/lists"}