第2章 OpenShift 環境における Red Hat Gluster Storage Pod での操作

本章では、Red Hat Gluster Storage Pod(gluster Pod) で実行できるさまざまな操作を一覧表示します。

  • Pod を一覧表示するには、以下のコマンドを実行します。

    # oc get pods -n <storage_project_name>

    以下に例を示します。

    # oc get pods -n storage-project
    NAME                                                     READY     STATUS    RESTARTS   AGE
    storage-project-router-1-v89qc                           1/1       Running   0          1d
    glusterfs-dc-node1.example.com                           1/1       Running   0          1d
    glusterfs-dc-node2.example.com                           1/1       Running   1          1d
    glusterfs-dc-node3.example.com                           1/1       Running   0          1d
    heketi-1-k1u14                                           1/1       Running   0          23m

    以下は、上記の例の gluster Pod です。

    glusterfs-dc-node1.example.com
    glusterfs-dc-node2.example.com
    glusterfs-dc-node3.example.com
    注記

    topology.json ファイルは、指定の 信頼済みストレージプール (TSP) のノードの詳細を提供します。上記の例では、3 つの Red Hat Gluster Storage ノードはすべて同じ TSP から取得されます。

  • gluster Pod シェルに入るには、以下のコマンドを実行します。

    # oc rsh <gluster_pod_name> -n <storage_project_name>

    以下に例を示します。

    # oc rsh glusterfs-dc-node1.example.com -n storage-project
    
    sh-4.2#
  • ピアステータスを取得するには、以下のコマンドを実行します。

    # gluster peer status

    以下に例を示します。

    # gluster peer status
    
    Number of Peers: 2
    
    Hostname: node2.example.com
    Uuid: 9f3f84d2-ef8e-4d6e-aa2c-5e0370a99620
    State: Peer in Cluster (Connected)
    Other names:
    node1.example.com
    
    Hostname: node3.example.com
    Uuid: 38621acd-eb76-4bd8-8162-9c2374affbbd
    State: Peer in Cluster (Connected)
  • 信頼済みストレージプールの gluster ボリュームを一覧表示するには、以下のコマンドを実行します。

    # gluster volume info

    以下に例を示します。

    Volume Name: heketidbstorage
    Type: Distributed-Replicate
    Volume ID: 2fa53b28-121d-4842-9d2f-dce1b0458fda
    Status: Started
    Number of Bricks: 2 x 3 = 6
    Transport-type: tcp
    Bricks:
    Brick1: 192.168.121.172:/var/lib/heketi/mounts/vg_1be433737b71419dc9b395e221255fb3/brick_c67fb97f74649d990c5743090e0c9176/brick
    Brick2: 192.168.121.233:/var/lib/heketi/mounts/vg_0013ee200cdefaeb6dfedd28e50fd261/brick_6ebf1ee62a8e9e7a0f88e4551d4b2386/brick
    Brick3: 192.168.121.168:/var/lib/heketi/mounts/vg_e4b32535c55c88f9190da7b7efd1fcab/brick_df5db97aa002d572a0fec6bcf2101aad/brick
    Brick4: 192.168.121.233:/var/lib/heketi/mounts/vg_0013ee200cdefaeb6dfedd28e50fd261/brick_acc82e56236df912e9a1948f594415a7/brick
    Brick5: 192.168.121.168:/var/lib/heketi/mounts/vg_e4b32535c55c88f9190da7b7efd1fcab/brick_65dceb1f749ec417533ddeae9535e8be/brick
    Brick6: 192.168.121.172:/var/lib/heketi/mounts/vg_7ad961dbd24e16d62cabe10fd8bf8909/brick_f258450fc6f025f99952a6edea203859/brick
    Options Reconfigured:
    performance.readdir-ahead: on
    
    Volume Name: vol_9e86c0493f6b1be648c9deee1dc226a6
    Type: Distributed-Replicate
    Volume ID: 940177c3-d866-4e5e-9aa0-fc9be94fc0f4
    Status: Started
    Number of Bricks: 2 x 3 = 6
    Transport-type: tcp
    Bricks:
    Brick1: 192.168.121.168:/var/lib/heketi/mounts/vg_3fa141bf2d09d30b899f2f260c494376/brick_9fb4a5206bdd8ac70170d00f304f99a5/brick
    Brick2: 192.168.121.172:/var/lib/heketi/mounts/vg_7ad961dbd24e16d62cabe10fd8bf8909/brick_dae2422d518915241f74fd90b426a379/brick
    Brick3: 192.168.121.233:/var/lib/heketi/mounts/vg_5c6428c439eb6686c5e4cee56532bacf/brick_b3768ba8e80863724c9ec42446ea4812/brick
    Brick4: 192.168.121.172:/var/lib/heketi/mounts/vg_7ad961dbd24e16d62cabe10fd8bf8909/brick_0a13958525c6343c4a7951acec199da0/brick
    Brick5: 192.168.121.168:/var/lib/heketi/mounts/vg_17fbc98d84df86756e7826326fb33aa4/brick_af42af87ad87ab4f01e8ca153abbbee9/brick
    Brick6: 192.168.121.233:/var/lib/heketi/mounts/vg_5c6428c439eb6686c5e4cee56532bacf/brick_ef41e04ca648efaf04178e64d25dbdcb/brick
    Options Reconfigured:
    performance.readdir-ahead: on
  • ボリュームのステータスを取得するには、以下のコマンドを実行します。

    # gluster volume status <volname>

    以下に例を示します。

    # gluster volume status vol_9e86c0493f6b1be648c9deee1dc226a6
    
    Status of volume: vol_9e86c0493f6b1be648c9deee1dc226a6
    Gluster process                             TCP Port  RDMA Port  Online  Pid
    ------------------------------------------------------------------------------
    Brick 192.168.121.168:/var/lib/heketi/mounts/v
    g_3fa141bf2d09d30b899f2f260c494376/brick_9f
    b4a5206bdd8ac70170d00f304f99a5/brick        49154     0          Y       3462
    Brick 192.168.121.172:/var/lib/heketi/mounts/v
    g_7ad961dbd24e16d62cabe10fd8bf8909/brick_da
    e2422d518915241f74fd90b426a379/brick        49154     0          Y       115939
    Brick 192.168.121.233:/var/lib/heketi/mounts/v
    g_5c6428c439eb6686c5e4cee56532bacf/brick_b3
    768ba8e80863724c9ec42446ea4812/brick        49154     0          Y       116134
    Brick 192.168.121.172:/var/lib/heketi/mounts/v
    g_7ad961dbd24e16d62cabe10fd8bf8909/brick_0a
    13958525c6343c4a7951acec199da0/brick        49155     0          Y       115958
    Brick 192.168.121.168:/var/lib/heketi/mounts/v
    g_17fbc98d84df86756e7826326fb33aa4/brick_af
    42af87ad87ab4f01e8ca153abbbee9/brick        49155     0          Y       3481
    Brick 192.168.121.233:/var/lib/heketi/mounts/v
    g_5c6428c439eb6686c5e4cee56532bacf/brick_ef
    41e04ca648efaf04178e64d25dbdcb/brick        49155     0          Y       116153
    NFS Server on localhost                     2049      0          Y       116173
    Self-heal Daemon on localhost               N/A       N/A        Y       116181
    NFS Server on node1.example.com                                        2049      0          Y       3501
    Self-heal Daemon on node1.example.com                                  N/A       N/A        Y       3509
    NFS Server on 192.168.121.172                  2049      0          Y       115978
    Self-heal Daemon on 192.168.121.172            N/A       N/A        Y       115986
    
    Task Status of Volume vol_9e86c0493f6b1be648c9deee1dc226a6
    ------------------------------------------------------------------------------
    There are no active volume tasks
  • スナップショット機能を使用するには、いずれかのノードで以下のコマンドを使用してスナップショットモジュールを読み込みます。

    # modprobe dm_snapshot
    重要

    スナップショットの使用に関する制限

    • スナップショットの作成後に、ユーザーサービス可能なスナップショット機能のみを使用してアクセスする必要があります。これは、以前のバージョンのファイルを必要な場所にコピーするために使用できます。
    • ボリュームをスナップショットの状態に戻すことはサポートされていないため、データの一貫性を損傷する可能性があるため、実行しないでください。
    • スナップショットのあるボリュームでは、ボリューム拡張などのボリューム変更操作を実行できません。
    • gluster ブロックベースの PV の一貫したスナップショットを作成できません。
  • gluster ボリュームのスナップショットを作成するには、以下のコマンドを実行します。

    # gluster snapshot create <snapname> <volname>

    以下に例を示します。

    # gluster snapshot create snap1 vol_9e86c0493f6b1be648c9deee1dc226a6
    
    snapshot create: success: Snap snap1_GMT-2016.07.29-13.05.46 created successfully
  • スナップショットを一覧表示するには、以下のコマンドを実行します。

    # gluster snapshot list

    以下に例を示します。

    # gluster snapshot list
    
    snap1_GMT-2016.07.29-13.05.46
    snap2_GMT-2016.07.29-13.06.13
    snap3_GMT-2016.07.29-13.06.18
    snap4_GMT-2016.07.29-13.06.22
    snap5_GMT-2016.07.29-13.06.26
  • スナップショットを削除するには、以下のコマンドを実行します。

    # gluster snap delete <snapname>

    以下に例を示します。

    # gluster snap delete snap1_GMT-2016.07.29-13.05.46
    
    Deleting snap will erase all the information about the snap. Do you still want to continue? (y/n) y
    snapshot delete: snap1_GMT-2016.07.29-13.05.46: snap removed successfully

    スナップショットの管理に関する詳細は https://access.redhat.com/documentation/ja-jp/red_hat_gluster_storage/3.5/html-single/administration_guide/index#chap-Managing_Snapshots を参照してください。

  • Red Hat Openshift Container Storage 以外のリモートサイトへの geo レプリケーション用に、Red Hat Openshift Container Storage ボリュームを設定できます。geo レプリケーションは、マスター/スレーブモデルを使用します。ここでは、Red Hat Openshift Container Storage ボリュームはマスターボリュームとして機能します。geo レプリケーションを設定するには、gluster Pod で geo レプリケーションコマンドを実行する必要があります。gluster Pod シェルに入るには、以下のコマンドを実行します。

     # oc rsh <gluster_pod_name> -n <storage_project_name>

    geo レプリケーションの設定に関する詳細は https://access.redhat.com/documentation/ja-jp/red_hat_gluster_storage/3.5/html/administration_guide/chap-managing_geo-replication を参照してください。

  • ブリック多重化は、1 つのプロセスに複数のブリックを含めることができる機能です。これにより、リソース消費が減少し、同じメモリー消費量で前より多くのブリックを実行できるようになります。

    ブリック多重化は、Container-Native Storage 3.6 以降デフォルトで有効になっています。これを無効にする場合は、以下のコマンドを実行します。

    # gluster volume set all cluster.brick-multiplex off
  • glusterfs libfuse の auto_unmount オプションが有効になっていると、アンマウントを実行する別のモニタープロセスを実行することで、FUSE サーバーの終了時にファイルシステムがアンマウントされるようにします。

    Openshift の GlusterFS プラグインは、gluster マウントの auto_unmount オプションを有効にします。

