{OCI ファイル・ストレージ} その6 - ファイルストレージサービス(FSS)で共有ネットワークボリュームを利用する

 

https://docs.oracle.com/ja-jp/iaas/Content/File/home.htm

https://www.oracle.com/jp/cloud/storage/pricing/

https://oracle-japan.github.io/ocitutorials/beginners/using-file-storage/


¥42.00 1か月あたりのギガバイトストレージ容量 

 

 

-- 1. 接続テスト用インスタンス(OL9)作成

oci compute instance launch \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--assign-public-ip true \
--boot-volume-size-in-gbs 50 \
--display-name vm01 \
--fault-domain FAULT-DOMAIN-1 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--shape VM.Standard.E2.1 \
--ssh-authorized-keys-file "$HOME/.ssh/id_rsa.pub" 


oci compute instance list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table

-- 2. マウント・ターゲットの作成

oci fs mount-target list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs mount-target create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--display-name mt01 

 

 


-- 3. ファイル・システムの作成

oci fs file-system list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table

 


oci fs file-system create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--display-name fs01 

 


-- 4. エクスポート・パスの作成
oci fs export-set list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs export list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"path":"path","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs export create \
--export-set-id ocid1.exportset.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--file-system-id ocid1.filesystem.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--path "/fs01" 

 

 


-- 5. VCNのセキュリティリストの設定

NFS通信に必要な TCP の 111、2048、2049、2050 番ポートと、UDPの 111、2048番ポートの通信を許可します。

下記のように修正して、Terraform apply

vim main.tf

resource "oci_core_security_list" "sl01" {
    #Required
    compartment_id = oci_identity_compartment.cmp01.id
    vcn_id = oci_core_vcn.vcn01.id

    #Optional
    display_name = "sl01"
    
    egress_security_rules {
        destination = "0.0.0.0/0"
        protocol = "all"
        stateless = false
    }
    
    ingress_security_rules {
        protocol = "6"
        source = "0.0.0.0/0"
        stateless = false
        tcp_options {
            max = 22
            min = 22
        }
    }
    ingress_security_rules {
        protocol = "6"
        source = "10.0.1.0/24"
        stateless = false
        tcp_options {
            max = 111
            min = 111
        }
    }
    ingress_security_rules {
        protocol = "6"
        source = "10.0.1.0/24"
        stateless = false
        tcp_options {
            max = 2050
            min = 2048
        }
    }
    ingress_security_rules {
        protocol = "17"
        source = "10.0.1.0/24"
        stateless = false
        udp_options  {
            max = 111
            min = 111
        }
    }
    ingress_security_rules {
        protocol = "17"
        source = "10.0.1.0/24"
        stateless = false
        udp_options  {
            max = 2050
            min = 2048
        }
    }

}


terraform apply -auto-approve

 

 

-- 6. ファイルシステムのマウント

OL9で実施

ssh -i $HOME/.ssh/id_rsa opc@192.0.2.1

sudo su -

dnf -y install nfs-utils
mkdir -p /mnt/fs01
mount 10.0.1.114:/fs01 /mnt/fs01
df -h


-- 7. スナップショットの作成
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/create-snapshot-unix-instance.htm


-- 7.1 Unixコマンドによる方法
OL9で実施

cd /mnt/fs01
touch testfile
ls

mkdir ./.snapshot/snap01

rm testfile
ls
ls .snapshot/snap01

cp .snapshot/snap01/testfile .
ls

 

-- 7.2 CLIによる方法


oci fs snapshot list \
--file-system-id ocid1.filesystem.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"name":"name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs snapshot create \
--file-system-id ocid1.filesystem.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--name "snap02" 


→ OL9に「/mnt/fs01/.snapshot/snap02」が生成
ls -l /mnt/fs01/.snapshot/snap02


-- 8. クリーンアップ

スナップショットの削除

oci fs snapshot list \
--file-system-id ocid1.filesystem.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"name":"name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs snapshot delete \
--snapshot-id ocid1.snapshot.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force 

oci fs snapshot delete \
--snapshot-id ocid1.snapshot.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force 

 

 

エクスポート・パスの削除


oci fs export list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"path":"path","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table

 

oci fs export delete \
--export-id ocid1.export.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force 

 

 


ファイル・システムの削除

oci fs file-system list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs file-system delete \
--file-system-id ocid1.filesystem.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force 

 

マウント・ターゲットの削除

oci fs mount-target list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci fs mount-target delete \
--mount-target-id ocid1.mounttarget.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force 

 


インスタンスの削除

oci compute instance list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data[].{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table


oci compute instance terminate \
--instance-id ocid1.instance.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force