Difference between revisions of "AppSuite:File Storages per User"

(Motivation)
Line 3: Line 3:
 
= File Storages per user =
 
= File Storages per user =
  
This document tries to outline and explain the new concept of having the possibility to specify file storages on a per user basis that is introduced with Open-­‐Xchange Server v7.8.0.
+
This document tries to outline and explain the new concept of having the possibility to specify file storages on a per user basis that is introduced with Open‐Xchange Server v7.8.0.
  
== The previous situation ==  
+
== The previous situation ==
  
Before the introduction of the file storages per user feature, it was only possible to specify the file storage association per context.  
+
Before the introduction of the file storages per user feature, it was only possible to specify the file storage association per context.
That file storage was used for all modules/functions that are supposed to store/retrieve files:  
+
That file storage was used for all modules/functions that are supposed to store/retrieve files:
* Drive  
+
* Drive
* Thumbnails  
+
* Thumbnails
* PIM attachments  
+
* PIM attachments
* Signature attachments  
+
* Signature attachments
  
 
File storages are registered and maintained in file store table held in configDb database. File storage obtains a unique identifier, a base URI and a size limitation.
 
File storages are registered and maintained in file store table held in configDb database. File storage obtains a unique identifier, a base URI and a size limitation.
Line 22: Line 22:
 
== Motivation ==
 
== Motivation ==
  
The motivation is to differentiate between file storages for common context-­‐associated files and Drive file. Those Drive files may further reside in the common context-­‐associated storage, but it also possible to specify user-­‐associated file storages where Drive files are maintained. The association is determined based on a folder's creator/owner: The quota gets accounted to that user that created a folder (provided the user has a user-­‐associated file storage).
+
The motivation is to differentiate between file storages for common context‐associated files and Drive file. Those Drive files may further reside in the common context‐associated storage, but it also possible to specify user‐associated file storages where Drive files are maintained. The association is determined based on a folder's creator/owner: The quota gets accounted to that user that created a folder (provided the user has a user‐associated file storage).
  
 
[[Image:file_storage_picture2.png|Differentiate|650px]]
 
[[Image:file_storage_picture2.png|Differentiate|650px]]
Line 29: Line 29:
  
 
* Slow mass storage vs. fast Drive storage setup
 
* Slow mass storage vs. fast Drive storage setup
* OX Drive Stand-­‐Alone setup
+
* OX Drive Stand‐Alone setup
  
 
When assigning dedicated file storage for Drive to a certain user, the user’s file occupation is no more accounted to the overall context in which that user resides, but gets accounted to a dedicated user quota. Such a user quota can be used for different sales strategies that include tracking the user’s file occupation.
 
When assigning dedicated file storage for Drive to a certain user, the user’s file occupation is no more accounted to the overall context in which that user resides, but gets accounted to a dedicated user quota. Such a user quota can be used for different sales strategies that include tracking the user’s file occupation.
Line 37: Line 37:
 
[[Image:file_storage_picture3.png|Enhancements|650px]]
 
[[Image:file_storage_picture3.png|Enhancements|650px]]
  
In addition the user table has also been extended by filestore_owner column. That column is used to let a user’s file storage be combined with another user’s storage. This serves the scenario in which a grouped OX Drive Stand-­‐Alone setup is operated. Multiple users’ file occupation gets accounted to a master user account.
+
In addition the user table has also been extended by filestore_owner column. That column is used to let a user’s file storage be combined with another user’s storage. This serves the scenario in which a grouped OX Drive Stand‐Alone setup is operated. Multiple users’ file occupation gets accounted to a master user account.
  
Furthermore Open-­‐Xchange allows changing the running setups at any time to adjust the file storage usages/associations according to possibly changing needs/requirements.
+
Furthermore Open‐Xchange allows changing the running setups at any time to adjust the file storage usages/associations according to possibly changing needs/requirements.
  
 
== Seamless integration and flexibility ==
 
== Seamless integration and flexibility ==
 
