Ateam Tech Blog

エイチームのエンジニアたちによるテックブログ

オンプレファイルサーバをBoxへ移行した話

株式会社エイチーム IT統括部 IT戦略グループの国定です。

エイチームでは、長年利用してきたオンプレファイルサーバを製品のEOLに伴い、Boxに完全移行しました。 Tech Blogということで技術面についてメインでご紹介させていただきます。

移行プロジェクトは3名体制で行い、検討開始から完了まで5ヶ月強となりました。

全体の流れとしては以下となりますが、今回は太字の箇所について記載します。

  1. 移行先の選定
  2. 経営層との合意
  3. 現状の詳細調査
  4. 設計
  5. 移行計画の作成
  6. 小規模移行とテスト
  7. データ移行
  8. 権限移行
  9. 切替
  10. ユーザーサポート

今回の話に出てくるシステム

  • Box
    • 移行先のクラウドストレージ
    • 多くの企業で利用されているセキュリティの高いクラウドストレージです。
    • オンプレファイルサーバからの移行先としてSaaSの中では最適だと思い、採用しました。
    • 採用プランは Business Plus で、オプションで Box Governance を追加しています。
  • オンプレファイルサーバ
    • 移行元のファイルサーバ
    • NetApp
  • AD(Active Directory)
    • 主に社内のアカウント管理に使用しているサーバ
  • IdP
    • クラウドサービスなどの認証情報を管理するサービス
  • Data Migration Box
  • Migration Explore

1. 現状の詳細調査

確実にデータとその権限を移行するために以下について現状調査を行いました。

  • 容量(データ量とファイル数)
  • 権限

容量に関する調査

Migration Exploreを利用して調査しました。結果以下の通りでした。

  • データ量:約26TB
  • ファイル数:約2,000万

権限に関する調査

移行元のオンプレファイルサーバはAD(Active Directory)と連携していて、権限は殆どADのグループに基づいて付与されていました。
グループで管理しないと権限変更の度にI/Oにかなりの負荷がかかるため、殆どの企業が同じように管理されているかと思います。
殆とあるように一部はバイネームで権限付与されているものもあり、抜き出して整理し切るまで苦労しました。
また、こちらでは洗い出しきれなかった細かい権限についてはスタッフに洗い出しをお願いしました。

必要なフォルダの権限を以下コマンドを利用して取得しました。

  • icacls フォルダパス
  • Get-ADGroupMember -Recursive -Identity グループ名

コマンドで取得後は確認しやすいようにスプレッドシートに以下を纏めました。

  • フォルダパスと権限グループ・メンバー
  • 権限グループとそのメンバー

2. 設計

  • ここではBoxの設定自体をどうするかの検討や、どういった利用方法があるかの詳細な調査を進めました。

基本設計

自身の組織に合わせたBox設計を行います。
Boxでは、以下2種類のフォルダ構造の考え方があります。

  • オープンフォルダ分類法
    • ユーザー自身が自由にフォルダ作成・共有できる構造です。
  • クローズドフォルダ分類法
    • 管理者がユーザー・コンテンツ両方を管理する方法となります。
    • フォルダの作成・コラボレーション設定・ユーザー作成など管理者で全て行います。

それぞれのメリット・デメリットを理解したうえでどちらかを選択します。
エイチームでは クローズドフォルダ分類法 を選択しました。

support.box.com

ここではフォルダ構造のみを紹介していますが、ログイン方式やユーザをどのように作成するか、Box全体の設定検討も行っています。 また移行時に利用するであろうAPIの利用方法と何が出来るかの調査・検証も行いました。

権限設計

以下の方針にて権限設計を行いました。

  • IdPによる権限グループの管理
    • Boxで設定する権限グループはIdPにて一元管理する。
      • IdPではアカウントとグループ管理、Boxでは権限管理とそれぞれの責任を明確にして管理しやすくしています。
  • バイネームでの権限設定の排除
    • 個別のユーザーではなく、グループ単位で権限を設定する。
      • バイネームの場合、画面上からは誰がどの権限を持っているかが分かりにくく管理がし辛いため、全てをグループで管理します。
  • 権限の調整
    • 移行時は共同所有者、編集者、ビューアーのみとする。
      • なるべくシンプルな状態での移行を目指すため。また、権限の種類が増えることによるスタッフ側の混乱を防ぐためです。
      • Boxには権限が7種類あります。詳しくは以下サポートサイトをご確認ください。

