US20110167435A1 - Systems and methods for remote storage management - Google Patents

Systems and methods for remote storage management Download PDF

Info

Publication number
US20110167435A1
US20110167435A1 US12/806,028 US80602810A US2011167435A1 US 20110167435 A1 US20110167435 A1 US 20110167435A1 US 80602810 A US80602810 A US 80602810A US 2011167435 A1 US2011167435 A1 US 2011167435A1
Authority
US
United States
Prior art keywords
data
storage
storage resource
application
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/806,028
Inventor
Chin Fang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zettar Inc
Original Assignee
Zettar Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zettar Inc filed Critical Zettar Inc
Priority to US12/806,028 priority Critical patent/US20110167435A1/en
Assigned to ZETTAR, INC. reassignment ZETTAR, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FANG, CHIN
Publication of US20110167435A1 publication Critical patent/US20110167435A1/en
Priority to US13/781,572 priority patent/US9389932B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1012Load balancing

Definitions

  • Embodiments of the present invention are directed to data storage and more particularly to management of data storage.
  • Remote and cloud based storage are becoming increasingly common. It is not uncommon for businesses, employees, and consumers to take advantage of remote storage and the ubiquitous accessibility that remote storage provides. For example, the Amazon S3 service may provide ample storage with availability anywhere over the Internet.
  • Cloud-based storage such as systems by Amazon, Google, Microsoft, and EMC, are also becoming increasingly common and are often used by business to store a variety of different information.
  • Different cloud-based storage systems may provide a variety of different functions, services, and benefits.
  • sharing data between different services is difficult.
  • different cloud-based services may have different application program interfaces (APIs) which may not be compatible.
  • APIs application program interfaces
  • a business may be “locked in” to only using one service (e.g., the AWS S3 service) and unable to take advantage of benefits and functionality provided by other services.
  • a system comprises a first storage resource operative to store first data thereon, the first storage resource using a first program interface for communicating the first data; a second storage resource operative to store second data thereon, the second storage resource using a second program interface for communicating the second data; a hosted application operative to use application data, the first data and/or the second data including the application data; a proxy engine for directing application data requests by the hosted application to the first storage resource or to the second storage resource; and a proxy interface using the first program interface to communicate with the first storage device and the second program interface to communicate with the second storage device, the proxy interface operative to respond to the application data requests by communicating via the first program interface with the first storage device or via the second program interface with the second storage device.
  • the proxy interface may include a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource.
  • the proxy interface may include an application program interface for enabling automatic access by the hosted application.
  • the first storage resource may include one of local storage resource or network storage.
  • the first program interface and the second program interface may use different storage protocols.
  • the proxy interface may include a load balancing engine operative to balance the loads across the first storage resource and the second storage resource.
  • the proxy interface may include a provisioning engine operative to provision additional storage resources as needed.
  • the first program interface may be operative for accessing the first storage resource and at least one other storage resource that uses a same protocol.
  • the proxy interface may be operative to redirect requests by the hosted application.
  • the system may further comprise a second hosted application operative to use second application data, the first data and the second data including the second application data.
  • the proxy interface may include a caching engine for caching at least a portion of the application data.
  • the proxy interface may include a permission engine operative to manage data access rights.
  • the proxy interface may include an operating system component for redirecting file-system data requests.
  • the proxy interface may include a migration engine operative to migrate data across storage resources.
  • a method comprises storing first data on a first storage resource, the first storage resource using a first program interface for communicating the first data; storing second data on a second storage resource, the second storage resource using a second program interface for communicating the second data; receiving a data request from a hosted application that uses application data, the first data and the second data including the application data; directing the data request to the first storage resource or to the second storage resource; and using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
  • the method may further comprise using a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource.
  • the method may further comprise using an application program interface for enabling automatic access by the hosted application.
  • the first storage resource may include one of local storage resource or network storage.
  • the first program interface and the second program interface may use different storage protocols.
  • the method may further comprise using a load balancing engine to balance the loads across the first storage resource and the second storage resource.
  • the method may further comprise using a provisioning engine operative to provision additional storage resources as needed.
  • the method may further comprise using the first program interface for accessing at least one other storage resource that uses a same protocol as the first storage resource.
  • the method may further comprise redirecting requests by the hosted application.
  • the method may further comprise receiving a second data request from a second hosted application operative to use second application data, the first data and the second data including the second application data.
  • the method may further comprise using a caching engine for caching at least a portion of the application data.
  • the method may further comprise using a permission engine to manage data access rights.
  • the method may further comprise using an operating system component for redirecting file-system data requests.
  • the method may further comprise using a migration engine to migrate data across storage resources.
  • a system comprises a first storage resource for storing first data, the first storage resource using a first program interface for communicating the first data; a second storage resource for storing second data, the second storage resource using a second program interface for communicating the second data; means for receiving a data request from a hosted application that uses application data, the first data and the second data including the application data; means for directing the data request to the first storage resource or to the second storage resource; and means for using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
  • FIG. 1 depicts a group of hosted computers in some embodiments.
  • FIG. 2 depicts an exemplary environment in which some embodiments may be practiced.
  • FIG. 3 depicts a digital device with the ZettarFS in some embodiments.
  • FIG. 4 depicts an architecture in some embodiments.
  • FIG. 5 depicts a host in communication with the cloud storage in another embodiment.
  • FIG. 6 depicts a graphical user interface in some embodiments.
  • FIG. 7 depicts a diagram depicting multi-level role based permission control in some embodiments.
  • FIG. 8 depicts an environment depicting communication between a Zettar VM and a virtual machine.
  • FIG. 9 depicts a login screen on a user interface in some embodiments.
  • FIG. 10 depicts a browse screen on a user interface in some embodiments.
  • FIG. 11 depicts a manage screen on a user interface in some embodiments.
  • FIG. 12 depicts a track screen on a user interface in some embodiments.
  • FIG. 13 is a block diagram of a digital device in which various embodiments may be practiced.
  • systems and methods described herein may provide API to API translation thereby allowing computing systems to store data to multiple cloud-based storage providers.
  • modification of programs or operating systems are not necessary to achieve the translation.
  • an application may perform a program call which may be directed to a proxy engine and proxy interface which identify the program call and utilizes the API for the desired cloud-based storage. Data may be retrieved from the cloud-based storage and provided to the application in a similar manner.
  • the proxy engine and/or proxy interface may utilize any API(s). Those skilled in the art will appreciate that the application may not be modified or reconfigured and still take advantage of the proxy engine and/or proxy interface.
  • a file system representation may be generated that displays files as if the files were locally stored.
  • the files may be stored locally or remotely (e.g., in a cloud-based storage system). Further, parts of individual files may be stored on different storage devices (e.g., a file may be stored in two separate cloud-based storage services).
  • the file system representation may display the file as if the file was locally stored. If an application requests the file; the proxy engine and/or proxy interface may retrieve the file utilizing the correct APIs for each different storage device to retrieve and reassemble the file.
  • multiple storage resources may be available as unified browsable resource (e.g., such as a web-based file system representation) through a graphical user interface (GUI).
  • GUI graphical user interface
  • the GUI allows a user to manage the files system as if the file system was a local resource.
  • the GUI may also be used to provide the users the ability to provision resell, and bill storage space and/or access to the file system representation.
  • the GUI may also provide users the ability to provision, resell, access and track utilization of storage resources.
  • FIG. 1 depicts a group of hosted computers 102 in some embodiments.
  • a group of hosted computers 102 may be rack mounted.
  • the hosted computers 102 need not be in racks or in any physical configuration that is in relationship to each other.
  • Each hosted computer 104 of the group of hosted computers 102 may comprise a network interface card 106 , a shared queue 108 , one or more virtual machines 110 , and one or more applications supported by one or more operating systems 112 .
  • a storage resource is any resource that may be used to store; manage, and/or retrieve data.
  • the storage resource may comprise direct attached storage (DAS), network attached storage (NAS), storage area network (SAN), cloud-based storage, and/or remote storage accessed via a protocol such as, but not limited to, REST API or SOAP.
  • cloud-based storage is any storage resource that can be provisioned and is accessed via a data transfer protocol over a network.
  • a digital device is any device with a processor and memory such as a computer.
  • a digital device is any device with a processor and memory.
  • a digital device may be a desktop computer, server, client, laptop, mobile device, cellular device, or the like.
  • systems and methods discussed herein may be implemented through a computer program with a graphical user interface. Although such a computer program is discussed, those skilled in the art will appreciate that embodiments may be performed using any of the following, either alone or in combination, including, but not limited to, a computer program, multiple computer programs, firmware, and/or hardware. Digital devices are further described herein.
  • FIG. 2 depicts an exemplary environment 200 in which some embodiments may be practiced.
  • the exemplary environment 200 comprises a ZettarFS (Zettar File System) 202 , a plurality of cloud storage systems 204 a - c , a POSIX API file system 206 , and a user/application environment 208 .
  • a digital device comprises the ZettarFS 202 , the POSIX API file system 206 , and the one or more applications in the user/application environment 208 .
  • a digital device 102 does not comprise the ZettarFS 202 .
  • any number of digital devices may comprise all or some of the ZettarFS (Zettar File System) 202 , a plurality of cloud storage systems 204 a - c , a POSIX API file system 206 , and a user/application environment 208 .
  • ZettarFS Zar File System
  • cloud storage systems 204 a - c a plurality of cloud storage systems 204 a - c
  • POSIX API file system 206 a POSIX API file system
  • user/application environment 208 any number of digital devices may comprise all or some of the ZettarFS (Zettar File System) 202 , a plurality of cloud storage systems 204 a - c , a POSIX API file system 206 , and a user/application environment 208 .
  • the user and/or applications in the user/application environment 208 may interact with a POSIX API file system 206 .
  • the ZettarFS 202 may allow an application that communicates with a POSIX API file system 206 (such as that used by a UNIX operating system) to store data to and/or retrieve data from cloud storage systems 204 a - c even though the cloud storage systems 204 a - c provide the REST API.
  • the ZettarFS 202 is a proxy engine and/or proxy interface that receives data (e.g., system calls, files, or the like) from the application and provides any necessary API functionality to enable storing data to or retrieving data from remote storage (e.g., cloud-based storage) without requiring that the application be modified.
  • data e.g., system calls, files, or the like
  • remote storage e.g., cloud-based storage
  • Each cloud storage system 204 a - c may be operated by a cloud service provider (CSP).
  • CSP cloud service provider
  • each of the cloud storage systems 204 a - c provide a REST API.
  • REST API a cloud service provider
  • a digital device may comprise the ZettarFS 202 , the POSIX API file system 206 , and the users/applications environment 208 .
  • a digital device may comprise a UNIX operating system.
  • the UNIX operating system may provide and/or implement the POSIX API.
  • the ZettarFS may comprise software that is configured allow for communication (e.g., storage of data and/or retrieval of data) between applications of the digital device and the cloud storage systems 204 a - c , even if the cloud storage systems 204 a - c use an API (e.g., REST API) that is not the POSIX API.
  • the ZettarFS 202 may allow for communication to or from cloud storage systems 204 a - c with any type of API regardless if the one or more of the cloud storage systems 204 a - c.
  • the POSIX API file system 206 may be any file system that utilizes the POSIX API.
  • the users/application environment 208 may comprise one or more digital devices.
  • the digital devices may comprise an operating system and one or more applications.
  • Those skilled in the art will appreciate that various embodiments are not limited to a file system with the POSIX API by may be any API.
  • FIG. 3 depicts a digital device 302 with the ZettarFS 202 in some embodiments.
  • a digital device 302 may be in communication with the cloud storage 304 .
  • the digital device 302 comprises a userspace 306 and a kernel 308 .
  • the userspace 306 may comprise an application 310 and the ZettarFS 202 .
  • the kernel 308 may comprise a virtual file system 312 and a FUSE module 314 .
  • the ZettarFS 202 may connect over a network with the cloud storage 304 (e.g., Amazon Web Services (AWS) Simple Storage Service (S3)).
  • the ZettarFS 202 may present the information stored on the cloud storage 304 to a user and/or application 310 through a unified façade (e.g., file system representation) available as a POSIX compliant local file system mounted at a desired mounting point.
  • a unified façade e.g., file system representation
  • the userspace 306 is any space that is managed by a user or administrator and includes, but is not limited to, applications, utilities, and files.
  • the application 310 e.g., hosted application
  • the application 310 may be any application that is configured to store data, retrieve data, or interact with a storage device (e.g., hard drive, cloud-based storage, or the like).
  • a storage device e.g., hard drive, cloud-based storage, or the like.
  • the application 310 provides for a command listing files in a particular directory.
  • the userspace 306 may also comprise the ZettarFS 202 which may comprise a software program (e.g., the ZettarFS 202 may be an application), hardware module, or combination of both.
  • the kernel 308 is any space that comprises or communicates with a file system and/or an operating system.
  • the VFS 312 is any virtual file system. Those skilled in the art will appreciate that although the kernel 308 is depicted with a virtual file system, any file system may be used with various embodiments. In some embodiments, the kernel 308 comprises or communicates with multiple virtual machines. All or some of the virtual machines may be configured to run on the digital device's local storage.
  • an application in the userspace 306 (e.g., application 310 ) generates system calls (e.g., related to file operations).
  • the OS kernel 308 may receive the calls and hand them to the VFS 312 .
  • the VFS 312 after determining which device driver should handle the calls, provides the calls to the FUSE module 314 (i.e., a FUSE driver).
  • the FUSE module 314 may then communicate with the libfuse 316 .
  • the calls may then be broken apart as appropriate (e.g., request and caching).
  • different cloud storage backend interfaces 322 may be used to communicate with different storage clouds.
  • a local file storage back-end 324 may also be available.
  • the FUSE module 314 may be any software or hardware configured to direct commands to and from the ZettarFS 202 .
  • the FUSE module 314 is a driver for the kernel 308 .
  • the application 310 directs a command to the VFS 312 .
  • the FUSE module 314 may direct the command to the ZettarFS 202 which may then communicate with the cloud storage 304 .
  • Any responses from the cloud storage 304 e.g., a listing of files and/or directories of the zettarfs/foo directory
  • the FUSE module 314 may provide the response to the application 310 .
  • the ZettarFS 202 may comprise a libfuse 316 , a ZettarFS FUSE interface layer 318 , a cache 320 , a storage backend interfaces 322 , a local file storage 324 , and an AWS S3 module 326 .
  • the functions of the ZettarFS 202 are transparent to the application 310 .
  • the storage backend interfaces 322 of the ZettarFS 202 may direct data to the cloud-based storage 304 and/or the local file storage 324 .
  • the libfuse 316 may be a component of the FUSE module 314 .
  • the ZettarFS FUSE interface layer 318 may implement an interface with the libfuse 316 .
  • the ZettarFS FUSE interface layer 318 employs a C++ language binding to interface with the libfuse API.
  • the ZettarFS FUSE interface layer 318 (in interaction with an operating system's virtual file system (e.g., VFS 312 ) and the FUSE system (e.g., the FUSE module 314 and the libfuse 316 )) is capable of representing a unified API to running applications on the digital device 302 (e.g., such as the application 310 ) as a complaint file system (e.g., such as a POSIX compliant file system).
  • VFS 312 virtual file system
  • the FUSE system e.g., the FUSE module 314 and the libfuse 316
  • one or more components of the ZettarFS 202 may log actions.
  • one or more components may utilize the Boost Logging Library v2 and a Singleton pattern to optionally log actions.
  • an activity log may be generated on demand for debugging and testing, for example. Logging is further described herein.
  • FIG. 1 Various figures described herein depict a UNIX or linux operating system. Those skilled in the art will appreciate that any operating system may be used in conjunction with various embodiments including, but not limited to MICROSOFT WINDOWS.
  • the cache 320 may provide block-level caching of data maintained by the ZettarFS 202 .
  • the cache 320 reduces network interactions with remote storage devices (e.g., like the cloud storage 304 ).
  • the cache 320 may be a cache engine.
  • the storage backend interfaces 322 may provide connectivity and abstraction of protocol requests performed when interacting with different cloud storage services.
  • the storage backend interfaces 322 may be capable of concurrently directing data transfer to one or more preferred storage resources according to a set of configurable usage policies.
  • a usage policy is configured to take advantage of features of different cloud storage systems 304 or storage devices within the cloud storage systems 304 .
  • the usage policy may be configured to take advantage of performance, capacity, availability, price, and features of multiple different cloud storage systems and or storage devices.
  • the ZettarFS 202 may allow concurrent data de-duplication, snapshot, and data replication for multiple storage resources.
  • the desired operation may be applied to a unified API and the results may be applicable transparently and concurrently to underlying storage resources.
  • the ZettarFS 202 may be operating in one or more virtual machines by the digital device 302 .
  • systems and methods described herein may take advantage of available features of different remote storage devices.
  • one remote storage device solution may be cheaper when compared to others and another remote storage device solution may have better performance.
  • Different remote storage device solutions may differentiate themselves in any number of ways, including, for example, performance, capacity, availability, price, and available services supported (e.g., sharing multiple storage resources concurrently with one or more computing devices, concurrent data de-duplication, snapshot, and data replication).
  • the ZettarFS 202 may perform load balancing wherein data may be stored to different storage devices based on availability (e.g., the storage is currently busy) and/or available capacity (e.g., the storage device is 90% full).
  • the ZettarFS 202 may process a command to store one or more files.
  • the ZettarFS 202 may make the determination based on features of the available storage devices, utilization of the storage devices, availability, cost, and/or any other criteria. The criteria may be configured as a usage policy or otherwise modified and/or created by an administrator.
  • the ZettarFS 202 may also migrate (e.g., transfer) data from one storage device to another.
  • the ZettarFS 202 may migrate data based on any criteria in order to improve utilization, availability, cost, and/or any other criteria related to storage of data.
  • a user interface displaying a file system representation of the data will not be affected by migration or partial migration of data from one storage device to another.
  • FIG. 4 depicts an architecture 400 in some embodiments.
  • the architecture 400 comprises a host 402 in communication with the cloud storage 304 .
  • the host 402 may comprise the Zettar virtual machine 404 (e.g., Zettar VM).
  • the Zettar VM 404 may comprise the kernel 308 and the userspace 306 as well as the ZettarFS 202 .
  • the host 402 may also comprise a plurality of other virtual machines 406 a - c , each with an agent 408 a (e.g., a Zettar agent).
  • the agent 408 a - c may direct data calls to be handled by the Zettar VM 404 . As a result, there is no duplication of services.
  • Zettar VM 404 may also comprise a database (e.g., SQLite) and a Zettar log 412 which are both described herein.
  • database e.g., SQLite
  • Zettar log 412 which are both described herein.
  • Each virtual machine (e.g., the Zettar VM 404 as well as virtual machines 406 a - c ) may be in communication with a user interface that provides a file system representation (e.g., the myCloud Web UI).
  • the file system representation may be a unified file system representation where files appear to be locally stored. Requests regarding data may then be received and processed with the correct API as necessary by the Zettar VM 404 thereby, In some embodiments, making the physical location(s) of the file not relevant to a calling application.
  • FIG. 5 depicts a host 502 in communication with the cloud storage 504 in another embodiment.
  • the host 502 comprises a Zettar VM 502 , as well as virtual machines 506 a - c .
  • Each of the virtual machines 506 a - c comprise a Zettar agent 508 a - c .
  • the virtual machines 506 a - c may be in communication with the Zettar VM 502 via NFS/CIFS 510 .
  • the Zettar VM 502 may comprise a Zettar log 514 and, optionally, a database 512 such as a SQLite database.
  • a user may interact with a user interface (e.g., displaying the file system representation) to store data, retrieve data, and/or manage storage resources.
  • the myCloud Web UI comprises the user interface.
  • the user interface may be web-based.
  • the ZettarFS 202 generates the UI (e.g., the myCloud UI).
  • a utility on any digital device may generate the UI.
  • the UI may interact with the ZettarFS 202 and log activities with the Zettar log 514 .
  • the ZettarFS 202 provides a single transaction log.
  • the Zettar log 514 may parse the log and store the results in the database 512 .
  • the UI may have access to the database 512 .
  • the Zettar log 514 may periodically access a transaction log generated by the ZettarFS 202 .
  • the Zettar log 514 may parse the transaction log and generate usage data over a desired time span for one or more users or virtual machines.
  • the usage data may be stored in the database 512 .
  • the usage database may then be accessed via the user interface or any external software.
  • the Zettar log 514 and/or database 512 may be available to multiple ZettarFS 202 systems on multiple digital devices and/or multiple virtual machines.
  • the information within the Zettar log 514 and/or the database 512 may be shared with multiple ZettarFS 202 and/or virtual machines in order to keep track of the location(s) of files.
  • different systems provide information to a UI that provides a file system representation of files stored by multiple different ZettarFS 202 .
  • the user interface may present a unified browsable (e.g., web-based) file system representation. Further, the user interface may allow management of the file system as if the resources were on a local machine. In some embodiments, the user interface may perform these functions because the ZettarFS 202 , the VFS layer, and/or the FUSE module 314 (see FIG. 3 ) present underlying multiple storage resources as a unified file system (e.g., a unified POSIX file system).
  • a unified file system e.g., a unified POSIX file system
  • the UI may comprise three components including a manage component, a track component, and a browse component.
  • the manage component (see FIG. 10 ) may allow qualified parties to setup users, assign user roles, group membership, and enable/disable ZettarFS accesses for a particular user.
  • a qualified party may be, for example, a server administrator, a manager, a reseller, or a VM operator (e.g., a VPS account owner).
  • the track component may be configured to allow server administrators and users to keep track of cloud storage usage, billing information, and histories.
  • the track module provides and/or generates tables and graphs.
  • the track component may use information from the database 512 (e.g., information stored by the Zettar log 514 ).
  • the track component uses the information from the database 512 to prepare reports (e.g., in tabulated and/or graphical form).
  • the browse component (see FIG. 12 ) may be configured to allow server administrators and users to view and optionally manage the content stored in cloud storage.
  • the UI as described herein may appear within the browse component.
  • the myCloud web UI, ZettarFS 202 , and Zettar log 514 share configuration information (e.g., stored in a SQLite database).
  • the user interface and/or the ZettarFS 202 provides a set of standard API (e.g., REST API).
  • the API may enable external software applications to automate one or more tasks (e.g., using the manage and track components of the user interface). Tasks may include, for example, mount, unmount, browse, populate, and clean-up the unified file system (as well as any underlying file systems provided by ZettarFS 202 ).
  • Each of the virtual machines 506 a - c may comprise a Zettar agent 508 a - c .
  • the Zettar agent 508 a may interact with the user interface (e.g., via a standard API such as the REST API).
  • FIG. 6 depicts a graphical user interface 600 in some embodiments.
  • the user interface described in FIG. 5 may comprise the graphical user interface 600 .
  • the graphical user interface 600 may comprise a thumb-wheel-like element 602 for scrolling the window 604 .
  • the thumb-wheel-like element 602 may provide for efficient space control over a traditional scroll bar based mechanism and/or traditional touch screen-based mechanisms.
  • a user may click on one side of the thumb-wheel-like element 602 to scroll the window 604 in that direction.
  • the user may also be able to click on the thumb-wheel-like element 602 and drag the thumb-wheel-like element 602 thereby allowing controlled scrolling of the window 604 .
  • the user may click on the left of the thumb-wheel-like element 602 and, while holding the mouse button, drag the mouse cursor to the right, thereby causing the windows 604 to scroll to the right.
  • the thumb-wheel-like element 602 is element
  • the thumb-wheel-like element 602 may be animated to appear as if the thumb-wheel-like element 602 is moving (e.g., turning like a wheel).
  • the user may also use a touch screen in a similar manner.
  • the thumb-wheel-like element 602 may be used to scroll any information.
  • the thumb-wheel-like element 602 may be used to scroll tabs or other visual markers.
  • the thumb-wheel-like element 602 may be vertical rather than horizontal.
  • the thumb-wheel-like element 602 may be used to scroll the page 604 , tabs, or any information vertically rather than horizontally.
  • thumb-wheel-like element 602 may be used in any graphical user interface.
  • FIG. 7 depicts a diagram depicting multi-level role based permission control in some embodiments.
  • an administrator may control the permissions of other users.
  • the reseller may control the permissions of owners of a VPS accounts who, in turn, may control the permissions of one or more users. Permissions may be controlled by membership of groups or individually. Those skilled in the art will appreciate that there are many ways to configure the system and provide permissions.
  • the UI provides an administrator the ability to govern the rights of one or more other users as well as control the services available.
  • the administrator may generate or configure usage policies to limit storage requests associated with one user, group of users, digital device, or group of digital devices to one or more cloud-based storage services.
  • the usage policy may be configured to take advantage of the various benefits of the cloud-based storage. For example, files or systems that require speed may be associated with faster cloud-based storage while those files or systems that require reliability may be associated with a service that provides high reliability.
  • a permission engine is configured to manage data access rights as described herein.
  • the ZettarFS 202 is configured with a provisioning engine operative to provision additional storage devices as needed.
  • the ZettarFS 202 may be configured by a provisioning engine to take advantage of a newly available cloud-based storage service.
  • FIG. 8 depicts an environment 800 depicting communication between a Zettar VM 502 and a virtual machine 506 a .
  • the agent 802 on the virtual machine 506 a is in communication with ZettarFS 202 via a user interface 804 .
  • the agent 802 (e.g., a Zettar agent 508 a ) residing on the virtual machine 506 A (e.g., guest VM) may be in communication with the ZettarFS 202 which resides on the Zettar VM 502 ).
  • the agent 802 may communicate via the user interface 804 (e.g., myCloud) with the ZettarFS 202 .
  • q 1 denotes a REST query issued by the agent 802 .
  • the ZettarFS 202 may provide a REST reply as r 1 .
  • the agent 802 may then issue another REST query, q 2 .
  • the ZettarFS 202 may provide a second REST reply as r 2 .
  • the agent may reside on the virtual machine 506 a as a daemon.
  • the agent may periodically send queries (e.g., polling) to the user interface using the user interface's standard API (e.g., REST API).
  • the agent 802 may, depending on conditions and policies stored in the database 512 , make available all or a portion of the file system representation on the virtual machine 506 a.
  • FIG. 8 also depicts that certain resources may be shared between the Zettar VM 502 and the guest VM 506 a .
  • the term “share” used in FIG. 8 may indicate a sub-directory that exists in a POSIX file system presented by the ZettarFS 202 .
  • the sub-directory may be represented by the user interface as web-based file system. Other forms of sharing may also be possible.
  • q 1 indicates user/password.
  • the user and password may denote a set of credentials for authentication before full access to the user interface is granted.
  • FIG. 9 depicts a login screen 900 on the user interface in some embodiments.
  • the user interface may be web-based.
  • the user interface may appear in a web browser.
  • the user interface may be a separate application and/or may not appear in a web browser.
  • a user or administrator may be required to provide a username and/or password before gaining access and/or rights.
  • a user may login via the login user interface.
  • the user interface may show appropriate functions (e.g., functions of which the user has access or permissions). The user may then, for example, access the browse, manage, and track components of the user interface to drill down and carry out appropriate tasks.
  • an external software may have the correct API authentication credentials.
  • FIG. 10 depicts a browse screen 1000 on a user interface in some embodiments.
  • the browse screen 1000 (e.g., part of the browse component of the myCloud system) may depict a series of directories 1002 and a series of files 1004 .
  • the directories 1002 may be any directories.
  • the directories may be stored locally, remotely (e.g., on a cloud storage device), or in any combination of both locally and remotely.
  • the david_ 0 may be stored locally but the employeeis_ 0 directory may be stored in a cloud-based storage system.
  • the user may only view those files they have rights to view.
  • the files may be of any file type. Further, the files may be stored locally, remotely, or in any combination of both locally and remotely. For example, the beach.html file may be stored in a first cloud-based storage system, the fish.html may be stored locally, and the index_orig.html may be stored in a second cloud-based storage system.
  • FIG. 11 depicts a manage screen 1100 on a user interface in some embodiments.
  • the manage screen 1100 (e.g., part of the manage component of the myCloud system) may allow an administrator or manager to control rights or characterize users. For example, users may be identified by username, email address, and role. Managers of users may also be identified. In some embodiments, a user may be selected and their rights modified, added, or removed as necessary. The rights may be to directories, files, hard drives, extra functionality, or the like.
  • FIG. 12 depicts a track screen 1200 on a user interface in some embodiments.
  • the track screen 1200 (e.g., part of the track component of the myCloud system) may allow an administrator or manager to track activities (e.g., via the Zettar log).
  • a user or group of users
  • the administrator or manager may request a report, for example, that is related to the user (e.g., by username), digital device, storage resource, and/or cloud storage system.
  • the administrator or manager may enter a rate, control the level of granularity and the format of the output.
  • FIG. 13 is a block diagram of a digital device 1300 in which various embodiments may be practiced.
  • the digital device 1300 comprises a bus 1314 in communication with a processor 1302 , a memory system 1304 , a storage system 1306 , a communication network interface 1308 communicatively coupled to a communication channel 1316 , an input/output device 1310 , and a display interface 1312 .
  • the processor 1302 is configured to execute executable instructions (e.g., programs).
  • the processor 1302 comprises circuitry or any processor capable of processing the executable instructions.
  • the memory system 1304 stores data. Some examples of memory system 1304 include storage devices, such as RAM, ROM, RAM cache, virtual memory, etc. In various embodiments, working data is stored within the memory system 1304 . The data within the memory system 1304 may be cleared or ultimately transferred to the storage system 1306 .
  • the storage system 1306 includes any storage configured to retrieve and store data. Some examples of the storage system 1306 include flash drives, hard drives, optical drives, and/or magnetic tape.
  • Each of the memory system 1304 and the storage system 1306 comprises a computer-readable medium, which stores instructions or programs executable by processor 1302 .
  • the communication network interface (com. network interface) 1308 may be coupled to a network via the communication channel 1316 .
  • the communication network interface 1308 may support communication over an Ethernet connection, a serial connection, a parallel connection, and/or an ATA connection.
  • the communication network interface 1308 may also support wireless communication (e.g., 802.11a/b/g/n, WiMax, LTE, WiFi). It will be apparent to those skilled in the art that the communication network interface 1308 can support many wired and wireless standards.
  • the input/output device 1310 is any device such an interface that receives inputs data (e.g., via mouse and keyboard).
  • the display interface 1312 is an interface that outputs data (e.g., to a speaker or display).
  • the storage system 1306 , input/output device 1310 , and display interface 1312 may be optional.
  • the above-described functions and components can be comprised of instructions that are stored on a storage medium (e.g., a computer readable storage medium).
  • the instructions can be retrieved and executed by a processor.
  • Some examples of instructions are software, program code, and firmware.
  • Some examples of storage medium are memory devices, tape, disks, integrated circuits, and servers.
  • the instructions are operational when executed by the processor to direct the processor to operate in accord with embodiments of the present invention. Those skilled in the art are familiar with instructions, processor(s), and storage medium.

