unified_mode - unified identity between object and file

Table 1. Object input behavior in unified_mode.
Note: In the scenarios listed in the following table, the operations are being done by user Bob from the object interface. The instances of owned by user Alice imply that the file or directory ownership maps to user Alice from the file side. Also, it is assumed that the retain_owner, retain_acl, retain_xattr, and retain_winattr parameters are set to yes in object-server-sof.conf.
Operation from SWIFT interface on object or container Ownership result on corresponding file or directory ACL, xattr, and winattr retention behavior on corresponding file or directory
  File Directory File Directory
Bob does a PUT operation for an object that is not present The ownership of the file is set to Bob NA Default GPFS™ ACLs are set NA
Bob does a PUT operation for a container that is not present NA The ownership of the directory is set to Bob NA Default GPFS ACLs are set
Bob does a PUT operation for an object that is already present and is owned by Alice The ownership of the file continues to be with Alice. Bob is not given any file ACL explicitly. No changes in the ownership of the parent directory Existing ACL, file xattrs, and file winattrs are retained** NA
Bob does a POST operation (update metadata) of existing object owned by Alice The ownership of the file continues to be with Alice. Bob is not given any file ACL explicitly NA Existing ACL, file xattrs, and file winattrs are retained** NA
Bob does a POST operation (update metadata) of existing container owned by Alice NA The ownership of the directory continues to be with Alice. Bob is not given any directory ACL NA NA
Bob does a POST operation (update ACL) of existing container owned by Alice NA The ownership of the directory continues to be with Alice. Bob is not given any directory ACL NA NA
GET/DELETE/HEAD No impact
Note: **Unified file and object access retains the extended attributes (xattr), Windows attributes (winattrs) and ACL of the file if there is a PUT request from an object over an existing file. However, security or system namespace of extended attributes and other IBM Spectrum Scale extended attributes such as immutability, pcache, etc. are not retained. Swift metadata (user.swift.metadata) is also not retained and it is replaced according to object semantics which is the expected behavior.

Advantages of using unified_mode

IBM Spectrum Scale offers various features that leverage user identity (UIDs or GIDs). With unified_mode, you can use these features seamlessly across file and object interfaces.
  • Unified access to object data: User can access object data using NFS or SMB exports using their AD or LDAP credentials.
  • Quota: Quota for users that work on UID or GID can be set such that they work for the file as well as object interface.

    Example: User A can have X quota on a unified access fileset assigned using GPFS quota commands which can hold true for all data created by the user from the file or the object interface.

    For more information, see the Quota related considerations for unified_mode section.

  • ILM: Tiering of user specific data leveraging UID or GID.

    Example 1: The UID and GID file attributes can be used to create an ILM placement policy to place the files owned by the Gold customers in faster storage pools and retain the files in the pools even when the pool storage starts reaching the threshold. The UID and GID file attributes can also be used to create a migration ILM policy so that, when the pool reaches its storage threshold, all files older than 30 days are moved to a slower storage pool except the ones owned by the Gold customers.

    Example 2: After a user has left the organization, the UID of the user can be used to migrate the data and retain it on the archive tape for as long as defined as defined by the ILM policies.

  • Backup: Backup of user specific data leveraging UID or GID.

    Example: UID and GID file attributes in the policy rules that are defined for the mmbackup command can be used to regularly back up the data of selective users.

Figure 1. unified_mode - unified identity between object and file
unified_mode - unified identity between object and file

Quota related considerations for unified_mode

There are three types of quotas that need to be considered:
  • Quota for a user set using file system commands for that fileset which is set using User ID or Group ID. This quota represents the size in bytes up to which the user can create data on a given fileset. This is tracked at the file system level.
  • Container quota: This is the size in bytes of objects that can be stored in a container with no mapping with the user. For more information, see OpenStack documentation of container quotas.
  • Account quotas: See OpenStack documentation of account quotas.

The fileset quotas and container level quotas as well as fileset quotas and account quotas are independent of each other.

In some cases, the fileset quota should be cumulative of all the containers' quotas hosted over it, though it is not mandatory. When both the quotas at the fileset level as well as at the container quota level are set, and if the fileset quota is reached, no more object data can be input on any of the containers hosted by that fileset, despite of the container quota not being reached. Hence, when you plan to use both the quotas, it is important to understand these details.

The objectization process does not take into account the container quota and the account quota. This means that there might be a scenario where a container can host more data than the container quota associated with it especially when the ibmobjectizer service has objectized files as objects.

For example, consider that:

  • You want to have a total of 1 TB of data allocated for file and object access.
  • You want each user to have an overall quota from the file as well as the object interface to be 10 GB.
  • You have a pre-defined set of 100 containers which are enabled for object and file access (using the storage policy for object storage) and users access to different containers is dependent on the container ACLs.

In this case, quotas are set as follows:

  1. Set the fileset quota associated with the file access policy to 1 TB.
  2. Set the user quota on that fileset to 10 GB.
  3. Set the container quota to the required level. However, setting it more than fileset quota cannot be honored until fileset quota is increased or unset.

In this example scenario, note that the object access will be restricted if either the user quota or the fileset quota is reached, even though the container quota is not reached.