DSEFSコマンドライン・ツール

DSEファイル・システム(DSEFS)のオプションとコマンド引数。

DSEFSの機能では、ファイルのアップロード、ダウンロード、移動、および削除、ディレクトリーの作成、DSEFSステータスの確認などの操作がサポートされています。

DSEFSコマンドは論理データ・センターでのみ使用できます。DSEFSではセキュアなクラスターとセキュアでないクラスターのどちらも使用できます。「DSEFS認証」を参照してください。

DSEFSファイル・システムとは、以下の複数のモードで対話できます。

DSEFSシェルのロギングの構成

DSEFSシェル・ログ・ファイル.dsefs-shell.logのデフォルトの場所は、ユーザーのホーム・ディレクトリーです。デフォルトのログ・レベルはINFOです。DSEFSシェルのロギングを構成するには、installation_location/resources/dse/conf/logback-dsefs-shell.xmlファイルを編集します。

dseコマンドラインでの使用

以下のように、DSEFSコマンドの前にdse fsを付けます。
dse [dse_auth_credentials] fs dsefs_command  [options]
たとえば、人間が判読可能な形式でファイル・システムのステータスとディスク領域の使用量をリストするには、以下のように入力します。
dse -u user1 -p mypassword fs "df -h"

任意指定のコマンド引数は、角かっこで囲まれています。たとえば、[dse_auth_credentials]や[-R]などです。

変数値はイタリック体になっています。たとえば、directoryや[subcommand]などです。

DSEFSシェルでローカル・ファイル・システムを使用する

パスにfile:というプレフィックスを付けることで、ローカル・ファイル・システム内のファイルを参照できます。たとえば、以下のコマンドを実行すると、システム・ルート・ディレクトリー内のファイルがリストされます。

dsefs dsefs://127.0.0.1:5598/ > ls file:/
bin   cdrom  dev  home  lib32  lost+found  mnt  proc  run   srv  tmp  var         initrd.img.old  vmlinuz.old  
boot  data   etc  lib   lib64  media       opt  root  sbin  sys  usr  initrd.img  vmlinuz         

ローカル・ファイル・システムで多くの後続の操作を実行する場合は、まず現在の作業ディレクトリーをfile:または任意のローカル・ファイル・システム・パスに変更します。

dsefs dsefs://127.0.0.1:5598/ > cd file:
dsefs file:/home/user1/path/to/local/files > ls
conf  src  target  build.sbt  
dsefs file:/home/user1/path/to/local/files > cd ..
dsefs file:/home/user1/path/to/local > 

DSEFSシェルは、各ファイル・システムの最後の作業ディレクトリーを個別に記憶します。前のDSEFSディレクトリーに戻るには、以下のように入力します。

dsefs file:/home/user1/path/to/local/files > cd dsefs:
dsefs dsefs://127.0.0.1:5598/ > 

前のローカル・ディレクトリーに戻るには、以下のように入力します。

dsefs dsefs://127.0.0.1:5598/ > cd file:
dsefs file:/home/user1/path/to/local/files >

ファイル・システムの最後の作業ディレクトリーに対する相対パスを参照するには、相対パスにdsefs:またはfile:のプレフィックスを付けます。次のセッションで、ディレクトリー/home/user1内にディレクトリーnew_directoryが作成されます。

dsefs dsefs://127.0.0.1:5598/ > cd file:/home/user1
dsefs file:/home/user1 > cd dsefs:
dsefs dsefs://127.0.0.1:5598/ > mkdir file:new_directory
dsefs dsefs://127.0.0.1:5598/ > realpath file:new_directory
file:/home/user1/new_directory
dsefs dsefs://127.0.0.1:5598/ > stat file:new_directory
DIRECTORY file:/home/user1/new_directory:
Owner           user1
Group           user1
Permission      rwxr-xr-x
Created         2017-01-15 13:10:06+0200
Modified        2017-01-15 13:10:06+0200
Accessed        2017-01-15 13:10:06+0200
Size            4096

2つの異なるファイル・システム間でファイルをコピーするには、パス内でファイル・システムのプレフィックスを明示的に指定してcpコマンドを使用することもできます。