Abstract

A system comprises a first storage resource, a second storage resource, a hosted application, a proxy engine, and a proxy interface. The first storage resource stores first data and uses a first program interface for communicating the first data. The second storage resource stores second data and uses a second program interface for communicating the second data. The hosted application uses application data, the first data and/or the second data including the application data. The proxy engine directs application data requests by the hosted application to the first storage resource or to the second storage resource. The proxy interface uses the first program interface to communicate with the first storage device and the second program interface to communicate with the second storage device to respond to the application data requests.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application seeks priority to U.S. provisional application Ser. No. ______, entitled “A Method that Represents Different Storage Resources through a Unified and Ubiquitous Façade, Available through a Common Programming Interface, on a Computing Device,” filed Aug. 3, 2009 by Chin Fang and U.S. provisional application Ser. No. ______, entitled “A Method that Simplifies the Build up of a Private Storage Cloud, Enhances an Existing One, and Facilitates a Transparent Data Migration from one Storage Cloud to Another” filed May 8, 2010 by Chin Fang, both applications of which are hereby incorporated by reference herein.
  • BACKGROUND
  • 1. Field of the Invention
  • Embodiments of the present invention are directed to data storage and more particularly to management of data storage.
  • 2. Related Art
  • Remote and cloud based storage are becoming increasingly common. It is not uncommon for businesses, employees, and consumers to take advantage of remote storage and the ubiquitous accessibility that remote storage provides. For example, the Amazon S3 service may provide ample storage with availability anywhere over the Internet.
  • Cloud-based storage, such as systems by Amazon, Google, Microsoft, and EMC, are also becoming increasingly common and are often used by business to store a variety of different information. Different cloud-based storage systems may provide a variety of different functions, services, and benefits. Unfortunately, sharing data between different services is difficult. For example, different cloud-based services may have different application program interfaces (APIs) which may not be compatible. As a result, a business may be “locked in” to only using one service (e.g., the AWS S3 service) and unable to take advantage of benefits and functionality provided by other services.
  • SUMMARY OF THE INVENTION
  • In accordance with an embodiment of the invention, a system comprises a first storage resource operative to store first data thereon, the first storage resource using a first program interface for communicating the first data; a second storage resource operative to store second data thereon, the second storage resource using a second program interface for communicating the second data; a hosted application operative to use application data, the first data and/or the second data including the application data; a proxy engine for directing application data requests by the hosted application to the first storage resource or to the second storage resource; and a proxy interface using the first program interface to communicate with the first storage device and the second program interface to communicate with the second storage device, the proxy interface operative to respond to the application data requests by communicating via the first program interface with the first storage device or via the second program interface with the second storage device.
  • The proxy interface may include a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource. The proxy interface may include an application program interface for enabling automatic access by the hosted application. The first storage resource may include one of local storage resource or network storage. The first program interface and the second program interface may use different storage protocols. The proxy interface may include a load balancing engine operative to balance the loads across the first storage resource and the second storage resource. The proxy interface may include a provisioning engine operative to provision additional storage resources as needed.
  • The first program interface may be operative for accessing the first storage resource and at least one other storage resource that uses a same protocol. The proxy interface may be operative to redirect requests by the hosted application. The system may further comprise a second hosted application operative to use second application data, the first data and the second data including the second application data. The proxy interface may include a caching engine for caching at least a portion of the application data. The proxy interface may include a permission engine operative to manage data access rights. The proxy interface may include an operating system component for redirecting file-system data requests. The proxy interface may include a migration engine operative to migrate data across storage resources.
  • In accordance with another embodiment of the invention, a method comprises storing first data on a first storage resource, the first storage resource using a first program interface for communicating the first data; storing second data on a second storage resource, the second storage resource using a second program interface for communicating the second data; receiving a data request from a hosted application that uses application data, the first data and the second data including the application data; directing the data request to the first storage resource or to the second storage resource; and using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
  • The method may further comprise using a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource. The method may further comprise using an application program interface for enabling automatic access by the hosted application. The first storage resource may include one of local storage resource or network storage. The first program interface and the second program interface may use different storage protocols. The method may further comprise using a load balancing engine to balance the loads across the first storage resource and the second storage resource. The method may further comprise using a provisioning engine operative to provision additional storage resources as needed. The method may further comprise using the first program interface for accessing at least one other storage resource that uses a same protocol as the first storage resource. The method may further comprise redirecting requests by the hosted application. The method may further comprise receiving a second data request from a second hosted application operative to use second application data, the first data and the second data including the second application data. The method may further comprise using a caching engine for caching at least a portion of the application data. The method may further comprise using a permission engine to manage data access rights. The method may further comprise using an operating system component for redirecting file-system data requests. The method may further comprise using a migration engine to migrate data across storage resources.
  • In accordance with yet another embodiment of the invention, a system comprises a first storage resource for storing first data, the first storage resource using a first program interface for communicating the first data; a second storage resource for storing second data, the second storage resource using a second program interface for communicating the second data; means for receiving a data request from a hosted application that uses application data, the first data and the second data including the application data; means for directing the data request to the first storage resource or to the second storage resource; and means for using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 depicts a group of hosted computers in some embodiments.
  • FIG. 2 depicts an exemplary environment in which some embodiments may be practiced.
  • FIG. 3 depicts a digital device with the ZettarFS in some embodiments.
  • FIG. 4 depicts an architecture in some embodiments.
  • FIG. 5 depicts a host in communication with the cloud storage in another embodiment.
  • FIG. 6 depicts a graphical user interface in some embodiments.
  • FIG. 7 depicts a diagram depicting multi-level role based permission control in some embodiments.
  • FIG. 8 depicts an environment depicting communication between a Zettar VM and a virtual machine.
  • FIG. 9 depicts a login screen on a user interface in some embodiments.
  • FIG. 10 depicts a browse screen on a user interface in some embodiments.
  • FIG. 11 depicts a manage screen on a user interface in some embodiments.
  • FIG. 12 depicts a track screen on a user interface in some embodiments.
  • FIG. 13 is a block diagram of a digital device in which various embodiments may be practiced.
  • DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
  • Applications that work with one service as the number of cloud-based storage systems increase, there is an increasing demand to utilize the full array of storage resources. For example, many users wish to take advantage of the benefits of different cloud-based storage solutions without being limited to a single solution (e.g., only using the Amazon S3 service and not a combination of services). Unfortunately, different cloud-based services utilize different APIs (e.g., program interfaces). Applications typically are not able to utilize multiple APIs. For example, an application written to use one API may not be ported to use a different API without significant changes. As a result, utilizing multiple cloud-based storage solutions is not feasible.
  • In some embodiments, systems and methods described herein may provide API to API translation thereby allowing computing systems to store data to multiple cloud-based storage providers. In various embodiments, modification of programs or operating systems are not necessary to achieve the translation.
  • In one example, an application may perform a program call which may be directed to a proxy engine and proxy interface which identify the program call and utilizes the API for the desired cloud-based storage. Data may be retrieved from the cloud-based storage and provided to the application in a similar manner. The proxy engine and/or proxy interface may utilize any API(s). Those skilled in the art will appreciate that the application may not be modified or reconfigured and still take advantage of the proxy engine and/or proxy interface.
  • In various embodiments, a file system representation may be generated that displays files as if the files were locally stored. The files, however, may be stored locally or remotely (e.g., in a cloud-based storage system). Further, parts of individual files may be stored on different storage devices (e.g., a file may be stored in two separate cloud-based storage services). The file system representation, however, may display the file as if the file was locally stored. If an application requests the file; the proxy engine and/or proxy interface may retrieve the file utilizing the correct APIs for each different storage device to retrieve and reassemble the file.
  • For example, multiple storage resources may be available as unified browsable resource (e.g., such as a web-based file system representation) through a graphical user interface (GUI). In some embodiments, the GUI allows a user to manage the files system as if the file system was a local resource. The GUI may also be used to provide the users the ability to provision resell, and bill storage space and/or access to the file system representation. The GUI may also provide users the ability to provision, resell, access and track utilization of storage resources.
  • FIG. 1 depicts a group of hosted computers 102 in some embodiments. In some embodiments, a group of hosted computers 102 may be rack mounted. Those skilled in the art will appreciate that the hosted computers 102 need not be in racks or in any physical configuration that is in relationship to each other. Each hosted computer 104 of the group of hosted computers 102 may comprise a network interface card 106, a shared queue 108, one or more virtual machines 110, and one or more applications supported by one or more operating systems 112.
  • A storage resource is any resource that may be used to store; manage, and/or retrieve data. For example, the storage resource may comprise direct attached storage (DAS), network attached storage (NAS), storage area network (SAN), cloud-based storage, and/or remote storage accessed via a protocol such as, but not limited to, REST API or SOAP. Further, cloud-based storage is any storage resource that can be provisioned and is accessed via a data transfer protocol over a network.
  • A digital device is any device with a processor and memory such as a computer. A digital device is any device with a processor and memory. For example, a digital device may be a desktop computer, server, client, laptop, mobile device, cellular device, or the like. In some examples, systems and methods discussed herein may be implemented through a computer program with a graphical user interface. Although such a computer program is discussed, those skilled in the art will appreciate that embodiments may be performed using any of the following, either alone or in combination, including, but not limited to, a computer program, multiple computer programs, firmware, and/or hardware. Digital devices are further described herein.
  • FIG. 2 depicts an exemplary environment 200 in which some embodiments may be practiced. The exemplary environment 200 comprises a ZettarFS (Zettar File System) 202, a plurality of cloud storage systems 204 a-c, a POSIX API file system 206, and a user/application environment 208. In some embodiments, a digital device comprises the ZettarFS 202, the POSIX API file system 206, and the one or more applications in the user/application environment 208. In other embodiments, a digital device 102 does not comprise the ZettarFS 202. Those skilled in the art will appreciate that any number of digital devices may comprise all or some of the ZettarFS (Zettar File System) 202, a plurality of cloud storage systems 204 a-c, a POSIX API file system 206, and a user/application environment 208.
  • In some embodiments, the user and/or applications in the user/application environment 208 may interact with a POSIX API file system 206. The ZettarFS 202 may allow an application that communicates with a POSIX API file system 206 (such as that used by a UNIX operating system) to store data to and/or retrieve data from cloud storage systems 204 a-c even though the cloud storage systems 204 a-c provide the REST API.
  • In various embodiments, the ZettarFS 202 is a proxy engine and/or proxy interface that receives data (e.g., system calls, files, or the like) from the application and provides any necessary API functionality to enable storing data to or retrieving data from remote storage (e.g., cloud-based storage) without requiring that the application be modified.
  • Each cloud storage system 204 a-c may be operated by a cloud service provider (CSP). In this example, each of the cloud storage systems 204 a-c provide a REST API. Those skilled in the art will appreciate that various embodiments are not limited to a single API (e.g., not limited to the REST API) and that the cloud storage systems 204 a-c may use a different API or any combination of APIs.
  • In various embodiments, a digital device may comprise the ZettarFS 202, the POSIX API file system 206, and the users/applications environment 208. For example, a digital device may comprise a UNIX operating system. The UNIX operating system may provide and/or implement the POSIX API. The ZettarFS may comprise software that is configured allow for communication (e.g., storage of data and/or retrieval of data) between applications of the digital device and the cloud storage systems 204 a-c, even if the cloud storage systems 204 a-c use an API (e.g., REST API) that is not the POSIX API. Those skilled in the art will appreciate that the ZettarFS 202 may allow for communication to or from cloud storage systems 204 a-c with any type of API regardless if the one or more of the cloud storage systems 204 a-c.
  • The POSIX API file system 206 may be any file system that utilizes the POSIX API. The users/application environment 208 may comprise one or more digital devices. The digital devices may comprise an operating system and one or more applications. Those skilled in the art will appreciate that various embodiments are not limited to a file system with the POSIX API by may be any API.
  • FIG. 3 depicts a digital device 302 with the ZettarFS 202 in some embodiments. A digital device 302 may be in communication with the cloud storage 304. The digital device 302 comprises a userspace 306 and a kernel 308. The userspace 306 may comprise an application 310 and the ZettarFS 202. The kernel 308 may comprise a virtual file system 312 and a FUSE module 314.
  • Once installed, the ZettarFS 202 may connect over a network with the cloud storage 304 (e.g., Amazon Web Services (AWS) Simple Storage Service (S3)). The ZettarFS 202 may present the information stored on the cloud storage 304 to a user and/or application 310 through a unified façade (e.g., file system representation) available as a POSIX compliant local file system mounted at a desired mounting point.
  • The userspace 306 is any space that is managed by a user or administrator and includes, but is not limited to, applications, utilities, and files. The application 310 (e.g., hosted application) may be any application that is configured to store data, retrieve data, or interact with a storage device (e.g., hard drive, cloud-based storage, or the like). In the example depicted in FIG. 3, the application 310 provides for a command listing files in a particular directory. The userspace 306 may also comprise the ZettarFS 202 which may comprise a software program (e.g., the ZettarFS 202 may be an application), hardware module, or combination of both.
  • The kernel 308 is any space that comprises or communicates with a file system and/or an operating system. The VFS 312 is any virtual file system. Those skilled in the art will appreciate that although the kernel 308 is depicted with a virtual file system, any file system may be used with various embodiments. In some embodiments, the kernel 308 comprises or communicates with multiple virtual machines. All or some of the virtual machines may be configured to run on the digital device's local storage.
  • In various embodiments, an application in the userspace 306 (e.g., application 310) generates system calls (e.g., related to file operations). The OS kernel 308 may receive the calls and hand them to the VFS 312. The VFS 312, after determining which device driver should handle the calls, provides the calls to the FUSE module 314 (i.e., a FUSE driver). The FUSE module 314 may then communicate with the libfuse 316. The calls may then be broken apart as appropriate (e.g., request and caching). Depending on the configuration, different cloud storage backend interfaces 322 may be used to communicate with different storage clouds. A local file storage back-end 324 may also be available.
  • The FUSE module 314 may be any software or hardware configured to direct commands to and from the ZettarFS 202. In some embodiments, the FUSE module 314 is a driver for the kernel 308. In one example, the application 310 directs a command to the VFS 312. The FUSE module 314 may direct the command to the ZettarFS 202 which may then communicate with the cloud storage 304. Any responses from the cloud storage 304 (e.g., a listing of files and/or directories of the zettarfs/foo directory) may be provided by the zettarfs 202 to the VFS 312. The FUSE module 314 may provide the response to the application 310.
  • The ZettarFS 202 may comprise a libfuse 316, a ZettarFS FUSE interface layer 318, a cache 320, a storage backend interfaces 322, a local file storage 324, and an AWS S3 module 326. In some embodiments, the functions of the ZettarFS 202 are transparent to the application 310. In one example, the storage backend interfaces 322 of the ZettarFS 202 may direct data to the cloud-based storage 304 and/or the local file storage 324.
  • The libfuse 316 may be a component of the FUSE module 314. The ZettarFS FUSE interface layer 318 may implement an interface with the libfuse 316. In one example, the ZettarFS FUSE interface layer 318 employs a C++ language binding to interface with the libfuse API. In some embodiments, the ZettarFS FUSE interface layer 318 (in interaction with an operating system's virtual file system (e.g., VFS 312) and the FUSE system (e.g., the FUSE module 314 and the libfuse 316)) is capable of representing a unified API to running applications on the digital device 302 (e.g., such as the application 310) as a complaint file system (e.g., such as a POSIX compliant file system).
  • In some embodiments, one or more components of the ZettarFS 202 may log actions. For example, one or more components may utilize the Boost Logging Library v2 and a Singleton pattern to optionally log actions. In one example, an activity log may be generated on demand for debugging and testing, for example. Logging is further described herein.
  • Various figures described herein depict a UNIX or linux operating system. Those skilled in the art will appreciate that any operating system may be used in conjunction with various embodiments including, but not limited to MICROSOFT WINDOWS.
  • The cache 320 may provide block-level caching of data maintained by the ZettarFS 202. In some embodiments, the cache 320 reduces network interactions with remote storage devices (e.g., like the cloud storage 304). The cache 320 may be a cache engine.
  • The storage backend interfaces 322 may provide connectivity and abstraction of protocol requests performed when interacting with different cloud storage services. In various embodiments, the storage backend interfaces 322 may be capable of concurrently directing data transfer to one or more preferred storage resources according to a set of configurable usage policies. In one example, a usage policy is configured to take advantage of features of different cloud storage systems 304 or storage devices within the cloud storage systems 304. For example, the usage policy may be configured to take advantage of performance, capacity, availability, price, and features of multiple different cloud storage systems and or storage devices.
  • In various embodiments, the ZettarFS 202 may allow concurrent data de-duplication, snapshot, and data replication for multiple storage resources. The desired operation may be applied to a unified API and the results may be applicable transparently and concurrently to underlying storage resources.
  • Those skilled in the art will appreciate that that the ZettarFS 202 may be operating in one or more virtual machines by the digital device 302.
  • In various embodiments, systems and methods described herein may take advantage of available features of different remote storage devices. For example, one remote storage device solution may be cheaper when compared to others and another remote storage device solution may have better performance. Different remote storage device solutions may differentiate themselves in any number of ways, including, for example, performance, capacity, availability, price, and available services supported (e.g., sharing multiple storage resources concurrently with one or more computing devices, concurrent data de-duplication, snapshot, and data replication).
  • Those skilled in the art will appreciate that some embodiments described herein may work with other technologies may provide additional benefits. For example some embodiments described herein may be used with KVM's live migration. Benefits that may be obtained may include, for example, availability of an inexpensive content delivery network and web site fallback.
  • In various embodiments, the ZettarFS 202 may perform load balancing wherein data may be stored to different storage devices based on availability (e.g., the storage is currently busy) and/or available capacity (e.g., the storage device is 90% full). In one example, the ZettarFS 202 may process a command to store one or more files. The ZettarFS 202 may make the determination based on features of the available storage devices, utilization of the storage devices, availability, cost, and/or any other criteria. The criteria may be configured as a usage policy or otherwise modified and/or created by an administrator.
  • The ZettarFS 202 may also migrate (e.g., transfer) data from one storage device to another. In some embodiments, the ZettarFS 202 may migrate data based on any criteria in order to improve utilization, availability, cost, and/or any other criteria related to storage of data. In some embodiments, a user interface displaying a file system representation of the data will not be affected by migration or partial migration of data from one storage device to another.
  • FIG. 4 depicts an architecture 400 in some embodiments. The architecture 400 comprises a host 402 in communication with the cloud storage 304. The host 402 may comprise the Zettar virtual machine 404 (e.g., Zettar VM). The Zettar VM 404 may comprise the kernel 308 and the userspace 306 as well as the ZettarFS 202. The host 402 may also comprise a plurality of other virtual machines 406 a-c, each with an agent 408 a (e.g., a Zettar agent). In some embodiments, the agent 408 a-c may direct data calls to be handled by the Zettar VM 404. As a result, there is no duplication of services.
  • Those skilled in the art will appreciate that the Zettar VM 404 may also comprise a database (e.g., SQLite) and a Zettar log 412 which are both described herein.
  • Each virtual machine (e.g., the Zettar VM 404 as well as virtual machines 406 a-c) may be in communication with a user interface that provides a file system representation (e.g., the myCloud Web UI). The file system representation may be a unified file system representation where files appear to be locally stored. Requests regarding data may then be received and processed with the correct API as necessary by the Zettar VM 404 thereby, In some embodiments, making the physical location(s) of the file not relevant to a calling application.
  • FIG. 5 depicts a host 502 in communication with the cloud storage 504 in another embodiment. The host 502 comprises a Zettar VM 502, as well as virtual machines 506 a-c. Each of the virtual machines 506 a-c comprise a Zettar agent 508 a-c. The virtual machines 506 a-c may be in communication with the Zettar VM 502 via NFS/CIFS 510. The Zettar VM 502 may comprise a Zettar log 514 and, optionally, a database 512 such as a SQLite database.
  • A user may interact with a user interface (e.g., displaying the file system representation) to store data, retrieve data, and/or manage storage resources. In one example, the myCloud Web UI comprises the user interface. The user interface may be web-based. In some embodiments, the ZettarFS 202 generates the UI (e.g., the myCloud UI). Those skilled in the art will appreciate that that a utility on any digital device may generate the UI. The UI may interact with the ZettarFS 202 and log activities with the Zettar log 514.
  • In some embodiments, the ZettarFS 202 provides a single transaction log. The Zettar log 514 may parse the log and store the results in the database 512. The UI may have access to the database 512. In one example, the Zettar log 514 may periodically access a transaction log generated by the ZettarFS 202. The Zettar log 514 may parse the transaction log and generate usage data over a desired time span for one or more users or virtual machines. The usage data may be stored in the database 512. The usage database may then be accessed via the user interface or any external software.
  • The Zettar log 514 and/or database 512 may be available to multiple ZettarFS 202 systems on multiple digital devices and/or multiple virtual machines. In one example, the information within the Zettar log 514 and/or the database 512 may be shared with multiple ZettarFS 202 and/or virtual machines in order to keep track of the location(s) of files. In some embodiments, different systems provide information to a UI that provides a file system representation of files stored by multiple different ZettarFS 202.
  • The user interface may present a unified browsable (e.g., web-based) file system representation. Further, the user interface may allow management of the file system as if the resources were on a local machine. In some embodiments, the user interface may perform these functions because the ZettarFS 202, the VFS layer, and/or the FUSE module 314 (see FIG. 3) present underlying multiple storage resources as a unified file system (e.g., a unified POSIX file system).
  • The UI may comprise three components including a manage component, a track component, and a browse component. The manage component (see FIG. 10) may allow qualified parties to setup users, assign user roles, group membership, and enable/disable ZettarFS accesses for a particular user. A qualified party may be, for example, a server administrator, a manager, a reseller, or a VM operator (e.g., a VPS account owner).
  • The track component (see FIG. 11) may be configured to allow server administrators and users to keep track of cloud storage usage, billing information, and histories. In one example, the track module provides and/or generates tables and graphs. The track component may use information from the database 512 (e.g., information stored by the Zettar log 514). In one example, the track component uses the information from the database 512 to prepare reports (e.g., in tabulated and/or graphical form).
  • The browse component (see FIG. 12) may be configured to allow server administrators and users to view and optionally manage the content stored in cloud storage. The UI as described herein may appear within the browse component.
  • In some embodiments, the myCloud web UI, ZettarFS 202, and Zettar log 514 share configuration information (e.g., stored in a SQLite database).
  • In some embodiments, the user interface and/or the ZettarFS 202 provides a set of standard API (e.g., REST API). The API may enable external software applications to automate one or more tasks (e.g., using the manage and track components of the user interface). Tasks may include, for example, mount, unmount, browse, populate, and clean-up the unified file system (as well as any underlying file systems provided by ZettarFS 202).
  • Each of the virtual machines 506 a-c may comprise a Zettar agent 508 a-c. The Zettar agent 508 a may interact with the user interface (e.g., via a standard API such as the REST API).
  • FIG. 6 depicts a graphical user interface 600 in some embodiments. The user interface described in FIG. 5 (e.g., the myCloud UI) may comprise the graphical user interface 600. The graphical user interface 600 may comprise a thumb-wheel-like element 602 for scrolling the window 604. In some embodiments, the thumb-wheel-like element 602 may provide for efficient space control over a traditional scroll bar based mechanism and/or traditional touch screen-based mechanisms.
  • In some embodiments, a user may click on one side of the thumb-wheel-like element 602 to scroll the window 604 in that direction. The user may also be able to click on the thumb-wheel-like element 602 and drag the thumb-wheel-like element 602 thereby allowing controlled scrolling of the window 604. For example, the user may click on the left of the thumb-wheel-like element 602 and, while holding the mouse button, drag the mouse cursor to the right, thereby causing the windows 604 to scroll to the right. While the thumb-wheel-like element 602 is element, the thumb-wheel-like element 602 may be animated to appear as if the thumb-wheel-like element 602 is moving (e.g., turning like a wheel). In some embodiments, instead of using a mouse to control the cursor, the user may also use a touch screen in a similar manner.
  • The thumb-wheel-like element 602 may be used to scroll any information. For example, the thumb-wheel-like element 602 may be used to scroll tabs or other visual markers. Further, the thumb-wheel-like element 602 may be vertical rather than horizontal. In one example, the thumb-wheel-like element 602 may be used to scroll the page 604, tabs, or any information vertically rather than horizontally.
  • Those skilled in the art will appreciate that the thumb-wheel-like element 602 may be used in any graphical user interface.
  • FIG. 7 depicts a diagram depicting multi-level role based permission control in some embodiments. In some embodiments, an administrator may control the permissions of other users. The reseller may control the permissions of owners of a VPS accounts who, in turn, may control the permissions of one or more users. Permissions may be controlled by membership of groups or individually. Those skilled in the art will appreciate that there are many ways to configure the system and provide permissions.
  • In some embodiments, the UI provides an administrator the ability to govern the rights of one or more other users as well as control the services available. In one example, the administrator may generate or configure usage policies to limit storage requests associated with one user, group of users, digital device, or group of digital devices to one or more cloud-based storage services. Further, the usage policy may be configured to take advantage of the various benefits of the cloud-based storage. For example, files or systems that require speed may be associated with faster cloud-based storage while those files or systems that require reliability may be associated with a service that provides high reliability. In some embodiments, a permission engine is configured to manage data access rights as described herein.
  • In various embodiments, the ZettarFS 202 is configured with a provisioning engine operative to provision additional storage devices as needed. For example, the ZettarFS 202 may be configured by a provisioning engine to take advantage of a newly available cloud-based storage service.
  • FIG. 8 depicts an environment 800 depicting communication between a Zettar VM 502 and a virtual machine 506 a. In some embodiments, the agent 802 on the virtual machine 506 a is in communication with ZettarFS 202 via a user interface 804.
  • The agent 802 (e.g., a Zettar agent 508 a) residing on the virtual machine 506A (e.g., guest VM) may be in communication with the ZettarFS 202 which resides on the Zettar VM 502). The agent 802 may communicate via the user interface 804 (e.g., myCloud) with the ZettarFS 202. In one example, q1 denotes a REST query issued by the agent 802. The ZettarFS 202 may provide a REST reply as r1. The agent 802 may then issue another REST query, q2. In response, the ZettarFS 202 may provide a second REST reply as r2.
  • The agent may reside on the virtual machine 506 a as a daemon. The agent may periodically send queries (e.g., polling) to the user interface using the user interface's standard API (e.g., REST API). The agent 802 may, depending on conditions and policies stored in the database 512, make available all or a portion of the file system representation on the virtual machine 506 a.
  • FIG. 8 also depicts that certain resources may be shared between the Zettar VM 502 and the guest VM 506 a. The term “share” used in FIG. 8 may indicate a sub-directory that exists in a POSIX file system presented by the ZettarFS 202. The sub-directory may be represented by the user interface as web-based file system. Other forms of sharing may also be possible.
  • As depicted in FIG. 8, q1 indicates user/password. The user and password may denote a set of credentials for authentication before full access to the user interface is granted.
  • FIG. 9 depicts a login screen 900 on the user interface in some embodiments. As discussed herein, the user interface may be web-based. For example, the user interface may appear in a web browser. Those skilled in the art will appreciate that the user interface may be a separate application and/or may not appear in a web browser. In some embodiments, a user or administrator may be required to provide a username and/or password before gaining access and/or rights.
  • In some embodiments, a user may login via the login user interface. Depending on the user's role that may be established via the user interface described in FIG. 7, the user interface may show appropriate functions (e.g., functions of which the user has access or permissions). The user may then, for example, access the browse, manage, and track components of the user interface to drill down and carry out appropriate tasks.
  • In various embodiments, in order to use the user interface standard API (e.g., REST API), an external software may have the correct API authentication credentials.
  • FIG. 10 depicts a browse screen 1000 on a user interface in some embodiments. The browse screen 1000 (e.g., part of the browse component of the myCloud system) may depict a series of directories 1002 and a series of files 1004. The directories 1002 may be any directories. In one example, after a user logs into the system (e.g., via the login screen 900), the user will see only those directories that the user has rights to view. The directories may be stored locally, remotely (e.g., on a cloud storage device), or in any combination of both locally and remotely. For example, the david_0 may be stored locally but the dennis_0 directory may be stored in a cloud-based storage system. Similarly, when the user view files 1004, the user may only view those files they have rights to view. The files may be of any file type. Further, the files may be stored locally, remotely, or in any combination of both locally and remotely. For example, the beach.html file may be stored in a first cloud-based storage system, the fish.html may be stored locally, and the index_orig.html may be stored in a second cloud-based storage system.
  • FIG. 11 depicts a manage screen 1100 on a user interface in some embodiments. The manage screen 1100 (e.g., part of the manage component of the myCloud system) may allow an administrator or manager to control rights or characterize users. For example, users may be identified by username, email address, and role. Managers of users may also be identified. In some embodiments, a user may be selected and their rights modified, added, or removed as necessary. The rights may be to directories, files, hard drives, extra functionality, or the like.
  • FIG. 12 depicts a track screen 1200 on a user interface in some embodiments. The track screen 1200 (e.g., part of the track component of the myCloud system) may allow an administrator or manager to track activities (e.g., via the Zettar log). In one example, a user (or group of users) may be selected. The administrator or manager may request a report, for example, that is related to the user (e.g., by username), digital device, storage resource, and/or cloud storage system. The administrator or manager may enter a rate, control the level of granularity and the format of the output. Those skilled in the art will appreciate that there are many ways to search and retrieve information regarding the activities related to the ZettarFS 202.
  • FIG. 13 is a block diagram of a digital device 1300 in which various embodiments may be practiced. The digital device 1300 comprises a bus 1314 in communication with a processor 1302, a memory system 1304, a storage system 1306, a communication network interface 1308 communicatively coupled to a communication channel 1316, an input/output device 1310, and a display interface 1312. The processor 1302 is configured to execute executable instructions (e.g., programs). In some embodiments, the processor 1302 comprises circuitry or any processor capable of processing the executable instructions.
  • The memory system 1304 stores data. Some examples of memory system 1304 include storage devices, such as RAM, ROM, RAM cache, virtual memory, etc. In various embodiments, working data is stored within the memory system 1304. The data within the memory system 1304 may be cleared or ultimately transferred to the storage system 1306. The storage system 1306 includes any storage configured to retrieve and store data. Some examples of the storage system 1306 include flash drives, hard drives, optical drives, and/or magnetic tape. Each of the memory system 1304 and the storage system 1306 comprises a computer-readable medium, which stores instructions or programs executable by processor 1302.
  • The communication network interface (com. network interface) 1308 may be coupled to a network via the communication channel 1316. The communication network interface 1308 may support communication over an Ethernet connection, a serial connection, a parallel connection, and/or an ATA connection. The communication network interface 1308 may also support wireless communication (e.g., 802.11a/b/g/n, WiMax, LTE, WiFi). It will be apparent to those skilled in the art that the communication network interface 1308 can support many wired and wireless standards.
  • The input/output device 1310 is any device such an interface that receives inputs data (e.g., via mouse and keyboard). The display interface 1312 is an interface that outputs data (e.g., to a speaker or display). Those skilled in the art will appreciate that the storage system 1306, input/output device 1310, and display interface 1312 may be optional.
  • The above-described functions and components can be comprised of instructions that are stored on a storage medium (e.g., a computer readable storage medium). The instructions can be retrieved and executed by a processor. Some examples of instructions are software, program code, and firmware. Some examples of storage medium are memory devices, tape, disks, integrated circuits, and servers. The instructions are operational when executed by the processor to direct the processor to operate in accord with embodiments of the present invention. Those skilled in the art are familiar with instructions, processor(s), and storage medium.
  • The present invention has been described above with reference to exemplary embodiments. It will be apparent to those skilled in the art that various modifications may be made and other embodiments can be used without departing from the broader scope of the invention. Therefore, these and other variations upon the exemplary embodiments are intended to be covered by the present invention.

