G Suite: 社内ファイルサーバからチームドライブ移行時の注意点と対策

これまで独自で運用していたメールサーバ、ファイルサーバや個人Googleアカウントで利用していたGoogleサービスを、G Suiteに移行しました。色々と想定外の苦労もあったので、これまでに得られた知見を何回かに分けて記録していこうと思います。

今回は、SambaファイルサーバをGoogleドライブ(チームドライブ) へ移行する話です。40人程度の小規模な会社なので、まさかパフォーマンスや容量の問題は無いだろうとたかをくくっていたら意外と苦労しました。

結論

  • チームドライブや「ドライブ ファイル ストリーム」アプリの登場により、以前よりもGoogle Driveを共有フォルダとして使いやすくなっている。
  • 実際に使うと、機能制限共有設定速度の面でそれぞれ大きな落とし穴がある。
  • Samba共有の感覚で運用を変えずそのまま移行するのはほぼ無理だが、わかった上で運用を工夫すれば代替は可能。

G SuiteとGoogleドライブの紹介

最初に、G SuiteやGoogleドライブの機能概要のおさらいです。

個人GoogleアカウントとG Suiteアカウント

通常Googleアカウントを新規登録(無料)すると作成されるものを便宜上「個人Googleアカウント」と呼ぶことにします(正式な呼び方は知りません)。一般的にはGmailアドレスとともに発行しますが、すでに所有しているメールアドレスで発行することもできます。

一方、組織のG Suiteで発行したアカウントは、組織のドメインのメールアドレスと関連付けられます。このアカウントは組織によって管理され、アカウントの停止やパスワード再発行は組織管理者が行うことになります。

マイドライブとチームドライブの違い

Googleドライブには、「マイドライブ」と「チームドライブ」の大きく分けて2つがあります。


1. マイドライブ

個人のGmailアカウントでも使える、一般的なGoogleドライブとして認識されているものです。以下の特徴があります。

  • ファイル作成者がオーナーになる。
  • オーナーのドライブ容量を消費する。共有された他ユーザのドライブ容量は消費しない。
  • フォルダ単位での共有もできる。
  • オーナーは、共有中の別ユーザにオーナーを移転できる。
  • オーナーのGoogleアカウントを削除すると、ファイルは消滅する。

元々はこのマイドライブしかなかったのですが、組織で使う際に退職者アカウントを削除するとファイルが消える、またオーナー自身しかオーナーを移転できないため、連絡が取れないユーザのオーナー権を移転できないと言った問題がありました。

これに対応するため追加されたのがチームドライブです。


2. チームドライブ

G SuiteのBusinessプラン以上(Basic不可)でのみ使える機能です。以下の特徴があります。

  • チームドライブそのものがオーナーになる(作成者を問わない)。
  • 組織全体のドライブ容量を消費し、各ユーザのドライブ容量は消費しない。
    • ただしチームドライブを使えるのはBusinessプラン以上(5名以上で容量無制限)なので、コスト面への影響は少ない。
  • チームドライブ単位やファイル単位の共有はできるが、フォルダ単位の共有はできない
  • 作成はG Suite Businessプラン以上が必須だが、個人Googleアカウントに共有することは可能。

チームドライブ内に作ったファイルはすべてチームドライブがオーナーとなるため、ファイル作成者のGoogleアカウントを削除してもファイルが消えないのが特徴です。

Web UIとクライアントアプリ

GoogleドライブというとWeb(やスマートフォンアプリ)でアクセスするイメージが定着していると思いますが、PC用アプリも用意されています↓。


1.「バックアップと同期」


google.comより

昔からある「Googleドライブ」アプリの後継です。

  • PCにファイルを同期する、昔ながらのDropbox的なアプリ。
  • 個人GoogleアカウントでもG Suiteアカウントでも使える。
  • マイドライブにのみアクセス可能(チームドライブへはアクセス不可能)。
  • マイドライブ全体、または選択したフォルダのみを同期できる。
    • マイドライブに大量のデータを置いておりPCに入りきらない場合、よく使うフォルダだけをノートPCに同期するなど。
  • PC内のどこに同期するかを指定できる。たとえば D:\Google\MyDrive のように任意のパスを指定できる。
  • PCのデスクトップ等、指定したフォルダをバックアップできる。

2.「ドライブ ファイル ストリーム」


google.comより

G Suiteアカウントでのみ使えるアプリです。

  • ファイルを開くときにオンデマンドでダウンロードするので、SSDの小さいPCでも全データを同期できる。
    • Dropbox Businessのスマートシンクなどと同様。
  • 指定フォルダのみオフライン用に同期することも可能。
  • マイドライブおよびチームドライブにアクセス可能。
  • 常に専用のドライブレター(デフォルトは G: )が割り当てられる。任意のフォルダへのマウントはできない。
  • 個人Googleアカウントでは一切利用できない