The new more flexible approach fits seamlessly into existing context/file storage setups. Thus there is no need to change anything, unless demanded by administrator
 
The new more flexible approach fits seamlessly into existing context/file storage setups. Thus there is no need to change anything, unless demanded by administrator
  
=== The fall-­‐back setup ===
+
=== The fall‐back setup ===
  
 
[[Image:file_storage_picture4.png|The fall-back setup|650px]]
 
[[Image:file_storage_picture4.png|The fall-back setup|650px]]
  
Everything stays as is. There is a storage-­‐per-­‐context association and every file is held in that storage. There are no user-­‐specific file storage attributes set in user table.
+
Everything stays as is. There is a storage‐per‐context association and every file is held in that storage. There are no user‐specific file storage attributes set in user table.
  
 
=== Slow mass storage vs. fast file storage setup ===
 
=== Slow mass storage vs. fast file storage setup ===
Line 54: Line 54:
 
[[Image:file_storage_picture5.png|Slow mass storage|650px]]
 
[[Image:file_storage_picture5.png|Slow mass storage|650px]]
  
There are two storages available: a file-­‐based and an S3 storage (assuming that the S3 one would be faster). While the context has the file-­‐based storage set, users in that context do have individual name spaces in the S3 storage.
+
There are two storages available: a file‐based and an S3 storage (assuming that the S3 one would be faster). While the context has the file‐based storage set, users in that context do have individual name spaces in the S3 storage.
  
That way common files (PIM/Signature attachments, thumbnails) are stored to context-­‐ associated file-­‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage. Every user is allowed to occupy up to 10GB of space in the S3 storage (this can be varied as well).
+
That way common files (PIM/Signature attachments, thumbnails) are stored to context‐ associated file‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage. Every user is allowed to occupy up to 10GB of space in the S3 storage (this can be varied as well).
  
=== OX Drive Stand-­‐Alone – Single User ===
+
=== OX Drive Stand‐Alone – Single User ===
  
 
[[Image:file_storage_picture6.png|OX Drive Stand-Alone - Single User|650px]]
 
[[Image:file_storage_picture6.png|OX Drive Stand-Alone - Single User|650px]]
  
Again there two file storages. Again the file-­‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.
+
Again there two file storages. Again the file‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.
  
Context designated to the Single User scenario for OX Drive Stand-­‐Alone operation, do hold only one user that has its individual name space associated in the S3 storage.
+
Context designated to the Single User scenario for OX Drive Stand‐Alone operation, do hold only one user that has its individual name space associated in the S3 storage.
  
Again common files (PIM/Signature attachments, thumbnails) are stored in the context-­‐ associated file-­‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage of each context. Every Drive document accounts the user-­‐sensitive quota of the associated user.
+
Again common files (PIM/Signature attachments, thumbnails) are stored in the context‐ associated file‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage of each context. Every Drive document accounts the user‐sensitive quota of the associated user.
  
=== OX Drive Stand-­‐Alone – Business Account ===
+
=== OX Drive Stand‐Alone – Business Account ===
  
 
[[Image:file_storage_picture7.png|OX Drive Stand-Alone - Business Account|650px]]
 
[[Image:file_storage_picture7.png|OX Drive Stand-Alone - Business Account|650px]]
  
There two different file storages as in the previous setups. Again the file-­‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.
+
There two different file storages as in the previous setups. Again the file‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.
  
 
For this setup users do not hold their own individual name space in the S3 storage, but all share the same name space of the master user in the S3 storage. Moreover there are no dedicated user quotas, but all Drive documents do account to the master user’s quota
 
For this setup users do not hold their own individual name space in the S3 storage, but all share the same name space of the master user in the S3 storage. Moreover there are no dedicated user quotas, but all Drive documents do account to the master user’s quota
  
== Extensions to provisioning command-­‐line tools ==
+
== Extensions to provisioning command‐line tools ==
  
 
=== createuser ===
 
=== createuser ===
  
 
The existing createuser CLI is enhanced by the following options
 
