私の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/sdb1
1MiBから始めてディスクのフルサイズに拡張される可能性が高くなります。したがって、パーティションを再作成することはこれより簡単ではありません。それでも再確認することをお勧めします。
または、testdisk
元のデータからパーティション化されたテーブルを派生することもできます。