2018/08/05 初版作成

Working With
Google Drive

File Stream（GDFS）
Piyomaru Software
Takaaki Naganoya

GoogleDriveとは？
• ❶Google版のDropboxみたいなもの（Personal版）と❷インターネットNASみたいなもの（G Suite版）が存在する。後者の正式名称は「Google Drive File Stream」• Personal版は無料（容量増加は有料）、G Suiteは企業/ワークグループ向けの有料版• G Suiteは３エディションある（Basic、Bussiness、Enterprise）• G Suiteの全エディションは14日間の無料試用期間が設けられている• メンバー間の共有ボリウム「チームドライブ」が利用できるのは、G Suiteの「Bussiness」あるいは「Enterprise」のみ• Personal版をDesktopに統合（特定フォルダのシンクロ）するためのソフトウェアは、Google純正の「バックアップとシンクロ」、ドライブとしてマウントするソフトウェアには、サードパーティの「CloudMounter」などがある。G Suite版には「GoogleDrive File Stream」（Google純正）が存在し、インターネットNASとしてデスクトップにマウントできる• FTPソフトウェア「Transmit 5」に「Google Drive」へのアクセス機能があり、各種File Systemをマウントできるとあるが、Google Drive（Personal）をマウントすることはできなかった（サポートしていない旨、ワーニングが出た）

Google Driveをマウントするソフト
Personal版Google Drive

G Suite版Google Drive（File Stream）

マウントできる

マウントできる

バックアップと同期

CloudMounter

Google Drive File Stream

Transmit 5（アクセスできるがマウントできない）

GoogleDrive File Stream（1/2）
コマンドラインからインストールを実施するが、コマンドにDrive名直打ち

hdiutil mount GoogleDriveFileStream.dmg; sudo installer -pkg /Volumes/
Install\ Google\ Drive\ File\ Stream/GoogleDriveFileStream.pkg -target "/Volumes/Macintosh HD"; hdiutil unmount /Volumes/Install\ Google\ Drive\File\ Stream/
Boot Drive（startup disk）の名称を変更している場合には、本コマンドの内容も書き換える必要がある

GoogleDrive File Stream（2/2）

Google Drive File Stream

Personal版 Google Drive

PC, スマートフォンなどの個人所有のデバイス間でのデータ共有が目的

G Suite版 Google Drive

組織内で共有できる「チームドライブ」の存在が異なる（Business以上）

G Suite版のみ

ベンチマーク結果
WiFi経由で無線アクセス

USB-Ethernetアダプタ経由で有線アクセス

キャッシュ機構がすぐれており、とりあえずファイルを書いたことにして、あとでシンクロする。シンク
ロ終了まではコピー元のファイル（ローカル）にアクセスさせるもよう。ベンチマークを取ると、内蔵SSDのスピードがそのまま出ていた。

Google Drive File Stream上でのSpotlight検索
Google Drive File Streamのインデックス生成を強制的に行わせるとSpotlight検索がおこなえるようになる。

do shell script "mdutil -E /Volumes/GoogleDrive/" with administrator privilegesただし、上記AppleScriptの実行前にGDFSドライブに記録・保存されていたファイルについてはメタデータそのものが生成されていないため、mdimportコマンドで生成する必要がある。

また、いったんunmountするとメタデータが消える模様（「マイドライブ」ボリウムにて確認。「チームドライブ」では問題なし）。mdimportコマンドによるメタデータの再生成で検索が可能になる（「マイドライブ」ボリウム）。

キャッシュの場所~/Library/Application Support/Google/DriveFS

大量のファイルを扱い、「metadata_sqlite_db」が肥大化するとパフォーマンスが大幅に低下することが報告されている

GDFSの設定ファイル「マイドライブ」の設定ファイルは同ドライブ内の隠しフォルダにある
MBPretina:GoogleDrive maro$ ls -la
total 784

drwx------ 3 maro staﬀ 4096 8 6 10:21 .
drwxr-xr-x@ 5 root wheel
170 8 6 10:21 ..
drwx------ 5 maro staﬀ
drwx------ 3 maro staﬀ

4096 8 3 14:18 .Spotlight-V100
4096 8 6 10:21 .Trashesdrwx------ 3 maro staﬀ
drwx------ 2 maro staﬀ

4096 8 6 10:21 .fseventsd
4096 8 6 10:21 マイドライブ-r-------- 0 maro staﬀ 379167 1 1 1970 .VolumeIcon.icns

MBPretina:GoogleDrive maro$

MBPretina:GoogleDrive maro$ cd .Spotlight-V100/
MBPretina:.Spotlight-V100 maro$ ls -la
total 40drwx------ 5 maro staﬀ 4096 8 3 14:18 .

drwx------ 3 maro staﬀ 4096 8 6 10:21 ..
drwx------ 3 maro staﬀ 4096 8 3 14:18 Store-V1drwx------ 6 maro staﬀ 4096 8 6 10:22 Store-V2-rw------- 1 maro staﬀ 3785 8 6 10:22 VolumeConﬁguration.plist
MBPretina:.Spotlight-V100 maro$

