パフォーマンスが低下した状態の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/sdb
9767より小さい。7/dev/sdc
第1072話
これは同じドライブではありません。
答え2
新しいディスクは、既存のディスクより1MB少し小さいです。これは、モデルが異なる場合があり(同じ名前であっても、他の工場でわずかに異なる仕様で製造される場合があります)、工場テスト中に欠陥のある部分がより多く見つかった可能性があります。
これには、ディスク全体からMBRの1セクタを引いたパーティションと、未使用のセクタを追加してパーティションを1MB(パフォーマンスに推奨)にソートするパーティションがsdb
あります。sdb1
配列はパーティション全体にわたっており、サイズはパーティションから128MBを引いたサイズです。領域形状の変更。
976771055 セクタのサイズは配列sdc
976771072 セクタのサイズより 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をもう一度追加してみてください。