AIX 7.3 Big VG または Scalable VG でのmklv コマンド( 論理ボリューム作成) のデフォルト挙動変更の確認

### はじめに

AIX 7.3 では mklv のデフォルト設定が変更されている箇所があります。
実機で確認した内容を記載します。


[AIX 7.3 リリースノート](https://www.ibm.com/docs/ja/aix/7.3?topic=notes-aix-73-release)

> ファイルシステムおよび論理ボリューム・マネージャーの更新
> - mklv コマンドはデフォルトで jfs2 タイプの論理ボリュームを作成します。
> - mklv コマンドはデフォルトで、大規模タイプおよび拡張可能タイプのボリューム・グループについてデフォルト・ミラー書き込み整合性ポリシーとしてパッシブ・ミラー書き込み整合性を持つ論理ボリュームを作成します。




----

### 環境


① AIX 7.3 TL0 SP1

```
# oslevel -s
7300-00-01-2148
```


② AIX 7.1 TL5 SP9

```
# oslevel -s
7100-05-09-2148
```

----


### ドキュメント確認

変更箇所、機能の概念をドキュメントで確認します。


#### ① タイプ
AIX 7.3 では mklv コマンドはデフォルトで jfs2 タイプの論理ボリュームを作成します。
以前のバージョンでは jfs タイプの論理ボリュームがデフォルトでした。

・[mklv コマンド (7.3)](https://www.ibm.com/docs/ja/aix/7.3?topic=m-mklv-command)

> -t type　デフォルトは jfs2 です。

・[mklvコマンド(7.1)](https://www.ibm.com/docs/ja/aix/7.1?topic=m-mklv-command)
> -t type　デフォルトは jfs です。


#### ②ミラー書き込み整合性

・[AIX ミラー書き込み整合性 ](https://www.ibm.com/docs/ja/aix/7.3?topic=performance-mirror-write-consistency)

> 論理ボリュームへの書き込みの際には、LVM がすべてのミラー・コピーの書き込み要求を生成します。 ミラーリングされた書き込みの処理中 (すべてのコピーが書き込まれる前に) にシステムがクラッシュすると、 問題が発生します。 論理ボリュームのミラー書き込み整合性のリカバリーが要求された場合、 LVM はこのような整合性のないミラーのリカバリーを可能にするための追加情報を保持します。 ミラー書き込み整合性のリカバリーは、大部分のミラーリングされた論理ボリュームに対して行う必要があります。 


ミラー書き込み整合性はミラーリングされたLVMのリカバリーを担保している設定ですね。



----

### 1) AIX 7.3 での mklv の確認


#### AIX 7.3 Big VG の場合


testvg という名前の Big VG を作成します。

```
# mkvg -B -y testvg hdisk1
0516-1254 mkvg: Changing the PVID in the ODM.
testvg
```

testlv1 というLVをtestvgに作成します。LPs は 2 です。

```
#  mklv -y testlv1 testvg 2
testlv1
# echo $?
0
```

VG作成確認

```
# lsvg testvg
VOLUME GROUP:       testvg                   VG IDENTIFIER:  00cc20e000004b000000018c89e1d90e
VG STATE:           active                   PP SIZE:        8 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      380 (3040 megabytes)
MAX LVs:            512                      FREE PPs:       378 (3024 megabytes)
LVs:                1                        USED PPs:       2 (16 megabytes)
OPEN LVs:           0                        QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     130048
MAX PPs per PV:     1016                     MAX PVs:        128
LTG size (Dynamic): 512 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable
PV RESTRICTION:     none                     INFINITE RETRY: no
DISK BLOCK SIZE:    512                      CRITICAL VG:    no
FS SYNC OPTION:     no                       CRITICAL PVs:   no
ENCRYPTION:         yes
```

<font color="Red">MAX PVs = 128、MAX LVs = 512、Max PPs per VG = 130048　のBig VG 属性</font>で作成されています。


<br>

LV作成確認

```
#  lslv testlv1
LOGICAL VOLUME:     testlv1                VOLUME GROUP:   testvg
LV IDENTIFIER:      00cc20e000004b000000018c89e1d90e.1 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs2  #<= ここです      WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        8 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                2                      PPs:            2
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    128
MOUNT POINT:        N/A                    LABEL:          None
DEVICE UID:         0                      DEVICE GID:     0
DEVICE PERMISSIONS: 432
MIRROR WRITE CONSISTENCY: on/PASSIVE　　　　#<= ここです
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
INFINITE RETRY:     no                     PREFERRED READ: 0
ENCRYPTION:         no
#
```


=> <font color="Red">TYPE: jfs2 </font> と、<font color="Red">MIRROR WRITE CONSISTENCY: on/PASSIVE</font> で作成されています。

----

#### AIX 7.3 Scalable VG の場合


VGの作成。AIX 7.3 ではオプションなしで作成するとScalable VG になります。

```
# mkvg -y testvg1 hdisk1
testvg1
# echo $?
0
```

testlv2 というLVをtestvg1 に作成します。LPs は 2 です。

```
# mklv -y testlv2 testvg1 2
testlv2
# echo $?
0
```

VG作成確認

```
# lsvg testvg1
VOLUME GROUP:       testvg1                  VG IDENTIFIER:  00cc20e000004b000000018c89ed3653
VG STATE:           active                   PP SIZE:        4 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      746 (2984 megabytes)
MAX LVs:            256                      FREE PPs:       744 (2976 megabytes)
LVs:                1                        USED PPs:       2 (8 megabytes)
OPEN LVs:           0                        QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     32768                    MAX PVs:        1024
LTG size (Dynamic): 512 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable
MIRROR POOL STRICT: off
PV RESTRICTION:     none                     INFINITE RETRY: no
DISK BLOCK SIZE:    512                      CRITICAL VG:    no
FS SYNC OPTION:     no                       CRITICAL PVs:   no
ENCRYPTION:         yes
```
<font color="Red">MAX PVs = 1024、MAX LVs = 256、Max PPs per VG = 32768　のScalable VG 属性</font> で作成されています。

<br>

LV作成確認

```
# lslv testlv2
LOGICAL VOLUME:     testlv2                VOLUME GROUP:   testvg1
LV IDENTIFIER:      00cc20e000004b000000018c89ed3653.1 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs2   #<= ここです     WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        4 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                2                      PPs:            2
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    1024
MOUNT POINT:        N/A                    LABEL:          None
DEVICE UID:         0                      DEVICE GID:     0
DEVICE PERMISSIONS: 432
MIRROR WRITE CONSISTENCY: on/PASSIVE   #<= ここです
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
INFINITE RETRY:     no                     PREFERRED READ: 0
DEVICESUBTYPE:      DS_LVZ
COPY 1 MIRROR POOL: None
COPY 2 MIRROR POOL: None
COPY 3 MIRROR POOL: None
ENCRYPTION:         no
#
```

=> <font color="Red">TYPE: jfs2 </font> と、<font color="Red">MIRROR WRITE CONSISTENCY: on/PASSIVE</font> で作成されています。


----


### 2) AIX 7.1 での mklv の確認


AIX 7.1 TL5 SP9 の環境で確認しました。

#### Big VG の場合


testvg という名前の Big VG を作成します。

```
# mkvg -B -y testvg hdisk1
0516-1254 mkvg: Changing the PVID in the ODM.
testvg
# echo $?
0
```

testlv1 というLVをtestvgに作成します。LPs は 2 です。

```
# mklv -y testlv1 testvg 2
testlv1
# echo $?
0
```

VG作成確認

```
# lsvg testvg
VOLUME GROUP:       testvg                   VG IDENTIFIER:  00cc20e000004b000000018c89e1b0e6
VG STATE:           active                   PP SIZE:        8 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      382 (3056 megabytes)
MAX LVs:            512                      FREE PPs:       380 (3040 megabytes)
LVs:                1                        USED PPs:       2 (16 megabytes)
OPEN LVs:           0                        QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     130048
MAX PPs per PV:     1016                     MAX PVs:        128
LTG size (Dynamic): 512 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable
PV RESTRICTION:     none                     INFINITE RETRY: no
DISK BLOCK SIZE:    512                      CRITICAL VG:    no
FS SYNC OPTION:     no

```


<font color="Red">MAX PVs = 128、MAX LVs = 512、Max PPs per VG = 130048　のBig VG 属性</font>で作成されています。

<br>

LV作成確認

```
# lslv testlv1
LOGICAL VOLUME:     testlv1                VOLUME GROUP:   testvg
LV IDENTIFIER:      00cc20e000004b000000018c89e1b0e6.1 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs  #<= ここです       WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        8 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                2                      PPs:            2
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    128
MOUNT POINT:        N/A                    LABEL:          None
DEVICE UID:         0                      DEVICE GID:     0
DEVICE PERMISSIONS: 432
MIRROR WRITE CONSISTENCY: on/ACTIVE　#<= ここです
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
INFINITE RETRY:     no                     PREFERRED READ: 0
#
```

=> <font color="Red">TYPE: jfs </font> と、<font color="Red">MIRROR WRITE CONSISTENCY: on/ACTIVE</font> で作成されています。


---

#### Scalable VG の場合


testvg1 という Scalable VG を作成します。

```
# mkvg -S -y testvg1 hdisk1
testvg1
# echo $?
0
```

testlv2 というLVをtestvg1 に作成します。LPs は 2 です。

```
# mklv -y testlv2 testvg1 2
testlv2
# echo $?
0
```

VG作成確認

```
# lsvg testvg1
VOLUME GROUP:       testvg1                  VG IDENTIFIER:  00cc20e000004b000000018c89ed17d8
VG STATE:           active                   PP SIZE:        4 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      750 (3000 megabytes)
MAX LVs:            256                      FREE PPs:       748 (2992 megabytes)
LVs:                1                        USED PPs:       2 (8 megabytes)
OPEN LVs:           0                        QUORUM:         2 (Enabled)
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     32768                    MAX PVs:        1024
LTG size (Dynamic): 512 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable
MIRROR POOL STRICT: off
PV RESTRICTION:     none                     INFINITE RETRY: no
DISK BLOCK SIZE:    512                      CRITICAL VG:    no
FS SYNC OPTION:     no
```

<font color="Red">MAX PVs = 1024、MAX LVs = 256、Max PPs per VG = 32768　のScalable VG 属性</font>で作成されています。

<br>

LV作成確認

```
# lslv testlv2
LOGICAL VOLUME:     testlv2                VOLUME GROUP:   testvg1
LV IDENTIFIER:      00cc20e000004b000000018c89ed17d8.1 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       closed/syncd
TYPE:               jfs #<=  ここです       WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        4 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                2                      PPs:            2
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    1024
MOUNT POINT:        N/A                    LABEL:          None
DEVICE UID:         0                      DEVICE GID:     0
DEVICE PERMISSIONS: 432
MIRROR WRITE CONSISTENCY: on/ACTIVE  #<= ここです
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
INFINITE RETRY:     no                     PREFERRED READ: 0
DEVICESUBTYPE:      DS_LVZ
COPY 1 MIRROR POOL: None
COPY 2 MIRROR POOL: None
COPY 3 MIRROR POOL: None
#
```

=> <font color="Red">TYPE: jfs </font> と、<font color="Red">MIRROR WRITE CONSISTENCY: on/ACTIVE</font> で作成されています。


----


### ミラー書き込み整合性の考慮点


ミラー書き込み整合性はパッシブ、アクティブでそれぞれメリット・デメリットがあるため、要件に応じて値を考えることが良いのではと思います。


・[AIX 7.3 ディスク・ミラーリングのパフォーマンスへの影響](https://www.ibm.com/docs/ja/aix/7.3?topic=guidelines-disk-mirroring-performance-implications)

(一部抜粋)

>ミラーリングが使用され、ミラー書き込み整合性 (Mirror Write Consistency) がオンになっている (デフォルトにより) 場合は、 ディスクの外部領域にそのコピーを配置することを考慮してください。 lslv コマンドは通常、 ミラーリングされていない論理ボリュームについてはミラー書き込み整合性がオンになることを表示しますが、COPIES 値が 1 より大きくない限り、実際の処理が発生することはありません。 書き込み検査はデフォルトではオフです。

>受動ミラー書き込み整合性 (MWC) と呼ばれる、ミラー書き込み整合性オプションが使用可能です。 ミラー書き込み整合性を確実にする デフォルトのメカニズムが、アクティブ MWC です。 アクティブ MWC により、クラッシュが 発生した後のリブート時のリカバリーが速くなります。 ただし、このメリットは書き込みのパフォーマンスを 犠牲にして得られるものであり、特に、ランダム書き込みのパフォーマンスが低下します。 アクティブ MWC を使用不可にすれば、この書き込みパフォーマンスの低下はなくなりますが、 クラッシュ後のリブートで syncvg -f コマンドを使用して ボリューム・グループ全体を手作業で同期させてからでないと、ユーザーがそのボリューム・グループに アクセスすることができません。 これを行うには、ボリューム・グループの automatic vary-on を使用不可にする必要があります。

>受動 MWC を使用可能にした場合は、アクティブ MWC にからむ書き込みパフォーマンスの低下が なくなるだけでなく、区画がアクセスされているときに自動的に論理ボリュームの再同期が とられます。 これは、管理者が論理ボリュームを手動で同期したり、 automatic vary-onを無効にしたりする必要がないことを意味します。 受動 MWC の欠点としては、すべての区画の同期が取り直されるまでは、読み取り操作が遅くなるということがあります。


以下にも MWC(Mirror Write Consistency) の動きが詳しく記載されています。


[AIX 7.3 論理ボリュームのミラー書き込み整合性ポリシー](https://www.ibm.com/docs/ja/aix/7.3?topic=striping-mirror-write-consistency-policy-logical-volume)


---


### ご参考

AIX 7.3 VG のデフォルト挙動変更については下記で確認しています。

https://qiita.com/c_u/items/77616391fe1af4d8de87

FS について位は以下で確認しています。

https://qiita.com/c_u/items/72b4b8f1ee58d0623799


ご参考まで、以上です。