Randomly entering Emergency Mode due to failed mount

Hi everyone. First time posting here.

For a while I’ve been encountering a strange issue on my system. It happens seemingly at random.

When I boot my PC I sometimes end up in Emergency Mode. When checking journalctl, the last error thrown is failure to mount a non-OS drive.

Like I said, it happens randomly and a reboot, once in Emergency Mode, almost always results in a successful boot with all drives mounted correctly. This is not a dramatic issue, but it’s just very weird and I’d like to know what is going on. The drive also seems to be in good health.

Some further context, the drive in question is a WD_BLACK AN1500, which is a PCIe connected drive. Maybe that could have something to do with the issue?

Here is the segment of journalctl I think is relevant:

Sep 03 19:08:40 <hostname> systemd[1]: Mounting /boot/efi...
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /home...
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /mnt/nvme1n1...
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /mnt/sda1...
Sep 03 19:08:40 <hostname> systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /tmp...
Sep 03 19:08:40 <hostname> systemd[1]: var-cache.mount: Directory /var/cache to mount over is not empty, mounting anyway.
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /var/cache...
Sep 03 19:08:40 <hostname> systemd[1]: Virtual Machine and Container Storage (Compatibility) skipped, unmet condition check ConditionPathExists=/var/lib/machines.raw
Sep 03 19:08:40 <hostname> systemd[1]: Listening on Disk Image Download Service Socket.
Sep 03 19:08:40 <hostname> systemd[1]: var-log.mount: Directory /var/log to mount over is not empty, mounting anyway.
Sep 03 19:08:40 <hostname> systemd-timesyncd[634]: Network configuration changed, trying to establish connection.
Sep 03 19:08:40 <hostname> systemd[1]: Mounting /var/log...
Sep 03 19:08:40 <hostname> mount[832]: mount: /mnt/nvme1n1: wrong fs type, bad option, bad superblock on /dev/nvme1n1p1, missing codepage or helper program, or other error.
Sep 03 19:08:40 <hostname> mount[832]:        dmesg(1) may have more information after failed mount system call.
Sep 03 19:08:40 <hostname> kernel: EXT4-fs (nvme1n1p1): VFS: Can't find ext4 filesystem
Sep 03 19:08:40 <hostname> systemd[1]: mnt-nvme1n1.mount: Mount process exited, code=exited, status=32/n/a
Sep 03 19:08:40 <hostname> systemd[1]: mnt-nvme1n1.mount: Failed with result 'exit-code'.
Sep 03 19:08:40 <hostname> systemd[1]: Failed to mount /mnt/nvme1n1.
Sep 03 19:08:40 <hostname> systemd[1]: Dependency failed for Local File Systems.
Sep 03 19:08:40 <hostname> systemd[1]: local-fs.target: Job local-fs.target/start failed with result 'dependency'.
Sep 03 19:08:40 <hostname> systemd[1]: local-fs.target: Triggering OnFailure= dependencies.
Sep 03 19:08:40 <hostname> systemd[1]: Mounted /tmp.
Sep 03 19:08:40 <hostname> systemd[1]: systemd-ask-password-wall.path: Deactivated successfully.
Sep 03 19:08:40 <hostname> systemd[1]: Stopped Forward Password Requests to Wall Directory Watch.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Timer Units.
Sep 03 19:08:40 <hostname> systemd[1]: Listening on Boot Loader Control Service Socket.
Sep 03 19:08:40 <hostname> systemd-timesyncd[634]: Network configuration changed, trying to establish connection.
Sep 03 19:08:40 <hostname> systemd-timesyncd[634]: Network configuration changed, trying to establish connection.
Sep 03 19:08:40 <hostname> systemd[1]: Listening on System Extension Image Management.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Sound Card.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Bluetooth Support.
Sep 03 19:08:40 <hostname> systemd[1]: Starting Load JSON user/group Records from Credentials...
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Preparation for Network.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Network.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Network is Online.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Path Units.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Socket Units.
Sep 03 19:08:40 <hostname> systemd[1]: Started Emergency Shell.
Sep 03 19:08:40 <hostname> systemd[1]: Reached target Emergency Mode.

lsblk:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   1,8T  0 disk 
└─sda1        8:1    0   1,8T  0 part /mnt/sda1
sdb           8:16   1     0B  0 disk 
sdc           8:32   1     0B  0 disk 
nvme1n1     259:1    0 931,4G  0 disk 
└─nvme1n1p1 259:2    0 931,4G  0 part /mnt/nvme1n1
nvme0n1     259:3    0 931,5G  0 disk 
├─nvme0n1p1 259:4    0   300M  0 part /boot/efi
├─nvme0n1p2 259:5    0 897,7G  0 part /home
│                                     /var/cache
│                                     /var/log
│                                     /
└─nvme0n1p3 259:6    0  33,5G  0 part [SWAP]

sudo parted -l:

Model: ATA ST2000DM008-2UB1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000GB  2000GB  btrfs        root


Model: WD_BLACK SN770 1TB (nvme)
Disk /dev/nvme0n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      2097kB  317MB   315MB   fat32                 boot, esp
 2      317MB   964GB   964GB   btrfs           root
 3      964GB   1000GB  36,0GB  linux-swap(v1)        swap


Model: WD_BLACK AN1500 (nvme)
Disk /dev/nvme1n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  1000GB  1000GB  ext4

/etc/fstab:

