IBM i でzlibを検証する為にLPARを作成する機会があったので、内蔵ディスクの分割を行う方法を備忘録代わりに記載します。
環境概要
今回の検証で使用する環境は下記の図になります。
VIOSに割り当てられた6.4TBのNVMeから約3TBを切り出してIBM i の区画にアサインできるLV(論理ボリューム)を作成します。
IBM Power10で使用するNVMeはPV-PVマッピングを使用することができないので、今回はLV-PVマッピングを行います。

用語解説
smit
IBM AIXのオペレーティングシステムにおけるシステム管理用のメニュー形式のインターフェースです。AIXの管理作業をコマンドラインで行う代わりに、より直感的に操作できるように設計されています。今回の作業ではsmitを使用した手順で解説します。
ストレージ記憶域管理 : Logical Volume Manager (LVM)
Unix系オペレーティングシステムで使用される柔軟なストレージ管理機能です。物理的なディスクを抽象化し、論理的なボリュームとして扱えるようにすることで、ストレージの拡張や管理を容易にします。
わかりやすく言うと、サーバーの「ストレージ(記憶領域)」を柔軟に管理できるしくみです。普通は1つのハードディスクをそのまま使いますが、LVMを使うと、複数のディスクをまとめたり、あとから容量を増やしたり、自由に扱えるようになります。
Namespace
NVMeデバイス上に作成される論理的なストレージ領域
ボリュームグループ:Volume Group(VG)
1つ以上のPV(物理ボリューム)で構成される仮想的なディスク領域です。
システムやアプリケーションの用途に応じて、複数のVGを作成・管理することができます。
デバイス名の例:rootvg、datavg
物理ボリューム:Physical Volume(PV)
物理的なディスク装置、またはストレージ装置のRAIDグループなどから切り出されたLUN(論理ユニット)を指します。LVM(Logical Volume Manager)において、VGの構成要素として登録されます。
デバイス名の例:hdisk0、hdisk1
※Namespaceと混ざりやすいので注意
NVMeで切り出したNamespaceを作成・アタッチした後に、それがAIXでは hdisk デバイス(PV)として認識されます。その hdisk を PV(Physical Volume)として VG に追加することで、従来のLVM構成に組み込むことができます。つまり、NVMeから切り出したボリュームをNamespace、AIXのLVMの視点ではhdisk デバイス(PV)として扱われる。
論理ボリューム:Losical Volume(LV)
実際にデータを保持するためのファイルシステムやローデバイスのコンテナとして使用されます。
LVMを用いてRAIDレベルの構成も可能です。
デバイス名の例:hd2、lv_data1
物理パーティション:Physical Partition(PP)
LVMで使用される物理的な記憶領域の最小単位です。
PVは複数のPPに分割され、これらを組み合わせてLVを構成します。
LVの作成時には、PPサイズを指定して割り当てを行います。

手順
今回はあらかじめ作成されたVIOS区画にsshでログインしている状態を前提として手順書を記載させていただきます。
作業を行う前にVIOS上でsmitを使用できるようにするために下記のコマンドを使用してください。
oem_setup_env
1.Namespaceの作成
Namespaceの作成を行います。下記のコマンドを使用してsmitのインターフェースを表示します。
smit nvme
smitのインターフェース上で下記の選択を行います。
Namespace Management and Attachment→Create a Namespace
選択後に下記画像のようにVIOSに割り当てられている物理ディスクの情報が出てくるので使用するディスクを選択します。

するとNamespaceの作成画面が表示されます。
この画面で使用するNamespaceのサイズなどを設定することができます。
今回使用するLVの合計容量が2.4TB(400GB×6本)なので余裕を持って3TB割り当てます。

Enterボタンを押下すると下記のように表示されて作成完了です。

作成されたNamespaceの確認
# lspv
hdisk0 00c460d1a1192f2f rootvg active
hdisk5 none None
今回はhdisk5という名前でNamespaceが作成されたことが確認できます。
まだこのNamespaceはどのVGにも割り当てれていないのでnoneと表示されています。
また、Namespaceのサイズを確認したい場合は下記のコマンドで確認することができます。
# bootinfo -s hdisk5
2861023
MBでの表記になっておりますので、約2.9TBのNamespaceの作成ができたことが確認できます。
2.VGの作成
下記のコマンドを使用してsmitのインターフェースを表示します。
# smit vg
smitのインターフェース上で下記の選択を行います。
Add a Volume Group→Add a Scalable Volume Group
すると下記画面のVG作成用のメニューが表示されます。

今回はVGの名前にzlibtestという名前をつけました。
(-vgという名前にしたほうが管理しやすいので任意で決めてください)
PHYSICAL VOLUME namesに先ほど作成したNamespaceの名前を入力してください。今回はhdisk5を使用します。(F4キーを使用して選択することもできます)
設定後にEnterキーを押して下記画面が表示されたらVGの作成は完了です。

