mdadmが2番目の同じディスクをアレイに追加することを拒否します。

mdadmが2番目の同じディスクをアレイに追加することを拒否します。

パフォーマンスが低下した状態のRAID 1アレイがあり、ここに別のドライブを追加したいと思います。

# mdadm --detail /dev/md1 
/dev/md1:
        Version : 1.2
  Creation Time : Fri Mar 21 17:23:00 2014
     Raid Level : raid1
     Array Size : 488254464 (465.64 GiB 499.97 GB)
  Used Dev Size : 488254464 (465.64 GiB 499.97 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Jun  9 00:10:04 2015
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : mars:1  (local to host mars)
           UUID : 3458a3fd:a510d0a7:605d8cd5:9880c31e
         Events : 25816

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       2       0        0        2      removed

フルサイズに合うようにフォーマットされた最初のドライブと同じドライブを使用しようとしています。しかし、mdadmは追加を拒否します。

# mdadm /dev/md1 --add /dev/sdc1 
mdadm: /dev/sdc1 not large enough to join array

分割出力は、2つのドライブのセクタサイズが互いに異なることを示しますが、それが何であるか、変更できるかどうかはわかりません。そうでなければ、私の選択は何ですか?

# parted /dev/sdb unit s print
Model: ATA SAMSUNG HD502HJ (scsi)
Disk /dev/sdb: 976773168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End         Size        Type     File system  Flags
 1      2048s  976773119s  976771072s  primary  ext4         raid, type=fd

# parted /dev/sdc unit s print
Model: ATA SAMSUNG HD502HJ (scsi)
Disk /dev/sdc: 976771055s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End         Size        Type     File system  Flags
 1      2048s  976769023s  976766976s  primary               raid, type=fd

答え1

976766976は/dev/sdb9767より小さい。7/dev/sdc第1072話

これは同じドライブではありません。

答え2

新しいディスクは、既存のディスクより1MB少し小さいです。これは、モデルが異なる場合があり(同じ名前であっても、他の工場でわずかに異なる仕様で製造される場合があります)、工場テスト中に欠陥のある部分がより多く見つかった可能性があります。

これには、ディスク全体からMBRの1セクタを引いたパーティションと、未使用のセクタを追加してパーティションを1MB(パフォーマンスに推奨)にソートするパーティションがsdbあります。sdb1配列はパーティション全体にわたっており、サイズはパーティションから128MBを引いたサイズです。領域形状の変更

976771055 セクタのサイズは配列sdc976771072 セクタのサイズより 17 セクタ小さいです。したがって、新しいディスクにアレイをインストールすることはできません。

同じデータとより小さな形状変更領域を持つ配列を作成できます。ほぼフィットするので、128MBから2MBを引くだけで十分です。既存の配列ではシェイプ変更領域のサイズを変更できないと考えているため、それをバックアップして新しい配列を作成してからデータを復元する必要があります。

私が望むのは、アレイのパーティションを2MBだけ減らすことです。

sdc1とにかく私の考えでは、最も簡単な解決策は、新しいRAID-1アレイを唯一のアクティブボリュームにすることです。配列のパーティションサイズを維持するには、--data-offset=126Mすべてのものに合うように形状変更領域を作成します。より良い方法は、この問題が再度発生した場合に備えて、安全の余裕で数MBを減算してパーティション全体にわたって配列を作成することです。次に、古いアレイのすべてのデータを新しいアレイにコピーします。小さい領域を作成する場合は、縮小したいパーティションのパーティションコピーではなくファイルコピーを実行するか(パーティションが複数ある場合)、そのパーティションを最初に実行してから縮小します。最後に、配列の内容を消去して新しい配列にsdb1追加します。sdb1

または、最後の2MB(最小)がどのパーティションにも割り当てられないように、既存の配列の内容を縮小してから、既存の配列を縮小するためにmdadm /dev/md1 --grow --size=…使用します。

答え3

このディスクにはHPAがあります。同じディスクがあり、HPAを削除して不足しているセクタを正常に回収し、両方のドライブを同じにしました。バラよりhttps://superuser.com/a/642765

# hdparm -N /dev/sdx
# hdparm -N p976773168 /dev/sdx

答え4

私はこのトリックを知っているsdbと同じパーティションをsdcに作成するだけです(最初にバックアップを作成し、ディスクを超えたパーティションを避けてください(たとえば、2つのディスク220G sdb 210G sdc)。210Gの下に2つのパーティションを作成するまたは199Gと同じ2つのパーティションを作成することもできます。

sfdisk -d /dev/sdb > part_table
sfdisk /dev/sdc < part_table

次に、sdc1をもう一度追加してみてください。

関連情報