ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

OCI の Block Volume を Linux Compute に Attach して xfsファイルシステム でマウントする。(Oracle Cloud Infrastructure)

恐ろしくベーシックな内容やけど、OCI の Block Volume を Linux Compute に Attach して xfsファイルシステム でマウントしてみるやで。
彡(゚)(゚)

1. 環境

前回 Terraform で作成/廃棄できるようにした環境を使います。Private Compute に xfs をマウントします。

検証によく使う Oracle Cloud Infrastructure(OCI)環境を Terraform で作成してみる。
https://qiita.com/ora_gonsuke777/items/8651c4075ec6bf436c4f

blcok00.jpg

2. 参考情報(マニュアル)

以下のマニュアル&他エントリを参照しています。@yamada-hakase さん、いつもお世話になります。
(`・ω・)ゞ

ブロック・ボリュームの概要
https://docs.cloud.oracle.com/ja-jp/iaas/Content/Block/Concepts/overview.htm

ブロック・ボリュームをiSCSIでアタッチする
https://qiita.com/yamada-hakase/items/eb2ca44a112b3b18164e

3. Block Volume作成&Attach

Block Volume を作成して Compute に Attach します。Attach のオプションは iSCSI と 準仮想化(Paravirtualized) が有りますが、今回は SLA が適用される iSCSI を選択します。

ブロック・ボリューム・パフォーマンス
https://docs.cloud.oracle.com/ja-jp/iaas/Content/Block/Concepts/blockvolumeperformance.htm
ボリューム・パフォーマンスSLAは、iSCSIボリューム・アタッチメントのみに適用され、準仮想化アタッチメントには適用されません。

  • Block Volumeの作成画面 blcok01.jpg

  • Block VolumeのAttach画面 blcok02.jpg

4. Block Volume への接続(Compute上でiscsiadm実行)

iSCSI の場合、Compute Instance上 でiscsiadmコマンドを実行して、ボリュームに接続する必要が有ります。この操作をしないと OS上で Block Device として認識されません。

ボリュームへの接続
https://docs.cloud.oracle.com/ja-jp/iaas/Content/Block/Tasks/connectingtoavolume.htm

Block Volume のコンソールから iscsiadm のコマンドを取得できます。これらのコマンドを Private Compute上で実行します。

block04.jpg blcok03.jpg

  • コンソールから取得したiscsiadmコマンド
sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -p xxx.xxx.xxx.xxx:3260
sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n node.startup -v automatic
sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -p xxx.xxx.xxx.xxx:3260 -l

実行結果は以下の通り

$ sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -p xxx.xxx.xxx.xxx:3260
New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] xxx.xxx.xxx.xxx,3260,-1 iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] added
$ sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n node.startup -v automatic
$ sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -p xxx.xxx.xxx.xxx:3260 -l
Logging in to [iface: default, target: iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, portal: xxx.xxx.xxx.xxx,3260] (multiple)
Login to [iface: default, target: iqn.2015-12.com.oracleiaas:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, portal: xxx.xxx.xxx.xxx,3260] successful.

$ ls -la /dev/oracleoci/*
lrwxrwxrwx. 1 root root 6 Jun 14 07:11 /dev/oracleoci/oraclevda -> ../sda
lrwxrwxrwx. 1 root root 7 Jun 14 07:11 /dev/oracleoci/oraclevda1 -> ../sda1
lrwxrwxrwx. 1 root root 7 Jun 14 07:11 /dev/oracleoci/oraclevda2 -> ../sda2
lrwxrwxrwx. 1 root root 7 Jun 14 07:11 /dev/oracleoci/oraclevda3 -> ../sda3
lrwxrwxrwx. 1 root root 6 Jun 14 07:29 /dev/oracleoci/oraclevdb -> ../sdb ★この Block Device が認識
$

5. パーティション作成(fdisk)

fdiskコマンドでパーティションを作成します。特別な事は無いのでつらつらと彡(゚)(゚)

sudo fdisk /dev/oracleoci/oraclevdb

実行結果は以下の通りです。

$ sudo fdisk /dev/oracleoci/oraclevdb
Welcome to fdisk (util-linux 2.23.2).
:

Command (m for help): n ★n を入力(新規パーティション作成)
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p ★p を入力(Primaryパーティション作成)
Partition number (1-4, default 1): 1  ★1 を入力
First sector (2048-1256194047, default 2048): ★default
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1256194047, default 1256194047): ★default
Using default value 1256194047
Partition 1 of type Linux and of size 599 GiB is set

Command (m for help): w ★w を入力(パーティション情報を書き込み)
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

$ ls -la /dev/oracleoci/*
lrwxrwxrwx. 1 root root 6 Jun 14 07:11 /dev/oracleoci/oraclevda -> ../sda
:
lrwxrwxrwx. 1 root root 6 Jun 14 07:35 /dev/oracleoci/oraclevdb -> ../sdb
lrwxrwxrwx. 1 root root 7 Jun 14 07:35 /dev/oracleoci/oraclevdb1 -> ../sdb1 ★このパーティションが作成
$

追加した Block Device にパーティションが作成されました。

6. ファイルシステム・フォーマット(mkfs) + UUID確認(blkid)

mkfsコマンドでフォーマットして、blkidコマンドで UUID を確認します。UUID は後で fstab に記述します。

sudo mkfs -t xfs /dev/oracleoci/oraclevdb1
blkid /dev/oracleoci/oraclevdb1

実行結果は以下の通りです。

$ sudo mkfs -t xfs /dev/oracleoci/oraclevdb1
meta-data=/dev/oracleoci/oraclevdb1 isize=256    agcount=4, agsize=39256000 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=157024000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=76671, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

$ blkid /dev/oracleoci/oraclevdb1
/dev/oracleoci/oraclevdb1: UUID="92bf7e5d-5492-4d7d-8d41-19cf2a87e4c7" TYPE="xfs"

7. マウント用ディレクトリ作成、fstab編集、マウント実行

マウント用のディレクトリを作成して、/etc/fstab にマウント用情報を追記した後にマウントします。
ディレクトリはどこでも良いのですが、/mnt配下に xfs1 というディレクトリを作成します。

cd /mnt
sudo mkdir xfs1
sudo vi /etc/fstab
cat /etc/fstab

fstab のオプションは Example の記載をそのまま流用します。

#
# /etc/fstab
# Created by anaconda on Fri Apr 17 01:03:26 2020
:
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a"   /data1    xfs       defaults,noatime,_netdev      0      2
:

UUID="92bf7e5d-5492-4d7d-8d41-19cf2a87e4c7"    /mnt/xfs1    xfs    defaults,noatime,_netdev      0      2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^これを追記

mountコマンドでマウントして、dfコマンドでファイルシステムとして認識されているか確認します。

sudo mount /mnt/xfs1
df -k

実行結果は以下の通り、上手く行ってますやね!彡(^)(^)

$ sudo mount /mnt/xfs1
$ df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
:
/dev/sda3       40223552 2006140  38217412   5% /
:
/dev/sdb1      627789316   33024 627756292   1% /mnt/xfs1 ★コレ
$

念のために Compute を再起動してもマウントされるか確認、大丈夫なもよう彡(゚)(゚)

$ df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
:
/dev/sda3       40223552 2009320  38214232   5% /
:
/dev/sdb1      627789316   33024 627756292   1% /mnt/xfs1 ★コレ
:
$

opcユーザーで書き込みできるように、chown で owner:group を変更して読み書きしてみます。

sudo chown opc:opc /mnt/xfs1
cd /mnt/xfs1
vmstat 1 > vmstat.log
cat vmstat.log
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 7192392   3112 345484    0    0   103    34   74  107  2  1 97  0  0
 0  0      0 7192392   3112 345520    0    0     0     0   77  141  0  0 100  0  0
 0  0      0 7141820   3112 345520    0    0     0     0  608  416 15  5 81  0  0
 0  0      0 7192176   3112 345524    0    0     0  1440  152  196  1  1 99  0  0

読み書きも出来ました。

8. まとめ

Block Volume を Linux Compute に xfsファイルシステムとしてマウントできたで!彡(^)(^)
さて、今度はこれを Terraform & Ansible で IaC化 したいんやけど、ボリュームの接続辺りで OCI CLI が要るんかしら。。。
彡(゚)(゚)