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

Object Storage Service:スナップショット (スナップショットを使用してデータをバックアップおよび復元する)

最終更新日:Dec 10, 2024

スナップショットコマンドを使用して作成したスナップショットを使用して、誤って削除されたデータを復元したり、エラー発生時にサービスの継続性を確保するためにデータをバックアップしたりできます。 OSS-HDFSのスナップショット機能は、HDFSのスナップショット機能と同じ方法で使用できます。 OSS-HDFSのスナップショット機能は、ディレクトリレベルの操作をサポートします。

重要

この機能は試行錯誤であり、大規模な使用にはお勧めできません。

前提条件

ステップ1: 環境変数の設定

  1. Elastic Compute Service (ECS) インスタンスに接続します。 詳細については、「インスタンスへの接続」をご参照ください。

  2. インストールされているJindoSDK JARパッケージのbinディレクトリに移動します。

    cd jindosdk-x.x.x/bin/
    説明

    x.x.xは、JindoSDK JARパッケージのバージョン番号を示します。

  3. binディレクトリのjindo-utilファイルに読み取りおよび書き込み権限を付与します。

    chmod 700 jindo-util
  4. jindo-utilファイルの名前をjindoに変更します。

    mv jindo-util jindo
  5. jindosdk.cfgという名前の設定ファイルを作成し、次のパラメーターを設定ファイルに追加します。

    [common] Retain the following default configurations: 
    logger.dir = /tmp/jindo-util/
    logger.sync = false
    logger.consolelogger = false
    logger.level = 0
    logger.verbose = 0
    logger.cleaner.enable = true
    hadoopConf.enable = false
    
    [jindosdk] Specify the following parameters: 
    <!-- In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.   -->
    fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
    <! -- Configure the AccessKey ID and AccessKey secret that are used to access OSS-HDFS.   -->
    fs.oss.accessKeyId = LTAI********    
    fs.oss.accessKeySecret = KZo1********                                        
  6. 環境変数を設定します。

    export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>

    <JINDOSDK_CONF_DIR> をjindosdk.cfg設定ファイルの絶対パスに設定します。

手順2: スナップショット関連の操作

スナップショット機能の有効化

たとえば、examplebucketという名前のバケットと、そのバケット内にexampledirという名前のディレクトリがあるとします。 exampledirディレクトリのスナップショット機能を有効にするには、JindoSDKシェルCLIで次のコマンドを実行します。

./jindo admin -allowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir

EMRのエンドポイントを設定する方法の詳細については、「非OSS-HDFSクラスターのOSS-HDFSへの接続」をご参照ください。

スナップショットの作成

examplebucketバケットのexampledirディレクトリのスナップショット機能を有効にした後、次の操作を実行してスナップショットを作成します。

  1. サブディレクトリとオブジェクトを作成します。

    dir1とdir2という名前のサブディレクトリ、およびfile1とfile2という名前のオブジェクトをexampledirディレクトリに作成します。

    # Create the dir1 subdirectory. 
    hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
    # Create the dir2 subdirectory. 
    hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir2
    # Create the file1 object. 
    hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file1.txt
    # Create the file2 object. 
    hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file2.txt
  2. exampledirディレクトリにS1という名前のスナップショットを作成します。

    hdfs dfs -createSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1

スナップショットの名前変更

HDFSシェルCLIで次のコマンドを実行して、S1スナップショットS2の名前を変更できます。

hdfs dfs -renameSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1 S2

スナップショット内のディレクトリとオブジェクトへのアクセス

examplebucketバケットのexampledirルートディレクトリにあるdir1サブディレクトリにアクセスするには、HDFSシェルCLIで次のコマンドを実行します。

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

exampledirルートディレクトリにアクセスするには、このディレクトリ用に作成したS1スナップショットにアクセスします。 S1スナップショット内のディレクトリとオブジェクトにアクセスする場合は、HDFSシェルCLIで次のコマンドを実行します。

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1

スナップショットの比較

exampledirディレクトリのS1スナップショットとS2スナップショットを比較するには、JindoSDKシェルCLIで次のコマンドを実行します。

./jindo admin -snapshotDiff \
                -dlsUri -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir \
                -fromSnapshot S1 \
                -toSnapshot S2

スナップショットを使用したデータの復元

スナップショット機能を使用して、データをバックアップおよび復元できます。 スナップショット機能を使用すると、誤って削除したデータをタイムリーに復元できます。 たとえば、次のコマンドを実行して、examplebucketバケットのexampledirルートディレクトリからdir1オブジェクトを削除します。

hdfs dfs -rm -r oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

examplebucketバケットのexampledirルートディレクトリ用に作成したS1スナップショットを使用して、HDFSシェルCLIで次のコマンドを実行して、削除されたオブジェクトを復元できます。

hdfs dfs -cp oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1  oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir

データが復元されたら、次のコマンドを実行して、誤って削除したディレクトリまたはオブジェクトを表示します。

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

スナップショットの削除

examplebucketバケットのexampledirルートディレクトリ用に作成したS1スナップショットを保持しない場合、またはS1スナップショットの名前を変更して取得したS2スナップショットを保持しない場合は、HDFSシェルCLIで次のコマンドを実行してS1スナップショットまたはS2スナップショットを削除します。

  • S1スナップショットの削除

    hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1
  • S2スナップショットの削除

    hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S2

スナップショット機能の無効化

スナップショット機能を使用する必要がなくなった場合は、JindoSDKシェルCLIで次のコマンドを実行してスナップショット機能を無効にします。

./jindo admin -disallowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
重要

スナップショット機能を無効にする前に、宛先パスのすべてのスナップショットが削除されていることを確認してください。 それ以外の場合、スナップショット機能を無効にするとエラーが発生します。