If you’ve ever mounted an extra drive, a network share, tmpfs, or anything beyond the defaults, what did you add and why? Paste the line and give us the story behind it.
My addition to /etc/fstab was:
# zram swap /dev/zram0
/dev/disk/by-uuid/7A7E1892271D8139 /mnt/7A7E1892271D8139 auto nosuid,nodev,nofail,x-gvfs-show,noauto 0 0
(and I disabled my swap partition)
Because of this: Linux Performance: Almost Always Add Swap Space - Part 2: ZRAM
and it did exactly what I wanted it to do. ![]()
It was conveniently automatically added when setting up zram.
(otherwise I would have done it myself
)
You really shouldn’t ask questions like that!
![]()
My 2TB main drive, /DB001_F[1-8], is partitioned to “divide and conquer” the volumes of data into “domain-specific” or personal task-oriented content.
I created multiple SWAP partitions on the disk hoping against hope that the system would be intelligent enough to work with cache areas closest to work areas. Don’t know if that actually worked out, because there is really no way to tell which partition the swap was written to.
The external 4TB drive has partitions to mirror the primary drive partitions, mostly mapped one-to-one, with exceptions being “/” mapping to “/site/DB005_F8” and DB001_F8 which is a special case for which there really isn’t a backup.
The /site/DB005_F[2-8] are for rsync backups of /DB001_F[2-7,1].
The /site/DB006_F[1-8] have not been specificaly assigned but, size-wise, mirror the /site/DB005[1-8], for the reason that I wasn’t sure if I wanted to maintain 2 backup images, one being the mirror of actual (most recent full), and the other as yet undetermined.
The /site/DB008_F[1-4] are the latest partitions created during an attempt at building an Ubuntu Server + MATE Desktop installation, which I’ve previously reported as mis-behaving. (I did not mention this to restart the discussion here. That discussion is best left where it was already started.)
My fstab
# /etc/fstab: static file system information.
#
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
# /dev/sda3 ext4 DB001_F1 5dcf1a96-fa2e-42f5-9a08-37fcce0f0878 195.3G / INTERNAL
UUID=5dcf1a96-fa2e-42f5-9a08-37fcce0f0878 / ext4 defaults,nofail,errors=remount-ro,journal_checksum 0 1
#
###############################################################################################################
#
###FOREIGN-REF### /dev/sda6 /home ext3 noatime,nodiratime,relatime,errors=remount-ro 0 2
# /dev/sda7 ext4 DB001_F2 7e9a663e-ff1d-4730-8544-c37519056b6f 293G /DB001_F2 INTERNAL
#UUID=7e9a663e-ff1d-4730-8544-c37519056b6f /DB001_F2 ext4 defaults,nofail,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 1
UUID=7e9a663e-ff1d-4730-8544-c37519056b6f /DB001_F2 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 1
# /dev/sda8 ext4 DB001_F3 4f7d4192-b136-4a94-b06b-736f76155816 293G /DB001_F3 INTERNAL
#UUID=4f7d4192-b136-4a94-b06b-736f76155816 /DB001_F3 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=4f7d4192-b136-4a94-b06b-736f76155816 /DB001_F3 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
# /dev/sda9 ext4 DB001_F4 7f37ffd4-779a-46c6-b440-f384fb75eb98 293G /DB001_F4 INTERNAL
#UUID=7f37ffd4-779a-46c6-b440-f384fb75eb98 /DB001_F4 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=7f37ffd4-779a-46c6-b440-f384fb75eb98 /DB001_F4 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
# /dev/sda12 ext4 DB001_F5 14e15125-6c47-499e-b1a9-734a0f928b5e 195.3G /DB001_F5 INTERNAL
#UUID=14e15125-6c47-499e-b1a9-734a0f928b5e /DB001_F5 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=14e15125-6c47-499e-b1a9-734a0f928b5e /DB001_F5 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
# /dev/sda13 ext4 DB001_F6 0d416936-e091-49a7-9133-b8137d327ce0 195.3G /DB001_F6 INTERNAL
#UUID=0d416936-e091-49a7-9133-b8137d327ce0 /DB001_F6 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=0d416936-e091-49a7-9133-b8137d327ce0 /DB001_F6 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
# /dev/sda14 ext4 DB001_F7 c2ff9e15-b50e-4c56-9c03-918bf81e0ab5 293G /DB001_F7 INTERNAL
#UUID=c2ff9e15-b50e-4c56-9c03-918bf81e0ab5 /DB001_F7 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=c2ff9e15-b50e-4c56-9c03-918bf81e0ab5 /DB001_F7 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
# /dev/sda4 ext4 DB001_F8 46fcb33d-5f0d-423b-b6a7-512c58c76aba 93.6G /DB001_F8 INTERNAL
#UUID=46fcb33d-5f0d-423b-b6a7-512c58c76aba /DB001_F8 ext4 defaults,nofail,noauto,data=journal,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,block_validity,nodelalloc,data_err=ignore,nodiscard 0 0
UUID=46fcb33d-5f0d-423b-b6a7-512c58c76aba /DB001_F8 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard 0 2
#
###############################################################################################################
# ROOT DEVICE
# NOT VERY BENEFICIAL -- Too large
# /swapfile swap DB001_S1 UUID=5dcf1a96-fa2e-42f5-9a08-37fcce0f0878,offset=????????? 6G [SWAP] INTERNAL
# /swapfile none swap sw,pri=1 0 0
# /swapfile -->> resume=UUID=5dcf1a96-fa2e-42f5-9a08-37fcce0f0878 resume_offset=37326848
# /dev/sda2 swap DB001_S1 UUID=266efd3e-f04d-4ea3-89e6-45e6ac227fa1 1G [SWAP] INTERNAL
UUID=266efd3e-f04d-4ea3-89e6-45e6ac227fa1 none swap sw,noauto,pri=40 0 0
# /dev/sda10 swap DB001_S2 UUID=3b9a2c7a-67d4-4de7-ae66-214937dc47f4 996.2M [SWAP] INTERNAL
UUID=3b9a2c7a-67d4-4de7-ae66-214937dc47f4 none swap sw,noauto,pri=30 0 0
# /dev/sda11 swap DB001_S3 UUID=78b04c8c-8ace-4b46-817d-7059aa1668b7 996.2M [SWAP] INTERNAL
UUID=78b04c8c-8ace-4b46-817d-7059aa1668b7 none swap sw,noauto,pri=20 0 0
# /dev/sda5 swap HIBERNATE UUID=d6818877-fcce-4e10-b45c-17d5bf4670b8 6G [SWAP] INTERNAL
UUID=d6818877-fcce-4e10-b45c-17d5bf4670b8 none swap sw,pri=99 0 0
#
###############################################################################################################
# SECONDARY DEVICE (DEFUNCT - Ubuntu Desktop a.k.a. GNOME)
#
# /dev/sdc2 ext4 DB004_F1 88fcdce7-c227-4812-b4e6-bcc771ee3809 459.8G /site/DB004_F1 INTERNAL
#UUID=88fcdce7-c227-4812-b4e6-bcc771ee3809 /site/DB004_F1 ext4 defaults,nofail,noauto 0 2
#
###############################################################################################################
# SECONDARY DEVICE (Ubuntu Server + LightDM + MATE + curated list of Application packages
#
# /dev/sdc2 ext4 DB007_F1 06ea0ae0-47d5-43a6-92c6-d54fa5d4b4b3 459.8G /site/DB007_F1 INTERNAL
UUID=06ea0ae0-47d5-43a6-92c6-d54fa5d4b4b3 /site/DB007_F1 ext4 defaults,nofail,noauto 0 2
#
###############################################################################################################
# EXTERNAL DEVICE
#
# /dev/sdc3 ext4 DB005_F1 11c8fbcc-c1e1-424d-9ffe-ad0ccf480128 100G /site/DB005_F1 USB_EXTERNAL
UUID=11c8fbcc-c1e1-424d-9ffe-ad0ccf480128 /site/DB005_F1 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc4 ext4 DB005_F2 a48c6161-986f-4fd9-b127-7d070d86d68f 300G /site/DB005_F2 USB_EXTERNAL
UUID=a48c6161-986f-4fd9-b127-7d070d86d68f /site/DB005_F2 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc5 ext4 DB005_F3 965ad4c7-2f2c-4d8d-8790-0ffb8e18dd1b 300G /site/DB005_F3 USB_EXTERNAL
UUID=965ad4c7-2f2c-4d8d-8790-0ffb8e18dd1b /site/DB005_F3 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc6 ext4 DB005_F4 62026971-3ab4-48c9-bc5b-2b40aa3cc70a 300G /site/DB005_F4 USB_EXTERNAL
UUID=62026971-3ab4-48c9-bc5b-2b40aa3cc70a /site/DB005_F4 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc7 ext4 DB005_F5 c76adc01-99d2-42f9-acba-d0678ee87e8f 200G /site/DB005_F5 USB_EXTERNAL
UUID=c76adc01-99d2-42f9-acba-d0678ee87e8f /site/DB005_F5 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc8 ext4 DB005_F6 4feee7f0-b285-40dc-88de-aafc61433b21 200G /site/DB005_F6 USB_EXTERNAL
UUID=4feee7f0-b285-40dc-88de-aafc61433b21 /site/DB005_F6 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc9 ext4 DB005_F7 0267ec5e-e71b-4eac-b1fa-ec1d92b10400 300G /site/DB005_F7 USB_EXTERNAL
UUID=0267ec5e-e71b-4eac-b1fa-ec1d92b10400 /site/DB005_F7 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc10 ext4 DB005_F8 5b1980b2-df9a-47c6-bedb-df140fbbe8f0 100G /site/DB005_F8 USB_EXTERNAL
UUID=5b1980b2-df9a-47c6-bedb-df140fbbe8f0 /site/DB005_F8 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc2 swap DB005_S1 a668c722-b4db-4d4a-a91b-a01b4faa0fc6 4G [SWAP] USB_EXTERNAL
UUID=a668c722-b4db-4d4a-a91b-a01b4faa0fc6 none swap sw,noauto,pri=3 0 0
#==============================================================================================================================
# /dev/sdc11 ext4 DB006_F1 d827a05e-e151-4ce9-8be4-6f8515a71eab 100G /site/DB006_F1 USB_EXTERNAL
UUID=d827a05e-e151-4ce9-8be4-6f8515a71eab /site/DB006_F1 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc12 ext4 DB006_F2 ef36596a-8566-4a03-8015-2d4f6f8ec7a0 300G /site/DB006_F2 USB_EXTERNAL
UUID=ef36596a-8566-4a03-8015-2d4f6f8ec7a0 /site/DB006_F2 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc13 ext4 DB006_F3 7e9d1316-f988-458d-bd6a-caa8f0ae861a 300G /site/DB006_F3 USB_EXTERNAL
UUID=7e9d1316-f988-458d-bd6a-caa8f0ae861a /site/DB006_F3 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc14 ext4 DB006_F4 14b29e8c-2955-496e-84ca-2f2ef002c070 300G /site/DB006_F4 USB_EXTERNAL
UUID=14b29e8c-2955-496e-84ca-2f2ef002c070 /site/DB006_F4 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc15 ext4 DB006_F5 965e626b-5f45-48b4-b296-efd964307067 200G /site/DB006_F5 USB_EXTERNAL
UUID=965e626b-5f45-48b4-b296-efd964307067 /site/DB006_F5 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc16 ext4 DB006_F6 04fb8fc0-df53-4767-848f-4fbe9d03d79a 200G /site/DB006_F6 USB_EXTERNAL
UUID=04fb8fc0-df53-4767-848f-4fbe9d03d79a /site/DB006_F6 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc17 ext4 DB006_F7 a5f6f5c2-1588-4a8d-b135-9d29f8ae7436 300G /site/DB006_F7 USB_EXTERNAL
UUID=a5f6f5c2-1588-4a8d-b135-9d29f8ae7436 /site/DB006_F7 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
# /dev/sdc18 ext4 DB006_F8 9ed33f4b-76e0-4bab-bf8d-0be444febd17 222G /site/DB006_F8 USB_EXTERNAL
UUID=9ed33f4b-76e0-4bab-bf8d-0be444febd17 /site/DB006_F8 ext4 defaults,nofail,journal_checksum,journal_async_commit,commit=15,errors=remount-ro,journal_ioprio=2,data_err=ignore,nodiscard,noauto 0 0
#==============================================================================================================================
## /dev/sdd1 on /media/ericthered/VERB_R_F1 type vfat
## (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
## rw,relatime,fmask=0000,dmask=0000,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks2
#
# /dev/sdc1 vfat null D4FB-FBCF 28.9G /media/ericthered/VERB_R_F1 USB_EXTERNAL
#UUID=29BF-35A0 /media/ericthered/VERB_R_F1 vfat rw,relatime,codepage=347,iocharset=iso8859-1,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks2,nofail,noauto 0 0
UUID=29BF-35A0 /media/ericthered/VERB_R_F1 vfat user,owner,utf8,rw,suid,dev,umask=000,relatime,codepage=347,iocharset=iso8859-1,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks2,nofail,noauto 0 0
###
## /dev/sdd1 on /media/ericthered/KINGSTON1 type vfat
## (ro,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
UUID=5932-FD87 /site/KINGSTON vfat rw,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,noauto 0 0
###
#UUID=C0E29556E2955210 /site/MyPassport ntfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions,blksize=4096,uhelper=udisks2 0 0
#UUID=C0E29556E2955210 /site/MyPassport ntfs rw,nosuid,nodev,relatime,uid=1000,gid=1000,umask=007,blksize=4096,uhelper=udisks2 0 0
UUID=7CB8-B781 /media/ericthered/SLIP_USB vfat user,owner,utf8,rw,suid,dev,umask=000,relatime,codepage=347,iocharset=iso8859-1,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks2,nofail,noauto 0 0
###
### Ubuntu Server Entries (OasisMaxi)
###
#
# BOOT 4GB
UUID=a3257410-800a-42b1-8a58-7392dff2bf1c /site/altboot ext4 defaults,nofail,nodiscard,noauto 0 0
# DB008_S1 6GB
UUID=d1803ebc-2d1e-4c4a-9ebf-c49a7d86c6dc none swap sw,noauto,pri=3 0 0
# DB008_F1
UUID=69caf5ca-402b-4acd-abce-d7d029bf4a82 /site/DB008_F1 ext4 defaults,nofail,nodiscard,noauto 0 0
# DB008_F2
UUID=7464f4cb-3d57-4369-9d5f-ff6b67d2b124 /site/DB008_F2 ext4 defaults,nofail,nodiscard,noauto 0 0
End use of partitions:
- 1 - OS
- 2 - “operational software” , transient downloads, workspace for converting PDFs of cherished books to custom HTML/EPUBs
- 3 - Movie video files and tools for extracting audio from videos
- 4 - “encyclopedia” drive and workspace for learning Prolog, FreeCAD, Geogebra
- 5 - technical books and software development
- 6 - Music library (CD library fully converted)
- 7 - “special” one-off work
I always add noatime regardless of drive type. For HDDs, commit=30 and if risk is managed, data=writeback:
UUID=xxxx / ext4 defaults,noatime,commit=30,data=writeback 0 1
And /tmp to ram for some systems:
tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,size=1G 0 0
Hi, @ericmarceau ![]()
You wrote:
I’m going to guess those were typos and that you meant to write instead “My 2TB main drive” (TB instead of GB) and “The external 4TB drive” (again, TB instead of GB). Am I right? ![]()
Too true, Ricardo! Thank you for catching that mistype! ![]()
Having data drive I set ‘nofail’ option for it so that system could boot up in case of data drive failure or absence.
Just wondering if others can share their perspective on
- why must have access time ?
- why best to use noatime ?
I always imagined that access time would be a useful determinant for detecting anyone who might be probing to do bad things.
But, I wonder if the value of access time is negated by the fact that rsync performs access for data compare.
Thoughts anyone?
Once, very very long ago, there used to be reason for atime.
It used to be a must, mostly for certain mailsoftware.
But that is ancient history, there is no use for it at all anymore since the last years of the last century.
There is another thing though:
- using accestime does a lot of unneeded diskwrites (every access).
- There is hardly any application left that uses accesstime
( Only if you have some very very ancient mailsoftware (>30yrs old) )
There is a reason that the default atime has been replaced since long with relatime, which does a delayed update of atime (to keep backwards compatibility without the insane number of diskwrites).
But on modern systems you’re not using atime at all anymore, so noatime is the best option anyway and in my opinion it should be default.
Are there any dissenting opinions, or is Thom’s insightful outline spelling things clearly enough to be used as a “norm” for implementations?
Good question! @ericmarceau The security argument for access times sounds reasonable in theory, but in practice most intrusion detection tools like AIDE, Tripwire, and auditd track file integrity through checksums and the audit subsystem, not timestamps.
And as you pointed out, rsync and plenty of other tools trigger access times constantly, so the noise ratio would often make atime unreliable. An attacker could also trivially modify timestamps anyway, so it’s not something we’d want to depend on for security.
Another thing worth noting is that noatime also sets nodiratime, thus eliminating two sources of unnecessary writes.
Very few apps depend on access timestamps, but of couse it’s always worth checking your specific setup (desktop and server).
Also see:
- Reduce Disk Writes on Debian & Ubuntu
- Increase the Performance and Lifespan of SSDs & SD Cards
- Improve Linux system performance with noatime | Opensource.com
That said, like with everything else with Linux very few things are absolute, there will always be edge cases.
Thank you both, Thom (@tkn) and Hayden(@hydn)!
Good enough for me. I will definitely incorporate the noatime on all drives going forward (likely soon with migration to 26.04 LTS).
A ZFS zpool’s filesystem type dataset does not live in “/etc/fstab”, but previously I used “mdadm / cryptsetup + integrity / lvm / mkfs” to construct arrays, and it would look something like the following:
/dev/dataX-vg/dataX-lv /mnt/dataX ext4 defaults,errors=remount-ro 0 2
Unless performance has improved greatly, please avoid “dm-integrity”.