ownCloud Infinite Scale 用の S3 Blob Storage の設定

ownCloud Infinite Scale (oCIS) を使用してユーザーファイルの内容を S3 に保存するには、Storage-Users サービスでs3ngドライバを使用するように設定し、事前に作成したバケットを指定し、サービスのメタデータ ディレクトリを永続的な POSIX ストレージに保持します。S3 はファイル ブロブを保持しますが、すべてのローカル oCIS データ パスを置き換えるわけではありません。

以下の設定は、ownCloud Infinite Scale 8.2 のドキュメントに準拠しています。本番システムを変更する前に、変数名とデプロイメント例を、インストール済みのリリース版のドキュメントと比較してください。

設定する前にストレージレイアウトを確認してください

この文脈では、ブロブは保存されたファイルコンテンツであり、メタデータはoCISがファイルを整理および検索するために使用する情報です。S3NGでは、ブロブはS3互換オブジェクトストアに保存され、メタデータはPOSIXファイルシステム上に残ります。そのファイルシステムは永続的にマウントし、バックアップに含めてください。システムストレージドライバはそのままにしておく必要がありますocis。

この簡単な飛行前チェックリストをご利用ください。

  • S3プロバイダーを選択し、エンドポイント、リージョン、バケット名、サポートされているS3 API操作、およびマルチパート制限を確認してください。
  • oCISを起動する前にバケットを作成してください。ドキュメントに記載されているS3NGの設定手順では、既存のバケットが存在することを前提としています。
  • oCIS専用のアクセスIDを作成し、そのキーとシークレットをデプロイメントのシークレットマネージャーまたは保護された環境設定に保存してください。
  • 永続的なローカルメタデータパスを選択し、oCISプロセスがそのパスを読み書きできることを確認してください。
  • 既存のインストール環境の場合、ストレージドライバを変更する前に、サポートされている移行計画を立ててください。バックエンド設定の変更は、既存のファイルデータのコピーや移行とは異なります。

ownCloudのストレージレイアウトに関する注記には、 S3バケット外に保持される情報が記載されています。そのため、バケットのみを復元しても完全な復旧計画にはなりません。

s3ngストレージドライバ、POSIXメタデータルート、およびocisシステムストレージドライバを示す構成エディタの例。
3つの主要なストレージ設定の例:ユーザーブロブ用のS3NG、永続的なPOSIXメタデータルート、およびoCISシステムドライバ。

バケットを作成し、必要なアクセス権を付与する

プロバイダーのコンソールまたはインフラストラクチャツールでバケットを設定し、oCISサービスIDにそのバケットに必要なアクセス権のみを付与します。ownCloud S3ページには、AWSスタイルのS3 APIの基本ポリシーが記載されています。bucket-nameバケット名をご使用のバケット名に置き換え、プロバイダーがAmazon S3ではなくS3互換の場合は、ポリシー構文をプロバイダーに合わせて調整してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::bucket-name"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:*Object",
        "s3:*MultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Resource": ["arn:aws:s3:::bucket-name/*"]
    }
  ]
}

バケットレベルのARNとオブジェクトレベルのARNは異なります。前者はバケットの一覧表示を許可し、後者はバケット内のオブジェクトにアクションを適用します。ownCloud S3バケットポリシーの要件とプロバイダの最新のポリシードキュメントに従ってください。認証情報をポリシーファイル、ソースリポジトリ、またはスクリーンショットに貼り付けないでください。

プレースホルダーS3バケットのバケット権限とオブジェクト権限を一覧表示するJSONポリシーエディタの例。
この例では、バケット一覧表示権限をオブジェクトおよびマルチパートアップロード権限から分離しています。プレースホルダーのバケットARNを置き換えてください。

Storage-Users S3NG変数を設定します

標準のoCIS環境変数を受け入れるサービス環境またはComposeファイルの場合は、以下の値を設定してください。これらの例はプレースホルダーです。プロバイダから割り当てられたエンドポイントとリージョンを使用してください。

STORAGE_USERS_DRIVER: s3ng
STORAGE_USERS_S3NG_ROOT: /var/lib/ocis/storage/users
STORAGE_SYSTEM_DRIVER: ocis
STORAGE_USERS_S3NG_ENDPOINT: https://s3.example.com
STORAGE_USERS_S3NG_REGION: us-east-1
STORAGE_USERS_S3NG_ACCESS_KEY: ${OCIS_S3_ACCESS_KEY}
STORAGE_USERS_S3NG_SECRET_KEY: ${OCIS_S3_SECRET_KEY}
STORAGE_USERS_S3NG_BUCKET: ocis-user-blobs