Claims (29)

1. A system, comprising:
a first storage resource operative to store first data thereon, the first storage resource using a first program interface for communicating the first data;
a second storage resource operative to store second data thereon, the second storage resource using a second program interface for communicating the second data;
a hosted application operative to use application data, the first data and/or the second data including the application data;
a proxy engine for directing application data requests by the hosted application to the first storage resource or to the second storage resource; and
a proxy interface using the first program interface to communicate with the first storage device and the second program interface to communicate with the second storage device, the proxy interface operative to respond to the application data requests by communicating via the first program interface with the first storage device or via the second program interface with the second storage device.
2. The system of claim 1, wherein the proxy interface includes a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource.
3. The system of claim 1, wherein the proxy interface includes an application program interface for enabling automatic access by the hosted application.
4. The system of claim 1, wherein the first storage resource includes one of local storage resource or network storage.
5. The system of claim 1, wherein the first program interface and the second program interface use different storage protocols.
6. The system of claim 1, wherein the proxy interface includes a load balancing engine operative to balance the loads across the first storage resource and the second storage resource.
7. The system of claim 1, wherein the proxy interface includes a provisioning engine operative to provision additional storage resources as needed.
8. The system of claim 1, wherein the first program interface is operative for accessing the first storage resource and at least one other storage resource that uses a same protocol.
9. The system of claim 1, wherein the proxy interface is operative to redirect requests by the hosted application.
10. The system of claim 1, further comprising a second hosted application operative to use second application data, the first data and the second data including the second application data.
11. The system of claim 1, wherein the proxy interface includes a caching engine for caching at least a portion of the application data.
12. The system of claim 1, wherein the proxy interface includes a permission engine operative to manage data access rights.
13. The system of claim 1, wherein the proxy interface includes an operating system component for redirecting file-system data requests.
14. The system of claim 1, wherein the proxy interface includes a migration engine operative to migrate data across storage resources.
15. A method, comprising:
storing first data on a first storage resource, the first storage resource using a first program interface for communicating the first data;
storing second data on a second storage resource, the second storage resource using a second program interface for communicating the second data;
receiving a data request from a hosted application that uses application data, the first data and the second data including the application data;
directing the data request to the first storage resource or to the second storage resource; and
using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
16. The method of claim 15, further comprising using a graphical user interface for enabling a user to access the first storage resource and the second storage resource as a unified resource.
17. The method of claim 15, further comprising using an application program interface for enabling automatic access by the hosted application.
18. The method of claim 15, wherein the first storage resource includes one of local storage resource or network storage.
19. The method of claim 15, wherein the first program interface and the second program interface use different storage protocols.
20. The method of claim 15, further comprising using a load balancing engine to balance the loads across the first storage resource and the second storage resource.
21. The method of claim 15, further comprising using a provisioning engine operative to provision additional storage resources as needed.
22. The method of claim 15, further comprising using the first program interface for accessing at least one other storage resource that uses a same protocol as the first storage resource.
23. The method of claim 15, further comprising redirecting requests by the hosted application.
24. The method of claim 15, further comprising receiving a second data request from a second hosted application operative to use second application data, the first data and the second data including the second application data.
25. The method of claim 15, further comprising using a caching engine for caching at least a portion of the application data.
26. The method of claim 15, further comprising using a permission engine to manage data access rights.
27. The method of claim 15, further comprising using an operating system component for redirecting file-system data requests.
28. The method of claim 15, further comprising using a migration engine to migrate data across storage resources.
29. A system, comprising:
a first storage resource for storing first data, the first storage resource using a first program interface for communicating the first data;
a second storage resource for storing second data, the second storage resource using a second program interface for communicating the second data;
means for receiving a data request from a hosted application that uses application data, the first data and the second data including the application data;
means for directing the data request to the first storage resource or to the second storage resource; and
means for using a proxy interface to communicate the data request to the first storage device or to the second storage device, the proxy interface using the first program interface to communicate with the first storage device or the second program interface to communicate with the second storage device.
US12/806,028 2009-08-03 2010-08-03 Systems and methods for remote storage management Abandoned US20110167435A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/806,028 US20110167435A1 (en) 2009-08-03 2010-08-03 Systems and methods for remote storage management
US13/781,572 US9389932B2 (en) 2009-08-03 2013-02-28 Systems and methods for remote storage management

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US23099809P 2009-08-03 2009-08-03
US33274710P 2010-05-08 2010-05-08
US12/806,028 US20110167435A1 (en) 2009-08-03 2010-08-03 Systems and methods for remote storage management

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/781,572 Continuation US9389932B2 (en) 2009-08-03 2013-02-28 Systems and methods for remote storage management

