2023/07/14

【解決】mdadmでのRAID1にNVMe SSDを追加後、再起動したらOSが起動しない(RAID Arrayが起動しない)

mdadmで構成管理しているRAID1の構成を変更した。これまではSATA SSD 2本(1本は内蔵、もう一本はUSB Type-Cでの外付け)であったが、外付けのSSDをNVMe SSD(内蔵)に変更した。

変更自体はサクッと終わったが、再起動したらRAID1 Arrayが立ち上がってこない(/パーティションのArrayが上がってこないので、ブートに失敗する)。何度再構成しても、再起動したら消える。


原因と対策

bootの際に使用されるinitramfsの中に書き込まれた/etc/mdadm.confの中で、Linux RAIDパーティションを検索する対象として、NVMeデバイス上のパーティションを見るようになっていなかった。

/etc/mdadm.confのDEVICE行を編集し/etc/nvme0n1p*を検索するようにする。今回は下記のようにした。

DEVICE /dev/hd*[0-9] /dev/sd*[0-9] /dev/nvme[0-9]n[0-9]p[0-9]

initramfsを再構築する。gentooを使っているので、genkernelを使う

# mount /boot
# genkernel initramfs

これで解決した。


考えたことなど

原因として最初に考えたのは、以前RAID1を移植した時にも再起動したらRAID 1が立ち上がらない経験から、mdadmでの変更情報が保存されていない可能性。

たとえば、mdadm --removeをやったあとに再起動する必要がある、など。そこで、一旦再起動させてからmdadm --addするようにしてみた。

後述するが、RAID1 Arrayを手動起動させた段階ですでに、従来のSATA SSDしか見えていないので、mdadm --removeをしようがないので、起動後に再起動させる。

すると、片系だけの構成にはなっているがRAID1 Arrayは起動するので、mdadm --addをやってみるが、再起動したらArrayが起動しなくなる。

そこで、RAID1を構成するパーティション(/etc/nvme0n1pX)が見えないため、RAID1 Arrayを起動できていない可能性を考えた。/dev内のデバイス名が異なる可能性もゼロではないが、そこまで行くとめんどくさい問題のため、デバイス名は正しいと仮定した。

mdadmの起動時に使われる設定は/etc/mdadm.confに含まれており、DEVICE行がLinux RAIDパーティションを検索する対象デバイスを指定している。ここに/etc/nvme0n1pXを検索対象に入れる文字列が入っていなかったので追加し、mdadm --addをした。しかし、OS再起動したらRAID1 Arrayは起動しなかった。

ここまでを何回か繰り返してみたが解決できずにいた所、ふと、OS起動時に/etc/mdadm.confは見えるのか?と思いついたところで、分かった。

OS起動時に必要なものはinitramfsの中に含まれており、その中の設定情報に基づいてOSは起動している。ということは、initramfsの再構築が必要ではないだろうかと考え、解決できた。


一連の作業手順

新しいディスクのパーティションを作成。既存のSSDは500GBだったが、新しいSSDは1TBなので、当面は500GBに合わせたRAID1構成になるが、将来的に拡張しやすくするために大きめにした。(mdadmのRAID1では、2つのパーティションのサイズが異なってても問題なくArrayが組める。)

# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WD_BLACK SN770 1TB
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: gpt
Disk identifier: C974D188-5FEA-C04A-BB7F-452BDBC8C8E2

Device              Start        End    Sectors  Size Type
/dev/nvme0n1p1       2048    1050623    1048576  512M EFI System
/dev/nvme0n1p2    1050624    1116159      65536   32M BIOS boot
/dev/nvme0n1p3    1116160  210831359  209715200  100G Linux RAID
/dev/nvme0n1p4  210831360 1469122559 1258291200  600G Linux RAID
/dev/nvme0n1p5 1469122560 1888552959  419430400  200G Linux LVM
/dev/nvme0n1p6 1888552960 1953523711   64970752   31G Linux swap

# fdisk -l /dev/sda
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Crucial_CT500MX2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0D638A13-AA1D-4131-8BB7-6DE88A59EDBA

Device         Start       End   Sectors  Size Type
/dev/sda1       2048   1050623   1048576  512M EFI System
/dev/sda2    1050624   1116159     65536   32M BIOS boot
/dev/sda3    1116160 126945279 125829120   60G Linux RAID
/dev/sda4  126945280 756090879 629145600  300G Linux RAID
/dev/sda5  756090880 942737407 186646528   89G Linux LVM
/dev/sda6  942737408 976773134  34035727 16.2G Linux swap

