4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Block Volume のアタッチメントタイプを整理する

Posted at

001samune.png

はじめに

本記事では、OCI Block Volume について以下の点を整理していきます。

  • ブロックボリュームのボリュームアタッチメントタイプについて
  • アタッチメントタイプにおける性能差

ブートボリュームのアタッチメントタイプにおける性能差は割愛させていただきます。


ボリュームアタッチメントタイプについて

ブロックボリュームをコンピュートインスタンスにアタッチする際のタイプは2つあります。

  • 準仮想化:VMで使用可能な仮想化アタッチメント
  • iSCSI:ボリュームとアタッチされたインスタンス間の通信に使用されるTCP/IPベースの規格

各アタッチメントタイプを選択できるかどうかは、イメージやインスタンスタイプによって変わります。(※2026年1月時点)

下記内容から、ベア・メタル・インスタンスは iSCSI のみそれ以外はどちらも可能 と理解出来ます。

準仮想化アタッチメントは、次のタイプのVMインスタンスにボリュームをアタッチする際に選択できるオプションです

  • プラットフォーム・イメージから起動されたVMインスタンスの場合、2017年12月以降に公開されたLinuxベース・イメージ、および2018年2月以降に公開されたWindowsイメージに対してこのオプションを選択できます
  • カスタム・イメージから起動されたVMインスタンスの場合、ボリューム・アタッチメント・タイプは、カスタム・イメージが作成されたVMからのボリューム・アタッチメント・タイプに基づいています

ブロック・ボリュームを次のいずれかのタイプのインスタンスに接続する際に選択できるオプションは、iSCSIアタッチメントのみです。

  • ベア・メタル・インスタンス
  • 2018年2月より前に公開されたWindowsイメージに基づくVMインスタンス
  • 2017年12月より前に公開されたLinuxイメージに基づくVMインスタンス


どちらを選ぶべきか

第一は求めるパフォーマンスがでるかどうか

一番は、求める IOPS が出るかどうかです。

公式ドキュメントには、以下記載のように iSCSI の方が準仮想化よりも IOPS 性能が高くなると記載があります。

IOPSパフォーマンスは、iSCSIアタッチメントのほうが準仮想化アタッチメントよりも高くなります

また、準仮想化の場合、ブロックボリュームサイズが大きいと最大 IOPS パフォーマンスが低下すると記載があります。

ブロック・ボリュームが比較的大きい場合にこれを行うと、仮想化のオーバーヘッドにより最大IOPSパフォーマンスが低下します

が、これだけを鵜呑みにせず検証は必要だと考えています。
というのも、以下公式ドキュメントに記載のあるパフォーマンス結果はアタッチメントタイプが明確にされていません。

また、以下公式ドキュメントに記載のあるように、上記ドキュメントのパフォーマンス結果は未フォーマットのデータ・ボリュームに対するものです。
加えて、パフォーマンスSLAの制限も厳しいからです。

このトピックで説明するパフォーマンス結果は、未フォーマットのデータ・ボリュームに対するものです。使用されるファイルシステムに基づいてパフォーマンスが低下する可能性があります

ボリューム当たりのIOPSおよびインスタンス当たりのIOPSに関するブロック・ボリュームのパフォーマンスSLAは、超高パフォーマンスの場合は16コア以上のVM、バランスおよびより高いパフォーマンスの場合は8コア以上のVMに対して、ブロック・ボリューム・サービス・レベルで、iSCSIボリューム・アタッチメントを使用した未フォーマットのRAWボリュームと、準仮想化ボリューム・アタッチメントに適用されます

パフォーマンスが問題ないなら管理しやすさ

パフォーマンスに差異がないのであれば、手間の少ない準仮想化で良いと考えています。

誤差の範囲ではありますが、iSCSI はアタッチ・デタッチの際に追加コマンドが必要になります。


性能検証 ( Oracle Linux )

事前条件

実際に検証していきましょう。
今回の構成は以下の通りです。

architecture.drawio.png

  • 環境構築コードは以下 GitHub にあげてますので、よかったら除いてみてください