VolumeConﬁguration.plist<key>is.quarantined</key><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://<integer>0</integer><key>is.readonly</key>
www.apple.com/DTDs/PropertyList-1.0.dtd"><integer>0</integer><plist version="1.0"><dict><key>is.removable</key><integer>0</integer><key>Annotations</key><key>is.rootfs</key><dict><key>Creation_Predicates</key><integer>0</integer><key>is.safeboot</key><dict><integer>0</integer><key>false</key><integer>0</integer><key>is.syntheticmount</key><integer>0</integer><key>fstype.dfsfuse_dfs</key><key>is.tinyvolume</key><integer>1</integer><key>is.alreadyindexed</key><integer>0</integer><key>is.windowsbootablevolume</key><integer>1</integer><key>is.automount</key><integer>0</integer><key>is.xsan</key><integer>0</integer><integer>0</integer><key>is.backupstore</key><integer>0</integer><key>policy.location.volume</key><integer>1</integer><key>is.backupvolume</key><key>self.appleinternal</key><integer>0</integer><key>is.bootablevolume</key><integer>0</integer><key>self.server</key><integer>0</integer><integer>0</integer><key>is.cameramedia</key><integer>0</integer><key>status.neverindex</key><integer>0</integer><key>is.diskimage</key><integer>0</integer><key>supports.catsearch</key><integer>0</integer><key>is.dontbrowse</key><key>supports.ﬁleids</key><integer>0</integer><key>is.ejectable</key><integer>0</integer><key>supports.volfs</key><integer>0</integer><integer>0</integer><key>is.external</key><integer>0</integer><key>true</key><integer>1</integer><key>is.externalvolumes.defaultoﬀ</key></dict><integer>0</integer><key>is.externalvolumes.ignore</key><key>DebugKey1</key><string>2018-08-06 01:21:53 +0000 1</string><integer>0</integer><key>is.ﬁlevault</key><key>DefaultStore_EﬀectiveSearch</key><integer>1</integer><integer>0</integer><key>DefaultStore_RequestedSearch</key><key>is.forcedefaultindex</key><integer>0</integer><integer>1</integer></dict><key>is.forcefsonly</key><key>ConﬁgurationCreationDate</key><integer>0</integer><key>is.home</key><date>2018-08-06T01:21:53Z</date><key>ConﬁgurationCreationVersion</key><integer>0</integer><string>Version 10.12.6 (Build 16G1510)</string><key>is.internal</key><integer>0</integer><key>ConﬁgurationModiﬁcationDate</key><date>2018-08-06T01:22:03Z</date><key>is.ipod</key><integer>0</integer><key>ConﬁgurationModiﬁcationVersion</key><string>Version 10.12.6 (Build 16G1510)</string><key>is.local</key><key>ConﬁgurationWriteback</key><integer>1</integer><key>is.lowdiskspace</key><false/><key>Exclusions</key><integer>0</integer><array/><key>is.mobilebackups</key><integer>0</integer><key>is.network</key><integer>0</integer><key>is.quarantined</key><key>Options</key><dict><key>ConﬁgurationType</key><string>Default</string></dict><key>Stores</key><dict><key>7AC3A8A9-D842-4F37BD7D-49D75032C109</key><dict><key>CreationDate</key><date>2018-08-06T01:21:53Z</date><key>CreationVersion</key><string>Version 10.12.6 (Build16G1510)</string><key>IndexVersion</key><integer>95</integer><key>PartialPath</key><string>/</string><key>PolicyDate</key><date>2018-08-06T01:22:03Z</date><key>PolicyLevel</key><string>kMDConﬁgSearchLevelReadWrite</string><key>PolicyProcess</key><string>mdutil</string><key>PolicyVersion</key><string>Version 10.12.6 (Build16G1510)</string></dict></dict></dict></plist>GDFSの技術的な制約• １ドライブあたり40万ファイルが上限。フォルダ階層は20階層まで• １日あたりのアップロード上限は、アカウントごとに750GB• ファイル名の最大文字列長は各クライアントOSに依存• 大量のファイル（数千～数万）を同時にアップロードしようとすると、時間がかかる（一度に10個程度、アップロード終了ごとに5～10秒程度のインタバルあり）。小さなファイルを大量にアップロードする場合には、ローカルでZip圧縮してアップロードし、ドライブ上で展開することも検討したほうがよい• macOS 10.13では、「Google Drive File Stream」アプリケーションがCode Signされていないため、起動させたあとシステム環境設定の「セキュリティとプライバシー」>「一般」で、アプリケーションの実行許可を行う必要がある• GDFS使用時にクライアントはTime Serverとの同期が必須。システム時計がズレていると問題が起こる可能性がある• Google製GDFSアプリケーションの出来がよくない。時折、処理がものすごく重くなるGDFSでやってはいけないこと
・WiFi環境で使うと遅すぎてCPU負荷が増えてMacが死ぬ。
ほぼ有線Ethernet必須
・GDFS上にアプリケーション・ファイル（AppleScriptアプレットを含む）を置くと実行できなくなる。とくに、GDFS上に直接書き出してCode Signしようとするとエラーになる・いったんGDFSボリウムをアンマウントすると、Mac上で再ログインするかOSの再起動を行わないと再マウントできない→ 事実上アンマウントしてはいけないNow On Sale: Piyomaru Software eBooks

https://piyomarusoft.booth.pm