#


現在のRAID1の状況を念のために確認

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 sdb4[2] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 sdb3[2] sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

# mdadm --detail /dev/md3
/dev/md3:
           Version : 1.2
     Creation Time : Fri Nov 30 02:19:12 2012
        Raid Level : raid1
        Array Size : 62913536 (60.00 GiB 64.42 GB)
     Used Dev Size : 62913536 (60.00 GiB 64.42 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Jul 13 18:28:02 2023
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : edo:/  (local to host edo)
              UUID : 1a4518b9:879d5121:f1651760:8b1a1f02
            Events : 1637830

    Number   Major   Minor   RaidDevice State
       2       8       19        0      active sync   /dev/sdb3
       3       8        3        1      active sync   /dev/sda3

#


Arrayにディスクを追加して様子を見てみる。/proc/mdstat上には変化が出ない(ディスク2本で構成したRAID1のため、3本目は予備(スペア)として認識されるのみ)

# mdadm --manage /dev/md3 --add /dev/nvme0n1p3
mdadm: added /dev/nvme0n1p3

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 sdb4[2] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4](S) sdb3[2] sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

# mdadm --detail /dev/md3
/dev/md3:
           Version : 1.2
     Creation Time : Fri Nov 30 02:19:12 2012
        Raid Level : raid1
        Array Size : 62913536 (60.00 GiB 64.42 GB)
     Used Dev Size : 62913536 (60.00 GiB 64.42 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Jul 13 18:30:06 2023
             State : clean
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : resync

              Name : edo:/  (local to host edo)
              UUID : 1a4518b9:879d5121:f1651760:8b1a1f02
            Events : 1637831

    Number   Major   Minor   RaidDevice State
       2       8       19        0      active sync   /dev/sdb3
       3       8        3        1      active sync   /dev/sda3

       4     259        3        -      spare   /dev/nvme0n1p3

#


外付けSSDに「異常あり」フラグを立てる。それにより、予備として認識されていたディスクへ同期が始まる

# mdadm --fail /dev/md3 /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md3

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 sdb4[2] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4] sdb3[2](F) sda3[3]
      62913536 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  3.0% (1945728/62913536) finish=7.3min speed=138980K/sec

unused devices: <none>

# mdadm --detail /dev/md3
/dev/md3:
           Version : 1.2
     Creation Time : Fri Nov 30 02:19:12 2012
        Raid Level : raid1
        Array Size : 62913536 (60.00 GiB 64.42 GB)
     Used Dev Size : 62913536 (60.00 GiB 64.42 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Jul 13 18:35:03 2023
             State : clean, degraded, recovering
    Active Devices : 1
   Working Devices : 2
    Failed Devices : 1
     Spare Devices : 1

Consistency Policy : resync

    Rebuild Status : 13% complete

              Name : edo:/  (local to host edo)
              UUID : 1a4518b9:879d5121:f1651760:8b1a1f02
            Events : 1637873

    Number   Major   Minor   RaidDevice State
       4     259        3        0      spare rebuilding   /dev/nvme0n1p3
       3       8        3        1      active sync   /dev/sda3

       2       8       19        -      faulty   /dev/sdb3

#


外付けSSDをArrayから取り外す前に、(別に待つ必要はないが)mdadm --detailに変化があるかを見たかったので、同期が完了するの待ってみた。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 sdb4[2] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4] sdb3[2](F) sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

