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 件のコメント:
コメントを投稿