すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:CNFS ごみ箱による削除済み NAS ファイルの復元

最終更新日:Sep 05, 2026

Container Network File System (CNFS) は、File Storage NAS ボリュームから誤って削除されたファイルを復元するためのごみ箱機能をサポートしており、アプリケーションデータにシンプルで効果的なデータ保護を提供します。本チュートリアルでは、CNFS で管理される NAS ボリューム上に NGINX アプリケーションをデプロイし、ファイルを削除してからごみ箱から復元する手順を説明します。

課金

ごみ箱の有効化は無料です。ただし、ごみ箱内のファイルはストレージ容量を消費し、元のストレージタイプの料金で課金されます。ストレージコストを制限するには、保持期間を設定してください。詳細については、「汎用 NAS ファイルシステムの課金」および「IA ストレージクラスの課金」をご参照ください。

権限

ごみ箱を使用できるのは、ファイルシステムの所有者または権限を付与された RAM ユーザーのみです。詳細については、「RAM ポリシーに基づくアクセス制御の実行」をご参照ください。

前提条件

ステップ 1: CNFS で管理されている NAS ボリュームを使用した NGINX アプリケーションのデプロイ

PersistentVolumeClaim (PVC)、Deployment、および LoadBalancer Service を作成します。次に、NAS ボリュームに index.html ファイルを書き込み、ブラウザーを通じてアクセスできることを確認します。

CNFS オブジェクトのステータスの確認

  1. クラスター内の CNFS オブジェクトを一覧表示します。

       kubectl get cnfs
       NAME                                      AGE
       default-cnfs-nas-7938cef-20210907193713   21h
  2. CNFS オブジェクトのステータスを確認します。続行する前に、CNFS オブジェクトが [Available] ステータスになっている必要があります。

       kubectl get cnfs default-cnfs-nas-7938cef-20210907193713 -o yaml | grep Available
       status: Available

PVC の作成

次のコマンドを実行して、[alibabacloud-cnfs-nas] StorageClass を参照する [cnfs-nas-pvc] という名前の PVC を作成します。

重要

storageClassName フィールドには、CNFS StorageClass を指定する必要があります。

cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cnfs-nas-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alibabacloud-cnfs-nas
  resources:
    requests:
      storage: 30Gi
EOF

Deployment の作成

次のコマンドを実行して、[cnfs-nas-deployment] という名前の Deployment を作成します。この Deployment は PVC を /app にマウントし、コンテナーポート 8080 (http という名前) を公開します。

重要

この Deployment は、前のステップで作成した PVC を参照します。

cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-nas-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      securityContext:
        runAsUser: 0
      containers:
      - name: nginx
        image: docker.io/bitnami/nginx:1.16.1-debian-9-r56
        volumeMounts:
        - mountPath: "/app"
          name: cnfs-nas-pvc
        ports:
        - containerPort: 8080
          name: http
      volumes:
      - name: cnfs-nas-pvc
        persistentVolumeClaim:
          claimName: cnfs-nas-pvc
EOF

LoadBalancer Service の作成

次のコマンドを実行して、[nginx-default] という名前の LoadBalancer Service を作成します。Server Load Balancer (SLB) インスタンスがパブリック IP アドレスを通じて Service を公開し、app: nginx ラベルを持つ Pod に HTTP リクエストを転送します。

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: nginx-default
  labels:
    app: nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: "Cluster"
  ports:
    - name: http
      port: 80
      targetPort: http
  selector:
    app: nginx
EOF

NGINX ウェルカムページの書き込み

  1. Pod 名を取得します。

       kubectl get pod
       NAME                                   READY   STATUS    RESTARTS   AGE
       cnfs-nas-deployment-597bc9fb45-cmkss   1/1     Running   0          3h23m
  2. Pod 内でシェルを開き、/app に移動します。

     kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -ti -- sh
       cd /app
  3. index.html ファイルを書き込みます。

       cat << EOF >> index.html
       <!DOCTYPE html>
       <html>
       <head>
       <title>Welcome to nginx!</title>
       <style>
       html { color-scheme: light dark; }
       body { width: 35em; margin: 0 auto;
       font-family: Tahoma, Verdana, Arial, sans-serif; }
       </style>
       </head>
       <body>
       <h1>Welcome to nginx!</h1>
       <p>If you see this page, the nginx web server is successfully installed and
       working. Further configuration is required.</p>
    
       <p>For online documentation and support please refer to
       <a href="http://nginx.org/">nginx.org</a>.<br/>
       Commercial support is available at
       <a href="http://nginx.com/">nginx.com</a>.</p>
    
       <p><em>Thank you for using nginx.</em></p>
       </body>
       </html>
       EOF
  4. Pod を終了します。

       exit

NGINX ウェルカムページへのアクセスの確認

  1. SLB インスタンスのパブリック IP アドレスを取得します。

       kubectl get svc
       NAME            TYPE           CLUSTER-IP        EXTERNAL-IP      PORT(S)        AGE
       nginx-default   LoadBalancer   192.168.XX.XX     47.115.XX.XX     80:30989/TCP   20h
  2. ブラウザーでパブリック IP アドレス (例: 47.115.XX.XX) を開きます。NGINX ウェルカムページが表示されます。

ステップ 2: ファイルの削除とごみ箱からの復元

index.html を削除してデータ損失をシミュレートし、Container Service for Kubernetes (ACK) コンソールのごみ箱からファイルを復元します。

ファイルの削除

  1. Pod から index.html ファイルを削除します。

       kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -- rm -rf /app/index.html
  2. ブラウザーを更新します。NGINX ウェルカムページにアクセスできなくなり、403 エラーが返されます。

    403 Forbidden
    
    nginx/1.16.1

ごみ箱からのファイルの復元

CNFS は、管理対象の NAS ファイルシステムで、デフォルトでごみ箱を有効にします。

  1. ACK コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

  2. [クラスター] ページで、お使いのクラスターを見つけ、その名前をクリックします。左側のペインで、[ボリューム] > [永続ボリューム] を選択します。

  3. [永続ボリューム] ページで、永続ボリューム (PV) を見つけ、[操作] 列の [ごみ箱] をクリックします。 この例では、PV 名は [nas-ecaf6018-5250-4e19-b570-5d9e657d23bc] です。

  4. NAS ファイルシステムページの [ごみ箱] タブで [削除されたファイルとディレクトリ] タブをクリックし、削除されたファイルを見つけ、[操作] 列の [復元] をクリックします。

  5. [元のパスに復元] をクリックし、次に [OK] をクリックします。

  6. ブラウザーを更新します。NGINX ウェルカムページが再び表示され、index.html が復元されたことが確認できます。

関連ドキュメント

NAS ごみ箱機能の詳細については、「ごみ箱」をご参照ください。