注意点 機能編

ようやく本題です。実際に運用してみると、いくつかはまりどころがありました。

1. チームドライブのフォルダ共有ができない

チームドライブは、全体を共有するか内部のファイルを1個ずつ共有することしかできません。例えば「第1開発部」というチームドライブを作り、その中の「プロジェクトA」フォルダのみをアルバイトに共有する、といったことは不可能です。

公式のガイドラインにもある通り、ドライブ内の全ファイルが同じメンバーからアクセスできるべき、という単位でチームドライブを作る必要があります。この場合でいえば、「第1開発部」というチームドライブは不適切で「プロジェクトA」というチームドライブを作るべきでした。

2. 個人GoogleアカウントでPCアプリを使いたい場合、チームドライブは利用不可

アルバイトや外部の協力会社に対して、G Suiteアカウントは手間やコストの関係で発行せず、個人Googleアカウント(gmail.com)で共有することもあると思います。この場合、そのアカウントではドライブ ファイル ストリームが使えず、バックアップと同期のみが利用可能です。つまり、デスクトップアプリからチームドライブにアクセスすることはできません。もしPCに同期しないと使いづらい運用をする場合(作業フォルダなど)、チームドライブを使わないという選択肢を検討する必要があるかもしれません。

3. チームドライブの共有権限がへんてこ

チームドライブでは「すべて」「編集可能」「コメント可能」「閲覧のみ」の権限設定がありますが、なぜか「編集可能」ではファイルの削除や移動ができません

参考: Get started with Team Drives – Google Learning Center

さらに、ドライブ ファイル ストリーム経由でアクセスしている場合、「編集可能」権限では閲覧しかできません。つまり、共有フォルダ代わりに使うには、全員に「すべて」権限を与えるしかないということになります。

これに関しては不満も多いようで、最近「すべて」権限でもユーザを追加できないようにする管理者設定が追加されました。どうしてこうなった…

これをONにしてしまうと本当に全メンバーの管理を管理者が行わなくてはならなくて非効率です。通常のマイドライブと同じように編集可能権限が編集できればそれで良かったのです。機能リクエストは上がっているのでそのうちに実装されるかもしれません。

4. チームドライブへの保存ファイル数に制限がある

「容量無制限」を売りにしているG Suite Businessプラン以上ですが、実際にはチームドライブへの保存ファイル数に大きな制約があります。

G Suite管理者ヘルプの「チームドライブの制限」に記載がありますが、1ドライブにつき40万アイテムフォルダ20階層までしか作れません。

先月まで25万アイテムだったのですが、しれっと増えていました。なおこのページは簡単にはたどり着けないうえに、増えたというアナウンスも公式ブログですら行われない秘密主義のようです。

想像以上に少ないですよね。手元でSamba共有フォルダを数えたら2000万ファイルほどあったので、分割は必須でした。「チームドライブ」という名称ですが、事実上はより細かい「プロジェクト」などの単位で分割するのが現実的でしょう。1つだけ、1プロジェクトで200万ファイルを超えるフォルダがあったので、諦めてprojectA-2018のような名付けをしました。

ちなみに、チームドライブ内に今何個のファイルがあるかを数える簡単な手段は存在しません。ひどい。ドライブ ファイル ストリームで右クリック→プロパティを出して、表示が落ち着くまでコーヒーを淹れてくるしかないようです。

※チームドライブ数には上限がないそうです。ただし、現時点ではチームドライブ一覧はフラットに表示されるのみで、分類やスター付けもできないので、数千数万といった単位で作ると使いづらいでしょう。数百~1000位にしておいた方が良いと思います。ということは、チームドライブで数億以上のファイルを扱うのは辛みがある、ということになります。

なお、試したことはありませんがサポートによるとマイドライブにはこの制限がないとのことです。ただし、だからといってマイドライブをファイル数制限のないチームドライブ代わりに使うことは絶対に避けたほうが良いです。本記事の後半に記載の通り、致命的なパフォーマンス上の問題が発生します。

5. ドメインが違うユーザへオーナー権の移行はできない

Googleドライブファイルのオーナー権移行は、同一ドメイン内のユーザにのみ可能です。@gmail.com から @gmail.com への移行は可能ですが、 @gmail.com から @bpsinc.jp やその逆はできません。

つまり、これまで @gmail.com で運用していたGoogleドライブを組織のG Suiteに移行するのは困難が伴います。基本的な対応は2つあります。

1. コピーする

