LINUX.ORG.RU

замена диска в mdadm-raid1 с расширением массива

 


0

1

имеется софт-рейд (mdadm) raid1-зеркало (тончее, два). изначально был один 500Г диск, на нем вся файлопомойка. потом докупил я другой, на 1Т (с расчетом на то, что когда-нибудь, в светлом будущем, поменяю маленький тоже на терабайтный), и собрал из них реёд-зеркало.
недавно маленький диск стал чего-то отваливаться из массива с кучей всякого в dmesg, ну и светлое будущее наступило - купил новый на терабайт.

сейчас конфигурация такая: на каждом из дисков есть два раздела - один на 15Г (маленькое зеркало для бэкапов) и второй... так, тут выясняются интересные подробности - на маленьком диске, оказывается, раздел на 400Г, а на большом - на 900, ну а зеркало в итоге - по размеру меньшей из половинок... блин, я думал, разделы одинаковые))

srv> ~$ lsblk | grep -v "sda"
NAME      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sdb         8:16   0 465,8G  0 disk
├─sdb1      8:17   0     1K  0 part
├─sdb2      8:18   0   400G  0 part
│ └─md126   9:126  0   400G  0 raid1 /media/svalka
└─sdb5      8:21   0    15G  0 part
sdc         8:32   0 931,5G  0 disk
├─sdc1      8:33   0     1K  0 part
├─sdc2      8:34   0 912,4G  0 part
│ └─md126   9:126  0   400G  0 raid1 /media/svalka
└─sdc5      8:37   0    15G  0 part

srv> ~$ sudo fdisk -l /dev/sdb /dev/sdc
[sudo] password for srv:

Disk /dev/sdb: 465,8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000cc92b

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1            2048 137901959 137899912 65,8G  5 Extended
/dev/sdb2       137901960 976768064 838866105  400G fd Linux raid autodetect
/dev/sdb5            4096  31459240  31455145   15G fd Linux raid autodetect

Partition table entries are not in disk order.
Disk /dev/sdc: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2ab8c2ce

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sdc1             63   40066109   40066047  19,1G  5 Extended
/dev/sdc2       40066110 1953525167 1913459058 912,4G fd Linux raid autodetect
/dev/sdc5            126   31455269   31455144    15G fd Linux raid autodetect

Partition table entries are not in disk order.

вот данные самого зеркала:

srv> ~$ sudo mdadm -D /dev/md/svalka  
[sudo] password for srv: 
/dev/md/svalka:
        Version : 1.2
  Creation Time : Wed Aug 10 19:52:01 2011
     Raid Level : raid1
     Array Size : 419431892 (400.00 GiB 429.50 GB)
  Used Dev Size : 419431892 (400.00 GiB 429.50 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Nov 25 20:40:22 2016
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : srv:svalka  (local to host srv)
           UUID : 992b06af:42dd8b35:bc2a3843:e50f2e6b
         Events : 5494

    Number   Major   Minor   RaidDevice State
       3       8       18        0      active sync   /dev/sdb2
       2       8       34        1      active sync   /dev/sdc2
srv> ~$ cat /proc/mdstat   
Personalities : [raid1] 
md126 : active raid1 sdb2[3] sdc2[2]
      419431892 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

маленькое на 15Г сейчас просто остановлено, но с ним проще - там ничего ресайзить не надо.

а из большого же я хочу изъять 500Г диск, взамен него поставить 1Т, расширить зеркало до 900Г.
каков должен быть порядок действий? мне видится как-то так:

0. разметить новый диск. по идее, туда бы просто склонировать таблицу разделов.
чем это сделать? parted? sfdisk? или может оказаться, что размер (или там количество блоков) чуть-чуть не совпадает, и лучше ручками?
1. sudo mdadm /dev/mdXXX --fail /dev/sdb2
массив перейдет в состояние degraded
2. sudo mdadm /dev/mdXXX --add /dev/sdXY
где sdXY - раздел на новом диске
3. sudo mdadm --grow -z max
или как-то так...
4. sudo resize2fs -p /dev/mdXXX
да, фс - ext2
5. ...
6. profit!

все верно? или, может быть, можно до добавления нового диска, когда массив будет в degraded, сделать grow и resize2fs, а потом уже добавлять второй диск, чтобы оно только они раз засинкалось? такой фокус возможен? а то сначала синкать, а потом все эти гровы и фс-ресайзы - опять синкать-пересинкать.. или там синкать особо нечего будет?

и еще бонусный вопрос: старый 500Г диск хочу оставить и иногда rsync-ать на него содержимое массива (допустим, за вычетом кинца, когда оно превысит 400Г). можно как-то превратить его из половинки рейда в просто раздел, чтобы фс со всем файлОм осталась при этом как есть? типа обнулить там рейд-суперблок, чтоб был просто раздел и на нем просто фс?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.