Publications (1)

Publication Number Publication Date
US20110167435A1 true US20110167435A1 (en) 2011-07-07

Family

ID=44225476

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/806,028 Abandoned US20110167435A1 (en) 2009-08-03 2010-08-03 Systems and methods for remote storage management
US13/781,572 Active US9389932B2 (en) 2009-08-03 2013-02-28 Systems and methods for remote storage management

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/781,572 Active US9389932B2 (en) 2009-08-03 2013-02-28 Systems and methods for remote storage management

Country Status (1)

Country Link
US (2) US20110167435A1 (en)

Cited By (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054325A1 (en) * 2010-08-31 2012-03-01 Backa Bruce R System and Method for In-Place Data Migration
US20120130873A1 (en) * 2010-11-24 2012-05-24 Morgan Christopher Edwin Systems and methods for generating multi-cloud incremental billing capture and administration
US8452931B1 (en) * 2010-01-15 2013-05-28 Symantec Corporation Systems and methods for simultaneously providing multiple data protection functions
WO2013097655A1 (en) * 2011-12-31 2013-07-04 华为技术有限公司 Storage service method and storage server applying the method
US20130232191A1 (en) * 2012-03-02 2013-09-05 Netac Technology Co., Ltd. Multi-Application Cloud Storage Platform and Cloud Storage Terminal
US20130297680A1 (en) * 2012-05-02 2013-11-07 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US20130318125A1 (en) * 2012-05-23 2013-11-28 Box, Inc. Metadata enabled third-party application access of content at a cloud-based platform via a native client to the cloud-based platform
US20140086078A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Method and apparatus for supporting hybrid carrier aggregation
US8719445B2 (en) 2012-07-03 2014-05-06 Box, Inc. System and method for load balancing multiple file transfer protocol (FTP) servers to service FTP connections for a cloud-based service
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US20140211665A1 (en) * 2013-01-28 2014-07-31 Rackspace Us, Inc. Methods and Systems of Generating a Billing Feed of a Distributed Network
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US8990151B2 (en) 2011-10-14 2015-03-24 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US8996651B2 (en) 2011-11-12 2015-03-31 Yang Pan System and method for delivering media assets in a cloud environment
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US20150213284A1 (en) * 2013-11-06 2015-07-30 Steven J. Birkel Unifying interface for cloud content sharing services
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US9229849B2 (en) 2012-03-29 2016-01-05 International Business Machines Corporation Dynamic reconfiguration of storage system
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9396216B2 (en) 2012-05-04 2016-07-19 Box, Inc. Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US9483473B2 (en) 2013-09-13 2016-11-01 Box, Inc. High availability architecture for a cloud-based concurrent-access collaboration platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9507795B2 (en) 2013-01-11 2016-11-29 Box, Inc. Functionalities, features, and user interface of a synchronization client to a cloud-based environment
US9519886B2 (en) 2013-09-13 2016-12-13 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9753814B1 (en) 2014-12-19 2017-09-05 EMC IP Holding Company LLC Application level support for selectively accessing files in cloud-based storage
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US9916232B2 (en) 2013-01-28 2018-03-13 Rackspace Us, Inc. Methods and systems of distributed tracing
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US10069690B2 (en) 2013-01-28 2018-09-04 Rackspace Us, Inc. Methods and systems of tracking and verifying records of system change events in a distributed network system
US10095710B1 (en) 2014-12-19 2018-10-09 EMC IP Holding Company LLC Presenting cloud based storage as a virtual synthetic
US10095707B1 (en) * 2014-12-19 2018-10-09 EMC IP Holding Company LLC Nearline cloud storage based on FUSE framework
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US10120765B1 (en) 2014-12-19 2018-11-06 EMC IP Holding Company LLC Restore process using incremental inversion
US20180351761A1 (en) * 2015-12-24 2018-12-06 Intel Corporation Universal interface for sensor devices
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US10235463B1 (en) * 2014-12-19 2019-03-19 EMC IP Holding Company LLC Restore request and data assembly processes
US10452667B2 (en) 2012-07-06 2019-10-22 Box Inc. Identification of people as search results from key-word based searches of content in a cloud-based environment
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US11153184B2 (en) 2015-06-05 2021-10-19 Cisco Technology, Inc. Technologies for annotating process and user information for network flows
US11936663B2 (en) 2015-06-05 2024-03-19 Cisco Technology, Inc. System for monitoring and managing datacenters

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042448B2 (en) * 2018-01-31 2021-06-22 EMC IP Holding Company LLC Archiving NAS servers to the cloud
US11258853B2 (en) 2018-05-04 2022-02-22 EMC IP Holding Company, LLC Storage management system and method
US10860527B2 (en) 2018-05-04 2020-12-08 EMC IP Holding Company, LLC Storage management system and method
US10891257B2 (en) 2018-05-04 2021-01-12 EMC IP Holding Company, LLC Storage management system and method
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11200337B2 (en) * 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
CN109885739B (en) * 2019-03-12 2021-11-19 成都全景智能科技有限公司 Data processing method, system and storage medium
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11281541B2 (en) 2020-01-15 2022-03-22 EMC IP Holding Company LLC Dynamic snapshot backup in multi-cloud environment
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070112937A1 (en) * 2005-11-16 2007-05-17 Manu Rohani Storage system for pervasive and mobile content
US20100027552A1 (en) * 2008-06-19 2010-02-04 Servicemesh, Inc. Cloud computing gateway, cloud computing hypervisor, and methods for implementing same

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464075B2 (en) * 2009-06-18 2013-06-11 Xerox Corporation System and method for policy-driven file segmentation and inter-cloud file storage and retrieval
US8799322B2 (en) * 2009-07-24 2014-08-05 Cisco Technology, Inc. Policy driven cloud storage management and cloud storage policy router

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070112937A1 (en) * 2005-11-16 2007-05-17 Manu Rohani Storage system for pervasive and mobile content
US20100027552A1 (en) * 2008-06-19 2010-02-04 Servicemesh, Inc. Cloud computing gateway, cloud computing hypervisor, and methods for implementing same

Cited By (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452931B1 (en) * 2010-01-15 2013-05-28 Symantec Corporation Systems and methods for simultaneously providing multiple data protection functions
US9239690B2 (en) * 2010-08-31 2016-01-19 Bruce R. Backa System and method for in-place data migration
US20120054325A1 (en) * 2010-08-31 2012-03-01 Backa Bruce R System and Method for In-Place Data Migration
US9235356B2 (en) * 2010-08-31 2016-01-12 Bruce R. Backa System and method for in-place data migration
US20120054193A1 (en) * 2010-08-31 2012-03-01 Backa Bruce R System and Method for In-Place Data Migration
US20120130873A1 (en) * 2010-11-24 2012-05-24 Morgan Christopher Edwin Systems and methods for generating multi-cloud incremental billing capture and administration
US10192246B2 (en) * 2010-11-24 2019-01-29 Red Hat, Inc. Generating multi-cloud incremental billing capture and administration
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8990151B2 (en) 2011-10-14 2015-03-24 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US8996651B2 (en) 2011-11-12 2015-03-31 Yang Pan System and method for delivering media assets in a cloud environment
US9015248B2 (en) 2011-11-16 2015-04-21 Box, Inc. Managing updates at clients used by a user to access a cloud-based collaboration service
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US11853320B2 (en) 2011-11-29 2023-12-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US11537630B2 (en) 2011-11-29 2022-12-27 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US10909141B2 (en) 2011-11-29 2021-02-02 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
WO2013097655A1 (en) * 2011-12-31 2013-07-04 华为技术有限公司 Storage service method and storage server applying the method
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US10713624B2 (en) 2012-02-24 2020-07-14 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US20130232191A1 (en) * 2012-03-02 2013-09-05 Netac Technology Co., Ltd. Multi-Application Cloud Storage Platform and Cloud Storage Terminal
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9389798B2 (en) 2012-03-29 2016-07-12 International Business Machines Corporation Dynamic reconfiguration of storage system
US9229849B2 (en) 2012-03-29 2016-01-05 International Business Machines Corporation Dynamic reconfiguration of storage system
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) * 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US20130297680A1 (en) * 2012-05-02 2013-11-07 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9396216B2 (en) 2012-05-04 2016-07-19 Box, Inc. Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US20130318125A1 (en) * 2012-05-23 2013-11-28 Box, Inc. Metadata enabled third-party application access of content at a cloud-based platform via a native client to the cloud-based platform
US8914900B2 (en) * 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9280613B2 (en) * 2012-05-23 2016-03-08 Box, Inc. Metadata enabled third-party application access of content at a cloud-based platform via a native client to the cloud-based platform
US20130318586A1 (en) * 2012-05-23 2013-11-28 Box, Inc. Identification verification mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US9552444B2 (en) * 2012-05-23 2017-01-24 Box, Inc. Identification verification mechanisms for a third-party application to access content in a cloud-based platform
US8719445B2 (en) 2012-07-03 2014-05-06 Box, Inc. System and method for load balancing multiple file transfer protocol (FTP) servers to service FTP connections for a cloud-based service
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
US10452667B2 (en) 2012-07-06 2019-10-22 Box Inc. Identification of people as search results from key-word based searches of content in a cloud-based environment
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9729675B2 (en) 2012-08-19 2017-08-08 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9450926B2 (en) 2012-08-29 2016-09-20 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US20140086078A1 (en) * 2012-09-24 2014-03-27 Qualcomm Incorporated Method and apparatus for supporting hybrid carrier aggregation
US9295048B2 (en) * 2012-09-24 2016-03-22 Qualcomm Incorporated Method and apparatus for supporting hybrid carrier aggregation
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9507795B2 (en) 2013-01-11 2016-11-29 Box, Inc. Functionalities, features, and user interface of a synchronization client to a cloud-based environment
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9521004B2 (en) * 2013-01-28 2016-12-13 Rackspace Us, Inc. Methods and systems of generating a billing feed of a distributed network
US9916232B2 (en) 2013-01-28 2018-03-13 Rackspace Us, Inc. Methods and systems of distributed tracing
US20140211665A1 (en) * 2013-01-28 2014-07-31 Rackspace Us, Inc. Methods and Systems of Generating a Billing Feed of a Distributed Network
US10069690B2 (en) 2013-01-28 2018-09-04 Rackspace Us, Inc. Methods and systems of tracking and verifying records of system change events in a distributed network system
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US10877937B2 (en) 2013-06-13 2020-12-29 Box, Inc. Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US11531648B2 (en) 2013-06-21 2022-12-20 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9483473B2 (en) 2013-09-13 2016-11-01 Box, Inc. High availability architecture for a cloud-based concurrent-access collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US11822759B2 (en) 2013-09-13 2023-11-21 Box, Inc. System and methods for configuring event-based automation in cloud-based collaboration platforms
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10044773B2 (en) 2013-09-13 2018-08-07 Box, Inc. System and method of a multi-functional managing user interface for accessing a cloud-based platform via mobile devices
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9519886B2 (en) 2013-09-13 2016-12-13 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US11435865B2 (en) 2013-09-13 2022-09-06 Box, Inc. System and methods for configuring event-based automation in cloud-based collaboration platforms
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US11461491B2 (en) * 2013-11-06 2022-10-04 Intel Corporation Unifying interface for cloud content sharing services
US20150213284A1 (en) * 2013-11-06 2015-07-30 Steven J. Birkel Unifying interface for cloud content sharing services
US20230108421A1 (en) * 2013-11-06 2023-04-06 Intel Corporation Unifying interface for cloud content sharing services
US10796012B2 (en) * 2013-11-06 2020-10-06 Intel Corporation Unifying interface for cloud content sharing services
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US10708323B2 (en) 2014-08-29 2020-07-07 Box, Inc. Managing flow-based interactions with cloud-based shared content
US11876845B2 (en) 2014-08-29 2024-01-16 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US11146600B2 (en) 2014-08-29 2021-10-12 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10708321B2 (en) 2014-08-29 2020-07-07 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9753814B1 (en) 2014-12-19 2017-09-05 EMC IP Holding Company LLC Application level support for selectively accessing files in cloud-based storage
US20190005064A1 (en) * 2014-12-19 2019-01-03 EMC IP Holding Company LLC Nearline cloud storage based on fuse framework
US11068553B2 (en) * 2014-12-19 2021-07-20 EMC IP Holding Company LLC Restore request and data assembly processes
US10838820B1 (en) 2014-12-19 2020-11-17 EMC IP Holding Company, LLC Application level support for selectively accessing files in cloud-based storage
US10997128B1 (en) 2014-12-19 2021-05-04 EMC IP Holding Company LLC Presenting cloud based storage as a virtual synthetic
US10846270B2 (en) * 2014-12-19 2020-11-24 EMC IP Holding Company LLC Nearline cloud storage based on fuse framework
US10095707B1 (en) * 2014-12-19 2018-10-09 EMC IP Holding Company LLC Nearline cloud storage based on FUSE framework
US10120765B1 (en) 2014-12-19 2018-11-06 EMC IP Holding Company LLC Restore process using incremental inversion
US10235463B1 (en) * 2014-12-19 2019-03-19 EMC IP Holding Company LLC Restore request and data assembly processes
US10095710B1 (en) 2014-12-19 2018-10-09 EMC IP Holding Company LLC Presenting cloud based storage as a virtual synthetic
US11003546B2 (en) 2014-12-19 2021-05-11 EMC IP Holding Company LLC Restore process using incremental inversion
US11700190B2 (en) 2015-06-05 2023-07-11 Cisco Technology, Inc. Technologies for annotating process and user information for network flows
US11153184B2 (en) 2015-06-05 2021-10-19 Cisco Technology, Inc. Technologies for annotating process and user information for network flows
US11894996B2 (en) 2015-06-05 2024-02-06 Cisco Technology, Inc. Technologies for annotating process and user information for network flows
US11902122B2 (en) 2015-06-05 2024-02-13 Cisco Technology, Inc. Application monitoring prioritization
US11902120B2 (en) 2015-06-05 2024-02-13 Cisco Technology, Inc. Synthetic data for determining health of a network security system
US11924072B2 (en) 2015-06-05 2024-03-05 Cisco Technology, Inc. Technologies for annotating process and user information for network flows
US11924073B2 (en) 2015-06-05 2024-03-05 Cisco Technology, Inc. System and method of assigning reputation scores to hosts
US11936663B2 (en) 2015-06-05 2024-03-19 Cisco Technology, Inc. System for monitoring and managing datacenters
US11968102B2 (en) 2015-06-05 2024-04-23 Cisco Technology, Inc. System and method of detecting packet loss in a distributed sensor-collector architecture
US20180351761A1 (en) * 2015-12-24 2018-12-06 Intel Corporation Universal interface for sensor devices
US11463273B2 (en) 2015-12-24 2022-10-04 Intel Corporation Universal interface for sensor devices
US11146416B2 (en) * 2015-12-24 2021-10-12 Intel Corporation Universal interface for sensor devices

Also Published As

Publication number Publication date
US9389932B2 (en) 2016-07-12
US20130179898A1 (en) 2013-07-11

Similar Documents

Publication Publication Date Title
US9389932B2 (en) Systems and methods for remote storage management
US20200389356A1 (en) Migration of an existing computing system to new hardware
US10346625B2 (en) Automated mechanism to analyze elevated authority usage and capability
US10708338B2 (en) Remote desktop infrastructure
US11199971B2 (en) Managing operational parameters for migrating data for resized volumes
US11573831B2 (en) Optimizing resource usage in distributed computing environments by dynamically adjusting resource unit size
CN106462467B (en) Integrated API and UI for consuming services over different distributed networks
US20200213404A1 (en) Integrated user interface for consuming services across different distributed networks
US8924592B2 (en) Synchronization of server-side cookies with client-side cookies
US8682868B2 (en) Removal of data remanence in deduplicated storage clouds
US20150381723A1 (en) Information management of virtual machines having mapped storage devices
US9830469B1 (en) Automated mechanism to secure customer data
JP2018513510A (en) Dynamic configuration of data volumes
CN103731508A (en) Cloud-storage-based network hard disk device and management method thereof
US10394588B2 (en) Self-terminating or self-shelving virtual machines and workloads
US10963984B2 (en) Interaction monitoring for virtualized graphics processing
US20190014178A1 (en) On-demand workload management in cloud bursting
US20210042368A1 (en) Web crawler platform
US9130994B1 (en) Techniques for avoiding dynamic domain name system (DNS) collisions
CN108293047B (en) System and method for accessing resources by a user across multiple distributed computing networks
US9875373B2 (en) Prioritization of users during disaster recovery
US11385919B1 (en) Machine image launch system
JP6205013B1 (en) Application usage system
US10944685B2 (en) Abstracted, extensible cloud access of resources
US11922201B2 (en) Enhanced attachable writable volumes in VDI based on data requirements

Legal Events

Date Code Title Description
AS Assignment

Owner name: ZETTAR, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FANG, CHIN;REEL/FRAME:025993/0247

Effective date: 20100927

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION