Types of Filesystems

My Setup

# nvme-os
@ / 
@home /home
@.snapshots /.snapshots
@log /var/log
@pkg /var/cache/pacman/pkg
@machines /home/jay/machines
@media /home/jay/media
@flatpak /var/lib/flatpak
@flatpak-home /home/jay/.var/app

Mount Drives

Existing Drive

# note desired parition name and UUID
lsblk -f

# make mount directory and
# ex. /hdd-4tb or /mnt/hdd-4tb
sudo mkdir -p /<mount-dir>

# mount partition
# ex. /dev/sda2 /hdd-4tb
sudo mount -t ext4 /dev/<partition-name> /<mount-dir>

# give user permissions
sudo chown -R $USER:$USER /<mount-dir>

# update fstab
# ex. UUID=XXXX-XXXX  /<mount_dir>  ext4  defaults  0  0
sudo vim /etc/fstab

NTFS Drive (Windows)

# install required package
paru -S ntfs-3g

# mount drive partition
# ex. /dev/sda2 /hdd-4tb
sudo mount -t ntfs-3g /dev/<partition-name> /<mount-dir>

# if error regarding unsafe state of partition
# else skip these 3
sudo umount /dev/<partition-name>
sudo ntfsfix /dev/<partition-name>
sudo mount -t ntfs-3g /dev/<partition-name> /<mount_dir>

New Drive (format)

# note desired drive name and UUID
lsblk -f

# make new partition table
# ex. 1 partition: g n Enter Enter Enter Enter w q
fdisk \dev\<drive-name>

# format and mount partition
mkfs.ext4 -L <partition-label> /dev/<partition-name>
# can be btrfs or another filesystem

Mount BTRFS Subvolumes

Existing Subvolume

# note desired drive UUID
lsblk -f

# backup existing dirctory (if needed)
# ex. sudo mv ~/games ~/games.bak
sudo mv <mount-dir> <mount-dir>.bak

# make new dirctory
# ex. sudo mkdir -p ~/games
sudo mkdir -p <mount-dir>

# add mount to fstab
# ex. UUID=abcd-1234 /var/lib/libvirt/images btrfs noatime,compress=zstd:1,subvol=@games 0 0
sudo vim /etc/fstab
sudo mount -a

# take ownership
# ex. sudo chown -R $USER$:$USER ~/games
sudo chown -R $USER$:$USER <mount-dir>

# restore and remove backups 
# ex. sudo cp -a ~/games.bak/* ~/games
sudo cp -a <mount-dir>.bak/* <mount-dir>
# ex. sudo rm -rf ~/games.bak
sudo rm -rf <mount-dir>.bak

New Subvolume (specific drive)

# find drive
lsblk -f

# <drive-label> - so its clear, could be called anything
# <partition-name> - partation where subvolume should be created ex. nvme1n1p1
sudo mkdir -p /mnt/<drive-label>
sudo mount /dev/<partition-name> /mnt/<drive-label>

# make desired subvolumes
#ex. sudo btrfs subvolume create /mnt/nvme1n1p1/@games
sudo btrfs subvolume create /mnt/<drive-label>/@<subvol-name>

# unmount drive
sudo umount /dev/<partition-name>