web-dev-qa-db-ja.com

「非常によく似たスーパーブロックがあるように見える」というエラーが発生します。それを修正する方法は?

ですから、私のパーティションには奇妙なことがあります。

root@rescue ~ # mdadm -A --scan
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
      If they are really different, please --zero the superblock on one
      If they are the same or overlap, please remove one from the
      DEVICE list in mdadm.conf.
root@rescue ~ # lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0     4G  1 loop
sda      8:0    0   2.7T  0 disk
├─sda1   8:1    0     1G  0 part
├─sda2   8:2    0    64G  0 part
├─sda3   8:3    0   200G  0 part
├─sda4   8:4    0     1M  0 part
└─sda5   8:5    0   2.5T  0 part
sdb      8:16   0   2.7T  0 disk
└─sdb1   8:17   0   2.7T  0 part
sdc      8:32   0 223.6G  0 disk

RAIDチェックで、このようなエラーが発生します。データを失うことなく修正する方法はありますか?

P.S.新しい出力を追加しました

root@rescue ~ # fdisk -l /dev/sdb
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: ST3000NM0033-9ZM
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: A93A2325-8454-A346-8133-2ACDF59BE163

Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 5860533134 5860531087  2.7T Linux RAID

root@rescue ~ # mdadm --examine /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 1ac1670b:7c95ed23:0028a58b:a51e25d4
  Creation Time : Mon Dec  2 20:14:13 2019
     Raid Level : raid0
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Mon Dec  2 20:14:13 2019
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : a194544e - correct
         Events : 1

     Chunk Size : 8K

      Number   Major   Minor   RaidDevice State
this     1       8       17        1      active sync   /dev/sdb1

   0     0       8        5        0      active sync   /dev/sda5
   1     1       8       17        1      active sync   /dev/sdb1


root@rescue ~ # mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 1ac1670b:7c95ed23:0028a58b:a51e25d4
  Creation Time : Mon Dec  2 20:14:13 2019
     Raid Level : raid0
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0

    Update Time : Mon Dec  2 20:14:13 2019
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : a194544e - correct
         Events : 1

     Chunk Size : 8K

      Number   Major   Minor   RaidDevice State
this     1       8       17        1      active sync   /dev/sdb1

   0     0       8        5        0      active sync   /dev/sda5
   1     1       8       17        1      active sync   /dev/sdb1
1
Viktor

これは、古いmdadm0.90メタデータで非常に一般的な問題です。このメタデータは、デバイスの最後のどこかにありますが、最後のセクターではなく、64Kに揃えられたオフセットにあります。

スーパーブロックは4Kの長さで、デバイスの端から64K以上128K未満で始まる64K整列ブロックに書き込まれます(つまり、スーパーブロックのアドレスをデバイスのサイズから64Kの倍数に切り下げて次に64Kを引きます)。

ソース: https://raid.wiki.kernel.org/index.php/RAID_superblock_formats#The_version-0.90_Superblock_Format

残念ながら、64Kの倍数ではなく、ディスクの終わり近くまで(最後の部分的な64Kブロックまで)パーティションが拡張されているディスクデバイス全体の場合、これは最後のパーティションのスーパーブロック位置とスーパーブロック位置を意味します。ドライブ全体で、完全に同一であることがわかります。

Mdadmのマンページにもこの問題が記載されています。

_           0, 0.90
                 Use the original 0.90 format superblock.  This format
                 limits arrays to 28 component devices and limits
                 component devices of levels 1 and greater to 2 terabytes.
                 It is also possible for there to be confusion about
                 whether the superblock applies to a whole device or just
                 the last partition, if that partition starts on a 64K
                 boundary.
_

間接的には、別の回避策も示唆しています。パーティションを64Kに揃えないでください。その場合、パーティション上のスーパーブロックはディスクに対して64Kに整列されないため、ディスク全体のスーパーブロックとは見なされません。

ただし、あなたの場合、パーティションはMiBで整列されているため、64Kで整列されます。パーティションのスーパーブロックの位置は2048(start) + 5860531087(size) - 15(size%128) = 5860532992であり、ディスクのスーパーブロックの位置は5860533168(size) - 48(size%128) - 128 = 5860532992です。

つまり、ここには2つのスーパーブロックがありません。それは同じです。メッセージが示唆するように_mdadm --zero-superblock_ 1つすると、両方を失うことになります。だから、そうしないでください。

Mdadm.confにDEVICE行を追加することは、1つのシステムの簡単な回避策ですが、mdadm.confがないLive CDまたはInitramfsを起動すると、問題が再発するだけです。


これは、0.90メタデータを回避する必要があるいくつかの理由の1つです。代わりに1.xメタデータを使用してください。

mdadmを使用すると、たとえば次のように、0.90から1.0のメタデータ形式に変換できます。

_mdadm --stop /dev/mdX
mdadm --assemble /dev/mdX --update=metadata /dev/sdx1 /dev/sdy1
_

マンページから:

メタデータオプションはv0.90メタデータ配列でのみ機能し、v1.0メタデータに変換します。配列はダーティであってはならず(つまり、同期を必要としない必要があります)、書き込み意図のビットマップを持っていてはなりません。

デフォルトの1.2メタデータ(終了ではなく開始に配置)を使用する方がさらに優れていますが、すべてのデータをシフトする必要があり、インプレースで変換することはできません。

3
frostschutz