#New Partition                               /mnt/sda     /mnt/sda   nofail,users                     0 0 # /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>
UUID=B50C-C336                              /boot/efi    vfat    umask=0077                       0 2 
UUID=0e507121-812e-4b1b-8fdf-7e5ae3e9ee05   /            btrfs   subvol=/@,compress=zstd:1        0 0 
UUID=0e507121-812e-4b1b-8fdf-7e5ae3e9ee05   /home        btrfs   subvol=/@home,compress=zstd:1    0 0 
UUID=0e507121-812e-4b1b-8fdf-7e5ae3e9ee05   /var/cache   btrfs   subvol=/@cache,compress=zstd:1   0 0 
UUID=0e507121-812e-4b1b-8fdf-7e5ae3e9ee05   /var/log     btrfs   subvol=/@log,compress=zstd:1     0 0 
UUID=5c21c2a6-ff28-49ed-a484-f74faf79eb94   swap         swap    defaults                         0 0 
tmpfs                                       /tmp         tmpfs   noatime,mode=1777                0 0 
/dev/sda1                                   /mnt/sda1    btrfs   nofail                           0 0 
/dev/nvme1n1p1                              /mnt/nvme1n1 ext4    defaults                         0 0

sudo smartctl -a /dev/nvme1n1:

smartctl 7.5 2025-04-30 r5714 [x86_64-linux-7.2.0--1-MANJARO] (local build)
Copyright (C) 2002-25, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       WD_BLACK AN1500
Serial Number:                      WUBT22120252
Firmware Version:                   10271043
PCI Vendor ID:                      0x1b4b
PCI Vendor Subsystem ID:            0x1b96
IEEE OUI Identifier:                0x005043
Total NVM Capacity:                 1.000.081.457.152 [1,00 TB]
Unallocated NVM Capacity:           0
Controller ID:                      0
NVMe Version:                       1.3
Number of Namespaces:               4
Namespace 1 Size/Capacity:          1.000.081.457.152 [1,00 TB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            005043 6b0b000001
Local Time is:                      Thu Sep  3 20:58:06 2026 CEST
Firmware Updates (0x04):            2 Slots
Optional Admin Commands (0x004c):   Frmw_DL NS_Mngmt MI_Snd/Rec
Optional NVM Commands (0x0064):     DS_Mngmt Resv Timestmp
Log Page Attributes (0x02):         Cmd_Eff_Lg
Maximum Data Transfer Size:         32 Pages
Warning  Comp. Temp. Threshold:     70 Celsius
Critical Comp. Temp. Threshold:     70 Celsius
Namespace 1 Features (0x08):        No_ID_Reuse

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     0.00W       -        -    0  0  0  0        0       0

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
Critical Warning:                   0x00
Temperature:                        59 Celsius
Available Spare:                    0%
Available Spare Threshold:          0%
Percentage Used:                    0%
Data Units Read:                    0
Data Units Written:                 0
Host Read Commands:                 0
Host Write Commands:                0
Controller Busy Time:               0
Power Cycles:                       0
Power On Hours:                     0
Unsafe Shutdowns:                   0
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               59 Celsius

Error Information (NVMe Log 0x01, 15 of 15 entries)
No Errors Logged

Self-tests not supported

Do let me know if any information is missing, and thank you to anyone taking their time reading this.

EDIT: Thank you all for the responses. I did not consider that the /dev paths could change, but it does make sense once pointed out. That would also explain why the issue occurred “randomly” and was seemingly fixed after a reboot. Of course, I can’t directly see any changes, but it sounds very plausible that the /dev paths in my fstab would have caused this.

There are several possibilities (like corrupt filesystem) but i think the problem is in your fstab.
/dev/nvme1n1p1 is not a reliable path. It is “randomly” assigned on boot, each time it is decided which of your disks will be 1 an 0, and i think sometimes the system btrfs disk gets 1 and the data one 0, and you want it the other way around.
You are probably using automatic mounting because it is mounted in /mnt?

Just make a manual mountpoint like /home/user/mydata, then in fstab use the UUID for the disk like it is used for the system disk and the new mountpoint

Change those to use the UUIDs, which can be found using lsblk -f

UUID=$uuid                              /mnt/nvme1n1 ext4    defaults                         0 0

Where $uuid is the actual UUID.

As @Teo said the device files (/dev/sda1, etc) can change between boots. For instance, sda might sometimes be sdb or sdc.

Here it is, i found it

In addition to using UUID, i would also change the last part

UUID=...   /mnt/nvme1n1  ext4  defaults,nofail 0 2

Without the “nofail” you end up in emergency mode like now if the partition can’t be mounted (which for a secondary partition probably isn’t what you want) and the last “2” lets fsck run - i think with “0 0” the partition will never be checked.

Maybe nofail on swap too.

According to @Teo’s comment, this may indicate that nvme0 and nvme1 can be swapped between boots.

And thanks to booting in UUID mounted system disk partitions you would land in emergency mode. By “df” you should see then, that your system mount points are on /dev/nvme1 instead of /dev/nvme0. And then /dev/nvme1n1p1 is not ext4 but fat32, i.e. your efi partition. Be careful!.

It won’t just swap, it won’t boot. Because filesystem is wrong type and the mount will fail. Probably for other reasons too.
Anyway, never use /dev paths in fstab. Now you know why. Ideally use UUID. Label will also do.