永続的なPOSIXストレージにマウント/var/lib/ocis/storage/users(または選択したルート)してください。このメタデータパスをS3バケットに向けないでください。アクセスキーとシークレットを安全に挿入してください。上記の変数参照は、デプロイメントでこれらのシークレット値が提供されていることを前提としています。エンドポイントはoCISサービスからアクセス可能である必要があり、バケット名、リージョン、および認証情報は、同じプロバイダーアカウントとバケットを参照している必要があります。

ownCloudのモジュール式Composeサンプルを使用する場合ocis_full、オプションのS3オーバーレイはサンプル固有のS3NG設定と別のs3ng.yml構成ファイルを使用します。このサンプルを他のComposeファイルと無作為に組み合わせるのではなく、完全なデプロイメントパターンとして従ってください。公式のoCIS ComposeデプロイメントサンプルとStorage-Users環境リファレンスを参照してください。

S3エンドポイント、リージョン、バケット名、およびマスクされたアクセスキーとシークレットキーを含む環境ファイルの例。
プロバイダーのエンドポイント、リージョン、バケットを入力してください。アクセスキーとシークレットキーは、コミットされた設定には含めないでください。

期待するファイルのサイズに合わせてマルチパートアップロードしてください

大容量ファイルはマルチパートに分割してアップロードされます。Amazon S3 では、オブジェクトサイズの最大が 5 TiB、パート数の制限が 10,000 と規定されています。パートサイズは 5 MiB から 5 GiB の間である必要があります。S3NG のデフォルトのパートサイズは 16 MiB と規定されています。このデフォルト値では、パート数の制限がプロバイダの最大オブジェクトサイズに達する前に実質的な上限となる可能性があります。ownCloud の 8.2 ページでは、デフォルトの上限を 160 GiB と推定しています。設定済みのパートサイズとプロバイダのルールを使用して安全な最大値を計算し、余裕を持たせてください。

ownCloud がここで設定可能としている唯一のマルチパート パラメータは ですSTORAGE_USERS_S3NG_PUT_OBJECT_PART_SIZE。サポートするファイル サイズが 10,000 パートを超える必要がある場合は、パート サイズを増やしてください。値はuint64(符号なし整数) なので、文字列に「MiB」を付加するのではなく、バイト数として設定してください。ドキュメントに記載されている 5 MiB ~ 5 GiB の範囲内に収め、選択した値が S3 プロバイダでサポートされていることを確認してください。10,000 パートにわたる 5 TiB オブジェクトの場合、平均パートサイズは 500 MiB になります。

また、oCISホストまたはコンテナ上に一時ストレージを確保してください。ownCloudは、受信データをバッファリングするために、想定される最大ファイルサイズ以上の一時容量が必要であると指摘しています。有効なバケットと認証情報を使用しても、パーツサイズの制限不足や一時ディスクの容量不足による障害を防ぐことはできません。ownCloudのS3アップロード制限と環境変数タイプの参照を参照してください。

データの適用、検証、保護

設定を保存したら、インストール手順に従って oCIS を再起動または再デプロイしてください。サービスログで、設定、エンドポイント、権限、または接続エラーを確認してください。その後、oCIS と同じ構成済みランタイムでブロブストアのチェックを実行してください。

ocis storage-users blobstore check

このメンテナンスコマンドは、設定済みのブロブストアを使用し、ランダムなテストペイロードを用いてアップロード、ダウンロード、削除の往復処理を実行します。これは、特定のストレージチェックを目的としたものであり、すべてのユーザー向けワークフローや非常に大きなアップロードが成功することを保証するものではありません。ブロブストアコマンドのリファレンスには、設定可能なテストペイロードサイズを含むオプションが記載されています。

コマンド「ocis storage-users blobstore check」が表示されたターミナルウィンドウですが、出力は表示されません。
同じ oCIS 構成でこのコマンドを実行して、構成済みのブロブストアを確認してください。この画像にはテスト結果は表示されません。

