WORM (Write Once Read Many)

This features enables you to create a WORM volume using gluster CLI.

Description

WORM (write once,read many) is a desired feature for users who want to store data such as log files and where data is not allowed to get modified.

GlusterFS provides a new key features.worm which takes boolean values(enable/disable) for volume set.

Internally, the volume set command with 'feature.worm' key will add 'features/worm' translator in the brick's volume file.

This change would be reflected on a subsequent restart of the volume, i.e gluster volume stop, followed by a gluster volume start.

With a volume converted to WORM, the changes are as follows:

  • Reads are handled normally
  • Only files with O_APPEND flag will be supported.
  • Truncation,deletion wont be supported.

Volume Options

Use the volume set command on a volume and see if the volume is actually turned into WORM type.

# features.worm enable

Fully loaded Example

WORM feature is being supported from glusterfs version 3.4 start glusterd by using the command

# service glusterd start

Now create a volume by using the command

# gluster volume create <vol_name> <brick_path>

start the volume created by running the command below.

# gluster vol start <vol_name>

Run the command below to make sure that volume is created.

# gluster volume info

Now turn on the WORM feature on the volume by using the command

# gluster vol set <vol_name> worm enable

Verify that the option is set by using the command

# gluster volume info

User should be able to see another option in the volume info

# features.worm: enable

Now restart the volume for the changes to reflect, by performing volume stop and start.

# gluster volume <vol_name> stop
# gluster volume <vol_name> start

Now mount the volume using fuse mount

# mount -t glusterfs <vol_name> <mnt_point>

create a file inside the mount point by running the command below

# touch <file_name>

Verify that user is able to create a file by running the command below

# ls <file_name>

How To Test

Now try deleting the above file which is been created

# rm <file_name>

Since WORM is enabled on the volume, it gives the following error message rm: cannot remove '/<mnt_point>/<file_name>': Read-only file system

put some content into the file which is created above.

# echo "at the end of the file" >> <file_name>

Now try editing the file by running the commnad below and verify that the following error message is displayed rm: cannot remove '/<mnt_point>/<file_name>': Read-only file system

# sed -i "1iAt the beginning of the file" <file_name>

Now read the contents of the file and verify that file can be read.

cat <file_name>

Note: If WORM option is set on the volume before it is started, then volume need not be restarted for the changes to get reflected.