交換RAID1ディスクにパーティションテーブルをコピーしようとしましたが、ソースパーティションテーブルが空です。

交換RAID1ディスクにパーティションテーブルをコピーしようとしましたが、ソースパーティションテーブルが空です。

私のRAID1アレイ(/ dev / sda)のディスクの1つに最終エラーの兆候が表示され、エラーが発生してアレイから削除されました。

その後、ディスクを交換して再起動し、ディスクをアレイに追加するためにパーティションをコピーするプロセスを開始しましたが、問題が発生しました。

私が使用した最後のコマンドは次のとおりです。

sgdisk -R /dev/sdb /dev/sda

lsblkは/ dev / sdbの正しいパーティションを表示します。

[root@server /]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1     259:1    0   477G  0 disk  
├─nvme0n1p3 259:4    0   7.8G  0 part  
│ └─md3       9:3    0   7.8G  0 raid1 /tmp
├─nvme0n1p1 259:2    0   511M  0 part  /boot/efi
├─nvme0n1p4 259:5    0   7.8G  0 part  [SWAP]
└─nvme0n1p2 259:3    0 460.8G  0 part  
  └─md2       9:2    0 460.8G  0 raid1 /
sdb           8:16   0   3.7T  0 disk  
└─sdb1        8:17   0   3.7T  0 part  
  └─md4       9:4    0   3.7T  0 raid1 /var
nvme1n1     259:0    0   477G  0 disk  
├─nvme1n1p4 259:9    0   7.8G  0 part  [SWAP]
├─nvme1n1p2 259:7    0 460.8G  0 part  
│ └─md2       9:2    0 460.8G  0 raid1 /
├─nvme1n1p3 259:8    0   7.8G  0 part  
│ └─md3       9:3    0   7.8G  0 raid1 /tmp
└─nvme1n1p1 259:6    0   511M  0 part  
sda           8:0    0   3.7T  0 disk  

しかし、sdaを実行すると、同じ結果が表示されないか、より悪い結果が表示されます。

sgdisk -p /dev/sdb

/dev/sda などのパーティションテーブルは表示されません。

[root@server dev]# sgdisk -p /dev/sdb
Disk /dev/sdb: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 34DA93D9-0A46-433D-BDE3-6AF2566E2183
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7814037134
Partitions will be aligned on 2048-sector boundaries
Total free space is 7814037101 sectors (3.6 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
[root@server dev]# sgdisk -p /dev/sda
Disk /dev/sda: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): EBADBC60-3D20-48F7-880B-5CCF1B645A44
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7814037134
Partitions will be aligned on 2048-sector boundaries
Total free space is 7814037101 sectors (3.6 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
[root@server dev]# 

partprobeを実行すると、次のエラーが発生します。

[root@server dev]# partprobe
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.

今、私は(明らかに)最も熟練したLinux管理者ではありませんが、実際には/dev/sdbを/dev/sdaにコピーせずにその逆の操作を実行して、/dev/sdbのパーティションテーブルを消去したようです。

幸い、システムを再起動しないため、システムがアクティブで実行されています。作業パーティション表を復元する方法があることを望みました。

現在の最大の不幸は、これが本番サーバーであり、長い間ダウン/オフライン状態を維持することは非常に破壊的です。だから、誰かがこれを正常に戻すことができるように案内してくれることを願っています。

助けを得るためにここで何をもっと共有できるのかわかりません。結果があれば、いつでも投稿してください。

よろしくお願いします。

ベストアンサー1

カーネルがまだ正しいパーティションテーブルを知っている場合は、次のようにパーティションの開始オフセットとサイズを照会できます。

# partition start offsets
head /sys/block/sdf/sdf*/start

# partition sizes
head /sys/block/sdf/sdf*/size

出力例:

$ head /sys/block/sdf/sdf*/start
==> /sys/block/sdf/sdf1/start <==
2048

==> /sys/block/sdf/sdf2/start <==
4198400

==> /sys/block/sdf/sdf3/start <==
8394752

==> /sys/block/sdf/sdf4/start <==
64

$ head /sys/block/sdf/sdf*/size
==> /sys/block/sdf/sdf1/size <==
4194304

==> /sys/block/sdf/sdf2/size <==
4194304

==> /sys/block/sdf/sdf3/size <==
52166656

==> /sys/block/sdf/sdf4/size <==
1984

それは次のとおりですparted

# parted /dev/sdf unit s print
Model:  Patriot Memory (scsi)
Disk /dev/sdf: 60566016s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start     End        Size       File system  Name     Flags
 4      64s       2047s      1984s                   grub     bios_grub
 1      2048s     4196351s   4194304s   fat32        freedos  msftdata
 2      4198400s  8392703s   4194304s   ext2         boot     lvm
 3      8394752s  60561407s  52166656s  ext2         iso      lvm

これにより、正しいオフセットでパーティションを簡単に再作成できます。

特別なパーティションフラグ(bios_grub、boot、esp...)がある場合は手動で指定する必要がありますが、あなたの場合はSSDにあるように見えますが、HDDには単純なデータパーティションしかないので、何かを気にしません。

/dev/sdbパーティションは1つだけなので、/dev/sdb11MiBから始めてディスクのフルサイズに拡張される可能性が高くなります。したがって、パーティションを再作成することはこれより簡単ではありません。それでも再確認することをお勧めします。

または、testdisk元のデータからパーティション化されたテーブルを派生することもできます。

おすすめ記事