The existing createuser CLI is enhanced by the following options
  -­‐q/-­‐-­‐quota The file storage quota in MB for associated user
+
  ‐q/‐‐quota The file storage quota in MB for associated user
  -­‐f/-­‐-­‐filestore The identifier for the file storage.
+
  ‐f/‐‐filestore The identifier for the file storage.
  -­‐o/-­‐-­‐owner The owner for the file storage. If no owner is given and f/filestore option is set, the user itself is taken as owner
+
  ‐o/‐‐owner The owner for the file storage. If no owner is given and f/filestore option is set, the user itself is taken as owner
  
 
=== changeuser ===
 
=== changeuser ===
  
 
The existing changeuser CLI is enhanced by the following option
 
The existing changeuser CLI is enhanced by the following option
  -­‐q/-­‐-­‐quota The file storage quota in MB for associated user
+
  ‐q/‐‐quota The file storage quota in MB for associated user
  
 
=== movecontextfilestore2user ===
 
=== movecontextfilestore2user ===
Line 95: Line 95:
 
Usage: movecontextfilestore2user
 
Usage: movecontextfilestore2user
  
  -­‐h,-­‐-­‐help Prints a help text
+
  ‐h,‐‐help Prints a help text
  -­‐-­‐environment Show info about commandline environment
+
  ‐‐environment Show info about commandline environment
  -­‐-­‐nonl Remove all newlines (\n) from output
+
  ‐‐nonl Remove all newlines (\n) from output
  -­‐i,-­‐-­‐userid <userid> | Id of the user
+
  ‐i,‐‐userid <userid> | Id of the user
  -­‐u,-­‐-­‐username <username> | Username of the user
+
  ‐u,‐‐username <username> | Username of the user
  -­‐A,-­‐-­‐adminuser <adminuser> ? Admin username
+
  ‐A,‐‐adminuser <adminuser> ? Admin username
  -­‐P,-­‐-­‐adminpass <adminpass> ? Admin password
+
  ‐P,‐‐adminpass <adminpass> ? Admin password
  -­‐c,-­‐-­‐contextid <contextid> | The id of the context
+
  ‐c,‐‐contextid <contextid> | The id of the context
  -­‐N,-­‐-­‐contextname <contextname> | context name
+
  ‐N,‐‐contextname <contextname> | context name
  -­‐f,-­‐-­‐filestore <filestore> * The identifier for the file storage.
+
  ‐f,‐‐filestore <filestore> * The identifier for the file storage.
  -­‐q,-­‐-­‐quota <quota> * The file storage quota in MB for associated user.
+
  ‐q,‐‐quota <quota> * The file storage quota in MB for associated user.
  
  
Line 117: Line 117:
 
Usage: moveuserfilestore2context
 
Usage: moveuserfilestore2context
  
  -­‐h,-­‐-­‐help Prints a help text
+
  ‐h,‐‐help Prints a help text
  -­‐-­‐environment Show info about commandline environment
+
  ‐‐environment Show info about commandline environment
  -­‐-­‐nonl Remove all newlines (\n) from output
+
  ‐‐nonl Remove all newlines (\n) from output
  -­‐i,-­‐-­‐userid <userid> | Id of the user
+
  ‐i,‐‐userid <userid> | Id of the user
  -­‐u,-­‐-­‐username <username> | Username of the user
+
  ‐u,‐‐username <username> | Username of the user
  -­‐A,-­‐-­‐adminuser <adminuser> ? Admin username
+
  ‐A,‐‐adminuser <adminuser> ? Admin username
  -­‐P,-­‐-­‐adminpass <adminpass> ? Admin password
+
  ‐P,‐‐adminpass <adminpass> ? Admin password
  -­‐c,-­‐-­‐contextid <contextid> | The id of the context
+
  ‐c,‐‐contextid <contextid> | The id of the context
  -­‐N,-­‐-­‐contextname <contextname> | context name
+
  ‐N,‐‐contextname <contextname> | context name
  
 
Entries marked with an asterisk (*) are mandatory.
 
