web-dev-qa-db-ja.com

lvmのパーティションテーブルを回復する

間違ったディスクでfdiskを実行できました。しかし、ターミナルセッションのログを保存することができました。

Fdisk 事故:

~$ Sudo fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       36473   292969341   8e  Linux LVM
/dev/sda2           36474       38913    19599300    b  W95 FAT32

後で私が見つけたログで:

$ Sudo fdisk -u /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c').

Command (m for help): p

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              64   550000000   274999968+  83  Linux
/dev/sda2       550000001   625142447    37571223+  83  Linux

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              64   550000000   274999968+  8e  Linux LVM
/dev/sda2       550000001   625142447    37571223+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Das Gerät oder die Ressource ist belegt.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

システムは正常に動作し続けました。正しく必要に応じて/ dev/sdbを分割し、最後に/ dev/sdbでkpartxを実行しました。これが、sdaのボリュームが再起動するまで正しく動作した理由だと思います。

エラーに気づき、/ dev/sdaのパーティションテーブルを回復しようとしました

しかし、元のパーティションテーブルを回復することはできませんでした。/dev/sda1に表示されるブロック数は、常に292969348であるため、元のブロックと比較して+7です。 sdbをパーティション分割する前にfdiskをアップグレードしたことを覚えています。おそらく、新しいバージョンが原因ですか?

それでも、未使用のfat32パーティションは気にしないので、システムは安全だと思いました。再起動後、lvmは物理ボリュームを検出しますが、ボリュームグループは検出しません。 sda1とこのグループ上のいくつかの論理ボリュームのみで構成される単一のボリュームグループを定義しました。

現在のシステムステータス:

~# fdisk -c -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       36473   292968348+  8e  Linux LVM
/dev/sda2           36474       38913    19599300    b  W95 FAT32

~# pvdisplay 
  "/dev/sda1" is a new physical volume of "279,40 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda1
  VG Name               
  PV Size               279,40 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ur3J4Y-cwvC-lji2-RPk0-39xb-ltzW-ogN4Sd

~# vgscan 
  Reading all physical volumes.  This may take a while...
  No volume groups found

~# pvck -v /dev/sda1
    Scanning /dev/sda1
  Found label on /dev/sda1, sector 1, type=LVM2 001
  Found text metadata area: offset=4096, size=192512
    Found LVM2 metadata record at offset=168448, size=28160, offset2=0 size2=0
    Found LVM2 metadata record at offset=67584, size=100864, offset2=0 size2=0

正確なブロック数で元のパーティションテーブルを復元できないのはなぜですか? lvmがボリュームグループを見つけられないのはなぜですか?今の私の選択肢は何ですか?複数のlvmメタデータが救助になりますか?どのように使用しますか?

2
ordnungswidrig

すべてのデータが返されることを保証するものではありませんが、LVMメタデータの再作成を試みることはできます。とにかくHPUXでは、これはデータ領域にはまったく影響しませんが、LVMがどのように作成されたかに関する情報が必要です。

  1. 最初に古いVG情報(vgexport oldvg)を削除します。
  2. / dev/sda1でpvcreateを実行します
  3. vgcreateは、最初に持っていたのと同じパラメーターを使用して/ dev/sda1を使用してnewvgを作成します
  4. 最初に持っていたのとまったく同じパラメーターを使用してlvcreateを実行します
  5. / dev/newvg/newlv(本名ではない)でfsckを実行し、データを認識するかどうかを確認します。

繰り返しになりますが、私はHP/UX LVMシステムでこのタイプのプロセスを使用して成功しましたが、あなたの場合はうまくいくかもしれません。

これが起動/起動ディスクである場合は、ディスクも再グラブする必要がある場合があります。

ただし、データの損失を望まない場合は、私の提案を試す前に、必ずディスクをバックアップしてください。

1
mdpc

パーティションテーブルのバックアップを作成し、dd元の場所に戻す必要があります。または、パーティション回復ツールを実行します(「パーティションLinuxの回復」に対するGoogleの最初のヒットは面白そうです)。しかし、私はパーティションテーブルのバックアップに固執します。

1
womble

出力からパーティションテーブルを復元することが成功の鍵でした。元のパーティションテーブルと復元されたパーティションテーブルの間の上記のターミナルダンプの微妙な違いに注意してください。シリンダー値は一致しますが、実際のセクター数は一致しません。

追加のヘルプは testdisk から来て、最終的にパーティション情報を正しく検出して復元しました。リカバリ手順中に、バックアップに次の白い斑点があることに気づきました。

  • パーティションテーブルのバックアップ(例: fdisk -u -l/dev/disk/by-id/exampleを使用して、さまざまな単位をシリンダーおよびセクターとして認識します。
  • / etc/lvm内のlvm構成のバックアップ。 (私は実際にこれをバックアップしましたが、これを心配していませんでした)
0
ordnungswidrig