Rakeタスクのアップロードとマイグレーション

gitlab:uploads:migrate は、異なるストレージタイプ間でアップロードを移行します。

オブジェクトストレージへの移行

GitLabのアップロード用にオブジェクトストレージを設定した後、このタスクを使って既存のアップロードをローカルストレージからリモートストレージに移行します。

GitLabでのオブジェクトストレージの使用についてはこちらをご覧ください。

注意:すべての処理はバックグラウンドワーカーで行われ、ダウンタイムは必要ありません。

オールインワン・レーキ・タスク

GitLabは、アップロードされたすべてのファイル(例えばアバター、ロゴ、添付ファイル、ファビコンなど)をオブジェクトストレージに一度に移行するラッパーRakeタスクを提供します。 ラッパータスクは、それぞれのカテゴリーに該当するファイルを一つずつ移行する個別のRakeタスクを呼び出します。

これらの個々のRakeタスクについては、次のセクションで説明します。

すべてのアップロードをローカル・ストレージからオブジェクト・ストレージに移行するには、以下を実行します:

オムニバス・インストール

gitlab-rake "gitlab:uploads:migrate:all"

ソースインストール

sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:migrate:all

個別のレーキ作業

すでにオールインワンのRakeタスクを実行していれば、これらの個別タスクを実行する必要はありません。

Rakeタスクは、移行するアップロードを見つけるために3つのパラメータを使用します:

パラメータ タイプ 説明
uploader_class 移行元のアップローダーのタイプ。
model_class 移行元モデルのタイプ。
mount_point 文字列/記号 アップローダーが取り付けられているモデルのカラムの名前。
Note:これらのパラメータは主に GitLab の内部構造に関するものなので、以下のタスクリストを参照してください。

このタスクはデフォルトのバッチサイズを上書きする環境変数も受け付けます:

変数 タイプ 説明
BATCH 整数 バッチのサイズを指定します。 デフォルトは200です。

以下は、個々のタイプのアップロードに対してgitlab:uploads:migrate を実行する方法を示しています。

オムニバス・インストール

# gitlab-rake gitlab:uploads:migrate[uploader_class, model_class, mount_point]

# Avatars
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Project, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Group, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, User, :avatar]"

# Attachments
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Note, :attachment]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :logo]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :header_logo]"

# Favicon
gitlab-rake "gitlab:uploads:migrate[FaviconUploader, Appearance, :favicon]"

# Markdown
gitlab-rake "gitlab:uploads:migrate[FileUploader, Project]"
gitlab-rake "gitlab:uploads:migrate[PersonalFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[NamespaceFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[FileUploader, MergeRequest]"

# Design Management design thumbnails
gitlab-rake "gitlab:uploads:migrate[DesignManagement::DesignV432x230Uploader, DesignManagement::Action, :image_v432x230]"

ソースインストール

注:RAILS_ENV=production をすべてのタスクに使用してください。
# sudo -u git -H bundle exec rake gitlab:uploads:migrate

# Avatars
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, Project, :avatar]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, Group, :avatar]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, User, :avatar]"

# Attachments
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Note, :attachment]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :logo]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :header_logo]"

# Favicon
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FaviconUploader, Appearance, :favicon]"

# Markdown
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FileUploader, Project]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[PersonalFileUploader, Snippet]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[NamespaceFileUploader, Snippet]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FileUploader, MergeRequest]"

# Design Management design thumbnails
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[DesignManagement::DesignV432x230Uploader, DesignManagement::Action]"

ローカルストレージへの移行

何らかの理由でオブジェクト ストレージを無効にする必要がある場合は、まずデータをオブジェクト ストレージからローカル ストレージに移行する必要があります。

警告:移行中にオブジェクト・ストレージに新しいファイルが作成されないよう、長時間のダウンタイムが必要です。 構成変更のための短時間のダウンタイムのみでオブジェクト・ストレージからローカル・ファイルへの移行を可能にする構成設定が、近日中に追加される予定です。 進行状況については、関連するイシューを参照してください。

オールインワン・レーキ・タスク

GitLabは、アップロードされたすべてのファイル(例えば、アバター、ロゴ、添付ファイル、ファビコン)をワンステップでローカルストレージに移行するラッパーRakeタスクを提供します。 ラッパータスクは、これらのカテゴリに該当するファイルを一つずつ移行する個別のRakeタスクを呼び出します。

これらのRakeタスクの詳細については、個々のRakeタスクを参照してください。この場合のタスク名はgitlab:uploads:migrate_to_localです。

アップロードをオブジェクトストレージからローカルストレージに移行するには:

  1. gitlab.rbuploads の設定でdirect_uploadbackground_upload の両方を無効にします。
  2. Rakeタスクを実行します:

    オムニバス・インストール

    gitlab-rake "gitlab:uploads:migrate_to_local:all"
    

    ソースインストール

    sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:migrate_to_local:all
    

Rakeタスクを実行した後、オブジェクト・ストレージを設定する手順で説明した変更を元に戻すことで、オブジェクト・ストレージを無効にすることができます。