作成されたVGの確認
下記コマンドを使用することでVGの名前を確認可能です。
# lsvg
rootvg
zlibtest
またVGの詳細情報を確認する場合は下記のコマンドを使用します。
この画面でPPサイズなども確認できます。PP SIZEが1024 megabyte(s) と表記されているのでLVにボリュームを割り当てる際にはPPは400にして割り当てれば問題ないことが確認できます。
# lspv hdisk5
PHYSICAL VOLUME: hdisk5 VOLUME GROUP: zlibtest
PV IDENTIFIER: 00c460d1233cb9ab VG IDENTIFIER 00c460d100004b000000019a233cb9d1
PV STATE: active
STALE PARTITIONS: 0 ALLOCATABLE: yes
PP SIZE: 1024 megabyte(s) LOGICAL VOLUMES: 6
TOTAL PPs: 2793 (2860032 megabytes) VG DESCRIPTORS: 2
FREE PPs: 393 (402432 megabytes) HOT SPARE: no
USED PPs: 2400 (2457600 megabytes) MAX REQUEST: 256 kilobytes
FREE DISTRIBUTION: 159..00..00..00..234
USED DISTRIBUTION: 400..559..558..558..325
MIRROR POOL: None ENCRYPTION: no
hdisk5がzlibtestのメンバーであることを確認するには下記のコマンドを使用します。zlibtestはVGの名前です。
#lsvg -p zlibtest
zlibtest:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk5 active 2793 2793 559..559..558..558..559
まだLVを作成していないので当たり前ですが、作成したVGにはLVが存在しないことを確認するには下記のコマンドを使用します。
# lsvg -l zlibtest
zlibtest:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
3.LVの作成
下記のコマンドを使用してsmitのインターフェースを表示します。
# smit lv
smitのインターフェース上で下記の選択を行います。
Add a Logical Volume
下記の画面で使用するVGの名前を聞かれるので先ほど作成したVG名を入力してEnterキーを押下します。

するとLV作成用のメニューが下記のように表示されます。
下記画面では以下の項目を設定します。
Logical Volume Name:zlib0
Number of LOGICAL PARTITIONS:400

AIXなどのOSを使用する際はLogical Volume TypeはJFS2などを選択してファイルシステムの指定しますが今回の環境はIBM i で使用するので設定しません。
上記画面でEnterキーを押下するとLVの作成が行われます。
今回はLVを6本作成するので同様の操作を6回繰り返します。
作成されたLVの確認
下記コマンドを使用してVGに存在するLVを確認することができます。
# lsvg -l zlibtest
zlibtest:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
zlib0 jfs2 400 400 1 closed/syncd N/A
zlib1 jfs2 400 400 1 closed/syncd N/A
zlib2 jfs2 400 400 1 closed/syncd N/A
zlib3 jfs2 400 400 1 closed/syncd N/A
zlib4 jfs2 400 400 1 closed/syncd N/A
zlib5 jfs2 400 400 1 closed/syncd N/A
LV1つ1つの情報を確認する場合は下記のコマンドを使用します。
# lslv zlib0
LOGICAL VOLUME: zlib0 VOLUME GROUP: zlibtest
LV IDENTIFIER: 00c460d100004b000000019a233cb9d1.1 PERMISSION: read/write
VG STATE: active/complete LV STATE: closed/syncd
TYPE: jfs2 WRITE VERIFY: off
MAX LPs: 512 PP SIZE: 1024 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 400 PPs: 400
STALE PPs: 0 BB POLICY: non-relocatable
INTER-POLICY: minimum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 10
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
INFINITE RETRY: no PREFERRED READ: 0
ENCRYPTION: no
以上でVIOSでLVを作成する場合の手順となります。
VIOS上でRAIDの設定も可能ですが今回はIBM i のOSの機能を使用してミラーリング等の設定を行います。
HMCでの表記
HMCのGUI画面で作成されたVGやLVの情報を確認してみます。
HMCでは作成されたボリュームは下記のように表示されています。
VG→ストレージプール
LV→仮想ディスク


参考
※注意:HMCのGUI画面で作成されたストレージプールと今回の手順で作成したVGについては異なりますのでご注意ください。
SSP(Shared Storage Pool)のLUミラーリングについて:アプリケーションが誤ってデータを破壊した場合、その内容が即座にミラー先にも反映されるため、「破損のミラーリング」が発生するリスクがあります。
下記ドキュメントには、ストレージプールにはRAID構成済みのデバイスのみを使用してくださいと記載されております。
AIXのLVMミラーリングについて:障害が発生したディスクを切り離し、健全なミラーコピーで運用を継続できます。以下のドキュメントでは、ミラー構成の一部で障害が発生した場合のディスク交換手順も紹介されています。
最後に
今回は下記の手順でLVの作成を行いました。
NVMeからNamespaceとしてPV(hdisk5)を切り出す
↓
PV(hdisk5)をVG(zlibtest)に割り当てる
↓
VG(zlibtest)からLV(zlib0~5)を作成
NVMe(物理ディスク)からPV(物理ボリューム)を切り出すというのがイメージが湧きにくく、最初は理解に困っておりました。(LVと混ざっておりました)
1つのVGに1つのPVを割り当てて今回は設定したのですが、複数のPVを使用してVGの作成することや、後からPVの追加をすることもLVMを使用することで可能ですのでぜひお試しください。