2.1. ノードのメンテナーンス

2.1.1. メンテナーンスの前に必要な手順

  • glusterfs daemonset のセレクターであるラベル glusterfs または同等のラベルを削除します。Pod が終了するまで待機します。

    • 以下のコマンドを実行して node selector を取得します。

      # oc get ds

      以下に例を示します。

      # oc get ds
      NAME              DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE
      glusterfs-storage   3         3         3         3            3
                         NODE SELECTOR             AGE
                         glusterfs=storage-host    12d
    • 以下のコマンドを使用して glusterfs ラベルを削除します。

      # oc label node <storge_node1> glusterfs-

      以下に例を示します。

      # oc label node <storge_node1> glusterfs-
      node/<storage_node1> labeled
    • glusterfs Pod が終了するまで待機します。以下のコマンドを使用して検証します。

      # oc get pods -l glusterfs

      以下に例を示します。

      # oc get pods -l glusterfs
      NAME                               READY     STATUS     RESTARTS   AGE
      glusterblock-storage-provisioner   1/1       Running    0          7m
      glusterfs-storage-4tc9c            1/1    Terminating   0          5m
      glusterfs-storage-htrfg            1/1       Running    0          1d
      glusterfs-storage-z75bc            1/1       Running    0          1d
      heketi-storage-1-shgrr             1/1       Running    0          1d
  • 以下のコマンドを実行して、ノードをスケジュール対象外にします。

    # oc adm manage-node --schedulable=false <storage_node1>

    以下に例を示します。

    # oc adm manage-node --schedulable=false <storage_node1>
    NAME            STATUS                     ROLES    AGE  VERSION
    storage_node1   Ready,SchedulingDisabled   compute  12d  v1.11.0+d4cacc0
  • 以下のコマンドを使用してノードをドレイン (解放) します。

    # oc adm drain --ignore-daemonsets <storage_node1>
    注記

    メンテナーンスを実行し、必要に応じて再起動します。

