3.2.3. ブロックボリューム拡張

ブロック永続ボリューム要求 (PVC) を拡張して、アプリケーション Pod のストレージの量を増やすことができます。これには、オフラインサイズ変更およびオンラインサイズ変更の 2 つの方法があります。

3.2.3.1. オフラインのサイズ変更

  1. ブロック PVC を拡張する前に、ブロックホストボリュームに十分なサイズがあることを確認します。

    1. PVC の Heketi ブロックボリューム ID を取得するには、プライマリー OCP ノードで以下のコマンドを実行します。

      # oc get pv $(oc get pvc <PVC-NAME> --no-headers -o=custom-columns=:.spec.volumeName) -o=custom-columns=:.metadata.annotations."gluster\.org/volume-id"
    2. ブロックボリューム ID を取得するには、以下のコマンドを実行します。

      # heketi-cli blockvolume info <block-volume-id>
    3. ブロックホスティングボリューム情報を取得するには、以下のコマンドを実行します。

      # heketi-cli volume info <block-hosting-volume-id>
      注記

      十分な空きサイズがあることを確認します。

  2. アプリケーション Pod を停止します。
  3. heketi-cli を使用してブロックボリュームを拡張するには、以下のコマンドを実行します。

    # heketi-cli blockvolume expand <block-volume-id> --new-size=<net-new-size>

    以下に例を示します。

    # heketi-cli blockvolume expand d911d4bcfd4f11bf07b9688a4798b5dc --new-size=7
    Name: blk_glusterfs_claim2_fc40d362-aaf9-11ea-bb32-0a580a820004
    Size: 7
    UsableSize: 7
    Volume Id: d911d4bcfd4f11bf07b9688a4798b5dc
    Cluster Id: 8d1656d29fb8dc6780388cf797351a6d
    Hosts: [10.70.53.185 10.70.53.203 10.70.53.198]
    IQN: iqn.2016-12.org.gluster-block:8ce8eb4c-4951-4777-9b42-244b7ea525cd
    LUN: 0
    Hacount: 3
    Username: 8ce8eb4c-4951-4777-9b42-244b7ea525cd
    Password: b83a74be-df90-4fd7-b1a1-928fdcfed8c4
    Block Hosting Volume: 2224ac1da64c1737604456a1f511574e
    注記

    expandの出力で Size および UsableSize が一致するようにしてください。ステップ 4 から 8 は、SizeUsableSize が一致する場合に実行できます。

  4. PVC-NAME を実際の PVC に置き換え、ブロックボリュームサイズを更新するためのジョブを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: refresh-block-size
    spec:
      completions: 1
      template:
        spec:
          containers:
            - image: rhel7
              env:
                - name: HOST_ROOTFS
                  value: "/rootfs"
                - name: EXEC_ON_HOST
                  value: "nsenter --root=$(HOST_ROOTFS) nsenter -t 1 -m"
              command: ['sh', '-c', 'echo -e "# df -Th /mnt" && df -Th /mnt &&
                DEVICE=$(df --output=source /mnt | sed -e /^Filesystem/d) &&
                MOUNTPOINT=$($EXEC_ON_HOST lsblk $DEVICE -n -o MOUNTPOINT) &&
                $EXEC_ON_HOST xfs_growfs $MOUNTPOINT > /dev/null &&
                echo -e "\n# df -Th /mnt" && df -Th /mnt']
              name: rhel7
              volumeMounts:
                - mountPath: /mnt
                  name: block-pvc
                - mountPath: /dev
                  name: host-dev
                - mountPath: /rootfs
                  name: host-rootfs
              securityContext:
                privileged: true
          volumes:
            - name: block-pvc
              persistentVolumeClaim:
                claimName: <PVC-NAME>
            - name: host-dev
              hostPath:
                path: /dev
            - name: host-rootfs
              hostPath:
                path: /
          restartPolicy: Never
  5. Pod のログで新規サイズを確認するには、以下のコマンドを実行します。

    # oc logs refresh-block-size-xxxxx
    注記

    xfs_growfs 後の df -Th の出力が新しいサイズを反映することを確認します。

    以下に例を示します。

    # oc logs refresh-block-size-jcbzh
    # df -Th /mnt
    Filesystem         Type  Size  Used Avail Use% Mounted on
    /dev/mapper/mpatha xfs   5.0G   33M  5.0G   1% /mnt
    # df -Th /mnt
    Filesystem         Type  Size  Used Avail Use% Mounted on
    /dev/mapper/mpatha xfs   7.0G   34M  6.0G   1% /mnt
  6. ジョブが成功したことを確認するには、以下のコマンドを実行します。

    # oc get jobs
    NAME                 DESIRED   SUCCESSFUL   AGE
    refresh-block-size   1         1            36m
  7. ジョブを正常に実行したら削除するには、以下のコマンドを実行します。

    # oc delete job refresh-block-size
    job.batch "refresh-block-size" deleted
  8. アプリケーション Pod を起動した後に新規サイズを使用できます。