LinuxでOpenStack Swiftをマウント — NetDriveの実験的ビルド

読了目安 8 分 provider-guide openstack linux
Alex
AlexPrincipal Engineer
NetDriveの実験的Linuxビルドで、OpenStack SwiftコンテナをUbuntuのマウントポイントとしてマウントします。Keystone認証情報、マウントポイントの設定、確認手順を解説。

自前のOpenStackクラスタを運用しているデータエンジニアリングチームには、Ubuntuマシン上で open()pandas.read_csv()、エクスポートされたディレクトリ全体への grep など、通常のファイルシステムパスを前提とした分析スクリプトがある。しかし実際のデータセットはSwiftコンテナに置かれており、Keystoneで認証されたHTTPS呼び出しを通じてしかアクセスできない。既存のスクリプトをすべてSwift APIを話すように書き換えるのは、コンテナを通常のパスにマウントして既存ツールをそのまま使わせる代替策がある以上、割に合わない。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

OpenStack SwiftをUbuntuにマウント

NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。

  • Swiftコンテナが通常のUbuntuマウントポイントに現れる
  • Keystone v2とv3の両方の認証に対応
  • S3、Wasabiなど20以上のプロバイダーと同一インストールで併用可能
WindowsmacOS
NetDrive for Linuxをダウンロード →

無料トライアル。永久ライセンスとサブスクリプションプランあり。

APIをスクリプトで扱う代わりにSwiftをマウントする理由

OpenStack Swift自身のツール群 —— python-swiftclient や直接のREST呼び出し —— は、読み取りを行うコードを自分で制御できる場合には申し分ない。しかし制御できないものには不向きだ。レガシーな分析パイプライン、tar ジョブ、オブジェクトストレージSDKに合わせて書き直されることのない同僚のノートブックなどが該当する。NetDriveはマウントポイントを通じてコンテナに対するファイル操作を解決するため、パスを開くだけのどんなプロセスも変更なしで動作する。

NetDriveはバージョン3.1以降OpenStack Swiftに対応しており、3.1.234でHTTPSサポートが追加された。Swiftの認証トークンを平文のHTTPで送ることは避けるべきなので、現行のどのインストールでもHTTPSが標準的な構成となる。Linuxを含むすべてのプラットフォームで推奨されているリリースは現行の 3.19.7 だ。

NetDriveがクラウドストレージアカウントをローカルドライブとしてマウントしている様子 — Linuxビルドがマウントポイントで提供するのも同じ基本的な操作感

UbuntuへのNetDriveのインストール

NetDriveのLinuxビルドは、Ubuntuのパッケージリポジトリではなく GitHub 経由で配布される。

  1. github.com/NetDrive/installer にアクセスし、使用中のUbuntuバージョンに対応するリリースをダウンロードする。
  2. そのリポジトリのリリースノートに従って、NetDriveがマウントを行う前に必要なドライバコンポーネントをインストールする。
  3. NetDriveパッケージ本体をインストールする。
  4. NetDriveを起動する —— 初回起動時にドライバコンポーネントが読み込まれ、sudo を求められることがある。

サポートされる最小バージョンは Ubuntu 16.04 で、このビルドはNetDrive自身の比較ページ全体で一貫して付けられている 実験的 というラベルをそのまま引き継いでいる。NetDriveのテストの大半はWindowsとmacOSに割かれており、Linux上でのSwiftマウントは開発マシンや分析ノードには十分に適しているが、自分自身で検証していない無人の本番ジョブにはあまり向かない。

接続前に必要なもの

以下の情報をOpenStack管理者、またはクラスタのHorizonダッシュボードから入手する。

  • Auth URL —— バージョンパスを含むKeystoneのアイデンティティエンドポイント。例: https://keystone.example.org:5000/v3
  • Username と Password —— OpenStackの認証情報(デプロイ先がHorizonログインとは別にアプリケーション認証情報を発行している場合はそれ)
  • Project / Tenant名 —— コンテナを所有するプロジェクト(Keystone v3)またはテナント(v2)
  • Region —— クラスタが複数リージョンにまたがる場合のみ必要
  • Container名 —— 空欄にするとアカウントルートがマウントされ、すべてのコンテナがトップレベルフォルダとして一覧表示される。特定の1コンテナを直接マウントしたい場合は名前を指定する。

OpenStack Swiftのロゴ — OpenStackプラットフォームのオブジェクトストレージコンポーネント

手順:UbuntuでOpenStack Swiftを接続する

  1. NetDriveのDrive Manager を開き+ Add Drive をクリックする。
  2. プロバイダー一覧から OpenStack Swift を選択する。
  3. Auth URL、Username、Password、Project/Tenant名を入力し、該当する場合はRegionとContainer名も入力する。
  4. マウントポイントを設定する —— /mnt/swift-data のようなパス、または書き込み権限のある任意の空ディレクトリでよい。
  5. 読み書きアクセスには Network Drive を、そのマシンからクラスタへ二度と書き込ませたくない場合は Read-only Drive を選択する。
  6. Connect をクリックする。NetDriveが認証を行い、そのパスにコンテナをマウントする。

実験的ビルドである以上、GUIの表示だけを信用せず、ターミナルからもマウントを確認しておく価値がある。

mount | grep swift-data
ls /mnt/swift-data

クラウドドライブのマウント後に接続が成功したことを確認している様子

一覧表示が空のまま返ってきた場合、大きなコンテナではルートが埋まるまで少し時間がかかることがあるので、まずしばらく待ってみる。それでも空のままであれば、まずAuth URLとProject/Tenant名を再確認すること —— プロジェクトの不一致は、Swift接続が初回試行で静かに失敗する最も一般的な原因だ。処理結果をコンテナへ書き戻すような書き込み中心のジョブについては、NetDriveはそれをトリガーしたプロセスをブロックせず、転送をバックグラウンドでキューに入れる。

マウントされたクラウドドライブへのファイル転送進捗を示すバックグラウンドアップロードキュー

Linuxビルドが異なる点

  • 独立したリリースサイクル —— Linuxのドライバコンポーネントは、WindowsおよびmacOSビルドとは別のスケジュールでリリースされる。
  • apt との統合なし —— アップデートは apt upgrade ではなく、GitHubリリースとして届く。
  • WindowsとmacOSが引き続き堅牢化されたターゲット —— NetDrive自身のガイダンスではこれらをプロダクション対応として扱っており、Linuxは自分のハードウェアとワークロードで検証を終えるまでは実験的というラベルが付けられたままとなる。

まとめ

UbuntuでOpenStack Swiftをマウントすれば、apt ではなくGitHubで配布されるインストーラを通じて、WindowsやmacOSでNetDriveが提供するのと同じパスベースのアクセスをLinuxの分析マシンにも与えられる。同じプロバイダーをよりテストされたプラットフォームで使う場合は、Windows で NetDrive を使って OpenStack Swift をマウントする または macOS で NetDrive を使って OpenStack Swift をマウントする を参照。UbuntuでNetDriveを運用する全体像については、Ubuntu Linux 上の NetDrive を参照。

— Alex, NetDrive