Entries marked with an asterisk (*) are mandatory.
Line 136: Line 136:
  
  
  -­‐h,-­‐-­‐help Prints a help text
+
  ‐h,‐‐help Prints a help text
  -­‐-­‐environment Show info about commandline environment
+
  ‐‐environment Show info about commandline environment
  -­‐-­‐nonl Remove all newlines (\n) from output
+
  ‐‐nonl Remove all newlines (\n) from output
  -­‐i,-­‐-­‐userid <userid> | Id of the user
+
  ‐i,‐‐userid <userid> | Id of the user
  -­‐u,-­‐-­‐username <username> | Username of the user
+
  ‐u,‐‐username <username> | Username of the user
  -­‐A,-­‐-­‐adminuser <adminuser> ? Admin username
+
  ‐A,‐‐adminuser <adminuser> ? Admin username
  -­‐P,-­‐-­‐adminpass <adminpass> ? Admin password
+
  ‐P,‐‐adminpass <adminpass> ? Admin password
  -­‐c,-­‐-­‐contextid <contextid> | The id of the context
+
  ‐c,‐‐contextid <contextid> | The id of the context
  -­‐N,-­‐-­‐contextname <contextname> | context name
+
  ‐N,‐‐contextname <contextname> | context name
  -­‐m,-­‐-­‐master <master> Master user id. If not set, the context administrator is assumed to be the master user.
+
  ‐m,‐‐master <master> Master user id. If not set, the context administrator is assumed to be the master user.
+
 
  
 
Entries marked with an asterisk (*) are mandatory.
 
Entries marked with an asterisk (*) are mandatory.
Line 156: Line 156:
 
Usage: movemasterfilestore2user
 
Usage: movemasterfilestore2user
  
  -­‐h,-­‐-­‐help Prints a help text
+
  ‐h,‐‐help Prints a help text
  -­‐-­‐environment Show info about commandline environment
+
  ‐‐environment Show info about commandline environment
  -­‐-­‐nonl Remove all newlines (\n) from output
+
  ‐‐nonl Remove all newlines (\n) from output
  -­‐i,-­‐-­‐userid <userid> | Id of the user
+
  ‐i,‐‐userid <userid> | Id of the user
  -­‐u,-­‐-­‐username <username> | Username of the user
+
  ‐u,‐‐username <username> | Username of the user
  -­‐A,-­‐-­‐adminuser <adminuser> ? Admin username
+
  ‐A,‐‐adminuser <adminuser> ? Admin username
  -­‐P,-­‐-­‐adminpass <adminpass> ? Admin password
+
  ‐P,‐‐adminpass <adminpass> ? Admin password
  -­‐c,-­‐-­‐contextid <contextid> | The id of the context
+
  ‐c,‐‐contextid <contextid> | The id of the context
  -­‐N,-­‐-­‐contextname <contextname> | context name
+
  ‐N,‐‐contextname <contextname> | context name
  -­‐m,-­‐-­‐master <master> Master user id. If not set, the context administrator is assumed to be the master user.
+
  ‐m,‐‐master <master> Master user id. If not set, the context administrator is assumed to be the master user.
  -­‐f,-­‐-­‐filestore <filestore> * The identifier for the file storage.
+
  ‐f,‐‐filestore <filestore> * The identifier for the file storage.
  -­‐q,-­‐-­‐quota <quota> * The file storage quota in MB for associated user.
+
  ‐q,‐‐quota <quota> * The file storage quota in MB for associated user.
  
 
Entries marked with an asterisk (*) are mandatory.
 
Entries marked with an asterisk (*) are mandatory.
 
Entries marked with an question mark (?) are mandatory depending on your configuration.
 
Entries marked with an question mark (?) are mandatory depending on your configuration.
 
Entries marked with a pipe (|) are mandatory for one another, which means that at least one of them, must be set.
 
Entries marked with a pipe (|) are mandatory for one another, which means that at least one of them, must be set.

Revision as of 06:12, 24 August 2015

This information is valid from 7.8.0

File Storages per user

