1. A computer-implemented method for managing a global namespace for a distributed filesystem, the method comprising: collectively managing the data of the distributed filesystem using two or more cloud controllers, wherein collectively managing the data comprises: storing the data for the distributed filesystem in one or more cloud storage systems, wherein the cloud controllers cache and ensure data consistency for data stored in the cloud storage systems; and caching data for the distributed filesystem in each cloud controller; splitting a global namespace for the distributed filesystem across the two or more cloud controllers, wherein splitting the global namespace comprises: assigning distinct portions of the global namespace to two or more of the cloud controllers, wherein each cloud controller is configured to manage write accesses for its assigned portion of the global namespace, wherein a set of namespace mappings indicate the portions of the namespace that are assigned to each cloud controller; and receiving at an initial cloud controller a request from a client system to access a target file in the distributed filesystem; wherein the initial cloud controller is configured to use a namespace mapping for the global namespace to determine a preferred cloud controller for the request.