コンピュートインスタンスの詳細は以下の通りです。

  • VM.Standard.E5.Flex
  • 8 ocpu
  • 12 GB

ブロックボリュームの詳細は以下の通りです。

  • パフォーマンスレベル:バランス(10 VPU)
  • 100GB(準仮想化)
  • 100GB(iSCSI)

また、ブロックボリュームのパフォーマンス及びシェイプ固有のパフォーマンスは以下の通りです。

柔軟なパフォーマンス・レベル ボリューム・パフォーマンス・ユニット(VPU) IOPS/GB ボリューム当たりの最大IOPS 最大IOPSのサイズ(GB) KBPS/GB ボリューム当たりの最大MBPS
バランス 10 60 25,000 417 480 480

シェイプ OCPU メモリー(GB) 最大ネットワーク帯域幅 インスタンス当たりの最大IOPS インスタンス(ブロック・ボリューム)当たりの最大スループット
VM.Standard.E5.Flex 最小1 OCPU
最大90 OCPU
最小1GB
最大1049GB
1 OCPU当たり1Gbps
最大40Gbps
20,000 *最大ネットワーク帯域幅(Gbps)
最大600,000
120MB/秒*最大ネットワーク帯域幅(Gbps)
最大4,800MB/秒

事前準備

計測には fio を使用します。
せっかくなのでインストールから順を追っていきましょう。

以下コマンドを実行し、fio をインストールします。

$ sudo dnf install fio -y
~省略~
$ fio -v
fio-3.35

検証に使う設定ファイルは以下の通りです。

readwrite.fio
[global]
bs=4k                 # 1回のI/Oで読み書きするデータサイズ(4KB)
buffered=0            # OSのキャッシュを使わない(生のディスクにアクセス)
direct=1              # ダイレクトI/Oを使用(buffered=0 と同じ意味合い)
iodepth=8             # 同時に発行するI/Oの数(キューの深さ)
ioengine=libaio       # Linuxの非同期I/Oエンジンを使用
norandommap           # ランダムI/O時に事前のアクセスマップを作らない
randrepeat=0          # 毎回同じランダムパターンにしない
rw=randrw             # ランダムリード+ランダムライト
rwmixread=70          # 読み70%、書き30%
size=1G               # 各ジョブが使うテストサイズ
time_based            # 時間ベースで負荷をかける
runtime=60            # 本計測 60秒
ramp_time=30          # 最初の30秒はウォームアップ(結果に含めない)
group_reporting       # 複数ジョブの結果をまとめて表示する

#####################################
# 準仮想化ディスク(先に実行)
#####################################
[para-job]
new_group                 # レポートのグループ化
name=paravirtualized-job  # このジョブの名前
directory=/mnt/para01     # テスト実行ディレクトリ
numjobs=16                # 同時に実行するジョブ数 (size*numjobsのファイルが作成される)

#####################################
# iSCSI(後に実行)
#####################################
[iscsi-job]
new_group                 # レポートのグループ化
name=iscsi-job            # このジョブの名前
directory=/mnt/iscsi01    # テスト実行ディレクトリ
numjobs=16                # 同時に実行するジョブ数 (size*numjobsのファイルが作成される)

検証ファイルのポイント

このfio設定の目的
  • 本番に近いランダムI/O負荷を再現する
  • 準仮想化ディスクとiSCSIのIOPS性能を公平に比較する
  • OSキャッシュや初期ブレの影響を排除し、安定した値を取得する
[global] セクションの意図(全ジョブ共通)
I/Oサイズと種類
  • bs=4k

    • 多くの業務システム(DB、アプリ、OS)が使う4KB単位のI/O
    • IOPS測定の基本サイズ
  • rw=randrw

    • ランダムリードとランダムライトを混在
    • 実運用に近いアクセスパターン
  • rwmixread=70

    • 読み取り70%、書き込み30%
    • DBや業務アプリでよくある比率を想定
OSキャッシュの影響を排除
  • direct=1
  • buffered=0
    • OSのページキャッシュを使わず、ストレージそのものの性能を測定
    • キャッシュヒットによる見かけ上の高速化を防ぐ
並列度(負荷の強さ)
  • iodepth=8

    • 1ジョブあたり同時に投げるI/O数
    • SSDやiSCSIの性能を引き出しやすい値
  • numjobs=16

    • 同時に動くジョブ(スレッド)数
I/Oエンジン
  • ioengine=libaio
    • Linuxの非同期I/Oを使用
    • 高負荷時の実運用に近い動作
ランダム性の制御
  • norandommap

    • ランダムI/Oの事前マップを作らない
    • メモリ消費を抑え、実運用に近づける
  • randrepeat=0

    • 毎回異なるランダムパターンでアクセス
    • キャッシュや予測最適化の影響を避ける
計測方法
  • time_based

    • ファイルサイズではなく時間で負荷を制御
    • ストレージ比較では必須
  • runtime=60

    • 本計測時間は60秒
  • ramp_time=30

    • 最初の30秒はウォームアップ
    • キャッシュや内部最適化が落ち着いた後のみを計測
テストデータサイズ
  • size=1GB
    • 各ジョブが使うテストファイルサイズ
    • キャッシュに収まらない十分なサイズを確保
準仮想化ディスク(para-job)の意図
  • directory=/mnt/para01

    • 準仮想化ディスク専用のマウントポイント
    • iSCSIと完全に分離
  • numjobs=16

    • 並列アクセスを再現
iSCSI(iscsi-job)の意図
  • directory=/mnt/iscsi01

    • iSCSI専用のマウントポイント
    • 準仮想化ディスクとは完全に独立
  • numjobs=16

    • 準仮想化ディスクと同一条件で比較

計測

実際に計測していきます。
OS にログインし、任意のフォルダに fio ファイルを作成し、以下コマンドで実行します。

$ pwd
/home/opc
$ ls -al
-rw-r--r--  1 opc  opc  1877 12月 31 23:30 readwrite.fio
$ fio readwrite.fio

結果は以下の通りです。
今回の条件では、特段差異はありませんでした。
テスト時のbsサイズを大きくすれば少しでも優劣がつくかもしれません。
(いずれ検証したいなと思っています)

$ fio readwrite.fio
paravirtualized-job: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=8
...
iscsi-job: (g=1): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=8
...
fio-3.35
Starting 32 processes
paravirtualized-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
para-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
iscsi-job: Laying out IO file (1 file / 1024MiB)
Jobs: 32 (f=32): [m(32)][9.8%][r=40.1MiB/s,w=17.1MiB/s][r=10.3k,w=4366 IOPS][eta 13m:53s] 
+ paravirtualized-job: (groupid=0, jobs=16): err= 0: pid=12171: Thu Jan  1 15:12:48 2026
  read: IOPS=5250, BW=20.5MiB/s (21.5MB/s)(1231MiB/60029msec)
    slat (nsec): min=3705, max=91681, avg=11474.37, stdev=3458.40
    clat (usec): min=468, max=144003, avg=18593.59, stdev=9347.70
     lat (usec): min=477, max=144016, avg=18605.06, stdev=9347.39
    clat percentiles (usec):
     |  1.00th=[  898],  5.00th=[ 3523], 10.00th=[ 6521], 20.00th=[10028],
     | 30.00th=[13435], 40.00th=[16581], 50.00th=[18744], 60.00th=[20579],
     | 70.00th=[22414], 80.00th=[25822], 90.00th=[31327], 95.00th=[33817],
     | 99.00th=[38536], 99.50th=[46400], 99.90th=[68682], 99.95th=[77071],
     | 99.99th=[98042]
   bw (  KiB/s): min=18034, max=23766, per=100.00%, avg=21029.05, stdev=65.96, samples=1909
+    iops        : min= 4508, max= 5940, avg=5256.39, stdev=16.48, samples=1909
  write: IOPS=2248, BW=8995KiB/s (9210kB/s)(527MiB/60029msec); 0 zone resets
    slat (nsec): min=4567, max=68545, avg=13053.44, stdev=3784.32
    clat (usec): min=552, max=95845, avg=13454.40, stdev=8721.50
     lat (usec): min=563, max=95854, avg=13467.45, stdev=8721.58
    clat percentiles (usec):
     |  1.00th=[ 1139],  5.00th=[ 2147], 10.00th=[ 3130], 20.00th=[ 5276],
     | 30.00th=[ 7635], 40.00th=[10159], 50.00th=[12780], 60.00th=[14877],
     | 70.00th=[17171], 80.00th=[20055], 90.00th=[24773], 95.00th=[28705],
     | 99.00th=[38536], 99.50th=[44303], 99.90th=[62653], 99.95th=[69731],
     | 99.99th=[81265]
   bw (  KiB/s): min= 6280, max=11833, per=100.00%, avg=9006.65, stdev=66.75, samples=1909
+    iops        : min= 1570, max= 2958, avg=2251.29, stdev=16.68, samples=1909
  lat (usec)   : 500=0.01%, 750=0.33%, 1000=0.74%
  lat (msec)   : 2=2.05%, 4=5.17%, 10=17.24%, 20=38.13%, 50=35.98%
  lat (msec)   : 100=0.37%, 250=0.01%
  cpu          : usr=0.15%, sys=0.68%, ctx=424412, majf=0, minf=582
  IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=315159,134964,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8
+ iscsi-job: (groupid=1, jobs=16): err= 0: pid=12187: Thu Jan  1 15:12:48 2026
  read: IOPS=5244, BW=20.5MiB/s (21.5MB/s)(1230MiB/60028msec)
    slat (nsec): min=3475, max=99442, avg=7494.14, stdev=3080.78
    clat (usec): min=397, max=130421, avg=17038.12, stdev=9375.32
     lat (usec): min=410, max=130426, avg=17045.61, stdev=9375.18
    clat percentiles (usec):
     |  1.00th=[  652],  5.00th=[ 2245], 10.00th=[ 4621], 20.00th=[ 8455],
     | 30.00th=[11863], 40.00th=[14615], 50.00th=[17171], 60.00th=[19268],
     | 70.00th=[21365], 80.00th=[24249], 90.00th=[29754], 95.00th=[32637],
     | 99.00th=[37487], 99.50th=[43254], 99.90th=[67634], 99.95th=[77071],
     | 99.99th=[94897]
   bw (  KiB/s): min=17664, max=24496, per=100.00%, avg=21006.08, stdev=80.09, samples=1908
+    iops        : min= 4416, max= 6124, avg=5250.83, stdev=20.02, samples=1908
  write: IOPS=2241, BW=8968KiB/s (9184kB/s)(526MiB/60028msec); 0 zone resets
    slat (nsec): min=3696, max=80873, avg=8792.77, stdev=3339.25
    clat (usec): min=484, max=178669, avg=17195.43, stdev=11122.90
     lat (usec): min=494, max=178674, avg=17204.23, stdev=11122.91
    clat percentiles (usec):
     |  1.00th=[  1090],  5.00th=[  2573], 10.00th=[  4015], 20.00th=[  7439],
     | 30.00th=[ 10814], 40.00th=[ 13435], 50.00th=[ 15795], 60.00th=[ 18482],
     | 70.00th=[ 21627], 80.00th=[ 25297], 90.00th=[ 30802], 95.00th=[ 35914],
     | 99.00th=[ 50070], 99.50th=[ 60556], 99.90th=[ 88605], 99.95th=[ 99091],
     | 99.99th=[135267]
   bw (  KiB/s): min= 6504, max=11648, per=100.00%, avg=8977.25, stdev=61.42, samples=1908
+    iops        : min= 1626, max= 2912, avg=2244.01, stdev=15.35, samples=1908
  lat (usec)   : 500=0.12%, 750=1.09%, 1000=0.91%
  lat (msec)   : 2=1.99%, 4=5.00%, 10=16.50%, 20=38.87%, 50=35.01%
  lat (msec)   : 100=0.52%, 250=0.02%
  cpu          : usr=0.16%, sys=0.48%, ctx=425068, majf=0, minf=582
  IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=314833,134566,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: bw=20.5MiB/s (21.5MB/s), 20.5MiB/s-20.5MiB/s (21.5MB/s-21.5MB/s), io=1231MiB (1291MB), run=60029-60029msec
  WRITE: bw=8995KiB/s (9210kB/s), 8995KiB/s-8995KiB/s (9210kB/s-9210kB/s), io=527MiB (553MB), run=60029-60029msec

Run status group 1 (all jobs):
   READ: bw=20.5MiB/s (21.5MB/s), 20.5MiB/s-20.5MiB/s (21.5MB/s-21.5MB/s), io=1230MiB (1290MB), run=60028-60028msec
  WRITE: bw=8968KiB/s (9184kB/s), 8968KiB/s-8968KiB/s (9184kB/s-9184kB/s), io=526MiB (551MB), run=60028-60028msec

Disk stats (read/write):
  sdb: ios=481235/206655, merge=0/0, ticks=8771827/2735393, in_queue=11507220, util=90.02%
  sdc: ios=481135/205996, merge=9/9, ticks=8012870/3492106, in_queue=11504976, util=83.15%

おわりに

本記事では、OCI Block Volume のアタッチメントタイプについてと、性能差についてまとめました。

コンピュートとブロックボリューム間の IOPS は少々おざなりになりがちですが、ごくたまにボトルネックとなったりするので、これを機に見直していきたいと思います。


🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。


番外編

カスタムブートボリュームサイズを利用した際の注意点

Oracle 提供イメージのブートボリュームのサイズは、各OSにおいてデフォルトサイズが決まっています。

  • Linux ベース:46.6 GB
  • Windows ベース:47.0 GB

初回起動時に、カスタムイメージブートボリュームサイズという機能を使ってブートボリュームのサイズを変更することが可能です。(50 GB ~ 32 TB)
※ もちろん起動後のオンライン拡張も可能です

2021 年 10 月より前に公開された Windows Server 2012 R2 Datacenter イメージおよび Windows プラットフォーム イメージの場合、カスタム ブート ボリュームのサイズは、イメージの既定のブート ボリュームのサイズまたは 256 GB のいずれか大きい方よりも大きくする必要があります。

ただしその場合、ルート(Linuxイメージ)もしくはシステム(Windowsイメージ)のパーティションを拡張する必要があります。

Oracle Linux

ブートボリュームを 100 GB として起動した直後のディスク情報です。

ディスク情報確認結果
$ lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  100G  0 disk            ★ ボリュームサイズは変更されている
├─sda1               8:1    0  100M  0 part /boot/efi
├─sda2               8:2    0    2G  0 part /boot
└─sda3               8:3    0 44.5G  0 part            ★ パーティションサイズは変更されていない
  ├─ocivolume-root 252:0    0 29.5G  0 lvm  /
  └─ocivolume-oled 252:1    0   15G  0 lvm  /var/oled
  • 起動後に拡張した場合は、再スキャンしないとOSから変更後のボリュームサイズは認識されないため再スキャンする必要があります

ファイルシステムサイズは変更されていません。

ファイルシステムサイズ確認結果
$ df -h /
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/ocivolume-root   30G  9.8G   20G  33% /

パーティションサイズも変更されていません。

パーティションサイズ確認結果
$ sudo parted /dev/sda print
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 111987916 blocks) or continue with the current setting? 
Fix/Ignore? ignore                                                        
Model: ORACLE BlockVolume (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  106MB   105MB   fat16        EFI System Partition  boot, esp
 2      106MB   2253MB  2147MB  xfs
 3      2253MB  50.0GB  47.8GB                                     lvm

そのため、パーティションサイズを変更し、ファイルシステムサイズを変更する必要があります。
Oracle Linux の場合は、oci-utils を使って、ルートディレクトリのパーティションサイズ及びファイルシステムサイズを、現在のボリュームサイズまで拡張できます。

  • oci-utils は Oracle Linux 以外のディストリビューションでは利用できません

これらのユーティリティは他のディストリビューションでは利用できません。

拡張した結果は以下の通りです。

growfs実行結果
$ sudo /usr/libexec/oci-growfs
Volume Group: ocivolume
Volume Path: /dev/ocivolume/root
Mountpoint Data     
---------------
          mountpoint: /
              source: /dev/mapper/ocivolume-root
     filesystem type: xfs
         source size: 29.4G
                type: lvm
                size: 29.5G
    physical devices: ['/dev/sda3']
    physical volumes: ['/dev/sda', '/dev/sda']
    partition number: ['3']
   volume group name: ocivolume
   volume group path: /dev/ocivolume/root

Partition dry run expansion "/dev/sda3" succeeded.
CHANGE: partition=3 start=4401152 old: size=93325312 end=97726463 new: size=205314015 end=209715166

Expanding partition /dev/sda3: Confirm?   [y/N] y

Partition expand expansion "/dev/sda3" succeeded.
update-partition set to true
FLOCK: try exec open fd 9, on failure exec exits this program
FLOCK: /dev/sda: obtained exclusive lock
resizing 3 on /dev/sda using resize_sfdisk_gpt
209715200 sectors of 512. total size=107374182400 bytes
## sfdisk --unit=S --dump /dev/sda
label: gpt
label-id: 7F04A6B5-D32F-4829-889A-5421AF210C5D
device: /dev/sda
unit: sectors
first-lba: 34
last-lba: 97727250
sector-size: 512

/dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=35B86FE3-B29F-4CDD-9892-9CCFB5D5A3B7, name="EFI System Partition"
/dev/sda2 : start=      206848, size=     4194304, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=35B296B8-A372-41B1-99D1-6BB8305FFBE1
/dev/sda3 : start=     4401152, size=    93325312, type=E6D6D379-F507-44C2-A23C-238F2A3DF928, uuid=5C0DE0D3-2D76-4218-A2A5-89D948113162
padding 33 sectors for gpt secondary header
max_end=209715166 tot=209715200 pt_end=97726463 pt_start=4401152 pt_size=93325312
resize of /dev/sda returned 0.
FLOCK: /dev/sda: releasing exclusive lock

CHANGED: partition=3 start=4401152 old: size=93325312 end=97726463 new: size=205314015 end=209715166

Extending /dev/sda3 succeeded.
Device /dev/sda3 extended successfully.
Logical volume /dev/ocivolume/root extended successfully.
拡張後ファイルシステムサイズ確認結果
$ df -h /
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/ocivolume-root   83G   11G   73G  13% /
Windows Server

ブートボリュームを 100 GB として起動した直後のディスク情報です。
Windows Server の場合は、自動で拡張されていました。

image.png

  • 起動後にリサイズした場合は、手動で拡張する必要があります

iSCSI 接続を Oracle Cloud Agent による自動接続とした際の注意点

Windows Server

iSCSI 接続を手動で実施する場合、コンソール上では以下のコマンドを実行するようにアナウンスされます。

  • 以下コマンドのターゲットIP 及び iSCSI修飾名(IQN) はご自身の環境で変わります
  • 以下コマンドは CHAP有りのコマンドです
# ① iSCSI Initiator サービス(msiscsi)を自動起動に設定
Set-Service -Name msiscsi -StartupType Automatic
# ② iSCSI Initiator サービスを起動
Start-Service msiscsi
# ③ iSCSI ターゲットポータル(接続先IP)を登録
iscsicli.exe QAddTargetPortal 169.254.2.2
# ④ 指定した iSCSI ターゲットにログイン(接続)
iscsicli.exe QLoginTarget iqn.2015-12.com.oracleiaas:edd52ed3-14a2-400d-96c1-9a4fb89dae90 ocid1.volume.oc1.ap-tokyo-1.abxhiljrfvjbr6ttyaqqqcpxxueusthjic2vyfdkpqea3uehflo3tlcuuq6q 4kphZeqcD5pxVLzc
# ⑤ OS 起動時に自動で iSCSI ログインする永続接続を設定
iscsicli.exe PersistentLoginTarget iqn.2015-12.com.oracleiaas:edd52ed3-14a2-400d-96c1-9a4fb89dae90 * 169.254.2.2 3260 * * * 0x8 * * * * * ocid1.volume.oc1.ap-tokyo-1.abxhiljrfvjbr6ttyaqqqcpxxueusthjic2vyfdkpqea3uehflo3tlcuuq6q 4kphZeqcD5pxVLzc 1 * *

Oracle Cloud Agent で自動接続する場合に上記コマンドすべてを実行しているのかと思っていましたが、実際はターゲットポータルの登録までで、iSCSI 自動接続設定は入っていません。
つまり、①〜③まで実行してくれるということです。

実際の確認結果は以下の通りです。
iSCSI サービスですが、自動起動にはなっていました。

PS C:\WINDOWS\system32> Get-Service msiscsi | Select-Object Name, Status, StartType

Name     Status StartType
----     ------ ---------
msiscsi Running Automatic

「サーバーマネージャー」→「ツール」→「iSCSI イニシエーター」→「ターゲット」を見てみると、登録はされていました。
ただし、接続はされていません。この状態で再起動をしてみましたが変わらずでした。
また、接続した後、再起動すると接続がされないことを確認しています。
そのため、上記⑤コマンドを実行する必要があります。
image.png

Oracle Linux

Oracle Linux は再起動後も接続されているので問題ありませんでした。

$ sudo iscsiadm -m session
tcp: [1] 169.254.2.2:3260,1 iqn.2015-12.com.oracleiaas:6c296572-5ce9-4b2d-bdba-9ebfe35ecda2 (non-flash)

ブロックボリュームをアタッチしたらマウントを忘れずに

  • ISCSI 接続の場合は、以降の手順の前に iSCSI コマンドで接続する必要があります

ブロックボリュームを新規でアタッチした場合は、マウントを忘れずに行いましょう。

Oracle Linux

100 GB のブロックボリュームをアタッチした直後のディスク情報です。

$ lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  100G  0 disk 
├─sda1               8:1    0  100M  0 part /boot/efi
├─sda2               8:2    0    2G  0 part /boot
└─sda3               8:3    0 97.9G  0 part 
  ├─ocivolume-root 252:0    0 82.9G  0 lvm  /
  └─ocivolume-oled 252:1    0   15G  0 lvm  /var/oled
sdb                  8:16   0  100G  0 disk            ★ 追加したボリューム

パーティション情報を確認します。
まだ、パーティションが作成されていないことが確認できます。

$ sudo parted -l
モデル: ORACLE BlockVolume (scsi)
ディスク /dev/sda: 107GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  106MB   105MB   fat16             EFI System Partition  boot, esp
 2    106MB   2253MB  2147MB  xfs
 3    2253MB  107GB   105GB                                           lvm


エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: ORACLE BlockVolume (scsi)                                         
ディスク /dev/sdb: 107GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: unknown
ディスクフラグ: 

そのためまずはパーティションを以下のコマンドで作成していきます。

$ sudo parted -s -a optimal /dev/sdb \
mklabel gpt \
mkpart primary 0% 100%

改めて確認すると無事パーティションが作成されています。

$ sudo parted -l
モデル: ORACLE BlockVolume (scsi)
ディスク /dev/sda: 107GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  106MB   105MB   fat16             EFI System Partition  boot, esp
 2    106MB   2253MB  2147MB  xfs
 3    2253MB  107GB   105GB                                           lvm


モデル: ORACLE BlockVolume (scsi)
ディスク /dev/sdb: 107GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了   サイズ  ファイルシステム  名前     フラグ
 1    1049kB  107GB  107GB                     primary

ブートボリュームは LVM で構成されていますが、ブロックボリュームは割愛します。

# 物理ボリューム
$ sudo pvs
  PV         VG        Fmt  Attr PSize   PFree
  /dev/sda3  ocivolume lvm2 a--  <97.90g    0 

# ボリュームグループ
$ sudo vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  ocivolume   1   2   0 wz--n- <97.90g    0 

# 論理ボリューム
$ sudo lvs
  LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oled ocivolume -wi-ao----  15.00g                                                    
  root ocivolume -wi-ao---- <82.90g 

続いてファイルシステムを作成します。

$ sudo mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6553472 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
         =                       exchange=0  
data     =                       bsize=4096   blocks=26213888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1, parent=0
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.

続いてマウントしていきます。
はじめにマウントポイントを作成します。

$ sudo mkdir /mnt/vol01
$ sudo chown opc:opc /mnt/vol01

UUID を確認します。

$ lsblk -o +UUID
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS UUID
sda                  8:0    0  100G  0 disk             
├─sda1               8:1    0  100M  0 part /boot/efi   AE3C-806E
├─sda2               8:2    0    2G  0 part /boot       dd88872e-0527-4193-8282-b8281f1ae6fd
└─sda3               8:3    0 97.9G  0 part             b4rRaD-zOhD-IHdf-NX7O-HCsa-Zmvq-2eJUqC
  ├─ocivolume-root 252:0    0 82.9G  0 lvm  /           3aa327e4-ce2d-4637-9f24-7687e2c0e8b9
  └─ocivolume-oled 252:1    0   15G  0 lvm  /var/oled   1a046f0c-bfff-4334-baf3-32b6db923a8a
sdb                  8:16   0  100G  0 disk             
└─sdb1               8:17   0  100G  0 part             39cc6386-852e-4b1e-aada-c3cc0941f8d8

/etc/fstab に以下の記述を追加し、起動時に自動でマウントされるように設定します。

/etc/fstab
UUID=39cc6386-852e-4b1e-aada-c3cc0941f8d8  /mnt/vol01 xfs defaults,_netdev,nofail 0 2

最後に再マウントを実行します。

$ sudo systemctl daemon-reload
$ sudo mount -a

マウントされているのが確認できました。

$ df -h
ファイルシス               サイズ  使用  残り 使用% マウント位置
devtmpfs                     4.0M     0  4.0M    0% /dev
tmpfs                        5.7G     0  5.7G    0% /dev/shm
tmpfs                        2.3G  8.9M  2.3G    1% /run
efivarfs                     256K   21K  231K    9% /sys/firmware/efi/efivars
/dev/mapper/ocivolume-root    83G   11G   73G   13% /
/dev/sda2                    2.0G  824M  1.2G   42% /boot
/dev/mapper/ocivolume-oled    15G  250M   15G    2% /var/oled
/dev/sda1                    100M  7.2M   93M    8% /boot/efi
tmpfs                        1.2G     0  1.2G    0% /run/user/989
tmpfs                        1.2G     0  1.2G    0% /run/user/1000
/dev/sdb1                    100G  746M  100G    1% /mnt/vol01
  • 上記の手順では、初マウントになるため権限はroot:rootになってしまいます
  • そのため、初マウント後にchownするほうが無難です
Windows Server

100 GB のブロックボリュームをアタッチした直後のディスク情報を確認します。
「Win+R」で「ファイル名を指定して実行」を展開し、「diskmgmt.msc」を実行します。
image.png

アタッチしたディスクがオフラインになっているので、対象のディスクを右クリックし「オンライン」をクリックします。
image.png

続いてディスクを右クリックし「初期化」をクリックします。
image.png

対象のディスクにチェックが付いており、パーティションスタイルが GPT になっていることを確認し「OK」をクリックします。
image.png

これで初期化が完了し、オンラインになりました。
続いてボリュームを作成していきます。
バーのところを右クリックし「新しいシンプルボリューム」をクリックします。
image.png

ウィザードが表示されるので「次へ」をクリックします。
image.png

ボリュームのサイズを設定します。
今回はディスクすべてを使うので、デフォルトのまま「次へ」をクリックします。
image.png

パーティションに割り当てる「ドライブレター」or「ドライブパス」を設定します。
デフォルトのままで「次へ」をクリックします。
image.png

パーティションのフォーマットスタイルを選択します。
デフォルトのままで「次へ」をクリックします。
image.png

確認画面が表示されるので、問題なければ「終了」をクリックします。
image.png

フォーマットが完了すれば以下のように使用可能となります。
image.png

上記 GUI 操作の CLI 操作は以下の通りです。
Administrator 権限で powershell を起動して実行してください。

Initialize-Disk -Number 1 -PartitionStyle GPT
New-Partition -DiskNumber 1 -DriveLetter D -UseMaximumSize
Format-Volume -DriveLetter D -FileSystem NTFS

参考資料

リファレンス

ブログ

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?