root@edo ~ Thu 13 Jul 2023 06:42:40 PM JST JST(+0900)
# mdadm --detail /dev/md3
/dev/md3:
           Version : 1.2
     Creation Time : Fri Nov 30 02:19:12 2012
        Raid Level : raid1
        Array Size : 62913536 (60.00 GiB 64.42 GB)
     Used Dev Size : 62913536 (60.00 GiB 64.42 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Jul 13 18:42:49 2023
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : resync

              Name : edo:/  (local to host edo)
              UUID : 1a4518b9:879d5121:f1651760:8b1a1f02
            Events : 1638040

    Number   Major   Minor   RaidDevice State
       4     259        3        0      active sync   /dev/nvme0n1p3
       3       8        3        1      active sync   /dev/sda3

       2       8       19        -      faulty   /dev/sdb3

#


外付けSSDをArrayから切り離す。mdadm --detailで、faultyになっていたディスクが消えているのがわかる。

# mdadm --remove /dev/md3 /dev/sdb3
mdadm: hot removed /dev/sdb3 from /dev/md3

# mdadm --detail /dev/md3
/dev/md3:
           Version : 1.2
     Creation Time : Fri Nov 30 02:19:12 2012
        Raid Level : raid1
        Array Size : 62913536 (60.00 GiB 64.42 GB)
     Used Dev Size : 62913536 (60.00 GiB 64.42 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Jul 13 18:43:30 2023
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : edo:/  (local to host edo)
              UUID : 1a4518b9:879d5121:f1651760:8b1a1f02
            Events : 1638041

    Number   Major   Minor   RaidDevice State
       4     259        3        0      active sync   /dev/nvme0n1p3
       3       8        3        1      active sync   /dev/sda3

root@edo ~ Thu 13 Jul 2023 06:43:30 PM JST JST(+0900)
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 sdb4[2] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 3/3 pages [12KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4] sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

#


以上で、交換は終わり。

続いて、/dev/md4も同じように交換を行った。状況の確認コマンドを除くと、本当に単純作業。

# mdadm --manage /dev/md4 --add /dev/nvme0n1p4
mdadm: added /dev/nvme0n1p4

# mdadm --fail /dev/md4 /dev/sdb4
mdadm: set /dev/sdb4 faulty in /dev/md4

# mdadm --remove /dev/md4 /dev/sdb4
mdadm: hot removed /dev/sdb4 from /dev/md4

#


各コマンドの実行後の状態:mdadm --add

# mdadm --manage /dev/md4 --add /dev/nvme0n1p4
mdadm: added /dev/nvme0n1p4

root@edo ~ Thu 13 Jul 2023 06:44:26 PM JST JST(+0900)
# mdadm --detail /dev/md4
/dev/md4:
           Version : 1.2
     Creation Time : Sat Aug  1 16:49:39 2015
        Raid Level : raid1
        Array Size : 314441728 (299.88 GiB 321.99 GB)
     Used Dev Size : 314441728 (299.88 GiB 321.99 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Thu Jul 13 18:44:56 2023
             State : clean
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1

Consistency Policy : bitmap

              Name : edo:/data  (local to host edo)
              UUID : 8f55590b:38f15e8a:4ea20fad:c34229d8
            Events : 6159687

    Number   Major   Minor   RaidDevice State
       2       8       20        0      active sync   /dev/sdb4
       3       8        4        1      active sync   /dev/sda4

       4     259        4        -      spare   /dev/nvme0n1p4


各コマンドの実行後の状態:mdadm --fail

# mdadm --detail /dev/md4
/dev/md4:
           Version : 1.2
     Creation Time : Sat Aug  1 16:49:39 2015
        Raid Level : raid1
        Array Size : 314441728 (299.88 GiB 321.99 GB)
     Used Dev Size : 314441728 (299.88 GiB 321.99 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Thu Jul 13 18:47:50 2023
             State : active, degraded, recovering
    Active Devices : 1
   Working Devices : 2
    Failed Devices : 1
     Spare Devices : 1

Consistency Policy : bitmap

    Rebuild Status : 0% complete

              Name : edo:/data  (local to host edo)
              UUID : 8f55590b:38f15e8a:4ea20fad:c34229d8
            Events : 6159700

    Number   Major   Minor   RaidDevice State
       4     259        4        0      spare rebuilding   /dev/nvme0n1p4
       3       8        4        1      active sync   /dev/sda4

       2       8       20        -      faulty   /dev/sdb4


# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 nvme0n1p4[4] sdb4[2](F) sda4[3]
      314441728 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  0.9% (3127232/314441728) finish=24.8min speed=208482K/sec
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4] sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

#


各コマンドの実行後の状態:mdadm --remove


# mdadm --detail /dev/md4
/dev/md4:
           Version : 1.2
     Creation Time : Sat Aug  1 16:49:39 2015
        Raid Level : raid1
        Array Size : 314441728 (299.88 GiB 321.99 GB)
     Used Dev Size : 314441728 (299.88 GiB 321.99 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Thu Jul 13 20:18:01 2023
             State : active
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : edo:/data  (local to host edo)
              UUID : 8f55590b:38f15e8a:4ea20fad:c34229d8
            Events : 6162675

    Number   Major   Minor   RaidDevice State
       4     259        4        0      active sync   /dev/nvme0n1p4
       3       8        4        1      active sync   /dev/sda4

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10] [linear] [multipath]
md4 : active raid1 nvme0n1p4[4] sda4[3]
      314441728 blocks super 1.2 [2/2] [UU]
      bitmap: 2/3 pages [8KB], 65536KB chunk

md3 : active raid1 nvme0n1p3[4] sda3[3]
      62913536 blocks super 1.2 [2/2] [UU]

unused devices: <none>

#


最終的なディスクの構成はこんな感じになっている

# lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda                   8:0    0 465.8G  0 disk
|-sda1                8:1    0   512M  0 part
|-sda2                8:2    0    32M  0 part
|-sda3                8:3    0    60G  0 part
| `-md3               9:3    0    60G  0 raid1 /
|-sda4                8:4    0   300G  0 part
| `-md4               9:4    0 299.9G  0 raid1 /data
|-sda5                8:5    0    89G  0 part
| `-vg_edo0-lv_edo0 254:0    0   178G  0 lvm   /data2
`-sda6                8:6    0  16.2G  0 part  [SWAP]
nvme0n1             259:0    0 931.5G  0 disk
|-nvme0n1p1         259:1    0   512M  0 part
|-nvme0n1p2         259:2    0    32M  0 part
|-nvme0n1p3         259:3    0   100G  0 part
| `-md3               9:3    0    60G  0 raid1 /
|-nvme0n1p4         259:4    0   600G  0 part
| `-md4               9:4    0 299.9G  0 raid1 /data
|-nvme0n1p5         259:5    0   200G  0 part
| `-vg_edo0-lv_edo0 254:0    0   178G  0 lvm   /data2
`-nvme0n1p6         259:6    0    31G  0 part


おまけ(lvmのディスク交換)

fdiskの出力を見るとわかるように、ディスクの後ろの方にLinux LVMの領域を確保している。こちらは、それほど重要ではないが、容量を食うデータ用にRAID0の保存領域を作成している。

今回は、外付けSSDを撤去するため、このRAID0 Arrayに入っているデータも移行させる必要がある。その時の作業の記録


まず状況の確認。vgdisplay -vを取り忘れた(涙)。

# pvs
  PV         VG      Fmt  Attr PSize   PFree
  /dev/sda5  vg_edo0 lvm2 a--  <89.00g     0
  /dev/sdb5  vg_edo0 lvm2 a--  <88.97g 12.00m

# pvs -o+pv_used
  PV         VG      Fmt  Attr PSize   PFree  Used
  /dev/sda5  vg_edo0 lvm2 a--  <89.00g     0  <89.00g
  /dev/sdb5  vg_edo0 lvm2 a--  <88.97g 12.00m <88.96g

# pvdisplay -v
  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               vg_edo0
  PV Size               89.00 GiB / not usable 32.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              22776
  Free PE               3
  Allocated PE          22773
  PV UUID               ELu5Gk-jyLE-RZ0m-j4xj-TBGV-sL4C-UPu8j1

  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               vg_edo0
  PV Size               89.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              22783
  Free PE               0
  Allocated PE          22783
  PV UUID               G4Pmwg-D532-OCe1-nohw-Sen4-328j-tFWH1b

#


ちなみに、ディスクに空きはない(Free PEがほとんどない)のでこの状況でデータの移動をさせようとしてもエラーになる。

# pvmove /dev/sdb5
  No extents available for allocation.

#


Physical Volumeを追加して、各種確認

# pvcreate /dev/nvme0n1p5
  Physical volume "/dev/nvme0n1p5" successfully created.

# pvs
  PV             VG      Fmt  Attr PSize   PFree
  /dev/nvme0n1p5         lvm2 ---  200.00g 200.00g
  /dev/sda5      vg_edo0 lvm2 a--  <89.00g      0
  /dev/sdb5      vg_edo0 lvm2 a--  <88.97g  12.00m

# pvs -o+pv_used
  PV             VG      Fmt  Attr PSize    PFree    Used
  /dev/nvme0n1p5 vg_edo0 lvm2 a--  <200.00g <111.04g <88.96g
  /dev/sda5      vg_edo0 lvm2 a--   <89.00g       0  <89.00g
  /dev/sdb5      vg_edo0 lvm2 a--   <88.97g   12.00m <88.96g

# lvmdiskscan -l
  WARNING: only considering LVM devices
  /dev/nvme0n1p5 [     200.00 GiB] LVM physical volume
  /dev/sda5      [      89.00 GiB] LVM physical volume
  /dev/sdb5      [      89.00 GiB] LVM physical volume
  0 LVM physical volume whole disks
  3 LVM physical volumes

# vgdisplay -v
  --- Volume group ---
  VG Name               vg_edo0
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  19
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               377.96 GiB
  PE Size               4.00 MiB
  Total PE              96758
  Alloc PE / Size       45556 / 177.95 GiB
  Free  PE / Size       51202 / <200.01 GiB
  VG UUID               9K63Pu-aOQu-fNWd-tfqc-6Qsw-qoMF-TGYrUw

  --- Logical volume ---
  LV Path                /dev/vg_edo0/lv_edo0
  LV Name                lv_edo0
  VG Name                vg_edo0
  LV UUID                EtAHVL-YQtl-1ZjA-R3wX-Lw3S-try6-RXk0Kz
  LV Write Access        read/write
  LV Creation host, time edo, 2022-07-03 17:48:04 +0900
  LV Status              available
  # open                 1
  LV Size                177.95 GiB
  Current LE             45556
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

  --- Physical volumes ---
  PV Name               /dev/sdb5
  PV UUID               ELu5Gk-jyLE-RZ0m-j4xj-TBGV-sL4C-UPu8j1
  PV Status             allocatable
  Total PE / Free PE    22776 / 3

  PV Name               /dev/sda5
  PV UUID               G4Pmwg-D532-OCe1-nohw-Sen4-328j-tFWH1b
  PV Status             allocatable
  Total PE / Free PE    22783 / 0

  PV Name               /dev/nvme0n1p5
  PV UUID               UAGGew-98sS-Z3K3-DlNv-7dJB-6DBb-Xs4X62
  PV Status             allocatable
  Total PE / Free PE    51199 / 51199

#


外付けSSDのディスク領域を開放。pvs -o+pv_usedで見ると、外付けSSD(sdb5)の使用率が0になったのがわかる。

# pvmove /dev/sdb5
  /run/lvm/lvmpolld.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmpolld. Proceeding with polling without using lvmpolld.
  WARNING: Check global/use_lvmpolld in lvm.conf or the lvmpolld daemon state.
  /dev/sdb5: Moved: 0.14%
  /dev/sdb5: Moved: 6.16%
  /dev/sdb5: Moved: 12.22%
  /dev/sdb5: Moved: 18.25%
  /dev/sdb5: Moved: 24.27%
  /dev/sdb5: Moved: 30.29%
  /dev/sdb5: Moved: 36.34%
  /dev/sdb5: Moved: 42.39%
  /dev/sdb5: Moved: 48.43%
  /dev/sdb5: Moved: 54.46%
  /dev/sdb5: Moved: 60.51%
  /dev/sdb5: Moved: 66.55%
  /dev/sdb5: Moved: 72.58%
  /dev/sdb5: Moved: 78.61%
  /dev/sdb5: Moved: 84.64%
  /dev/sdb5: Moved: 90.69%
  /dev/sdb5: Moved: 96.72%
  /dev/sdb5: Moved: 100.00%

# pvs -o+pv_used
  PV             VG      Fmt  Attr PSize    PFree    Used
  /dev/nvme0n1p5 vg_edo0 lvm2 a--  <200.00g <111.04g <88.96g
  /dev/sda5      vg_edo0 lvm2 a--   <89.00g       0  <89.00g
  /dev/sdb5      vg_edo0 lvm2 a--   <88.97g  <88.97g      0

# vgdisplay -v
  --- Volume group ---
  VG Name               vg_edo0
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  22
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               377.96 GiB
  PE Size               4.00 MiB
  Total PE              96758
  Alloc PE / Size       45556 / 177.95 GiB
  Free  PE / Size       51202 / <200.01 GiB
  VG UUID               9K63Pu-aOQu-fNWd-tfqc-6Qsw-qoMF-TGYrUw

  --- Logical volume ---
  LV Path                /dev/vg_edo0/lv_edo0
  LV Name                lv_edo0
  VG Name                vg_edo0
  LV UUID                EtAHVL-YQtl-1ZjA-R3wX-Lw3S-try6-RXk0Kz
  LV Write Access        read/write
  LV Creation host, time edo, 2022-07-03 17:48:04 +0900
  LV Status              available
  # open                 1
  LV Size                177.95 GiB
  Current LE             45556
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

  --- Physical volumes ---
  PV Name               /dev/sdb5
  PV UUID               ELu5Gk-jyLE-RZ0m-j4xj-TBGV-sL4C-UPu8j1
  PV Status             allocatable
  Total PE / Free PE    22776 / 22776

  PV Name               /dev/sda5
  PV UUID               G4Pmwg-D532-OCe1-nohw-Sen4-328j-tFWH1b
  PV Status             allocatable
  Total PE / Free PE    22783 / 0

  PV Name               /dev/nvme0n1p5
  PV UUID               UAGGew-98sS-Z3K3-DlNv-7dJB-6DBb-Xs4X62
  PV Status             allocatable
  Total PE / Free PE    51199 / 28426

# 


あとは外付けSSD(sdb5)の切り離し。sdb5がVG(vg_edo0)から外れていることがわかる。

# vgreduce vg_edo0 /dev/sdb5
  Removed "/dev/sdb5" from volume group "vg_edo0"

# pvs -o+pv_used
  PV             VG      Fmt  Attr PSize    PFree    Used
  /dev/nvme0n1p5 vg_edo0 lvm2 a--  <200.00g <111.04g <88.96g
  /dev/sda5      vg_edo0 lvm2 a--   <89.00g       0  <89.00g
  /dev/sdb5              lvm2 ---    89.00g   89.00g      0


最後にPVを削除。

# pvremove /dev/sdb5


おまけ2(EFIパーティションの移植、Grub2のインストール)

/bootにマウントするEFIパーティションはFATでフォーマットが必要だが、久しぶりにmkfs.fatをしようとしたらコマンドがないと言われた。

emerge dosfstools

で必要なツールをインストール。パーティションをフォーマットして、内蔵SATA SSDの/bootからコピーを作った。

# mkfs.fat /dev/nvme0n1p1
mkfs.fat 4.2 (2021-01-31)

# mount /boot_backup/

# mount /boot

# rsync --delete-after -vas /boot/ /boot_backup/


続いてgrub2のインストール。しかし、単純にやってもエラーになった。

# grub-install /dev/nvme0n1
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.

#


/boot_backupがマウントされている状態で、--boot-directoryを指定してもだめ。

# grub-install --boot-directory=/boot_backup /dev/nvme0n1
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.

#


エラーメッセージの通り、EFIディレクトリを指定するとインストールできた。

# grub-install --boot-directory=/boot_backup --efi-directory=/boot_backup/EFI /dev/nvme0n1
Installing for x86_64-efi platform.
Installation finished. No error reported.

#


Linuxがブートできない場合の対処

OSを再起動した際、下記のようなエラーが出た。/パーティションがみつからないというエラー。

>>Determining root device (trying UUID=0c0ea181-ccdd-428b-820e-0f1f039470eb) ....
!! Block device UUID=0c0ea181-ccdd-428b-820e-0f1f039470eb is not a valid root device ...
!! Could not find the root block device in UUID=0c0ea181-ccdd-428b-820e-0f1f039470eb.
!! Please specify another value or:
!! - press Enter for the same
!! - type "shell" for a shell
!! - type "q" to skip ...
root block device(UUID=0c0ea181-ccdd-428b-820e-0f1f039470eb) ::


このエラーが出た場合はOSが起動してこないのでどうしようもない。

Rescue CDなどを作って修復する方法があるが、今回の場合はもっと簡単な方法がある。

今回は/パーティションを提供するRAID1 Arrayがみつからないことが原因なので、mdadm --runを使ってRAID1 Arrayを手動で起動してやる。Read onlyで開かれているのでmdadm --readwriteで読み書きできるようにする。

root block device(UUID=0c0ea181-ccdd-428b-820e-0f1f039470eb) :: shell
** To leave and try again just press <Ctrl>+D

Generating "run/initramfs/gksosreport.txt" ...
>> You might want to save "/run/initramfs/gksosreport.txt" to a USB stick or /boot
>> after mounting them and attach it to a bug report. 

>> Welcome to Genkernel 4.3.2 (2023-07-08 09:16:19 UTC) rescue shell!
>> ...running Linux kernel 6.1.38-gentoo-x86_64

rescueshell / # mdadm --run /dev/md3
rescueshell / # mdadm --readwrite /dev/md3
rescueshell / # mdadm --run /dev/md4
rescueshell / # mdadm --readwrite /dev/md4
rescueshell / # exit


ここまでできると、あとは通常通りに起動してくれる。ただし、起動してもRAID1の構成は十分にできていないため、mdadm --addで欠落したディスクをArrayに入れてやる必要がある。


ちなみに、各ディスクのUUIDはblkidで取得できる。

下記はRAID1 Arrayが起動した状態で取得しているが、/dev/md3が前述の/パーティションのUUIDを持っていることが確認できる。

また、1つのRAID1 Arrayを構成するパーティションが同じUUIDを持つ(md3を構成するsda3とnvme0n1p3が同じUUIDをもっている)ことが勉強になった。

# blkid
/dev/nvme0n1p5: UUID="UAGGew-98sS-Z3K3-DlNv-7dJB-6DBb-Xs4X62" TYPE="LVM2_member" PARTUUID="4d23d3ab-3a65-9744-bbeb-b147789ded8f"
/dev/nvme0n1p3: UUID="1a4518b9-879d-5121-f165-17608b1a1f02" UUID_SUB="e75bc08c-a616-8966-4fdd-39ccf0fc5646" LABEL="edo:/" TYPE="linux_raid_member" PARTUUID="1742520e-bb61-4e41-b3e1-ca5767db94d9"
/dev/nvme0n1p1: UUID="1DD0-D3E1" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="34e3098c-e14f-a04b-b5cf-3bca874dee67"
/dev/nvme0n1p6: UUID="204c7f7a-41ff-4f18-b7e0-e1e34066be99" TYPE="swap" PARTUUID="fb151809-b140-d746-9caa-9b2c29726423"
/dev/nvme0n1p4: UUID="8f55590b-38f1-5e8a-4ea2-0fadc34229d8" UUID_SUB="c99e61e8-1f75-90bf-4186-40cc8d18c8c6" LABEL="edo:/data" TYPE="linux_raid_member" PARTUUID="cad41073-1720-ae45-81b4-01823439f22c"
/dev/nvme0n1p2: PARTUUID="941230e3-fd0a-e646-9f46-1de1c0886ec3"
/dev/md4: UUID="569fc3d0-1e84-4412-b7c9-2ced47d25ac9" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg_edo0-lv_edo0: UUID="0cda77ed-327a-4aee-b916-082b4e304f9f" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda4: UUID="8f55590b-38f1-5e8a-4ea2-0fadc34229d8" UUID_SUB="fd0be0a1-23df-695d-e7d0-4666dc7b4716" LABEL="edo:/data" TYPE="linux_raid_member" PARTUUID="a7c18353-4057-4d40-a096-69a10867b3aa"
/dev/sda2: PARTLABEL="BIOS boot partition" PARTUUID="621d2aeb-7b5d-4674-9077-fee730546935"
/dev/sda5: UUID="G4Pmwg-D532-OCe1-nohw-Sen4-328j-tFWH1b" TYPE="LVM2_member" PARTUUID="91b5638b-82e4-d84a-b3bf-389bbda05689"
/dev/sda3: UUID="1a4518b9-879d-5121-f165-17608b1a1f02" UUID_SUB="b658a726-53a8-c98a-21de-2e9d437930f4" LABEL="edo:/" TYPE="linux_raid_member" PARTUUID="7d59985c-30d0-5b43-810d-0941cd85c3fe"
/dev/sda1: UUID="055D-470D" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="42eb49d8-eaca-43b4-8b46-b67346ba40fd"
/dev/sda6: UUID="d61b6f34-5610-4d06-9865-386e1507bc16" TYPE="swap" PARTUUID="e8f46a83-ce67-004f-9020-1bdff9511c53"
/dev/md3: UUID="0c0ea181-ccdd-428b-820e-0f1f039470eb" BLOCK_SIZE="4096" TYPE="ext4"

#

 




 

 

0 件のコメント:

コメントを投稿