dsefs file:/home/user1/test > cp dsefs:archive.tgz another-archive-copy.tgz
dsefs file:/home/user1/test > ls
another-archive-copy.tgz archive-copy.tgz  archive.tgz  

認証

$ dse dse_auth_credentialsの場合、複数の方法でユーザー認証情報を指定できます。「DSEツールによる認証情報の提供」を参照してください。DSEFSを使用した認証については、「DSEFS認証」を参照してください。

ワイルドカードのサポート

一部のDSEFSコマンドは、パス引数のワイルドカード・パターン拡張をサポートしています。ワイルドカードを含んでいるパス引数は、ワイルドカード・パターンに一致するパスのセットに対するメソッドの呼び出し前に拡張されて、指定されたメソッドは、拡張されたパスごとに呼び出されます。

たとえば、以下のディレクトリー・ツリーがあるとします。

dirA
|--dirB
|--file1
|--file2

stat dirA/*コマンドを与えると、透過的にstat dirA/dirBstat dirA/file1、およびstat dirA/file2の3つの呼び出しに変換されます。

DSEFSは、以下のワイルドカード・パターンをサポートしています。

  • *は、stat dirA/*の例のように、任意のファイル・システム・エントリー(ファイルまたはディレクトリー)名と一致します。
  • ?は、ファイル・システム・エントリー名の任意の単一の文字と一致します。たとえば、stat dirA/dir?dirA/dirBと一致します。
  • []は、角かっこで囲まれた任意の文字と一致します。たとえば、stat dirA/file[0123]dirA/file1およびdirA/file2と一致します。
  • {}は、角かっこで囲まれ、,で区切られた任意の文字の並びと一致します。たとえば、stat dirA/{dirB,file2}dirA/dirBおよびdirA/file2と一致します。

単一のパスでは、ワイルドカード・パターンの数に制限はありません。

DSEFSを使用した認証については、「DSEFS認証」を参照してください。

複数のコマンドの実行

DSEFSは、1行で複数のコマンドを実行できます。コマンドと引数を引用符で囲みます。各コマンドがDSEFSによって個別に実行されます。

dse fs 'cat file1 file2 file3 file4' 'ls dir1'

同期の強制

ファイルの書き込みを確認する前に、DSEFSは、デフォルトでストレージ・デバイスへのファイルのすべてのブロックの書き込みを強制します。この動作は、mkdirput、およびcpコマンドを使用してDSEFSシェルでファイルまたはディレクトリを作成する場合、 --no-force-syncおよび--force-fsyncフラグで制御できます。force/no-force動作は、指定されていない場合、親ディレクトリーから継承されます。たとえば、--no-force-syncを使用してディレクトリーが作成された場合、ファイル作成中に--force-fsyncが明示的に設定されない限り、--no-force-syncを使用してすべてのファイルが作成されます。

強制同期をオフにすると、永続性を犠牲にしてレイテンシーとパフォーマンスを向上させます。ストレージ・デバイスにデータを書き込む前に電力損失が生じた場合、データが失われる可能性があります。データ・センターに信頼性の高いバックアップ電源を備えていて、すべてのレプリカの障害が生じにくい場合、またはファイルのデータを失う可能性があることを理解している場合にのみ、強制同期をオフにします。

Hadoop SYNC_BLOCKフラグには、DSEFSの--force-syncと同じ効果があります。Hadoop LAZY_PERSISTフラグには、DSEFSの--no-force-syncと同じ効果があります。

DSEFSノードの削除

DSEクラスターからDSEFSを実行中のノードを削除する場合、DSEFSデータ・セット内の適切な正確さを確保するために追加の手順が必要です。

  1. 削除するノードと同じデータ・センターのノードから、DSEFSシェルを起動します。
    dse fs
  2. dfコマンドを使用して現在のDSEFSノードを表示します。
    dsefs > df
    Location                              Status  DC              Rack   Host               Address        Port  Directory            Used         Free    Reserved
    144e587c-11b1-4d74-80f7-dc5e0c744aca  up      GraphAnalytics  rack1  node1.example.com  10.200.179.38  5598  /var/lib/dsefs/data     0  29289783296  5368709120
    98ca0435-fb36-4344-b5b1-8d776d35c7d6  up      GraphAnalytics  rack1  node2.example.com  10.200.179.39  5598  /var/lib/dsefs/data     0  29302099968  5368709120
  3. リストで削除するノードを探し、LocationカラムにあるそのノードのUUID値を書き留めます。
  4. ノードが稼働している場合は、コマンドumount UUIDを使用してDSEFSからそのノードをマウント解除します。
  5. ノードが稼働していない場合は(ハードウェア障害の後など)、コマンドumount -f UUIDを使用してDSEFSから強制的にそのノードをマウント解除します。
  6. すべてのブロックがレプリケートされるように、fsckコマンドを使用して、ファイル・システム・チェックを実行します。
    dsefs > fsck
  7. ノードの削除の通常の手順を続行します。
注: データがDSEFSノードに書き込まれた場合、クラスターにノードがさらに追加されて、fsckを実行せずに元のノードが削除されるため、元のノード内のデータが恒久的に失われる場合があります。

古いDSEFS ディレクトリーの削除

DSEFSデータ・ディレクトリーを変更しても、古いディレクトリーが表示されたままの場合、umountオプションを使用してディレクトリーを削除します。

  1. スーパーユーザー特権を持つロールとしてDSEFSシェルを起動します。
    dse fs
  2. dfコマンドを使用して現在のDSEFSノードを表示します。
    dsefs > df
  3. リストで削除するノードを探し、LocationカラムにあるそのディレクトリーのUUID値を書き留めます。
  4. コマンドumount UUIDを使用してDSEFSからそのノードをマウント解除します。
    dsefs > umount 98ca0435-fb36-4344-b5b1-8d776d35c7d6
  5. すべてのブロックがレプリケートされるように、fsckコマンドを使用して、ファイル・システム・チェックを実行します。
    dsefs > fsck

ファイル・システム・チェックの結果がIOExceptionの場合は、クラスター内のすべてのノードが実行中であることを確認します。

DSEFSシェルを使用してこれらのコマンドを実行すると、ローカルbluefileがリモートDSEFS greenfileに配置されます。
dsefs / >  ls -l 
dsefs / >  put file:/bluefile greenfile
DSEFSディレクトリー内の新しいファイルを表示するには、以下のように入力します。
dsefs / >  ls -l 
Type  Permission  Owner  Group  Length  Modified                  Name                        
file  rwxrwxrwx   none   none       17  2016-05-11 09:34:26+0000  greenfile  
dseコマンドを使用すると、これらのコマンドによってtest2ディレクトリーが作成され、ローカルREADME.mdファイルが新しいDSEFSディレクトリーにアップロードされます。
dse fs "mkdir /test2" &&
dse fs "put README.md /test2/README.md"
新しいディレクトリー・リストを表示するには、以下のように入力します。
dse fs "ls -l /test2"
Type Permission Owner Group Length Modified Name
file rwxrwxrwx none none 3382 2016-03-07 23:20:34+0000 README.md
単一のコマンドラインで複数のdseコマンドを使用できます。JVMの起動とDSEFSとの接続/切断が1回になるので、時間が短縮されます。例を次に示します。
dse fs "mkdir / test2" "put README.md /test/README.md"
以下の例は、ディレクトリーで--no-force-syncフラグを使用する方法と、statを使用して--force-syncフラグの状態を確認する方法を示しています。これらのコマンドは、DSEFSシェル内から実行されます。
dsefs> mkdir --no-force-sync /tmp
dsefs> put file:some-file.dat /tmp/file.tmp
dsefs> stat /tmp/file.tmp
FILE dsefs://127.0.0.1:5598/tmp/file.tmp
Owner           none
Group           none
Permission      rwxrwxrwx
Created         2017-03-06 17:54:35+0100
Modified        2017-03-06 17:54:35+0100
Accessed        2017-03-06 17:54:35+0100
Size            1674
Block size      67108864
Redundancy      3
Compressed      false
Encrypted       false
Forces sync     false
Comment