URLやIDが変わって良ければ、コピーするのが一番お手軽です。これは、移行先(G Suite)アカウントを旧ドライブに招待し、移行先アカウントで「コピー」するだけです。これで移行先アカウントのマイドライブにコピーされるので、あとはドメイン内で好きに移動すればOKです。

2. チームドライブを経由して移動する

一手間かけることで、IDを維持したままファイルを個人アカウントDriveからG Suiteアカウントに「移動」できます。

  1. まず、移行元(個人Googleアカウント)であるオーナーをチームドライブに招待します。
  2. オーナー側でファイルをチームドライブに「移動」します。これでオーナー権限がチームドライブに移行されます。

この操作のみ、ドメインをまたいでオーナーを移動できないというルールの例外のようです。

一度移動したら、すでにそのファイルはG Suiteドメインの所有なので、G Suiteドメイン内で自由にオーナー移行(チームドライブからG Suite内のマイドライブに移動するなど)が可能です。

なお、この操作は不可逆です。一度移動したら、二度とそのファイルを元のオーナーに戻すことはできません(組織ドメイン→gmail.comへの移動ができないため)。

6. マイドライブの一括オーナー移行はできない

マイドライブのフォルダを、すべて別オーナーに移行することはできません。フォルダのオーナーを変更はできますが、この操作はあくまでそのフォルダのオーナーを変更するのみで、内部のフォルダやファイルのオーナーは変更されません。

※G Suite管理下のアカウントでのみ、ユーザAの所有する全ファイル・フォルダをユーザBにオーナー移行するといったことは管理コンソールから可能(ユーザAが退職する前にやるべき処理)ですが、後述の通りこの操作はものすごく遅いです。

なおG Suiteドメイン内では、以下の操作は可能です。ただし、同じくとても遅いです。

  • G Suiteアカウントのマイドライブから、チームドライブにフォルダごと移動することはできる。
  • チームドライブから、G Suiteアカウントのマイドライブにフォルダごと移動することはできる。

それ以外では、フォルダをまるごとチームドライブに移動したり、別ユーザにオーナー移行する機能はありません。つまり、これまで個人Googleアカウントで使っていたフォルダをまとめて移行するには、APIやサードパーティー製のツールを使うなど工夫する必要があります。サポートに聞くと「一度ダウンロードして再アップしろ」と案内されますが、当然URLは変わりますし、DocsやSpreadsheetなどがいったんOffice形式に変換されるため、データが一部変わってしまいます。

かといってG Suite Marketplaceに置いてあるアプリは人気のものでも驚くほど出来が悪い/セキュリティを考慮していないものも多いので、あまり頼りたくない…

注意点 パフォーマンス編

1. たくさんのファイルを扱うとドライブ ファイル ストリームが重くなる

多数のファイルをアップロード/ダウンロードすると、ドライブ ファイル ストリームがものすごくCPUを食うようになります。このような場合は、 %LOCALAPPDATA%\Google\DriveFS 配下にある metadata_sqlite_db が肥大化していないか確認しましょう。手元の環境では、2GBを超えたあたりからだんだん重くなりました(6GBを超えても重いだけで動作はしました)。

この場合、一旦ログアウトしてログインし直すとファイルが消えて元の速度に戻ります。たまにやると良いかもしれません。

2. ファイル数が多いとアップロードがとても遅い

よく見かける「クラウドストレージの速度比較」のようなサイトで、Googleドライブは上位に位置することが多いようです。実際アップロード・ダウンロードの速度は高速で、100Mbps以上出ることも珍しくなく、時間帯を問わず50Mbps以上で安定している印象です(正確に測定はしていません)。

ただしこれは、1つの大きなファイルの場合の話で、ファイル数が多いと事情が異なります。Googleドライブは一度に10個程度しかアップロードできず、また1ファイルアップロードするごとに5~10秒ほどのインターバルがあるため、1KBのファイルを1000個アップロードするのは1MBのファイルを1個アップロードするのに比べて圧倒的に長い時間がかかります。(手元で大小入り乱れた100万ファイル程度のフォルダをアップロードするのに数週間かかりました)。

Sambaファイルサーバには、例えばリポジトリを展開して .svn.git が残っているケースもあるでしょう。また、 .DS_StoreThumbs.db が混じっていたり、そこまでいかなくても多数のテキストファイルやアイコン画像があることは珍しくありません。Googleドライブにこれらのファイルをアップロードするのは大変なので、古いプロジェクトについては適当にzipやtar.gzに固めるのが良いかもしれません。

※zipだとWeb UI上でダウンロードせずにプレビューできるので便利です。

これだけで、GoogleドライブはSambaファイルサーバの直接の代替にはならないことがよくわかります。

