<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Аникин: заметки с тегом gdisk</title>
<link>https://anikin.pw/tags/gdisk/</link>
<description>Блог об администрировании Linux, BSD и не только</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог об администрировании Linux, BSD и не только</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Замена диска в програмном RAID1 в Linux</title>
<guid isPermaLink="false">32</guid>
<link>https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/</link>
<pubDate>Fri, 08 Aug 2014 09:42:17 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/</comments>
<description>
&lt;p&gt;Оглавление:&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#del"&gt;I. Удаление диска из массива&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#add"&gt;II. Добавление диска в массив после замены&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#parttabl"&gt;&amp;emsp;1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#adddisk"&gt;&amp;emsp;2. Добавление диска в массив&lt;/a&gt;&lt;/br&gt;
&lt;a href="http://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/#grub"&gt;III. Установка загрузчика&lt;/a&gt;
&lt;/ol&gt;&lt;p&gt;
У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.&lt;p&gt;
&lt;a name="del"&gt;&lt;/a&gt;
&lt;b&gt;I. Удаление диска из массива&lt;/b&gt;&lt;p&gt;

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] 
md2 : active raid1 sda4[0] sdb4[1]
      1456504640 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      7996352 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdb2[1]
      499392 blocks super 1.2 [2/2] [UU]
      
unused devices: &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.&lt;p&gt;

&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.&lt;p&gt;

&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

А затем снова выполним команды по удалению разделов из массива.
Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.&lt;p&gt;
&lt;a name="add"&gt;&lt;/a&gt;
&lt;b&gt;II. Добавление диска в массив после замены&lt;/b&gt;&lt;p&gt;
&lt;a name="parttabl"&gt;&lt;/a&gt;
&amp;emsp;&amp;emsp;&lt;b&gt;1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск&lt;/b&gt;&lt;p&gt;
После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk
Установим gdisk:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# apt-get install gdisk -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Выполняем:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# gdisk -l /dev/sda&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Где /dev/sda — исправный диск находящийся в raid.
В выводе будет примерно это для MBR:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

И примерно это для GPT:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.&lt;p&gt;
&lt;b&gt;Копирование разметки для GPT:&lt;/b&gt;&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sgdisk -R /dev/sdb /dev/sda&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.&lt;/br&gt;
Даем диску новый случайный UIDD:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sgdisk -G /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;b&gt;Копирование разметки для MBR:&lt;/b&gt;&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# sfdisk -d /dev/sda | sfdisk /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим.
Если разделы не видны в системе, то можно перечитать таблицу разделов командой:&lt;p&gt;
&lt;/code&gt;# sfdisk -R /dev/sdb&lt;/code&gt;&lt;p&gt;
&lt;a name="adddisk"&gt;&lt;/a&gt;
&amp;emsp;&amp;emsp;&lt;b&gt;2. Добавление диска в массив&lt;/b&gt;&lt;p&gt;
Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;a name="grub"&gt;&lt;/a&gt;
&lt;b&gt;III. Установка загрузчика&lt;/b&gt;&lt;p&gt;
После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# grub-install /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.&lt;/br&gt;
Монтируем корневую файловую систему в  /mnt:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount /dev/md2 /mnt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Монтируем boot:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount /dev/md0 /mnt/boot&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Монтируем /dev, /proc и /sys:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Затем делаем chroot в примонтированную систему:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# chroot /mnt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
И устанавливаем grub на sdb:&lt;p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# grub-install /dev/sdb&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
Теперь можно попробовать загрузится в нормальный режим.
&lt;p&gt;
&lt;b&gt;P.S.&lt;/b&gt;
Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device то вам &lt;a href="http://anikin.pw/all/could-not-find-device-for-boot-boot-not-found-or-not-a-block-dev/"&gt;сюда&lt;/a&gt;.</description>
</item>


</channel>
</rss>