This document tries to outline and explain the new concept of having the possibility to specify file storages on a per user basis that is introduced with Open‐Xchange Server v7.8.0.

The previous situation

Before the introduction of the file storages per user feature, it was only possible to specify the file storage association per context. That file storage was used for all modules/functions that are supposed to store/retrieve files:

  • Drive
  • Thumbnails
  • PIM attachments
  • Signature attachments

File storages are registered and maintained in file store table held in configDb database. File storage obtains a unique identifier, a base URI and a size limitation.

For each context a file storage identifier is specified alongside with a context quota that defines how much space that context is allowed to occupy in assigned file storage. Thus the sum of all quotas from those contexts assigned to file storage must not exceed the file storage’s size.

One file storage per context

Motivation

The motivation is to differentiate between file storages for common context‐associated files and Drive file. Those Drive files may further reside in the common context‐associated storage, but it also possible to specify user‐associated file storages where Drive files are maintained. The association is determined based on a folder's creator/owner: The quota gets accounted to that user that created a folder (provided the user has a user‐associated file storage).

Differentiate

That kind of separation allows different provisioning scenarios that an administrator possibly wants to achieve.

  • Slow mass storage vs. fast Drive storage setup
  • OX Drive Stand‐Alone setup

When assigning dedicated file storage for Drive to a certain user, the user’s file occupation is no more accounted to the overall context in which that user resides, but gets accounted to a dedicated user quota. Such a user quota can be used for different sales strategies that include tracking the user’s file occupation.

To achieve the file storage association on a per user basis, the existing user table has been enhanced by file storage and quota information as it is for the context table. Moreover the filestore_usage table has also been enhanced by the capability to account storage occupation to a certain user

Enhancements

In addition the user table has also been extended by filestore_owner column. That column is used to let a user’s file storage be combined with another user’s storage. This serves the scenario in which a grouped OX Drive Stand‐Alone setup is operated. Multiple users’ file occupation gets accounted to a master user account.

Furthermore Open‐Xchange allows changing the running setups at any time to adjust the file storage usages/associations according to possibly changing needs/requirements.

Seamless integration and flexibility

The new more flexible approach fits seamlessly into existing context/file storage setups. Thus there is no need to change anything, unless demanded by administrator

The fall‐back setup

The fall-back setup

Everything stays as is. There is a storage‐per‐context association and every file is held in that storage. There are no user‐specific file storage attributes set in user table.

Slow mass storage vs. fast file storage setup

Slow mass storage

There are two storages available: a file‐based and an S3 storage (assuming that the S3 one would be faster). While the context has the file‐based storage set, users in that context do have individual name spaces in the S3 storage.

That way common files (PIM/Signature attachments, thumbnails) are stored to context‐ associated file‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage. Every user is allowed to occupy up to 10GB of space in the S3 storage (this can be varied as well).

OX Drive Stand‐Alone – Single User

OX Drive Stand-Alone - Single User

Again there two file storages. Again the file‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.

Context designated to the Single User scenario for OX Drive Stand‐Alone operation, do hold only one user that has its individual name space associated in the S3 storage.

Again common files (PIM/Signature attachments, thumbnails) are stored in the context‐ associated file‐based storage while Drive documents are stored in the individual user name spaces in the S3 storage of each context. Every Drive document accounts the user‐sensitive quota of the associated user.

OX Drive Stand‐Alone – Business Account

OX Drive Stand-Alone - Business Account

There two different file storages as in the previous setups. Again the file‐based one is assumed to serve the slow mass storage behavior while S3 is assumed to be the fast storage.

For this setup users do not hold their own individual name space in the S3 storage, but all share the same name space of the master user in the S3 storage. Moreover there are no dedicated user quotas, but all Drive documents do account to the master user’s quota

Extensions to provisioning command‐line tools

createuser

The existing createuser CLI is enhanced by the following options

‐q/‐‐quota The file storage quota in MB for associated user
‐f/‐‐filestore The identifier for the file storage.
‐o/‐‐owner The owner for the file storage. If no owner is given and f/filestore option is set, the user itself is taken as owner

