Linux技術情報
SmartArrayでの 2.2TB超えについて
SmartArrayでの 2.2TB超えについて
本ページに記載してある内容は限られた評価環境に於ける検証結果に基づいたものです。本ページの情報を利用する前に予め技術情報、ディストリビュータが提供する WEBサイト等をご覧ください。
ストレージのボリュームあたり 2.2TB超えに関して
750GB SATA HDDをはじめとした大容量 HDDの登場により、SmartArrayでの 2.2TB超え環境が容易に、そして非常に安価に構築する事が可能になりました。
しかし、2.2TBを越える容量を扱うためには、OS側だけではなくファームウェア、ドライバ等への留意も必要となります。本ページではそれらを含めた注意点を説明させて頂きます。
ディスクラベルについて
PC/ATを祖としている昨今の PCでは、HDDのディスクラベルを扱う方式として MS-DOSディスクラベル(もしくはパーティション)形式を採用しています(Itaniumシステムを除く)。
この MS-DOSディスクラベルは、セクタの開始位置に 4byteの値を利用しています。またセクタ数にも 4byteの値を利用しています。4byteと云う値は 2の 32乗となり 4294967296となります。HDDのセクタあたりの容量は 512byteになりますので、2.2TB迄しか扱えません。
また、MBRは、セクタの開始位置に 4byteの値を利用しています。またセクタ数にも 4byteの値を利用しています。4byteと云う値は 2の 32乗となり 4294967296となります。HDDのセクタあたりの容量は 512byteになりますので、MBR形式の対応も 2.2TB迄となります。
2.2TBを越える LUNを利用する場合、この長年慣れ親しんできた MS-DOSディスクラベルは利用できないため、2.2TB越えをサポートした GPTディスクラベルを利用する必要があります。
この GPTディスクラベルは Itaniumシステムでは以前から利用されてきましたが、x86系環境ではあまり馴染みがないものです。そのため稼動する OSで利用する際には、インストーラ、パーティション操作ツール、ブートローダ等が対応している必要があります。
Grubの対応について
Linuxで一般に使われているブートローダーである Grubの殆どは GPTディスクラベル未対応です。このため /boot用パーティションを別途確保し、且つそのパーティション自体を 2.2TB `以下`である LUN内に確保する必要があります。但し、SLES11を初めとして、今後のディストリビューションでも grub-read-gptパッチが適用された Grubが採用されていけば 2.2TBの壁を意識する事なくシステムの起動を行う事が可能になります。
Grubは MBRパーティションの先頭 512byteを利用して起動作業を行いますが、この先頭 512byte領域は GPTディスクラベルに於いては、ディスクラベル情報が格納されているため Grubの仕組み上 GPTディスクラベルとの共存は行えません(可能な構成もあります)。/bootを配置する LUNのために 2.2TB超の LUNとは別に /boot用に別途 2.2TB以下の LUNの確保が必要となります。
SmartArrayでの LUNの切り方について - 300/500シリーズ用 - ProLiant Gen8未満
ProLiant G7迄の場合には、Offline Array Configuration Utility(ACU)メディア*からシステムを起動し、オフライン状態で ACUを利用し、LUNの構成を行います。下記は 3TBの Array A(実際には 3TB HDD x2本の組合せ)に対し、まずは 1番目の LUN(論理ドライブ)として 1TB分切り出そうとしている作業例となります。
* SSAは SmartArray P41x世代以降をサポートする ACUの後継製品で、IP1.50から搭載されています
SmartArrayでの LUNの切り方について - ProLiant Gen8シリーズ用
* SSAは SmartArray P41x世代以降をサポートする ACUの後継製品で、IP1.50から搭載されています
SmartArrayでの LUNの切り方について - 100シリーズ用
ProLiant 300/500シリーズでは SmartArray上の LUN(論理ドライブ)を細かく切り分けるための設定ツールである SSA(旧ACU)がサポートされていますが、ProLiant 100シリーズでは SSAはサポートされておらず POST時に [F8]キーで起動する ORCAしかサポートされていません。
ORCAでは、前述の ACUでの例の様に一旦 `アレイ-A`として 3TBのディスク容量をまとめた後で、その 3TBを 5GBと 2.8TBの LUN(論理ドライブ)として切り分ける事はできません。ORCAではあくまで `アレイ` = `論理ドライブ(LUN)`としてのみの構成になり柔軟性に欠けます。ProLiant 100シリーズで 2.2TB超の LUNを扱う場合には、LUNの構成と HDDの物理サポート本数を十分考慮してください。
但し、ProLiant 100シリーズであっても Easy Set-up CDが利用可能な機種であれば、SmartStart CDと同様に CDからシステムを起動し、ACUをオフラインで実行する事が可能となります。これにより `アレイ`内部に複数の `論理ドライブ(LUN)`を作成する事が可能ですので、ProLiant 300シリーズ同様の柔軟なディスク構成を取る事が可能です。
2.2TB超をサポートする SmartArrayの firmware versionについて
2.2TB超 LUNを SmartArrayに扱わせるには、SmartArrayの firmwareバージョンに注意してください。
- SmartArray E200/i - v1.62(但し v1.62は別問題があるため v1.66必須)以降
- SmartArray P400/i - v2.08以降
- SmartArray E500 - v2.52以降
- SmartArray P600 - v1.88A以降
- SmartArray P800 - v2.08以降
ディストリビューション毎の注意点 - RHEL7
Red Hat Enterprise Linux 7では BIOS機もしくは UEFI機の Legacy(BIOS)モードであっても biosbootパーティションを利用した GPTディスクラベルからのシステム起動が可能になりました。
ディストリビューション毎の注意点 - RHEL6
BIOS機での 2.2TB超 LUNからの起動をサポートしていません。予め 2.2TB以下の LUNを用意しインストールする必要があります。
ディストリビューション毎の注意点 - RHEL5
RHEL5.0のインストーラ Anacondaは GPTディスクラベルに対応していません。RHEL5.1(Update1)から対応しています。
ccissドライバは HPE提供の DUD/cciss v3.6.16-4以降か、RHEL5.1(Update1)以降に標準装備されている ccissドライバが必要となります。RHEL5.1未満に標準装備の ccissドライバでは、2.2TB超 geometryの扱いが正常に行えないために DiskDruidステージへ移動する際にエラー(Enable to determine geometry of file/device...)が多発したり、インストール後に partedを起動してもエラー(Invalid argument...)が発生します。
RHEL5.0の場合 - インストール時に 2.2TB超の LUNが存在していても問題ありませんが、この LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください。/boot, /は 2.2TB以下の LUNに配置してください。
RHEL5.1以降の場合 - インストーラが GPTディスクラベルに対応したため、/bootを 2.2TB以下の LUN上へ配置しなければならない事(パーティション設定エラー)以外に制限はありません。これ以外には特別な作業は不要です。既に MS-DOSディスクラベルが存在していても GPTディスクラベルへ変換してくれます。また /パーティションも 2.2TBを超えた LUN上に配置が可能な事を確認しました。
インストール後、RHEL5.0でインストール時に設定できなかった 2.2TB超 LUNに対するパーティション設定を行います。この際 fdiskは GPTディスクラベルを扱えませんので partedを利用します。また、RHEL5.1以降の場合でも、インストール後に 2.2TB超 LUNに対するパーティション設定を行う場合には、この操作が必要になります。
8TBを越えるパーティションを作成するには、#mkfs.ext3のオプションとして、-b 4096と -Fを付与してフォーマットする必要があります。詳細は Red Hat社の Knowledge Base 9817をご覧ください。
#parted /dev/cciss/c0d1
(parted) mklabel
New disk label tyep? [msdos]? ⇒ `gpt`
(parted) print
Disk /dev/cciss/c0d1: 2995GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
(parted) mkpart
Partition name? []?
File system type? [ext2]?
Start? ⇒ `0`
End? ⇒ `2995G`
(parted) print
Number Start End Size File system Name Flags
1 17.4kB 2995GB 2995GB ext2
(parted) quit
#
#time mke2fs -j -T largefile4 /dev/cciss/c0d1p1
real 3m43.448s
#mkdir /test
#mount /dev/cciss/c0d1p1 /test
#df
/dev/cciss/c0d1p1 2924762680 205944 2778304440 1% /test
RHEL5.8未満の場合、インストーラで 2.2TB以下の LUN上のボリュームをまとめて 2.2TBを超える LVMを作成しようとしても警告が表示されます(容量が足りません)。また、問題(インストーラの LVMで 2.2TBを超えられるか?)も見受けられましたので 2.2TBを超える LVMの作成はインストール後に行う事を推奨します。
注: largefile4は 4MB毎に inodeを確保します。都度、システムに適したものに変更してください
ディストリビューション毎の注意点 - RHEL4
RHEL4のインストーラ Anacondaは GPTディスクラベルに対応していません。Update7迄確認しています。
利用するインストールメディアは最低でも U1を利用してください。U1に於いて、2.2TB超え関連の大幅な修正が施されています。
RHEL4/U6未満の場合 - ccissドライバは HPE提供の DUD/cciss v2.6.16-6以降が必要となります。これらのディストリビューションに標準装備されている ccissドライバでは、2.2TB超 geometryの扱いが正常に行えません。インストール時に 2.2TB超の LUNが存在していると `reported invalid`エラーが表示されますが無視してください。2.2TB超の LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください。
RHEL4/U6の場合 - ccissドライバは HPE提供の DUD/cciss v2.6.18-10以降が必要となります。本ディストリビューションに標準装備されている ccissドライバでは、2.2TB超 geometryの扱いが正常に行えず、インストーラの DiskDruid画面へ遷移する際に `入力/出力エラーです during read on /dev/cciss/c0d1`等のエラーとなります。この際のエラーダイアログでは `無視`を選択してください。この選択により 2.2TB超の LUNは DiskDruidでは表示されなくなります。2.2TB超の LUNへの操作はインストール後に partedで別途操作します。
RHEL4/U7の場合 - ccissドライバは HPE提供の DUD/v2.6.18-17以降が必要となります。本ディストリビューションに標準装備されている ccissドライバでは、インストール時にはエラーは発生しませんが、インストール後には `Buffer I/O error`がログに記録され、2.2TB超の LUNを正常に扱う事ができません。また、インストール時に 2.2TB超の LUNが存在している場合、インストーラの DiskDruidで正常表示が可能ですが、インストーラは 2.2TB超の LUNに対応していません。`最大許容量まで使用`オプションを利用しても 2.2TB迄(2097149MB - この容量はディスク構成により変わる可能性があります)しか確保できません。また `空き - 自由領域`として認識されている LUN自体を直接 `編集`して全容量をパーティションとして確保使用とす ると `Partition failed: シリンダベースパーティションを確保できませんでした`とエラーとなります。このため、2.2TB超の LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください。
RHEL4/U8の場合 - ccissドライバは HPE提供の DUD/v2.6.20-23以降が必要となります。それ以外は RHEL4/U7の場合と同じです。
インストール時に /boot, /は 2.2TB以下の LUNに配置してください。
インストール後に、2.2TB超 LUNに対するパーティション設定を行います。この際 fdiskは GPTディスクラベルを扱えませんので partedを利用します。
#parted /dev/cciss/c0d1
(parted) mklabel
New disk label tyep? [msdos]? ⇒ `gpt`
(parted) print
Disk geometry for /dev/cciss/c0d1: 0.000-2856490.242 megabytes
Disk label type: gpt
(parted) mkpart
Partition name? []?
File system type? [ext2]?
Start? ⇒ `0`
End? ⇒ `2856490`
(parted) print
Number Start End File system Name Flags
1 0.017 2856490.226
(parted) quit
#
#time mke2fs -j -T largefile4 /dev/cciss/c0d1p1
real 55.548s
#mkdir /test
#mount /dev/cciss/c0d1p1 /test
#df
/dev/cciss/c0d1p1 2924762680 107544 2778402840 1% /test
注: largefile4は 4MB毎に inodeを確保します。都度、システムに適したものに変更してください
ディストリビューション毎の注意点 - SLES11
SLES11のインストーラは GPTディスクラベルに対応しています。LUNに MS-DOSディスクラベルが既に付与されている場合、インストーラが GPTディスクラベルへの変換を行う事を確認しました。
標準装備される ccissドライバも 2.2TB超への対応が行われています。
インストーラは GPTディスクラベルに対応しています。/bootと /を 2.2TB以下の LUN上へ配置しなければならない事以外に制限はありません。これ以外には特別な作業は不要です。既に MS-DOSディスクラベルが存在していても GPTディスクラベルへ変換してくれます。
インストール後にディスク操作をする場合には、partedを利用してください。fdiskは GPTディスクラベルへ対応していません。
注: 以前本頁には GPTディスクラベルが付与されたシステムからの直接起動について記載していましたが、SP1のリリースノートに x86_64システムと UEFIを組み合わせたものを Novell社が正式サポートするとの記載が行われました。システムを起動する LUNは、別途 MS-DOSラベルが付与された 2.2TB以下の LUNを用意し、そちらから起動してください。
non-UEFI(BIOS)システムに於ける 2.2TB超 LUNからのシステム起動が SP2よりサポートされました。但し、non-UEFI(BIOS)機で 2.2TB超 LUNからシステムを起動するには様々な制限がありますので、2.2TB以下の LUNから起動する事を推奨します。詳細は SP2のリリースノート(4.6. Booting from Harddisks larger than 2 TiB in Non-UEFI Mode)をご覧ください。
ディストリビューション毎の注意点 - SLES10
SLES10/SP0および SLES10/SP1のインストーラは共に GPTディスクラベルには完全に対応していませんが、付与されているディスクラベルと操作の手順によっては CHS geometryの警告等が表示されます。また、MS-DOSディスクラベルが既に付与されている場合には、そのまま 2.2TB超の操作ができてしまいます。 SLES10/SP2でインストーラは GPTディスクラベルに対応しました。但し、既存 LUNに MS-DOSディスクラベルが付与されてしまっている場合には、GPTディスクラベルへの変換までは行いませんので、[エキスパート設定]の `パーティションテーブルとディスクラベルを削除`を行ってから、一旦システムを再起動してください。
SLES10/SP0メディア標準装備の ccissドライバ v2.6.10では 2.2TB超 LUNは認識できませんので、ccissドライバは HPE提供の DUD/cciss v3.6.16-4以降が必要となります。 ちなみに、これより古い HPE提供の DUD/cciss v3.6.14-8では 2.2TB超 LUNの認識は可能ですが、パーティション操作が正常に行えません。 SLES10/SP1メディアに標準装備の ccissドライバは前述とバージョンが近い v3.6.14ですが、パーティション操作も可能です。
SLES10/SP0の場合 - インストール時に 2.2TB超の LUNが存在していても問題ありませんが、この LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください。
SLES10/SP1の場合 - インストール時に tty2で partedの操作を行った後一旦リブートする等して GPTディスクラベルを予め付与していればインストール段階でも 2.2TB超 LUNの操作が可能です。
SLES10/SP2の場合 - インストーラが GPTディスクラベルに対応したため、/bootを 2.2TB以下の LUN上へ配置しなければならない事以外に制限はありません。これ以外には特別な作業は不要です。但し、既に MS-DOSディスクラベルが存在している場合にはラベルを削除する事に気をつけてください。/パーティションも 2.2TBを超えた LUN上に配置が可能な事を確認しました。
インストール時に /boot, /は 2.2TB以下の LUNに配置してください。但し、SP2の場合、/は 2.2TB超の LUNに配置しても構いません(SP2未満でも技術的には可能と思われますが、推奨しません)。
SP2未満の場合、インストール後に、2.2TB超 LUNに対するパーティション設定を行います。この際 fdiskは GPTディスクラベルを扱えませんので partedを利用します。 また、SP2であっても 2.2TB超 LUNに対するパーティション設定には partedを利用します。fdiskは 2.2TB超 LUN未対応ですので利用しないでください。
#parted /dev/cciss/c0d1
(parted) mklabel
New disk label tyep? [msdos]? ⇒ `gpt`
(parted) print
Disk /dev/cciss/c0d1: 2995GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
(parted) mkpart
Partition type? [primary]?
File system type? [ext2]? ⇒ `reiser`
Start? ⇒ `0`
End? ⇒ `2995G`
(parted) print
Number Start End Size File system Name Flags
1 17KB 2995GB 2995GB reiserfs
(parted) quit
#
#time mkreiserfs /dev/cciss/c0d1p1
real 45.031s
#mkdir /test
#mount /dev/cciss/c0d1p1 /test
#df
/dev/cciss/c0d1p1 2924956680 32840 2924923840 1% /test
ディストリビューション毎の注意点 - SLES9
SLES9/SP3, SLES9/SP4のインストーラは GPTディスクラベルに対応していません。
SLES9/SP3の場合 - ccissドライバは HPE提供の DUD/cciss v2.6.16-5以降が必要となります。本ディストリビューションに標準搭載されている ccissドライバでは 2.2TB超 LUNを正常に扱う事ができません。
SLES9/SP4の場合 - ccissドライバは HPE提供の DUD/cciss v2.6.18-10以降が必要となります。本ディストリビューションに標準搭載されている ccissドライバでは 2.2TB超 LUNを正常に扱う事ができません。
インストール時に 2.2TB超の LUNが存在していても問題ありませんが、この LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください(MS-DOSディスクラベルのままで設定される場合があります)。
インストール時に /boot, /は 2.2TB以下の LUNに配置してください。
インストール後に、2.2TB超 LUNに対するパーティション設定を行います。この際 fdiskは GPTディスクラベルを扱えませんので partedを利用します。
#parted /dev/cciss/c0d1
(parted) mklabel
New disk label tyep? [msdos]? ⇒ `gpt`
(parted) print
Disk geometry for /dev/cciss/c0d1: 0.000-2856490.242 megabytes
Disk label type: gpt
(parted) mkpart
Partition type? [primary]?
File system type? [ext2]? ⇒ `reiser`
Start? ⇒ `0`
End? ⇒ `2856490`
(parted) print
Number Start End File system Name Flags
1 0.017 2856490.226 reiserfs
(parted) quit
#
#time mkreiserfs /dev/cciss/c0d1p1
real 29.115s
#mkdir /test
#mount /dev/cciss/c0d1p1 /test
#df
/dev/cciss/c0d1p1 2924956680 32840 2924923840 1% /test
ディストリビューション毎の注意点 - Asianux 3の場合
Asianux 3.0のインストーラ Anacondaは SP1で GPTディスクラベルに対応しました。
Asia3/BASE(SP0)の場合 - メディアに同梱されている cciss v3.6.14-RH1は 2.2TB超 LUNに対応していないため、利用できません。
Asia3/SP1の場合 - メディアに同梱されている cciss v3.6.16-RH1で 2.2TB超 LUNに対応しました。但し、GPTディスクラベルからシステムを直接起動する事はできませんので /bootと /を 2.2TB以下の LUNに配置してください(技術的には /も 2.2TB超 LUNに配置できる事を確認しています)。インストーラは 2.2TB超の LUNを扱えます。この際、インストーラは 2.2TB超 LUNに対して自動的に GPTディスクラベルを付与しますので、インストールの段階で 2.2TB超の LUN上にパーティションの作成作業を行う事が可能です。
ディストリビューション毎の注意点 - TurboLinux Server 11の場合
Turbo11SEのインストーラは 2.2TB超 LUNであっても 2.2TB迄の容量しか認識しません。
Turbo11SEに標準搭載されている cciss v3.6.14は 2.2TB超 LUNを扱うための patchが適用さており、そのまま利用が可能です。
インストール時に 2.2TB超の LUNが存在していても問題ありませんが、この LUNへの操作はインストール後に partedで別途操作しますので、インストール時にはパーティションを割り当てないでください。
インストール時に /boot, /は 2.2TB以下の LUNに配置してください。
インストール後に、2.2TB超 LUNに対するパーティション設定を行います。この際 fdiskは GPTディスクラベルを扱えませんので partedを利用します。
#parted /dev/cciss/c0d1
(parted) mklabel
New disk label tyep? [msdos]? ⇒ `gpt`
(parted) print
Disk /dev/cciss/c0d1: 2995GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
(parted) mkpart
Partition type? [primary]?
File system type? [ext2]? ⇒ `reiser`
Start? ⇒ `0`
End? ⇒ `2995G`
(parted) print
Number Start End Size File system Name Flags
1 17KB 2995GB 2995GB reiserfs
(parted) quit
#
#time mkreiserfs /dev/cciss/c0d1p1
real 45.031s
#mkdir /test
#mount /dev/cciss/c0d1p1 /test
#df
/dev/cciss/c0d1p1 2924762680 205944 2778304440 1% /test
利用機材
- SmartArray P800,P600
- 750GB HDD x4基
Open Source & Linux
2015年11月1日付でHewlett-Packard CompanyをHewlett Packard Enterprise Company とHP Inc.に分社する以前に販売された製品については、現在のモデルと異なる、古い製品名およびモデル番号である場合があります。