Power10を搭載したマシンでは本体にはNVMeのみ搭載可能ということでNamespaceの作り方を試してみました。
NVMeデバイス名前空間を2つの方法での作成
CLIから実行
NVMeをつけてVIOSをインストールした環境を利用します。
各種操作のために oem_setup_env
をしておきます。
$ oem_setup_env
手違いでhdisk1にVIOSがインストールされていますが、気にしないでください。
本環境では、NVMeが3本搭載されています。
# lspv
hdisk0 none None
hdisk1 00c0504063c541c1 rootvg active
hdisk2 none None
コマンドを打ってみると nvmemgr
でNVMeのNamespaceは切れそうです。
# nvmemgr -h
Usage:
nvmemgr -A -l [ nvme# | hdisk# ]
nvmemgr -B -l nvme# -o opt#
nvmemgr -C -l nvme# -s size -b block_size
nvmemgr -D [-l nvme# | -z logpg_dump] -p logpg_id
nvmemgr -E -l nvme# -f <feature id> -s <selection> [-v <int vect#>]
nvmemgr -H -l nvme# -c commit_action -s <slot number>
nvmemgr -I -l nvme# -z <FW_path> -c commit_action -s <slot number>
nvmemgr -J -l nvme# -k #
nvmemgr -S -l nvme#
nvmemgr -M -l [ nvme# | hdisk# ]
nvmemgr -Q -l nvme# [-i <interval>] [-o opt]
nvmemgr -R -l nvme# -d [hdisk# | ns_id]
nvmemgr -X -l nvme# -n ns_id
nvmemgr -U -l nvme# -d [hdisk# | ns_id]
nvmemgr -V -i vendor_id -m model -n <name of object to create>
-A Print Identify
-l 'lname' - Adapter or disk logical name
-B Print list of namespaces attached to a controller/adapter
-l 'lname' - Adapter logical name
-o opt# - Option (0 - Active Namespaces, 1 - All Namespaces)
-C Create a Namespace
-l 'lname' - Adapter logical name
-s size - Namespace size (in MB, GB or TB)
-b lba_format# - LBA Format
-o opt# - Attach option (0 - Create Only, 1 - Attach after create)
-D Get Logpage or View an existing dump of a Logpage
-l 'lname' - Adapter logical name
-z logpg_dump - Pathname of file containing the dump
-p logpg_id - Logpage identifier
Valid logpage identifiers are:
0x01 - Error log information
0x02 - SMART/Health information log
0x03 - Firmware slot information log
0x07 - Telemetry log (host)
0x08 - Telemetry log (controller)
0x0D - Persistent Event Log(PEL)
0x70 - Discovery log
0x81 - Sanitize Status
0xF0 - Critical Information (Vendor Specific)
0xC0 - Event Log (Vendor Specific)
Only one of -l or -z options can be specified
-z is supported on PEL dump only
-E Get Feature
-l 'lname' - Adapter or disk logical name
-f feature_id - Feature identifier
Valid Feature identifiers are:
0x01 - Arbitration
0x02 - Power management
0x03 - LBA range type (disk logical name)
0x04 - Temperature threshold
0x05 - Error recovery
0x06 - Volatile write cache
0x07 - Number of queues
0x08 - Interrupt Coalescing
0x09 - Interrupt Vector Configuration
0x0A - Write Atomicity
0x0B - Asynchronous Event Configuration
0x0C - Autonomous Power State Transition
0x0D - Host Memory Buffer
0x80 - Software Progress Marker
0x81 - Host identifier
-s selection - Which values to print?
Valid values for selection are:
0x00 - Current
0x01 - Default
0x02 - Saved
-v int_vect - Interrupt Vector Number (Feature ID 9)
-H Firmware Commit
-l 'lname' - Adapter logical name
-c commit_action - Commit action
Valid commit actions are:
0x02 - The image specified by the firmware slot field is activated
at the next reset.
0x03 - The image specified by the firmware slot field is requested
to be activated immediately without reset.
-s slot number - Firmware slot.
-I Firmware Download and Commit
-l 'lname' - Adapter logical name
-z 'filename' - Firmware image path
-c commit_action - Commit action
Valid commit actions are:
0x00 - Downloaded image replaces the image specified by the
firmware slot field. This image is not activated.
0x01 - Downloaded image replaces the image specified by the
firmware slot field. This image is activated at the next reset.
-s slot number - Firmware slot.
-J List adapter or namespace capabilities
-l 'lname' - Disk or Adapter logical name
-k support_opt
1 - Controller supported firmware slots
2 - Valid commit actions to download firmware
3 - Valid commit actions to activate firmware
4 - Namespace supported LBA formats
5 - Does controller support per-namespace SMART log ?
6 - PCIe link speed(supported/actual)
7 - PCIe link width(max link width/negotiated)
8 - Controller (and AIX) supported namespace formats
9 - Does Controller support Namespace Management ?
10 - Unallocated space under a controller
11 - Candidates for Namespace Detach
12 - Candidates for Namespace Delete
13 - Candidates for Namespace Attach
14 - Namespace Create supported controllers
-S List storage configuration
-l 'lname' - Adapter logical name
-M SMART log of a NVMe device
-l 'lname' - Adapter or disk logical name
-Q Display IO statistics of adapter or driver
-l 'lname' - Adapter logical name
-i # - Interval secs between each display (default 1sec)
-o opt - Select adapter or driver statistics
0 - adapter statistics (default)
1 - driver statistics
-R Remove a Namespace
-l 'lname' - Adapter logical name
-d 'hdisk# | ns_id' - Disk logical name or Namespace ID
-X Attach a Namespace
-l 'lname' - Adapter logical name
-n ns_id - Namespace identifier to be attached
-U Detach a Namespace
-l 'lname' - Adapter logical name
-d 'hdisk# | ns_id' - Disk logical name or Namespace ID
-V add a Vendor Customization
-i 'vendor_id' - IEEE OUI bytes[73:75] in Controller Identify
list hex bytes in ASCII without spaces
e. g. 0102AB
-m 'model' - MN bytes[24:63] as in Controller Identify
Do not include any trailing spaces.
-n 'name' - descriptive name of the customized object to create
WARNING - to be used only when storage vendor requires.
NVMeの詳細確認をしてみます。
-A
オプションを使うことで -l
で指定したアダプターやディスクの詳細を確認できます。
今見えているディスク3本を確認してみた結果がこちらです。
# nvmemgr -A -l hdisk0
NVMe Namespace identify for nsid = 1
=======================================
Namespace Size (in LBAs) = 0x5d27216
Namespace capacity (in LBAs) = 0x5d27216
Namespace Utilization (in LBAs) = 0x5d27216
Namespace Features = 0x0
Number of LBA Formats supported = 0x1
Formatted LBA Size = 0x0
i.e. NS has been formatted with LBA format 0
Metadata Capabilities = 0x1
End-to-end Data Protection Capabilities = 0x0
End-to-end Data Protection Type Settings = 0x0
Protection information is not enabled
Namespace Multi-path I/O and Namespace Sharing Capabilities = 0x0
NS is private to controller
Reservation Capabilities = 0x0
Format Progress Indicator (FPI) = 0x0
FPI is not supported.
Namespace Atomic Write Unit Normal (NAWUN) = 0x0
Namespace Atomic Write Unit Power Fail (NAWUPF) = 0x0
Namespace Atomic Compare & Write Unit (NACWU) = 0x0
Namespace Atomic Boundary Size Normal (NABSN) = 0x0
Namespace Atomic Boundary Offset (NABO) = 0x0
Namespace Atomic Boundary Size Power Fail (NABSPF) = 0x0
NVM Capacity (in bytes) (NVMCAP) = 400088457216
Namespace Globally Unique Identifier (NGUID) = 0x00000000000000000000000000000000
IEEE Extended Unique Identifier = 0x0004cf80980006d7
LBA Format 0 Support = 0x10c0000
Relative Performance (RP) = 0x1, LBA Data size (LBADS) = 0x1000, Metadata Size (MS) = 0x0
LBA Format 1 Support = 0x3090000
Relative Performance (RP) = 0x3, LBA Data size (LBADS) = 0x200, Metadata Size (MS) = 0x0
# nvmemgr -A -l hdisk1
NVMe Namespace identify for nsid = 1
=======================================
Namespace Size (in LBAs) = 0x5d27216
Namespace capacity (in LBAs) = 0x5d27216
Namespace Utilization (in LBAs) = 0x5d27216
Namespace Features = 0x0
Number of LBA Formats supported = 0x1
Formatted LBA Size = 0x0
i.e. NS has been formatted with LBA format 0
Metadata Capabilities = 0x1
End-to-end Data Protection Capabilities = 0x0
End-to-end Data Protection Type Settings = 0x0
Protection information is not enabled
Namespace Multi-path I/O and Namespace Sharing Capabilities = 0x0
NS is private to controller
Reservation Capabilities = 0x0
Format Progress Indicator (FPI) = 0x0
FPI is not supported.
Namespace Atomic Write Unit Normal (NAWUN) = 0x0
Namespace Atomic Write Unit Power Fail (NAWUPF) = 0x0
Namespace Atomic Compare & Write Unit (NACWU) = 0x0
Namespace Atomic Boundary Size Normal (NABSN) = 0x0
Namespace Atomic Boundary Offset (NABO) = 0x0
Namespace Atomic Boundary Size Power Fail (NABSPF) = 0x0
NVM Capacity (in bytes) (NVMCAP) = 400088457216
Namespace Globally Unique Identifier (NGUID) = 0x00000000000000000000000000000000
IEEE Extended Unique Identifier = 0x0004cf80980007d7
LBA Format 0 Support = 0x10c0000
Relative Performance (RP) = 0x1, LBA Data size (LBADS) = 0x1000, Metadata Size (MS) = 0x0
LBA Format 1 Support = 0x3090000
Relative Performance (RP) = 0x3, LBA Data size (LBADS) = 0x200, Metadata Size (MS) = 0x0
# nvmemgr -A -l hdisk2
NVMe Namespace identify for nsid = 1
=======================================
Namespace Size (in LBAs) = 0x5d27216
Namespace capacity (in LBAs) = 0x5d27216
Namespace Utilization (in LBAs) = 0x5d27216
Namespace Features = 0x0
Number of LBA Formats supported = 0x1
Formatted LBA Size = 0x0
i.e. NS has been formatted with LBA format 0
Metadata Capabilities = 0x1
End-to-end Data Protection Capabilities = 0x0
End-to-end Data Protection Type Settings = 0x0
Protection information is not enabled
Namespace Multi-path I/O and Namespace Sharing Capabilities = 0x0
NS is private to controller
Reservation Capabilities = 0x0
Format Progress Indicator (FPI) = 0x0
FPI is not supported.
Namespace Atomic Write Unit Normal (NAWUN) = 0x0
Namespace Atomic Write Unit Power Fail (NAWUPF) = 0x0
Namespace Atomic Compare & Write Unit (NACWU) = 0x0
Namespace Atomic Boundary Size Normal (NABSN) = 0x0
Namespace Atomic Boundary Offset (NABO) = 0x0
Namespace Atomic Boundary Size Power Fail (NABSPF) = 0x0
NVM Capacity (in bytes) (NVMCAP) = 400088457216
Namespace Globally Unique Identifier (NGUID) = 0x00000000000000000000000000000000
IEEE Extended Unique Identifier = 0x0004cf809800072c
LBA Format 0 Support = 0x10c0000
Relative Performance (RP) = 0x1, LBA Data size (LBADS) = 0x1000, Metadata Size (MS) = 0x0
LBA Format 1 Support = 0x3090000
Relative Performance (RP) = 0x3, LBA Data size (LBADS) = 0x200, Metadata Size (MS) = 0x0
VIOS上では、以下デバイス名として見えています。
# lsdev -C -c adapter -t nvme
nvme0 Available 00-00 PCIe3 x4 NVMe Flash Adapter
nvme1 Available 01-00 PCIe3 x4 NVMe Flash Adapter
nvme2 Available 02-00 PCIe3 x4 NVMe Flash Adapter
-S
で指定したアダプターの名前空間がどのようになっているか確認できます。
nvme2はhdisk2というNamespaceが400GBで切られていました。
# nvmemgr -S -l nvme2
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
hdisk2 02-00 Available 400.09GB
ここで、今作られているNamespaceを削除してみます。
アダプター名と該当する名前空間を指定して -R
で削除します。
# nvmemgr -R -l nvme2 -d hdisk2
Namespace deleted successfully.
再度、-S
でオプションで確認すると、hdisk2が消えています。
# nvmemgr -S -l nvme2
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
#
次に、100GBで名前空間を作ってみましょう。
-C
で新規作成ができます。
-b
でLBA Formatをしていできます。 0で4096セクターを指定することになります。
# nvmemgr -C -l nvme2 -s 100GB -b 0
Namespace created successfully. NSID = 0x1
Namespace attached successfully.
-S
で確認してみると、100GBのディスクが作られていますね。
# nvmemgr -S -l nvme2
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
hdisk2 02-00 Available 100.00GB
簡単に名前空間を切れました。これをVIOCに見せるとhdiskの単位で見えました。
Smittyから実行
CLIだけでなく、Smittyからも実行してみましょう。
deviceのところにNVMe Managerの項目があります。
# smit device
Devices
Move cursor to desired item and press Enter.
[TOP]
Install/Configure Devices Added After IPL
Printer/Plotter
TTY
Asynchronous Adapters
PTY
Console
MPIO Management
Fixed Disk
Disk Array
CD ROM Drive
Read/Write Optical Drive
Diskette Drive
Tape Drive
Cryptographic Adapters
Communication
[MORE...22]
F1=Help F2=Refresh F3=Cancel F8=Image
F9=Shell F10=Exit Enter=Do
一番下に NVMe Manager
の項目があります。
Configure/Unconfigure Devices
Install Additional Device Software
PCI Hot Plug Manager
USB Adapter
SAS Adapter
SSD cache devices
CAPI Flash Adapter
NVMe Manager
[BOTTOM]
F1=Help F2=Refresh F3=Cancel F8=Image
F9=Shell F10=Exit Enter=Do
NVMe Managerを選択します。
NVMe Manager
Move cursor to desired item and press Enter.
List NVMe Storage Configuration
Configure a Defined NVMe Controller
Change / Show Characteristics of a NVMe Controller
Namespace Management and Attachment
Change / Show Characteristics of a NVMe Controller
を選択してアダプターに作られている名前空間を確認します。
NVMe Manager
Move cursor to desired item and press Enter.
List NVMe Storage Configuration
Configure a Defined NVMe Controller
Change / Show Characteristics of a NVMe Controller
Namespace Management and Attachment
┌──────────────────────────────────────────────────────────────────────────┐
│ Available Controllers │
│ │
│ Move cursor to desired item and press Enter. │
│ │
│ nvme0 Available 00-00 PCIe3 x4 NVMe Flash Adapter │
│ nvme1 Available 01-00 PCIe3 x4 NVMe Flash Adapter │
│ nvme2 Available 02-00 PCIe3 x4 NVMe Flash Adapter │
│ │
│ F1=Help F2=Refresh F3=Cancel │
│ F8=Image F10=Exit Enter=Do │
F1│ /=Find n=Find Next │
F9└──────────────────────────────────────────────────────────────────────────┘
CLIと同じように400GBの名前空間が作られている状態だとわかります。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
hdisk2 02-00 Available 400.09GB
NVMe Manager
のメニューからNamespace Management and Attachment
を選択すると、名前空間の作成や削除のメニューが表示されます。
Namespace Management and Attachment
Move cursor to desired item and press Enter.
Create a Namespace
Delete a Namespace
Attach a Namespace
Detach a Namespace
まずは既存の名前空間を消してみます。
Delete a Namespace
を選択、対象のアダプターを選択と順番に進めていきます。
Namespace Management and Attachment
Move cursor to desired item and press Enter.
Create a Namespace
Delete a Namespace
Attach a Namespace
Detach a Namespace
┌──────────────────────────────────────────────────────────────────────────┐
│ Namespace Management Supported Controllers │
│ │
│ Move cursor to desired item and press Enter. │
│ │
│ nvme0 Available 00-00 PCIe3 x4 NVMe Flash Adapter │
│ nvme1 Available 01-00 PCIe3 x4 NVMe Flash Adapter │
│ nvme2 Available 02-00 PCIe3 x4 NVMe Flash Adapter │
│ │
│ F1=Help F2=Refresh F3=Cancel │
│ F8=Image F10=Exit Enter=Do │
F1│ /=Find n=Find Next │
F9└──────────────────────────────────────────────────────────────────────────┘
F4
でアダプターに紐付いている名前空間の一覧が表示されるため、削除するものを選びます。
Delete a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
NVMe Disk or Namespace Identifier [] +
┌──────────────────────────────────────────────────────────────────────────┐
│ NVMe Disk or Namespace Identifier │
│ │
│ Move cursor to desired item and press Enter. │
│ │
│ hdisk2 │
│ │
│ F1=Help F2=Refresh F3=Cancel │
F1│ F8=Image F10=Exit Enter=Do │
Es│ /=Find n=Find Next │
F9└──────────────────────────────────────────────────────────────────────────┘
Enterを押すと、削除の確認が表示されるためもう一度Enterを押します。
Delete a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
NVMe Disk or Namespace Identifier [hdisk2] +
┌──────────────────────────────────────────────────────────────────────────┐
│ ARE YOU SURE? │
│ │
│ Continuing may delete information you may want │
│ to keep. This is your last chance to stop │
│ before continuing. │
│ Press Enter to continue. │
│ Press Cancel to return to the application. │
│ │
F1│ F1=Help F2=Refresh F3=Cancel │
Es│ F8=Image F10=Exit Enter=Do │
F9└──────────────────────────────────────────────────────────────────────────┘
無事削除されました。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
Namespace deleted successfully.
確認してみると、ちゃんと削除されていますね。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
次は作成です。
削除と同じように Namespace Management and Attachment
のメニューから進めます。
Namespace Management and Attachment
Move cursor to desired item and press Enter.
Create a Namespace
Delete a Namespace
Attach a Namespace
Detach a Namespace
Create a Namespace
を選択し、対象のアダプターを選択します。
Namespace Management and Attachment
Move cursor to desired item and press Enter.
Create a Namespace
Delete a Namespace
Attach a Namespace
Detach a Namespace
┌──────────────────────────────────────────────────────────────────────────┐
│ Namespace Create Supported Controllers │
│ │
│ Move cursor to desired item and press Enter. │
│ │
│ nvme2 Available 02-00 PCIe3 x4 NVMe Flash Adapter │
│ │
│ F1=Help F2=Refresh F3=Cancel │
│ F8=Image F10=Exit Enter=Do │
F1│ /=Find n=Find Next │
F9└──────────────────────────────────────────────────────────────────────────┘
名前空間のサイズとLBA Formatを指定します。
Attach after Create?
を No にすると名前空間の作成だけが行われます。
Create a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
Unallocated Space at Controller 400.09GB
Namespace Size (MB, GB or TB. Ex 100GB or 2TB) []
Enter 0 or leave blank to allocate all remaining
space
LBA Format +
Attach after Create ? yes +
LBA FormatのところでF4
を押すと選択肢が表示されます。
ここに記載されているように、0で4096セクター、1で512セクター設定となります。
Create a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
Unallocated Space at Controller 400.09GB
Namespace Size (MB, GB or TB. Ex 100GB or 2TB) [100GB]
Enter 0 or leave blank to allocate all remaining
space
LBA Format +
┌──────────────────────────────────────────────────────────────────────────┐
│ LBA Format │
│ │
│ Move cursor to desired item and press Enter. │
│ │
│ 0 LBA Size = 4096 Relative Performace = 1 Metadata Size = 0x0 │
│ 1 LBA Size = 512 Relative Performace = 3 Metadata Size = 0x0 │
│ │
│ F1=Help F2=Refresh F3=Cancel │
F1│ F8=Image F10=Exit Enter=Do │
Es│ /=Find n=Find Next │
F9└──────────────────────────────────────────────────────────────────────────┘
Create a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
Unallocated Space at Controller 400.09GB
Namespace Size (MB, GB or TB. Ex 100GB or 2TB) [100GB]
Enter 0 or leave blank to allocate all remaining
space
LBA Format 0 +
Attach after Create ? yes +
無事作成されました。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
Namespace created successfully. NSID = 0x1
Namespace attached successfully.
確認してみると、100GBの名前空間が作成されています。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
hdisk2 02-00 Available 100.00GB
さらにもう一つ 150GB の名前空間を作成してみます。
Create a Namespace
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
NVMe Controller nvme2
Unallocated Space at Controller 300.09GB
Namespace Size (MB, GB or TB. Ex 100GB or 2TB) [150GB]
Enter 0 or leave blank to allocate all remaining
space
LBA Format 0 +
Attach after Create ? yes +
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
Namespace created successfully. NSID = 0x2
Namespace attached successfully.
100GBのhdisk2と150GBのhdisk3が作成されました。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
----------------------------------------------------------------
Name Location State Size
----------------------------------------------------------------
nvme2 02-00 Available 400.09GB
hdisk2 02-00 Available 100.00GB
hdisk3 02-00 Available 150.00GB
AIX, VIOSでもNVMeの名前空間を切る操作は簡単にできました。
構成のバリエーションとして使えるかもと考えています。