2.1.2. メンテナーンス後の必要な手順

  • 以下のコマンドを使用して、ノードをスケジューリング可能な状態にします。

    # oc adm manage-node --schedulable=true <storage_node1>

    以下に例を示します。

    # oc adm manage-node --schedulable=true <storage_node1>
    NAME       STATUS    ROLES     AGE       VERSION
    node1      Ready     compute   12d       v1.11.0+d4cacc0
  • glusterfs daemonset のセレクターであるラベル glusterfs または同等のラベルを追加します。Pod が使用できる状態になるまで待機します。

    • 以下のコマンドを実行して node selector を取得します。

      # oc get ds

      以下に例を示します。

      # oc get ds
      NAME               DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE
      glusterfs-storage   3         3         3         3            3
                        NODE SELECTOR            AGE
                        glusterfs=storage-host   12d
    • 上記のノードセレクターと以下のコマンドを使用して glusterfs ノードにラベルを付けます。

      # oc label node <storage_node1> glusterfs=storage-host

      以下に例を示します。

      # oc label node <storage_node1> glusterfs=storage-host
      node/<storage_node1> labeled
    • Pod が Ready 状態になるまで待機します。

      # oc get pods

      以下に例を示します。

      # oc get pods
      NAME                                READY     STATUS    RESTARTS   AGE
      glusterblock-storage-provisioner    1/1       Running   0          3m
      glusterfs-storage-4tc9c             0/1       Running   0          50s
      glusterfs-storage-htrfg             1/1       Running   0          1d
      glusterfs-storage-z75bc             1/1       Running   0          1d
      heketi-storage-1-shgrr              1/1       Running   0          1d
    • Pod が 1/1 Ready 状態になるまで待機します。

      以下に例を示します。

      # oc get pods
      NAME                                 READY     STATUS    RESTARTS   AGE
      glusterblock-storage-provisioner     1/1       Running   0          3m
      glusterfs-storage-4tc9c              1/1       Running   0          58s
      glusterfs-storage-htrfg              1/1       Running   0          1d
      glusterfs-storage-z75bc              1/1       Running   0          1d
      heketi-storage-1-shgrr               1/1       Running   0          1d
  • 修復が完了するまで待ち、oc rsh を使用して glusterfs Pod のシェルを取得し、以下のコマンドを使用して修復を監視し、Number of entries がゼロ (0) になるまで待機します。

    # for each_volume in gluster volume list; do gluster volume heal $each_volume info ; done

    以下に例を示します。

    # for each_volume in gluster volume list; do gluster volume heal $each_volume info ; done
    Brick 10.70.46.210:/var/lib/heketi/mounts/vg_64e90b4b94174f19802a8026f652f6d7/brick_564f7725cef192f0fd2ba1422ecbf590/brick
    Status: Connected
    Number of entries: 0
    
    Brick 10.70.46.243:/var/lib/heketi/mounts/vg_4fadbf84bbc67873543472655e9660ec/brick_9c9c8c64c48d24c91948bc810219c945/brick
    Status: Connected
    Number of entries: 0
    
    Brick 10.70.46.224:/var/lib/heketi/mounts/vg_9fbaf0c06495e66f5087a51ad64e54c3/brick_75e40df81383a03b1778399dc342e794/brick
    Status: Connected
    Number of entries: 0
    
    Brick 10.70.46.224:/var/lib/heketi/mounts/vg_9fbaf0c06495e66f5087a51ad64e54c3/brick_e0058f65155769142cec81798962b9a7/brick
    Status: Connected
    Number of entries: 0
    
    Brick 10.70.46.210:/var/lib/heketi/mounts/vg_64e90b4b94174f19802a8026f652f6d7/brick_3cf035275dc93e0437fdfaea509a3a44/brick
    Status: Connected
    Number of entries: 0
    
    Brick 10.70.46.243:/var/lib/heketi/mounts/vg_4fadbf84bbc67873543472655e9660ec/brick_2cfd11ce587e622fe800dfaec101e463/brick
    Status: Connected
    Number of entries: 0