Red Hat Enterprise Linux 8.0 で
NVME-over-Fabricを設定してみた
HeteroDB
Chief Architect & CEO
KaiGai Kohei <kaigai@heterodb.com>
#やってみた系
何をやってる人ですか?
『@kkaigai』
⇩
『固定されたツイート』
⇩
9/25(水) DB Tech Showcase Tokyo 2019
【発表資料】
PostgreSQLをどこまで高速化できるか
~ハードウェアの限界に挑むPG-Stromの挑戦~
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた2
みんな大好き NVME-SSD
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた3
みんな知ってるNVME-SSD
 低レイテンシ
✓ PCIeバス直結、プロトコル変換を省略
 高スループット
✓ PCIeレーン数に応じたデータ転送レート
 スケーラビリティ
✓ 多数のI/Oキューによる多重I/Oの実装
 オープン
✓ 制御コマンドを共通規格化
CPURAM
SSD SSD
PCIe
HBA
HDD HDD HDD
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた4
ストレージ容量の上限はシャーシの大きさに規定される…?
イマドキの2Uサーバなら、オールフラッシュで200TB近く積めるが…。
model Supermicro 2029U-TN24R4T Qty
CPU Intel Xeon Gold 6226 (12C, 2.7GHz) 2
RAM 32GB RDIMM (DDR4-2933, ECC) 12
GPU NVIDIA Tesla P40 (3840C, 24GB) 2
HDD Seagate 1.0TB SATA (7.2krpm) 1
NVME Intel DC P4510 (8.0TB, U.2) 24
N/W built-in 10GBase-T 4
8.0TB x 24 = 192TB
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた5
システム導入時に、
データサイズの上限を
正確に予想できるか…?
NVME-over-Fabric
リモートのNVME-SSDをあたかもローカル同様に使う技術
CPURAM
SSD
NIC
PCIe
SSD
NIC SSD
CPURAM
PCIe
NVME-oF Host NVME-oF Target
高速ネットワーク
(RoCE, FC, TCP)
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた6
#やってみた
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた7
実験環境(1/2)
NVME-Host
Supermicro
SYS-1019GP-TT
magro.heterodb.com
(192.168.77.100)
NVME-Host
Supermicro
SYS-5018GR-T
saba.heterodb.com
(192.168.77.104)
CPU: Xeon
Gold 6126T
CPU: Xeon
E5-2650v4
GPU: NVIDIA TESLA V100
SSD: Intel DC P4600
SSD: Intel DC P4600
NIC: Mellanox ConnextX-5
NIC: Mellanox ConnextX-5
GPU: NVIDIA TESLA P40
x16
x8
x8
x16
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
RiserBoard
x16
x16
x8
192.168.80.100
192.168.80.104
100Gb
RoCE
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた8
実験環境(2/2)
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた9
目標とする構成
CPU: Xeon
Gold 6126T
CPU: Xeon
E5-2650v4
GPU: NVIDIA TESLA V100
SSD: Intel DC P4600
SSD: Intel DC P4600
NIC: Mellanox ConnextX-5
NIC: Mellanox ConnextX-5
GPU: NVIDIA TESLA P40
x16
x8
x8
x16
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
RiserBoard
x16
x16
x8
192.168.80.100
192.168.80.104
/dev/nvme0 … ローカル
/dev/nvme1 … ローカル
/dev/nvme2 … NVME-oF区画
/dev/nvme2n1
/dev/nvme2n2
/dev/nvme2n3
/dev/nvme2n4
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた10
NVMEoFターゲットの設定(1/2)
■ 必要なカーネルモジュールをロードする
# modprobe nvmet-rdma
# modprobe mlx5_ib
■ NVMEoFの設定単位 “subsystem” を作成する
# cd /sys/kernel/config/nvmet/subsystems
# mkdir -p capybara
# ls -lF capybara
total 0
drwxr-xr-x. 2 root root 0 Sep 26 15:06 allowed_hosts/
-rw-r--r--. 1 root root 4096 Sep 26 15:06 attr_allow_any_host
-rw-r--r--. 1 root root 4096 Sep 27 07:30 attr_serial
-rw-r--r--. 1 root root 4096 Sep 27 07:30 attr_version
drwxr-xr-x. 6 root root 0 Sep 26 15:07 namespaces/
# echo 1 > capybara/attr_allow_any_host
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた11
注意:ホスト単位で許可を出す事もできるようだ。
NVMEoFターゲットの設定(1/2)
■ “subsystem”配下に”namespace”を作成し、それぞれ物理 NVME-SSD を関連付ける
# cd capybara/namespaces
# mkdir -p 1 2 3 4
# echo -n /dev/nvme0n1 > 1/device_path
# echo 1 > 1/enable
# echo -n /dev/nvme1n1 > 2/device_path
# echo 1 > 2/enable
# echo -n /dev/nvme2n1 > 3/device_path
# echo 1 > 3/enable
# echo -n /dev/nvme3n1 > 4/device_path
# echo 1 > 4/enable
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた12
注意:echo -n ではなく echo ではデバイス名を認識してくれなかった。
NVMEoFターゲットの設定(2/2)
■ NVMEoF ネットワークポートの設定
# mkdir -p /sys/kernel/config/nvmet/ports/1
# cd /sys/kernel/config/nvmet/ports/1
# echo 192.168.80.100 > addr_traddr
# echo rdma > addr_trtype
# echo 4420 > addr_trsvcid
# echo ipv4 > addr_adrfam
■ NVMEoF ネットワークポートと “namespace” を関連付ける
# cd subsystems
# ln -sf ../../../subsystems/capybara ./
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた13
NVMEoFホストの設定(0/2)
■ SSD-to-GPU Direct用のドライバソフトウェアをインストール
# yum install nvme_strom-2.2-1.el8.x86_64.rpm
# modinfo nvme-rdma
filename: /lib/modules/4.18.0-80.7.2.el8_0.x86_64/extra/nvme-rdma.ko.xz
version: 2.2
description: Enhanced nvme-rdma for SSD-to-GPU Direct SQL
license: GPL v2
rhelversion: 8.0
srcversion: 7F097CBE75277A94667B5C9
depends: nvme-fabrics,ib_core,nvme-core,rdma_cm
name: nvme_rdma
vermagic: 4.18.0-80.7.2.el8_0.x86_64 SMP mod_unload modversions
parm: register_always:Use memory registration even for contiguous memory...
解説)nvme-rdmaモジュールの filename: に注意
RHEL/CentOS 7.x/8.x系列では、nvme-rdmaドライバによって制御されるNVMEoF区画からSSD-to-GPUダイレクト
データ転送を行うには、パッチを適用したnvme-rdmaドライバを適用する必要があります。
このドライバは nvme_strom パッケージでインストールされますが、同名のINBOXドライバとは異なり、
/lib/modules/<kernel version>/extra 以下に格納されます。
INBOXドライバは /lib/modules/<kernel version>/kernel/drivers/nvme/host/nvme-rdma.ko.xz に
保存されますが、modprobeコマンドは /extra 以下を優先するため、こちらは利用されません。
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた14
NVMEoFホストの設定(1/2)
■ カーネルモジュールのロード
# modprobe nvme-rdma
# modprobe mlx5_ib
■ NVMEoF ターゲットへの接続①
# nvme discover -t rdma -a 192.168.80.100 -s 4420
Discovery Log Number of Records 1, Generation counter 1
=====Discovery Log Entry 0======
trtype: rdma
adrfam: ipv4
subtype: nvme subsystem
treq: not specified
portid: 1
trsvcid: 4420
subnqn: capybara
traddr: 192.168.80.100
rdma_prtype: not specified
rdma_qptype: connected
rdma_cms: rdma-cm
rdma_pkey: 0x0000
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた15
NVMEoFホストの設定(2/2)
■ ローカルのNVMEデバイスを確認
# ls -l /dev/nvme?n?
brw-rw----. 1 root disk 259, 0 Sep 27 13:26 /dev/nvme0n1
brw-rw----. 1 root disk 259, 1 Sep 27 13:26 /dev/nvme1n1
■ NVMEoF ターゲットへの接続②
# nvme connect -t rdma -n capybara -a 192.168.80.100 -s 4420
■ リモートデバイスが認識されている事を確認
# ls -l /dev/nvme?n?
brw-rw----. 1 root disk 259, 0 Sep 27 13:26 /dev/nvme0n1
brw-rw----. 1 root disk 259, 1 Sep 27 13:26 /dev/nvme1n1
brw-rw----. 1 root disk 259, 5 Sep 27 14:00 /dev/nvme2n1
brw-rw----. 1 root disk 259, 7 Sep 27 14:00 /dev/nvme2n2
brw-rw----. 1 root disk 259, 9 Sep 27 14:00 /dev/nvme2n3
brw-rw----. 1 root disk 259, 11 Sep 27 14:00 /dev/nvme2n4
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた16
ストレージ区画の作成
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた17
■ 各NVMEoFストレージにパーティションを作成する
# fdisk /dev/nvme2n1
:
以下、各ディスクに対して繰り返し
■ md-raid0ボリュームの作成
# mdadm -C /dev/md0 -c 128 -l 0 -n 4 /dev/nvme2n?p1
# mdadm --detail --scan > /etc/mdadm.conf
■ md-raid0ボリューム上にパーティションを作成しExt4ファイルシステムで初期化
# fdisk /dev/md0
# mkfs.ext4 -L NVMEOF_DISK /dev/md0p1
■ /etc/fstabへエントリを追加
# vi /etc/fstab
:
LABEL=NVMEOF_DISK /nvme ext4 nofail 0 0
※ “nofail” を指定しないと、起動時にマウントを失敗し、エラーと判断されてしまう。
▼ここまで来たら、単なるローカルブロックデバイスと同じ
参考)NVMEoFボリュームの切り離し手順
▌NVMEoFクライアント側
# umount /nvme
# mdadm --misc --stop /dev/md0
# nvme disconnect -d /dev/nvme0
# nvme disconnect -d /dev/nvme1
▌NVMEoFターゲット側
# rm -f /sys/kernel/config/nvmet/ports/*/subsystems/*
# rmdir /sys/kernel/config/nvmet/ports/*
# rmdir /sys/kernel/config/nvmet/subsystems/*/namespaces/*
# rmdir /sys/kernel/config/nvmet/subsystems/*
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた18
動作確認(1/2)
CPU: Xeon
Gold 6126T
CPU: Xeon
E5-2650v4
GPU: NVIDIA TESLA V100
SSD: Intel DC P4600
SSD: Intel DC P4600
NIC: Mellanox ConnextX-5
NIC: Mellanox ConnextX-5
GPU: NVIDIA TESLA P40
x16
x8
x8
x16
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
SSD: Samsung PRO960
RiserBoard
x16
x16
x8
192.168.80.100
192.168.80.104
/dev/md1
/dev/nvme2n1
/dev/nvme2n2
/dev/nvme2n3
/dev/nvme2n4
どうせPCIe x8スロットで
詰まるので、性能測定と
しては無意味な事に留意
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた19
動作確認(2/2)
▌リモートNVME-SSD ➔ 100G-NIC ➔ 100G-NIC ➔ ローカルGPU
# ssd2gpu_test /mnt/90GB
GPU[0] Tesla P40 - file: /mnt/90GB, i/o size: 86.02GB, buffer 32MB x 6
read: 86.02GB, time: 13.91sec, throughput: 6.18GB/s
nr_ram2gpu: 0, nr_ssd2gpu: 22548480, average DMA size: 128.0KB
▌iostat -m 2
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 2.72 0.00 0.00 97.28
Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn
nvme0n1 0.00 0.00 0.00 0 0
nvme1n1 0.00 0.00 0.00 0 0
nvme2n1 12679.50 1584.94 0.00 3169 0
nvme2n2 12679.50 1584.88 0.00 3169 0
nvme2n3 12682.00 1584.94 0.00 3169 0
md126 50719.50 6339.56 0.00 12679 0
nvme2n4 12681.00 1585.12 0.00 3170 0
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた20
ログ収集デーモン:
『一緒にやってみたい!』方、ぜひお気軽にお声がけください
Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた21
NVME-oFやGPUDirectなど最新技術をブチ込んで、IoT/M2Mログ処理向けに
処理能力100GB/s級のデータ処理基盤を作ろうとしています。
Manufacturing Logistics Mobile Home electronics
JBoF: Just Bunch of Flash
NVME-over-Fabric
(RDMA)
DB管理者
BIツール(可視化)
機械学習アプリケーション
(E.g, 異常検知など)
共通データ
フレーム PG-Strom
20190926_Try_RHEL8_NVMEoF_Beta

