一部のUEFI環境でLinux Software RAIDのメタデータが削除される現象
一部のUEFI環境で「Linux Software RAID」のメタデータが削除される現象が報告されています。「Linux Software RAID」は「MD(Multiple Device)」ドライバーで提供される機能であり、RAIDとある通り複数の物理ボリューム(ディスク/ストレージ)を1つの論理ボリュームとして扱うような機能を提供します。
「mdadm」と言ったほうが通りが良いでしょうか。
さて本現象を報告したユーザーは「ASRock Z97 Extreme6」を利用しており、本マザーボードに実装されている「UEFI」が「Linux Software RAID」のメタデータを削除してしまう現象を以下で報告しています。
「Linux Software RAID」のメタデータが削除されてしまうため、そのディスクはアレイとして利用できなくなります。
環境
現象を報告したユーザーの環境です。- マザーボードを「Gigabyte H97-HD3」から「ASRock Z97 Extreme6」に変更した
- 「mdadm」で「RAID 1」を作成し、アレイの各物理ボリュームはディスク全体を使用している
状況
- PC起動時、アレイに使用しているすべてのディスクからメタデータが削除される
- ディスクの先頭にあるアレイのメタデータが、ゼロクリア(0で書き換えること)されている
- ディスクの「0x1000〜0x4000(直前)」間の領域がゼロクリアされている
- PC起動時に毎回この現象が発生する
UEFIの問題か?
この現象はOSのブートローダーに移る前に発生していること、以前のマザーボード(Gigabyte H97-HD3)では発生していなかったことから、「ASRock Z97 Extreme6」が搭載しているUEFIの実装の問題ではないかとのことです。またPC起動前にディスクを取り外し、Linuxが起動した後にそれらのディスクを接続すると、本現象が起きません。
加えてディスクを接続してPC起動時に「UEFI Setup utility」に入ると、その時点ですでにゼロクリアが行われています。
リカバリー機能?
ディスク全体を使用してアレイを構成する場合、そのディスクにはパーティションテーブルそのものが存在しません。
GPT fdisk (gdisk) version 1.0.1
Caution! After loading partitions, the CRC doesn't check out!
Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Disk /dev/sdc: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 5D940099-EC12-42B0-9DF9-CDAE167EE6EE
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
Caution! After loading partitions, the CRC doesn't check out!
Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Disk /dev/sdc: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 5D940099-EC12-42B0-9DF9-CDAE167EE6EE
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
にもかかわらずゼロクリアが行われたディスクを調べてみると、本来存在していないはずのGPTが存在しています。
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 5D940099-EC12-42B0-9DF9-CDAE167EE6EE
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
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 5D940099-EC12-42B0-9DF9-CDAE167EE6EE
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
「UEFI」の実装にリカバリー機能のようなものが搭載されているのではないかと見られています。
回避策は不明
「UEFI」の実装の問題に見えますが、現状この現象を回避する方法は不明です。「UEFI」の設定で回避できるものなのか、もし「UEFI」の修正が必要だったとして、そもそも「UEFI」の修正が行われるのかもどうかもまだ分かりません。
またこの現象が発生する「ASRock」製マザーボードが「ASRock Z97 Extreme6」だけとも限りません。