拡張ソフトウェアRAID1の構成

拡張ソフトウェアRAID1の構成

2つの同じHDD(両方4TB)を持つシステムがあり、互いに「結合」されています。襲撃1:

$ sudo mdadm --query --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Oct  8 22:22:53 2017
        Raid Level : raid1
        Array Size : 3906887488 (3725.90 GiB 4000.65 GB)
     Used Dev Size : 3906887488 (3725.90 GiB 4000.65 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Fri Aug  4 19:48:49 2023
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : -------:0  (local to host -------)
              UUID : -------
            Events : 13519

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      active sync   /dev/sdb

その上にボリュームグループもあり、@roaimaの答えに基づいて設定を識別できます。

sda                           8:0    0   3.7T  0 disk
└─md0                         9:0    0   3.7T  0 raid1
  └─md0p1                   259:1    0   3.7T  0 part
    └─lukslvm-XXXXXXXXX     253:3    0   3.7T  0 crypt
      ├─vg--XXXXXXXXX-AAAA  253:4    0   500G  0 lvm   /media/AAAA
      └─vg--XXXXXXXXX-BBBB  253:5    0   3.2T  0 lvm   /media/BBBB
sdb                           8:16   0   3.7T  0 disk
└─md0                         9:0    0   3.7T  0 raid1
  └─md0p1                   259:1    0   3.7T  0 part
    └─lukslvm-XXXXXXXXX     253:3    0   3.7T  0 crypt
      ├─vg--XXXXXXXXX-AAAA  253:4    0   500G  0 lvm   /media/AAAA
      └─vg--XXXXXXXXX-BBBB  253:5    0   3.2T  0 lvm   /media/BBBB

この構成を想定して、これらのディスクをより大きなディスク(8 TBなど)に交換するにはどうすればよいですか。何も失わないで(注:マザーボードには物理コネクタがなくなりました)?

4 TBの1つを8 TBに交換し、両方のハードドライブのraid1状態が変わるのを待ってから、active sync別の4TBを8 TBに交換してもう一度待ちますactive sync。その後、明らかにVGを拡張してFSを拡張しますか?

ベストアンサー1

ファイルシステムの一番上から始まり、論理的に下に作業する方が簡単です。 (ただし、実際にはパスの出力が上向きに動作することを意味しますlsblk。)

lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
mmcblk0                 179:0    0 29.7G  0 disk
├─mmcblk0p1             179:1    0   63M  0 part  /boot
├─mmcblk0p2             179:2    0    8G  0 part  /
└─mmcblk0p3             179:3    0 21.7G  0 part
  ├─pi_p3-raid1a        254:2    0    1G  0 lvm
  │ └─md1                 9:1    0 1022M  0 raid1
  │   └─crypt_md1       254:4    0 1006M  0 crypt
  │     └─vgtest-lvtest 254:5    0  100M  0 lvm   /mnt/dsk
  └─pi_p3-raid1b        254:3    0    1G  0 lvm
    └─md1                 9:1    0 1022M  0 raid1
      └─crypt_md1       254:4    0 1006M  0 crypt
        └─vgtest-lvtest 254:5    0  100M  0 lvm   /mnt/dsk

あなたの場合は、ルートファイルシステムから起動したいかもしれません。私の場合はSDカードパーティションでしたmmcblkp02が、画像はあまり役に立ちませんでしたので、ここにマウントされたext4ファイルシステムで始まるレイヤーを作成しました/mnt/dsk。これに従ってください。

  1. /mnt/dskext4次のようなファイルシステムです。ext4test

    findmnt /mnt/dsk
    
    TARGET   SOURCE                    FSTYPE OPTIONS
    /mnt/dsk /dev/mapper/vgtest-lvtest ext4   rw,relatime,data=ordered
    
  2. ツリーの上に移動すると、デバイスによって作成されたLVMコンポーネントであることがわかりますcrypt_md1。実際には、ファイルシステムのLVとVGの名前であるlvsLVとVGの名前を使用して解決できます。pvslvtestvgtest

    lvs
    
      LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lvtest  vgtest -wi-ao---- 100.00m
    
    pvs
    
      PV                    VG     Fmt  Attr PSize    PFree
      /dev/mapper/crypt_md1 vgtest lvm2 a--  1004.00m 904.00m
    
  3. crypt_md1ツリーを1つ上のレベルに移動すると、これが構築されているcrypto_LUKSことがわかります。md1

  4. 一歩上がると、これがあるmd1ことを確認できますlinux_raid_membercat /proc/mdstat

    cat /proc/mdstat
    
    Personalities : [raid6] [raid5] [raid4] [raid1]
    md1 : active raid1 dm-3[1] dm-2[0]
          1046528 blocks super 1.2 [2/2] [UU]
    
    unused devices: <none>
    
  5. 混乱しているかもしれませんが、今では煙とミラーを見ることができます。私はmd1他の既存のLVM VGから2つのRAIDミラーの半分を作成しましたpi_p3。これは本当です。この例では、RAID1ミラーを構築するために使用した2つのコンポーネントをraid1a作成しました。つまり、「物理→VG→2x LV→2xRAID→MD(RAID1)→LUKS→VG→LV→EXT4」になります!以下は、私がビルドするために使用したコマンドの完全なセットです。すでにLVM VGがあることに注意してください。raid1bmdadm --create/dev/pi_p3

    lvcreate --size 1G --name raid1a /dev/pi_p3
    lvcreate --size 1G --name raid1b /dev/pi_p3
    mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/pi_p3/raid1{a,b}
    
    cryptsetup -c aes-xts-plain -s 512 -y luksFormat /dev/md1    # "test"
    cryptsetup luksOpen /dev/md1 crypt_md1
    
    pvcreate /dev/mapper/crypt_md1
    vgcreate vgtest /dev/mapper/crypt_md1
    lvcreate --size 100M --name lvtest vgtest
    
    mkfs -L ext4test -t ext4 /dev/vgtest/lvtest
    mount /dev/vgtest/lvtest /mnt/dsk
    

あなたの場合、LVMコンポーネントの代わりに2つの物理デバイスが表示されますので、raid1aここでraid1b分析を中止します。

構造が予想したものと異なる場合、つまり「RAID - > LUKS - > LVM - > FS構成「そうであれば、この方法を使用して実際の構造を識別できます。


ここで、質問の2番目の部分であるより大きなディスクに構造を拡張する方法について説明します。 1GBraid1aとLVを2GBに置き換えて、raid1bこの例を実装しますraid1craid1d

# Synthesise two "larger disks" from the VG
lvcreate --size 2G --name raid1c /dev/pi_p3
lvcreate --size 2G --name raid1d /dev/pi_p3

# Swap out the first disk
mdadm --manage /dev/md1 --add /dev/pi_p3/raid1c
mdadm --manage /dev/md1 --set-faulty /dev/pi_p3/raid1a
mdadm --manage /dev/md1 --remove /dev/pi_p3/raid1a

# Wait for synchronisation to complete!
cat /proc/mdstat

同期が完了するまで待ちます。。待っていない場合〜する次のステップでは、ファイルシステム全体とそのデータが失われます。

# Swap out the second disk
mdadm --manage /dev/md1 --add /dev/pi_p3/raid1d
mdadm --manage /dev/md1 --set-faulty /dev/pi_p3/raid1b
mdadm --manage /dev/md1 --remove /dev/pi_p3/raid1b

# Grow the new RAID1 array
mdadm --grow /dev/md1 --size max

# Resize the encrypted layer
cryptsetup resize /dev/mapper/crypt_md1

# Resize the PV for the LVM VG
pvresize /dev/mapper/crypt_md1

この時点で、PVサイズが正常に調整されたことを確認するメッセージが表示されます。

  Physical volume "/dev/mapper/crypt_md1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

新しいサイズは2 GB(新しい「ディスク」のサイズ)で表示されますpvs /dev/mapper/crypt_md1vgs vgtest

  PV                    VG     Fmt  Attr PSize PFree
  /dev/mapper/crypt_md1 vgtest lvm2 a--  1.98g 1.88g

  VG     #PV #LV #SN Attr   VSize VFree
  vgtest   1   1   0 wz--n- 1.98g 1.88g

最後に、システムの電源を切るか再起動する前に、2番目のRAID1同期が完了するのを待つ必要があります。

cat /proc/mdstat

おすすめ記事