20190926_Try_RHEL8_NVMEoF_Beta

  • 1.
    Red Hat EnterpriseLinux 8.0 で NVME-over-Fabricを設定してみた HeteroDB Chief Architect & CEO KaiGai Kohei <kaigai@heterodb.com> #やってみた系
  • 2.
    何をやってる人ですか? 『@kkaigai』 ⇩ 『固定されたツイート』 ⇩ 9/25(水) DB TechShowcase Tokyo 2019 【発表資料】 PostgreSQLをどこまで高速化できるか ~ハードウェアの限界に挑むPG-Stromの挑戦~ Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた2
  • 3.
    みんな大好き NVME-SSD Red HatInsights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた3
  • 4.
    みんな知ってるNVME-SSD  低レイテンシ ✓ PCIeバス直結、プロトコル変換を省略 高スループット ✓ PCIeレーン数に応じたデータ転送レート  スケーラビリティ ✓ 多数のI/Oキューによる多重I/Oの実装  オープン ✓ 制御コマンドを共通規格化 CPURAM SSD SSD PCIe HBA HDD HDD HDD Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた4
  • 5.
    ストレージ容量の上限はシャーシの大きさに規定される…? イマドキの2Uサーバなら、オールフラッシュで200TB近く積めるが…。 model Supermicro 2029U-TN24R4TQty CPU Intel Xeon Gold 6226 (12C, 2.7GHz) 2 RAM 32GB RDIMM (DDR4-2933, ECC) 12 GPU NVIDIA Tesla P40 (3840C, 24GB) 2 HDD Seagate 1.0TB SATA (7.2krpm) 1 NVME Intel DC P4510 (8.0TB, U.2) 24 N/W built-in 10GBase-T 4 8.0TB x 24 = 192TB Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた5 システム導入時に、 データサイズの上限を 正確に予想できるか…?
  • 6.
    NVME-over-Fabric リモートのNVME-SSDをあたかもローカル同様に使う技術 CPURAM SSD NIC PCIe SSD NIC SSD CPURAM PCIe NVME-oF HostNVME-oF Target 高速ネットワーク (RoCE, FC, TCP) Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた6
  • 7.
    #やってみた Red Hat InsightsTech Seminar - LT: RHEL8.0でNVME-oFを設定してみた7
  • 8.
    実験環境(1/2) NVME-Host Supermicro SYS-1019GP-TT magro.heterodb.com (192.168.77.100) NVME-Host Supermicro SYS-5018GR-T saba.heterodb.com (192.168.77.104) CPU: Xeon Gold 6126T CPU:Xeon E5-2650v4 GPU: NVIDIA TESLA V100 SSD: Intel DC P4600 SSD: Intel DC P4600 NIC: Mellanox ConnextX-5 NIC: Mellanox ConnextX-5 GPU: NVIDIA TESLA P40 x16 x8 x8 x16 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 RiserBoard x16 x16 x8 192.168.80.100 192.168.80.104 100Gb RoCE Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた8
  • 9.
    実験環境(2/2) Red Hat InsightsTech Seminar - LT: RHEL8.0でNVME-oFを設定してみた9
  • 10.
    目標とする構成 CPU: Xeon Gold 6126T CPU:Xeon E5-2650v4 GPU: NVIDIA TESLA V100 SSD: Intel DC P4600 SSD: Intel DC P4600 NIC: Mellanox ConnextX-5 NIC: Mellanox ConnextX-5 GPU: NVIDIA TESLA P40 x16 x8 x8 x16 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 RiserBoard x16 x16 x8 192.168.80.100 192.168.80.104 /dev/nvme0 … ローカル /dev/nvme1 … ローカル /dev/nvme2 … NVME-oF区画 /dev/nvme2n1 /dev/nvme2n2 /dev/nvme2n3 /dev/nvme2n4 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた10
  • 11.
    NVMEoFターゲットの設定(1/2) ■ 必要なカーネルモジュールをロードする # modprobenvmet-rdma # modprobe mlx5_ib ■ NVMEoFの設定単位 “subsystem” を作成する # cd /sys/kernel/config/nvmet/subsystems # mkdir -p capybara # ls -lF capybara total 0 drwxr-xr-x. 2 root root 0 Sep 26 15:06 allowed_hosts/ -rw-r--r--. 1 root root 4096 Sep 26 15:06 attr_allow_any_host -rw-r--r--. 1 root root 4096 Sep 27 07:30 attr_serial -rw-r--r--. 1 root root 4096 Sep 27 07:30 attr_version drwxr-xr-x. 6 root root 0 Sep 26 15:07 namespaces/ # echo 1 > capybara/attr_allow_any_host Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた11 注意:ホスト単位で許可を出す事もできるようだ。
  • 12.
    NVMEoFターゲットの設定(1/2) ■ “subsystem”配下に”namespace”を作成し、それぞれ物理 NVME-SSDを関連付ける # cd capybara/namespaces # mkdir -p 1 2 3 4 # echo -n /dev/nvme0n1 > 1/device_path # echo 1 > 1/enable # echo -n /dev/nvme1n1 > 2/device_path # echo 1 > 2/enable # echo -n /dev/nvme2n1 > 3/device_path # echo 1 > 3/enable # echo -n /dev/nvme3n1 > 4/device_path # echo 1 > 4/enable Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた12 注意:echo -n ではなく echo ではデバイス名を認識してくれなかった。
  • 13.
    NVMEoFターゲットの設定(2/2) ■ NVMEoF ネットワークポートの設定 #mkdir -p /sys/kernel/config/nvmet/ports/1 # cd /sys/kernel/config/nvmet/ports/1 # echo 192.168.80.100 > addr_traddr # echo rdma > addr_trtype # echo 4420 > addr_trsvcid # echo ipv4 > addr_adrfam ■ NVMEoF ネットワークポートと “namespace” を関連付ける # cd subsystems # ln -sf ../../../subsystems/capybara ./ Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた13
  • 14.
    NVMEoFホストの設定(0/2) ■ SSD-to-GPU Direct用のドライバソフトウェアをインストール #yum install nvme_strom-2.2-1.el8.x86_64.rpm # modinfo nvme-rdma filename: /lib/modules/4.18.0-80.7.2.el8_0.x86_64/extra/nvme-rdma.ko.xz version: 2.2 description: Enhanced nvme-rdma for SSD-to-GPU Direct SQL license: GPL v2 rhelversion: 8.0 srcversion: 7F097CBE75277A94667B5C9 depends: nvme-fabrics,ib_core,nvme-core,rdma_cm name: nvme_rdma vermagic: 4.18.0-80.7.2.el8_0.x86_64 SMP mod_unload modversions parm: register_always:Use memory registration even for contiguous memory... 解説)nvme-rdmaモジュールの filename: に注意 RHEL/CentOS 7.x/8.x系列では、nvme-rdmaドライバによって制御されるNVMEoF区画からSSD-to-GPUダイレクト データ転送を行うには、パッチを適用したnvme-rdmaドライバを適用する必要があります。 このドライバは nvme_strom パッケージでインストールされますが、同名のINBOXドライバとは異なり、 /lib/modules/<kernel version>/extra 以下に格納されます。 INBOXドライバは /lib/modules/<kernel version>/kernel/drivers/nvme/host/nvme-rdma.ko.xz に 保存されますが、modprobeコマンドは /extra 以下を優先するため、こちらは利用されません。 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた14
  • 15.
    NVMEoFホストの設定(1/2) ■ カーネルモジュールのロード # modprobenvme-rdma # modprobe mlx5_ib ■ NVMEoF ターゲットへの接続① # nvme discover -t rdma -a 192.168.80.100 -s 4420 Discovery Log Number of Records 1, Generation counter 1 =====Discovery Log Entry 0====== trtype: rdma adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 1 trsvcid: 4420 subnqn: capybara traddr: 192.168.80.100 rdma_prtype: not specified rdma_qptype: connected rdma_cms: rdma-cm rdma_pkey: 0x0000 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた15
  • 16.
    NVMEoFホストの設定(2/2) ■ ローカルのNVMEデバイスを確認 # ls-l /dev/nvme?n? brw-rw----. 1 root disk 259, 0 Sep 27 13:26 /dev/nvme0n1 brw-rw----. 1 root disk 259, 1 Sep 27 13:26 /dev/nvme1n1 ■ NVMEoF ターゲットへの接続② # nvme connect -t rdma -n capybara -a 192.168.80.100 -s 4420 ■ リモートデバイスが認識されている事を確認 # ls -l /dev/nvme?n? brw-rw----. 1 root disk 259, 0 Sep 27 13:26 /dev/nvme0n1 brw-rw----. 1 root disk 259, 1 Sep 27 13:26 /dev/nvme1n1 brw-rw----. 1 root disk 259, 5 Sep 27 14:00 /dev/nvme2n1 brw-rw----. 1 root disk 259, 7 Sep 27 14:00 /dev/nvme2n2 brw-rw----. 1 root disk 259, 9 Sep 27 14:00 /dev/nvme2n3 brw-rw----. 1 root disk 259, 11 Sep 27 14:00 /dev/nvme2n4 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた16
  • 17.
    ストレージ区画の作成 Red Hat InsightsTech Seminar - LT: RHEL8.0でNVME-oFを設定してみた17 ■ 各NVMEoFストレージにパーティションを作成する # fdisk /dev/nvme2n1 : 以下、各ディスクに対して繰り返し ■ md-raid0ボリュームの作成 # mdadm -C /dev/md0 -c 128 -l 0 -n 4 /dev/nvme2n?p1 # mdadm --detail --scan > /etc/mdadm.conf ■ md-raid0ボリューム上にパーティションを作成しExt4ファイルシステムで初期化 # fdisk /dev/md0 # mkfs.ext4 -L NVMEOF_DISK /dev/md0p1 ■ /etc/fstabへエントリを追加 # vi /etc/fstab : LABEL=NVMEOF_DISK /nvme ext4 nofail 0 0 ※ “nofail” を指定しないと、起動時にマウントを失敗し、エラーと判断されてしまう。 ▼ここまで来たら、単なるローカルブロックデバイスと同じ
  • 18.
    参考)NVMEoFボリュームの切り離し手順 ▌NVMEoFクライアント側 # umount /nvme #mdadm --misc --stop /dev/md0 # nvme disconnect -d /dev/nvme0 # nvme disconnect -d /dev/nvme1 ▌NVMEoFターゲット側 # rm -f /sys/kernel/config/nvmet/ports/*/subsystems/* # rmdir /sys/kernel/config/nvmet/ports/* # rmdir /sys/kernel/config/nvmet/subsystems/*/namespaces/* # rmdir /sys/kernel/config/nvmet/subsystems/* Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた18
  • 19.
    動作確認(1/2) CPU: Xeon Gold 6126T CPU:Xeon E5-2650v4 GPU: NVIDIA TESLA V100 SSD: Intel DC P4600 SSD: Intel DC P4600 NIC: Mellanox ConnextX-5 NIC: Mellanox ConnextX-5 GPU: NVIDIA TESLA P40 x16 x8 x8 x16 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 SSD: Samsung PRO960 RiserBoard x16 x16 x8 192.168.80.100 192.168.80.104 /dev/md1 /dev/nvme2n1 /dev/nvme2n2 /dev/nvme2n3 /dev/nvme2n4 どうせPCIe x8スロットで 詰まるので、性能測定と しては無意味な事に留意 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた19
  • 20.
    動作確認(2/2) ▌リモートNVME-SSD ➔ 100G-NIC➔ 100G-NIC ➔ ローカルGPU # ssd2gpu_test /mnt/90GB GPU[0] Tesla P40 - file: /mnt/90GB, i/o size: 86.02GB, buffer 32MB x 6 read: 86.02GB, time: 13.91sec, throughput: 6.18GB/s nr_ram2gpu: 0, nr_ssd2gpu: 22548480, average DMA size: 128.0KB ▌iostat -m 2 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 2.72 0.00 0.00 97.28 Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn nvme0n1 0.00 0.00 0.00 0 0 nvme1n1 0.00 0.00 0.00 0 0 nvme2n1 12679.50 1584.94 0.00 3169 0 nvme2n2 12679.50 1584.88 0.00 3169 0 nvme2n3 12682.00 1584.94 0.00 3169 0 md126 50719.50 6339.56 0.00 12679 0 nvme2n4 12681.00 1585.12 0.00 3170 0 Red Hat Insights Tech Seminar - LT: RHEL8.0でNVME-oFを設定してみた20
  • 21.
    ログ収集デーモン: 『一緒にやってみたい!』方、ぜひお気軽にお声がけください Red Hat InsightsTech Seminar - LT: RHEL8.0でNVME-oFを設定してみた21 NVME-oFやGPUDirectなど最新技術をブチ込んで、IoT/M2Mログ処理向けに 処理能力100GB/s級のデータ処理基盤を作ろうとしています。 Manufacturing Logistics Mobile Home electronics JBoF: Just Bunch of Flash NVME-over-Fabric (RDMA) DB管理者 BIツール(可視化) 機械学習アプリケーション (E.g, 異常検知など) 共通データ フレーム PG-Strom