オンプレファイルサーバとBoxの権限設定の違い

前提としてオンプレファイルサーバとBoxでは、権限設定の考え方に大きな違いがあります。

  • オンプレファイルサーバ
    • フォルダ階層ごとに権限を自由に設定・削除できる機能があります。
  • Box
    • ウォーターフォール方式の権限モデルを採用しています。
      • 簡単に表現すると、下位のフォルダで権限の拡大は出来るが、絞ることができない権限モデルです。
    • 詳細はBoxの公式ページでご確認ください:Boxの権限の考え方

この考え方の違いにより、上位フォルダよりも権限を絞っているフォルダはBoxではトップフォルダとして移行する必要があります。 下図のようなイメージです。

権限グループの種類とその設計

大きく3種類の権限グループに分けました。

  • 動的メンバーシップを持つ権限グループ
    • 命名規則Box_人事連動_条件(例:Box_人事連動_エイチーム_管理部_正社員
    • IdPがアカウント情報に基づき、グループメンバーを自動的に更新します。
  • フォルダ専用権限グループとバイネームでの権限付与
    • 命名規則Box_フォルダ名_権限_フォルダID
    • フォルダIDはBoxへのデータ移行後に取得します。
  • その他権限グループ
    • 命名規則Box_〇〇
    • 上記に合致しない権限グループ、例えばプロジェクトメンバーで構成されている権限グループなど

グループはIdPで用意して、Boxに同期させます。

  • IdPの設定で、Box_で始まるグループをBoxに自動同期させます。
    • グループメンバーを変更しても自動でBoxに同期します。
      • ユーザ・グループ管理と権限管理を分けることで、システム毎の責任を明確にしています。

3. 移行計画の作成

  1. 移行方法の検討
    • 様々な移行方法を検討した結果、最終的にData Migration Boxというツールを利用しての移行をすることにしました。
      • www.datamigration.jp
      • このツールのメリット・デメリットは最終的に以下でした。
        • 2023年の頃の情報ですので現在は改善されている可能性があります。あくまでも参考程度に留めてください。
        • メリット
          • 複数のBoxアカウントを使用しての並行移行が可能
          • スケジュール機能
          • 帯域制御機能
          • 視覚的に移行元、移行先が確認可能
        • デメリット
          • 特定のファイル・フォルダは別の場所に移行する場合の設定に癖がある
  2. 移行設計・設定
    • フォルダ設計
      • 最終的なBoxのフォルダ構成の決定
        • 会社毎にアカウントを作成して、その配下に会社名のトップフォルダを設定、スタッフは青色のフォルダにアクセスできるようにしました。
          会社毎にアカウントを分けているのは、アカウント毎のアイテム所有数の推奨値が100万までだったためです。
      • オンプレのフォルダをBox上のどのフォルダに移行するかの設計
        • アクセス権限ごとに分けたフォルダをBoxのどのフォルダに移行するかを決めて、スプレッドシートに纏めました。
    • 移行タスクの準備
      • Data Migration Box側で移行設計を同期タスクと呼ばれる設定に落とし込み、また同期のスケジュールも設定しました。

4. 小規模移行とテスト

切替に際して、実際の運用で発生しうる課題を事前に把握し解消するため、2ヶ月間の小規模移行とテスト期間を設けました。

テストは段階的アプローチを採用し、まずはグループ内の少人数からスタートし、その後部内へ、最終的にはエイチームグループ全体へと、徐々にテストユーザーの範囲を拡大していきました。

テスト期間中は、スタッフから寄せられる様々なフィードバックを基に、発生した課題の解消に努めるとともに、マニュアル整備も並行して進めました。また、既存のオンプレファイルサーバ環境で運用されていた仕組みをBoxへ移行するための検討と対応も並行して実施しました。

ほとんどの課題はBox Driveを利用すれば解決出来るものばかりでしたが、ログオンスクリプトでファイルをダウンロードしているものについては、別のサーバー上からダウンロードさせる等の対応を行っています。

5. データ移行

  1. 初回データ同期
    • 完了までに14日間ほど掛かりました。 合計26TBなので、2TB弱/日 の速度となります。 もちろん全てがすんなり行くわけもなく、想定内・想定外様々なエラーが発生しました。Migration Exploreを使用していたためエラーの特定は容易でした。
      • 【想定内】
        • Box非対応のファイルの同期エラー
          • 15GB以上のファイルはプランの関係上保存できないため、Google Drive上に保存をいただきました。
        • 対象フォルダ・ファイルへのアクセス権限がない
          • アクセス権限を付与頂くか、自身でのBoxへの移行を案内しました。
        • 同期元ファイル名の文字コードが対応していない
          • 所有者にファイル名変更を依頼しました。
      • 【想定外】
        • 同期元ファイルの作成日時・更新日時がおかしい
          • 作成日時または更新日時が1970/1/1以前のものでエラーが発生しました。
          • 対象ファイル・フォルダの作成・更新日時を一括で更新して対応しました。
        • 濁点・半濁点と分離濁点・分離半濁点の同名ファイルが移行元に存在
          • Boxでは、濁点・半濁点と分離濁点・分離半濁点の同名ファイルは共存できないため、どちらかしか同期できません。
  2. 差分同期
    • 並列処理する同期タスクがなるべく均等に終わるように、それぞれのタスクが処理するフォルダを都度調整していました。
    • 調整イメージ
      • バラバラの終了時間を
      • なるべく均等に

6.権限移行

  1. 権限グループとフォルダの対応表を作成
    1. BoxAPIにて、フォルダ情報(フォルダ名,フォルダID)を取得
    2. フォルダ情報から、必要となる権限グループを準備する
      • Box_フォルダ名_権限_フォルダID
    3. 現状調査の結果と、必要となる権限グループからアクセス権限対応表を作成します。
      • アクセス権限対応表例
  2. 必要な権限グループをIdPに作成、メンバーも追加
    • 作成した権限グループの名前は「Box_」で開始するため、自動的にBoxに同期されます。
    • ここまでの手順を実施することで、青枠の箇所まで用意できている状態となります。
  3. BoxAPIでBoxフォルダに権限を付与
    • アクセス権限対応表を基に、IdPから同期された権限グループをフォルダに付与します。
  4. その後
    • 本番切替まではオンプレファイルサーバの権限は申請内容に応じて随時書き換わることになります。 差分についてはメモしておき、定期的にBoxに反映しました。
    • 切替の数日前にオンプレファイルサーバの権限変更を締め切り、権限を確定した状態で次のフローの切替に望んでいます。

7. 切替

  • 切替スケジュール
    • データ容量の関係上二回に分けて切替を実施しました。
    • エンターテインメントが全データ容量26TBの内の20TBを締めており、平日夜間ではデータ同期が完了しないため、土日にデータ同期をしました。
    • その他のデータについては平日夜間で完了する量だったため、平日夜間に実施しました。
      実際にスタッフに展開したスケジュール

切替作業

切替作業ではデータ同期の他にも作業を行っています。
大きく以下3つの作業を行いました。

  1. データ同期
    • Data Migration Boxにて最終データ同期を行いました。両方の切替で合計15時間程かかりました。
  2. 権限付与
    • Boxに反映しきっていなかった権限変更処理を反映します。
  3. Boxアカウント作成
    • IdP上でBoxに対してアカウントをアサインします。

まとめ

ファイルサーバの移行は、データ移行ももちろんですが権限移行も重要です。
今回は移行に伴いフォルダ構造の変更、権限設定の設計も変更とまあまあの難易度のものでしたが各ツールの特徴を活かしきったことで上手く完了できたと思います。

スタッフ目線では、エンターテインメントスタッフは土日明け、その他スタッフは次の日にはBoxが利用できる状態かつ、権限も設定されている状態になり業務時間中のダウンタイムはありませんでした。
スムーズな切替を行うことができたかと思います。

ぜひ権限設定の考え方や移行方法など参考にして頂ければと思います。