We’ve already briefly touched upon the file /etc/fstab
. Essentially, this file is a simple table, or otherwise put, a flat database, in which each line is a record, and each record contains six fields separated by whitespace ─ i.e. space characters or tabs. The layout of the fields (with an example) is as follows… 
# STORAGE DEVICE | MOUNTPOINT | TYPE | MOUNT OPTIONS | DUMP | PASS
/dev/sda3 /home ext4 defaults 0 1
Now let’s take a look at what each of these fields represents… 
The first field refers to the storage device that is to be mounted. In the example above, I have used the designation /dev/sda3
, but because the order of the different drives in a machine with multiple drives attached is never guaranteed to remain the same across reboots, much better is to use the UUID
, which is a unique identifier stored in the filesystem header when the filesystem is created. Alternatively, one can also use a LABEL
, which is also stored in the filesystem header, but a LABEL
is not guaranteed to be unique, given that it must be set by the biological unit between the keyboard and the chair. A couple of examples follow below… 
UUID=some-long-string /home ext4 defaults 0 1
LABEL=movies /home/my-name/movies ext4 defaults 0 0
Note: Instead of the UUID
or a LABEL
, both of which are stored in the filesystem’s own headers, it is also possible to use the PARTUUID
or (if present) PARTLABEL
, which are similar, but which are stored in the partition table itself on GPT drives, and which, unlike the regular UUID
or LABEL
, will not change if the filesystem is reformatted. (Note: You cannot do this if the partition table is in the MS-DOS MBR format.)
The second field is easy. It contains the name of the directory that the filesystem is to be mounted on. However, do note that when a filesystem is mounted on this directory, whatever was in the directory before the filesystem was mounted will be obscured until the filesystem is unmounted again. You can actually use this as a trick to help you diagnose problems with mounting, i.e. if you create a directory that another filesystem is to be mounted on later, then you can create a zero-length file in this directory with the name NOT_MOUNTED
. By consequence, if you later on visit this directory by way of a file manager or you attempt to list the contents of this directory by way of the command line, and you then get to see a file named NOT_MOUNTED
while you were expecting a whole list of other files, then you know what the problem is. 
The third field specifies the type of filesystem, although in the event of a swap partition or a swap file, there actually isn’t any filesystem ─ the kernel directly accesses the raw drive blocks for paging data to the swap partition or swap file ─ but you can use sw
or swap
as a placeholder. Note that for NTFS filesystems, one should use the type ntfs-3g
here and not ntfs
. The ntfs
driver in the kernel is only good for read-only acccess and editing a file by overwriting existing bytes without that the file changes in size. So it’s not really usable. Much better is therefore to use the ntfs-3g
type, which has a more functional driver. This more functional driver runs in userspace, not in the kernel ─ it could not be included in the kernel itself because of licensing reasons, which is why it must be explicitly specified in place of the built-in ntfs
driver.
The fourth field comprises the mount options. Multiple mount options can be specified, so long as they are separated by commas without spaces. Which options all exist independently from the filesystem types and which ones are the defaults for each suppported type of filesystem can be gleaned from the man
page…: 
man mount
The fifth field can be set to either 0
or 1
, but these days it should not be set to anything other than 0
anymore, although technically speaking, the value of 1
is still functional. This field denotes whether the filesystem must be backed up when using the dump
command, an older utility for making backups. Nowadays much better and more flexible backup solutions exist, and so dump
isn’t used much anymore, but it’s still supported for compatibility reasons.
The sixth field can be set to 0
, 1
or 2
. If set to 1
or 2
, it denotes the order in which a filesystem must be checked for errors at boot. If set to 0
, the filesystem will not be checked, but concretely in Manjaro, the root filesystem is always checked from within the initramfs
at every boot, even if the value is set to 0
in /etc/fstab
.