Связаться со мной:
2 заметки с тегом

GPT

Изменение размера раздела в linux без потери данных.

Условие: диск размечен так

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                        bios_grub
 2      2097kB  514MB   512MB   ext2                  boot
 3      514MB   8706MB  8193MB  linux-swap(v1)
 4      8706MB  2000GB  1992GB  ext4

Раздел 4 это корень установленной на сервере ОС, требуется уменьшить этот раздел до 1000GB не поломав установленуую ОС и данные на разделе.

Для решения этой проблемы нам поможет утилита resize2fs, но для начала нам требуется чтобы модифицируемый раздел был отмонтирован. Поэтому загружаем сервер в recovery/rescue, т. е. с LiveCD.
В LiveCD выполняем

root@server:~# resize2fs /dev/sda4 1000G
resize2fs 1.42 (29-Nov-2011)
Please run 'e2fsck -f /dev/sda4' first.

В первый раз у меня программа ругнулась, что сначала нужно сделать e2fsck, делаем

root@server:~# e2fsck -f /dev/sda4
e2fsck 1.42 (29-Nov-2011)
/dev/sda4: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (478307399, counted=478307291).
Fix<y>? yes

Free inodes count wrong (121507397, counted=121507389).
Fix<y>? yes


/dev/sda4: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda4: 61891/121569280 files (0.1% non-contiguous), 7945765/486253056 blocks

Теперь повторно запускаем resize2fs

root@server:~# resize2fs /dev/sda4 1000G
resize2fs 1.42 (29-Nov-2011)
Resizing the filesystem on /dev/sda4 to 262144000 (4k) blocks.
The filesystem on /dev/sda4 is now 262144000 blocks long.

На этот раз все выполнилось успешно и раздел уменьшился. Грузимся в нормальный режим, проверяем что все работает. А освобожденное на диске место размечаем по своему усмотрению.

2014   e2fsck   GPT   hdd   resize   resize2fs

Замена диска в програмном RAID1 в Linux

Оглавление:

    I. Удаление диска из массива
    II. Добавление диска в массив после замены
     1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск
     2. Добавление диска в массив
    III. Установка загрузчика

У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.

I. Удаление диска из массива

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:

# 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: <none>

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

# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4

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

# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4

А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.

II. Добавление диска в массив после замены

  1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск

После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:

# apt-get install gdisk -y

Выполняем:

# gdisk -l /dev/sda

Где /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

И примерно это для GPT:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.

Копирование разметки для GPT:

# sgdisk -R /dev/sdb /dev/sda

Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.
Даем диску новый случайный UIDD:

# sgdisk -G /dev/sdb

Копирование разметки для MBR:

# sfdisk -d /dev/sda | sfdisk /dev/sdb

Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:

# sfdisk -R /dev/sdb

  2. Добавление диска в массив

Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.

# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4

III. Установка загрузчика

После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:

# grub-install /dev/sdb

Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.
Монтируем корневую файловую систему в  /mnt:

# mount /dev/md2 /mnt

Монтируем boot:

# mount /dev/md0 /mnt/boot

Монтируем /dev, /proc и /sys:

# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys

Затем делаем chroot в примонтированную систему:

# chroot /mnt

И устанавливаем grub на sdb:

# grub-install /dev/sdb

Теперь можно попробовать загрузится в нормальный режим.

P.S. Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device то вам сюда.

2014   debian   gdisk   GPT   mbr   mdadm   raid   raid1   ubuntu