changeuser

The existing changeuser CLI is enhanced by the following option

‐q/‐‐quota The file storage quota in MB for associated user

movecontextfilestore2user

Move a user’s files from a context to an individual storage name space.
Usage: movecontextfilestore2user

‐h,‐‐help	Prints a help text
‐‐environment	Show info about commandline environment
‐‐nonl	Remove all newlines (\n) from output
‐i,‐‐userid <userid>	| Id of the user
‐u,‐‐username <username>	| Username of the user
‐A,‐‐adminuser <adminuser>	? Admin username
‐P,‐‐adminpass <adminpass>	? Admin password
‐c,‐‐contextid <contextid>	| The id of the context
‐N,‐‐contextname <contextname>	| context name
‐f,‐‐filestore <filestore>	* The identifier for the file storage.
‐q,‐‐quota <quota>	* The file storage quota in MB for associated user.


Entries marked with an asterisk (*) are mandatory. Entries marked with an question mark (?) are mandatory depending on your configuration. Entries marked with a pipe (|) are mandatory for one another which means that at least one of them must be set.

moveuserfilestore2context

The counterpart for the previous CLI. Move a user's files from his individual storage name space to the context storage name space.
Usage: moveuserfilestore2context

‐h,‐‐help	Prints a help text
‐‐environment	Show info about commandline environment
‐‐nonl	Remove all newlines (\n) from output
‐i,‐‐userid <userid>	| Id of the user
‐u,‐‐username <username>	| Username of the user
‐A,‐‐adminuser <adminuser>	? Admin username
‐P,‐‐adminpass <adminpass>	? Admin password
‐c,‐‐contextid <contextid>	| The id of the context
‐N,‐‐contextname <contextname>	| context name

Entries marked with an asterisk (*) are mandatory. Entries marked with an question mark (?) are mandatory depending on your configuration. Entries marked with a pipe (|) are mandatory for one another that means that at least one of them must be set.

moveuserfilestore2master

Move a user's files from his individual storage name space to the storage name space of specified master.
Usage: moveuserfilestore2master


‐h,‐‐help	Prints a help text
‐‐environment	Show info about commandline environment
‐‐nonl	Remove all newlines (\n) from output
‐i,‐‐userid <userid>	| Id of the user
‐u,‐‐username <username>	| Username of the user
‐A,‐‐adminuser <adminuser>	? Admin username
‐P,‐‐adminpass <adminpass>	? Admin password
‐c,‐‐contextid <contextid>	| The id of the context
‐N,‐‐contextname <contextname>	| context name
‐m,‐‐master <master>	Master user id. If not set, the context administrator is assumed to be the master user.


Entries marked with an asterisk (*) are mandatory. Entries marked with an question mark (?) are mandatory depending on your configuration. Entries marked with a pipe (|) are mandatory for one another, which means that at least one of them, must be set.

movemasterfilestore2user

Move a user's files from a master account name space to an individual storage name space.
Usage: movemasterfilestore2user

‐h,‐‐help	Prints a help text
‐‐environment	Show info about commandline environment
‐‐nonl	Remove all newlines (\n) from output
‐i,‐‐userid <userid>	| Id of the user
‐u,‐‐username <username>	| Username of the user
‐A,‐‐adminuser <adminuser>	? Admin username
‐P,‐‐adminpass <adminpass>	? Admin password
‐c,‐‐contextid <contextid>	| The id of the context
‐N,‐‐contextname <contextname>	| context name
‐m,‐‐master <master>	Master user id. If not set, the context administrator is assumed to be the master user.
‐f,‐‐filestore <filestore>	* The identifier for the file storage.
‐q,‐‐quota <quota>	* The file storage quota in MB for associated user.

Entries marked with an asterisk (*) are mandatory. Entries marked with an question mark (?) are mandatory depending on your configuration. Entries marked with a pipe (|) are mandatory for one another, which means that at least one of them, must be set.