{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Аникин: заметки с тегом GPT",
    "_rss_description": "Блог об администрировании Linux, BSD и не только",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/anikin.pw\/tags\/gpt\/",
    "feed_url": "https:\/\/anikin.pw\/tags\/gpt\/json\/",
    "icon": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884",
    "authors": [
        {
            "name": "Петр Аникин",
            "url": "https:\/\/anikin.pw\/",
            "avatar": "https:\/\/anikin.pw\/pictures\/userpic\/userpic@2x.jpg?1478690884"
        }
    ],
    "items": [
        {
            "id": "41",
            "url": "https:\/\/anikin.pw\/all\/izmenenie-razmera-razdela-v-linux\/",
            "title": "Изменение размера раздела в linux без потери данных.",
            "content_html": "<p>Условие: диск размечен так<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Number  Start   End     Size    File system     Name  Flags\n 1      1049kB  2097kB  1049kB                        bios_grub\n 2      2097kB  514MB   512MB   ext2                  boot\n 3      514MB   8706MB  8193MB  linux-swap(v1)\n 4      8706MB  2000GB  1992GB  ext4<\/code><\/pre><p>Раздел 4 это корень установленной на сервере ОС, требуется уменьшить этот раздел до 1000GB не поломав установленуую ОС и данные на разделе.<\/p>\n<p>Для решения этой проблемы нам поможет утилита resize2fs, но для начала нам требуется чтобы модифицируемый раздел был отмонтирован. Поэтому загружаем сервер в recovery\/rescue, т. е. с LiveCD.<br \/>\nВ LiveCD выполняем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">root@server:~# resize2fs \/dev\/sda4 1000G\nresize2fs 1.42 (29-Nov-2011)\nPlease run 'e2fsck -f \/dev\/sda4' first.<\/code><\/pre><p>В первый раз у меня программа ругнулась, что сначала нужно сделать e2fsck, делаем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">root@server:~# e2fsck -f \/dev\/sda4\ne2fsck 1.42 (29-Nov-2011)\n\/dev\/sda4: recovering journal\nPass 1: Checking inodes, blocks, and sizes\nPass 2: Checking directory structure\nPass 3: Checking directory connectivity\nPass 4: Checking reference counts\nPass 5: Checking group summary information\nFree blocks count wrong (478307399, counted=478307291).\nFix&lt;y&gt;? yes\n\nFree inodes count wrong (121507397, counted=121507389).\nFix&lt;y&gt;? yes\n\n\n\/dev\/sda4: ***** FILE SYSTEM WAS MODIFIED *****\n\/dev\/sda4: 61891\/121569280 files (0.1% non-contiguous), 7945765\/486253056 blocks<\/code><\/pre><p>Теперь повторно запускаем resize2fs<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">root@server:~# resize2fs \/dev\/sda4 1000G\nresize2fs 1.42 (29-Nov-2011)\nResizing the filesystem on \/dev\/sda4 to 262144000 (4k) blocks.\nThe filesystem on \/dev\/sda4 is now 262144000 blocks long.<\/code><\/pre><p>На этот раз все выполнилось успешно и раздел уменьшился. Грузимся в нормальный режим, проверяем что все работает. А освобожденное на диске место размечаем по своему усмотрению.<\/p>\n",
            "date_published": "2014-12-12T23:02:50+03:00",
            "date_modified": "2015-04-29T19:10:41+03:00",
            "tags": [
                "e2fsck",
                "GPT",
                "hdd",
                "resize",
                "resize2fs"
            ],
            "_date_published_rfc2822": "Fri, 12 Dec 2014 23:02:50 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "41",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "32",
            "url": "https:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/",
            "title": "Замена диска в програмном RAID1 в Linux",
            "content_html": "<p>Оглавление:<\/p>\n<p>\n<ol>\n\t<a href=\"http:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/#del\">I. Удаление диска из массива<\/a><\/br>\n\t<a href=\"http:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/#add\">II. Добавление диска в массив после замены<\/a><\/br>\n\t<a href=\"http:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/#parttabl\">&emsp;1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск<\/a><\/br>\n\t<a href=\"http:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/#adddisk\">&emsp;2. Добавление диска в массив<\/a><\/br>\n\t<a href=\"http:\/\/anikin.pw\/all\/zamena-dika-v-programnom-raid1-v-linux\/#grub\">III. Установка загрузчика<\/a>\n<\/ol><p>\nУ нас есть сервер в котором 2 диска: \/dev\/sda и \/dev\/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это \/dev\/sdb.<p>\n<a name=\"del\"><\/a>\n<b>I. Удаление диска из массива<\/b><p>\n\nПеред заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># cat \/proc\/mdstat \nPersonalities : [raid1] [raid0] [raid6] [raid5] [raid4] \nmd2 : active raid1 sda4[0] sdb4[1]\n      1456504640 blocks super 1.2 [2\/2] [UU]\n      \nmd1 : active raid1 sda3[0] sdb3[1]\n      7996352 blocks super 1.2 [2\/2] [UU]\n      \nmd0 : active raid1 sda2[0] sdb2[1]\n      499392 blocks super 1.2 [2\/2] [UU]\n      \nunused devices: &lt;none&gt;<\/code><\/pre><p>\n\nВ данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это \/boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.<p>\n\n<pre class=\"e2-text-code\"><code class=\"\"># mdadm \/dev\/md0 --remove \/dev\/sdb2\n# mdadm \/dev\/md1 --remove \/dev\/sdb3\n# mdadm \/dev\/md2 --remove \/dev\/sdb4<\/code><\/pre><p>\n\nЕсли разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.<p>\n\n<pre class=\"e2-text-code\"><code class=\"\"># mdadm \/dev\/md0 -f \/dev\/sdb2\n# mdadm \/dev\/md1 -f \/dev\/sdb3\n# mdadm \/dev\/md2 -f \/dev\/sdb4<\/code><\/pre><p>\n\nА затем снова выполним команды по удалению разделов из массива.\nВсе, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.<p>\n<a name=\"add\"><\/a>\n<b>II. Добавление диска в массив после замены<\/b><p>\n<a name=\"parttabl\"><\/a>\n&emsp;&emsp;<b>1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск<\/b><p>\nПосле замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk\nУстановим gdisk:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># apt-get install gdisk -y<\/code><\/pre><p>\nВыполняем:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># gdisk -l \/dev\/sda<\/code><\/pre><p>\nГде \/dev\/sda — исправный диск находящийся в raid.\nВ выводе будет примерно это для MBR:<p>\n<pre class=\"e2-text-code\"><code class=\"\">Partition table scan:\nMBR: MBR only\nBSD: not present\nAPM: not present\nGPT: not present<\/code><\/pre><p>\n\nИ примерно это для GPT:<p>\n<pre class=\"e2-text-code\"><code class=\"\">Partition table scan:\nMBR: protective\nBSD: not present\nAPM: not present\nGPT: present<\/code><\/pre><p>\n\nПеред добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.<p>\n<b>Копирование разметки для GPT:<\/b><p>\n<pre class=\"e2-text-code\"><code class=\"\"># sgdisk -R \/dev\/sdb \/dev\/sda<\/code><\/pre><p>\nЗдесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.<\/br>\nДаем диску новый случайный UIDD:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># sgdisk -G \/dev\/sdb<\/code><\/pre><p>\n<b>Копирование разметки для MBR:<\/b><p>\n<pre class=\"e2-text-code\"><code class=\"\"># sfdisk -d \/dev\/sda | sfdisk \/dev\/sdb<\/code><\/pre><p>\nЗдесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим.\nЕсли разделы не видны в системе, то можно перечитать таблицу разделов командой:<p>\n<\/code># sfdisk -R \/dev\/sdb<\/code><p>\n<a name=\"adddisk\"><\/a>\n&emsp;&emsp;<b>2. Добавление диска в массив<\/b><p>\nКогда мы создали разделы на \/dev\/sdb, то можно добавлять диск в массив.<p>\n<pre class=\"e2-text-code\"><code class=\"\"># mdadm \/dev\/md0 -a \/dev\/sdb2\n# mdadm \/dev\/md1 -a \/dev\/sdb3\n# mdadm \/dev\/md2 -a \/dev\/sdb4<\/code><\/pre><p>\n<a name=\"grub\"><\/a>\n<b>III. Установка загрузчика<\/b><p>\nПосле добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># grub-install \/dev\/sdb<\/code><\/pre><p>\nЕсли сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.<\/br>\nМонтируем корневую файловую систему в  \/mnt:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># mount \/dev\/md2 \/mnt<\/code><\/pre><p>\nМонтируем boot:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># mount \/dev\/md0 \/mnt\/boot<\/code><\/pre><p>\nМонтируем \/dev, \/proc и \/sys:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># mount --bind \/dev \/mnt\/dev\n# mount --bind \/proc \/mnt\/proc\n# mount --bind \/sys  \/mnt\/sys<\/code><\/pre><p>\nЗатем делаем chroot в примонтированную систему:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># chroot \/mnt<\/code><\/pre><p>\nИ устанавливаем grub на sdb:<p>\n<pre class=\"e2-text-code\"><code class=\"\"># grub-install \/dev\/sdb<\/code><\/pre><p>\nТеперь можно попробовать загрузится в нормальный режим.\n<p>\n<b>P.S.<\/b>\nЕсли при установке загрузчика возникнет ошибка Could not find device for \/boot\/boot: not found or not a block device то вам <a href=\"http:\/\/anikin.pw\/all\/could-not-find-device-for-boot-boot-not-found-or-not-a-block-dev\/\">сюда<\/a>.",
            "date_published": "2014-08-08T09:42:17+03:00",
            "date_modified": "2015-01-25T11:26:21+03:00",
            "tags": [
                "debian",
                "gdisk",
                "GPT",
                "mbr",
                "mdadm",
                "raid",
                "raid1",
                "ubuntu"
            ],
            "_date_published_rfc2822": "Fri, 08 Aug 2014 09:42:17 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "32",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}