Linux File Timestamps Explained: atime, mtime, and ctime

Today I discovered an article explaining Linux file system timestamps: Linux File Timestamps Explained: atime, mtime, and ctime; and a good thing too, because I always thought ‘ctime’ was ‘create time’, but not so! Turns out that ‘ctime’ is ‘change time’, similar to ‘mtime’ but apparently cannot be set from userspace. My investigations were prompted by my investigations info how `borg create` identified changed files.

Adding weekday to Date column in Dolphin in KDE on Debian GNU/Linux

cd /usr/share/i18n/locales
cp en_AU en_JJ
vim en_JJ

Change metadata:

title      "English locale for John Elliot V"
language   "John's English"

And prefix d_fmt with:

d_fmt "<U0025><U0061><U0020>

Then:

sudo localedef -f UTF-8 -i en_JJ en_JJ.UTF-8

Then:

vim /etc/environment

add add:

LC_TIME="en_JJ.UTF-8"

Enabling TRIM in Debian fstab for ext4 file-system on Samsung SSD 960 EVO NVMe M.2

So I was trying to find why in my Debian 9 system my SATA drives are called SCSI devices, and I was reading Why my SATA drive is identified as a SCSI device in Device Manager where I read:

The Intel Rapid Storage driver version 12.6 (Released in March 2013) and newer versions classify all drives as SCSI devices for uniformity. This (and later) versions of the driver also allow for TRIM support (Allows for management of data blocks no longer in use) in SSD drives in RAID 0 arrays and other flexibility in operation of storage devices.

So I’d never heard of “TRIM” so I searched for that and found the Wikipedia Trim (computing) article, but Why SSD TRIM Support is So Important and How to Enable It caught my eye, because, “important” you say?

So that article about the importance of TRIM was for Windows, so I searched again and found How to properly activate TRIM for your SSD on Linux: fstrim, lvm and dm-crypt which suggested things were a bit complicated for LVM (and MD RAID?).

I ended up reading How to set up SSD raid and TRIM support? which sent me to Re: Best way (only?) to setup SSD’s for using TRIM which argued that perhaps TRIM configuration wasn’t necessary at all.

It was then I realised that I probably don’t care about TRIM on my MD RAID SSD drives, but I probably do on my M.2 SSD, which isn’t using MD RAID, but which gets massive tgz files written to it and deleted from it every day. So some more searching and I found Samsung SSD 960 EVO NVMe M.2 Review: Ultra Fast, Affordable Storage which said TRIM was supported:

Supporting features: TRIM (Required OS support), Garbage Collection, S.M.A.R.T

So then I found Enable TRIM On SSD (Solid-State Drives) In Ubuntu For Better Performance which showed me how to enable TRIM in /etc/fstab. So the relevant fstab line was:

# /data/fast was on /dev/nvme0n1p1 during configuration
UUID=87bcc5fa-9261-404b-8bc7-a214f4651b49 /data/fast      ext4    noatime,discard 0       2

Note the ‘discard’ option, that’s where the magic happens.

So I unmounted and remounted the partition,

root@tact:/home/jj5# umount /data/fast
root@tact:/home/jj5# mount /data/fast

And dmesg indicated the discard option had been applied:

[34783.251592] EXT4-fs (nvme0n1p1): mounted filesystem with ordered data mode. Opts: discard

Now I guess we wait and see if my performance issues improve…

Airgap file-system

So I needed to create a file-system to house a handful of archive/backup tarballs (around 40 of them). I created an ext4 file-system with 100 inodes, like this:

# mkfs.ext4 -b 4096 -L airgap -m 0 -N 100 -v /dev/sdc1

Note: 100 inodes isn’t very many! Only supports up to 100 files/folders. Also note that 0% space is reserved for root. If you’re copying the above command make sure you replace /dev/sdc1 with an appropriate partition device.