最後に、クライアントまたはWebインターフェースから小さなテストファイルをアップロードし、ファイルが表示されて開くことを確認してください。大きなファイルを扱う場合は、セットアップに頼る前に、代表的なファイルサイズでテストを行うことをお勧めします。小さなファイルの往復が成功したとしても、マルチパートの容量や利用可能な一時ディスク容量が検証されたことにはなりません。

S3 オブジェクトと POSIX メタデータ、構成、およびその他の必要な oCIS データを、連携したセットとしてバックアップします。ownCloud のバックアップ ガイダンスでは、バックアップのためにインスタンスを停止し、外部に保存されている S3 ブロブを個別に処理するように指示されています。両方のストレージ レイヤーの復元可能なコピーを保持し、デプロイメントを保護対象として扱う前に復元手順をテストしてください。ownCloudのバックアップに関する考慮事項を参照してください。

クイック検証チェックリスト

  • STORAGE_USERS_DRIVERですs3ng。システムストレージは残っていますocis。
  • メタデータのルートは永続的なPOSIXストレージであり、S3バケットは既に存在しています。
  • エンドポイント、リージョン、バケット、認証情報、およびポリシーは、すべて同じプロバイダーアカウントと一致しています。
  • 複数部品サイズ、10,000部品の容量、および一時保管機能は、計画されている最大規模のファイルに対応しています。
  • ブロブストアのチェックは成功し、実際のクライアントによるアップロードも正しく開き、メタデータとバケットの内容の両方がバックアップおよび復元プランに含まれます。

コメントを残す

アップグレード後にownCloudの整合性警告をクリアする

無効ファイルレポートを使用して、一致しないコアファイルまたはアプリ署名を特定し、正しいリリースファイルを復元し、整合性チェックを安全に検証します。

ownCloud Infinite ScaleをDocker Composeでインストールする

ownCloud Infinite Scaleを公式のComposeサンプルからデプロイし、ドメインと永続ストレージを設定した後、TLS、コンテナ、および初回ログインを確認します。

ownCloud Infinite Scale 用の S3 Blob Storage の設定

ownCloud Infinite Scale 用の S3 Blob Storage の設定

ownCloud Infinite Scaleがファイルコンテンツを確実に保存できるように、S3NGドライバー、バケットのアクセス許可、永続的なメタデータストレージ、およびアップロードサイズを設定します。

ownCloudのアップロードが99%で止まった場合は、これらの制限を確認してください。

ownCloudのアップロードが99%で止まった場合は、これらの制限を確認してください。

ownCloud Serverへのアップロードが完了間近で停止する原因を特定するには、ファイルの状態、クォータ、一時ディスク容量、PHPの制限、プロキシのタイムアウトなどを確認してください。

ownCloudのApache .htaccess警告を安全にクリアする

ownCloudのApache .htaccess警告を安全にクリアする

ownCloudのウェブルートに対してのみAllowOverride Allを設定し、アクティブなApache仮想ホストを検証し、安全にリロードして.htaccessルールを復元します。

ownCloud Enterprise Auditingを設定し、ログを確認する

ownCloudのエンタープライズ監査アプリを有効にし、admin_auditイベントを保護されたログファイルにルーティングして、実際のユーザー操作が記録されていることを確認します。

ownCloud Infinite ScaleをOIDCを使用してKeycloakに接続します。

ownCloud Infinite ScaleをOIDCを使用してKeycloakに接続します。

Keycloakのレルム発行者、Webクライアント、およびユーザークレームを整合させることで、ownCloud Infinite ScaleがWebクライアントとモバイルクライアント全体でユーザーを確実にサインインできるようにします。

ownCloudのファイルを共有を失うことなく新しい所有者に移動する

ownCloudのoccコマンドを使用して、所有ファイルと共有フォルダを転送し、何が残るかを把握し、古いアカウントを削除する前にアクセス権を確認してください。

ownCloud 10のクエリを安全にインデックス管理することで高速化

ownCloud 10のデータベースインデックスに注意が必要な場合、サポートされているスキーマ更新を安全に適用する方法、クエリチューニングやデータベースの変更がより適切な解決策となる場合について学びましょう。

ownCloudでLinuxマウントなしでSMB/CIFS共有をマウントする

外部ストレージを介してWindowsまたはSambaネットワーク共有をownCloudに接続し、認証情報を確認し、アクセスできないフォルダのトラブルシューティングを安全に行います。