3. ドライブ ファイル ストリームのアップロードが遅い

特に帯域制限をかけていないのに、1つの大きなファイルでもアップロード速度が30Mbps程度で頭打ちになることがあります。この場合、以下を参考に BandwidthTxKBPS を明示的に大きな数字にすると、速くなることがありました。

参考: G Suite管理者ヘルプ ドライブ ファイル ストリームを構成する

4. マイドライブの共有設定は反映がとても遅い

マイドライブのフォルダにたくさんのファイルがある場合、そのフォルダを別ユーザに共有すると、反映にとても長い時間がかかります。手元で200万ファイル程度が入ったフォルダを5ユーザに共有したところ、反映完了まで1ヶ月半ほどかかりました

具体的には、マイドライブでフォルダを共有した場合、内部の各ファイルについて「共有権限設定: ユーザAを編集可能に」といった単位で設定がされていくので、200万ファイルのフォルダを5ユーザに共有すると内部的には1000万回の操作が発生するイメージになります。この操作はどうやらアイドル時に少しずつ行われるようで、ドメイン内でGoogleドライブをあまり使っていない時は1分間に200オペレーションほど進む(想像の30倍は遅い)のですが、ドメイン内でアクティブにDriveが使われている時間帯は一切進まないといった感じになります。

さらに悪いことに、この操作は中断することはできず、しかも進捗率を知ることもできません(管理コンソールの監査ログで最近どのような操作がされたかはわかるものの、全体件数や順番がわからないので、忙しいのか暇なのか位しかわからない)。つまり、うっかり大量ファイルの入ったマイドライブフォルダを共有かけてしまうと、ドメイン全体でドライブが遅くて不安定になったままいつ直るかもわからず我慢し続けるしかないことになります。

↓ドメイン全体の共有進捗状況です。速度の傾向が見えてきます。

幸い上記の200万ファイル共有は本格移行前に始めたので、まだ影響は小さかった方ですが、それでも完了までは以下のような不具合が頻発しました。

  • 新規でチームドライブを作ってしばらくの間(10日間程度)、チームドライブの名前が反映されず「チームドライブ」という名前になる(下の添付画像)。
  • チームドライブをメンバーに共有してからそのメンバーに見えるまで、3日ほどかかる。
  • マイドライブにアップロードしたファイルが消えたように見え、3日ほどたつと突然出てくる。その間に消えたと思って再度アップしたファイルも別途残る(バージョン管理されない)ため、大量のファイルが2個ずつ残る。
  • チームドライブを空にしたのに消せない状況が1ヶ月以上続く。

ものすごく不具合としか思えないですが仕様とのことです。大量のファイルが入ったフォルダを共有してはいけません!ゼッタイ!

対策

上記の通り、マイドライブでたくさんのファイルを共有すると、致命的な問題が多発します。緩和策として、以下のような運用上の工夫が可能です。

  • チームドライブを使う: チームドライブでの共有設定はトップレベルにのみ行われるので、ファイルが多数あっても反映が早い。
  • グループを使う: ユーザ5人に共有するのではなく、ユーザ5人が入ったGoogleグループを作り、そのグループに共有する。

なお、AODocsさんのサイトにより詳しいナレッジが載っていました↓。hachi833に翻訳してもらったので、こちらも併せてご覧いただくと役立つかと思います。

Googleドライブのパフォーマンスを低下させない推奨設定 — AODocs KB(翻訳)

まとめ

容量無制限に惹かれて導入したG SuiteのGoogleドライブですが、想像以上にパフォーマンス上の問題が大きかったです。試行錯誤の末、当面は以下の運用ルールにしてみました。

  • マイドライブは少数のファイルや少数の共有メンバーの場合、また一時的な用途を中心に利用する。正式なプロジェクトでは原則チームドライブを利用する。
  • プロジェクト単位でチームドライブを作成する。この際 project-XXX というようにprefixをつけることでソートしやすくする。
  • 雑多なものを入れる用途に project-その他team-XXX のチームドライブも作る。
  • プロジェクト以外の共有用に BPS-勉強会 などのチームドライブも作る。
  • チームドライブの内のファイル数が100~10万程度になるくらいの粒度を心がける。チームドライブ数は数年で数百程度になるのを想定する。
  • ZIPを展開したファイル群やリポジトリなどをドライブに置くことはなるべく避ける。

関連記事

Googleドライブのパフォーマンスを低下させない推奨設定 — AODocs KB(翻訳)

Google Driveのファイル共有状況を一括出力するgoogle-drive-permission-searchを作った

Googleスプレッドシートのセル内に画像をぴったり表示する方法

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(16区分17回 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、Ruby Programmer Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。

babaの書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