[Critical][Boot/Storage] casaos-data mounts late after reboot, causing /DATA, /media, /opt bind mounts to fail, HDD “Path lost”, Docker/Nextcloud unavailable (v1.7.0 → v1.7.1-beta1)

Hi ZimaOS team,

I want to report a serious boot/storage issue that started after upgrading to ZimaOS v1.7.0. I am currently testing v1.7.1-beta1.

This issue has happened more than once, so it does not appear to be a one-time problem.

Environment:

  • Device: ZimaCube
  • ZimaOS: issue started on v1.7.0
  • Currently running: v1.7.1-beta1
  • System disk: NVMe
  • casaos-data: /dev/nvme0n1p8, ext4
  • Data HDD: 4 TB Btrfs (/dev/sda)
  • HDD mount point: /media/HDD-Storage
  • Docker data-root: /media/HDD-Storage/docker
  • Applications affected: Nextcloud, Immich, MariaDB, SwingMusic, Hermes, etc.

Symptoms:
After reboot/startup, ZimaOS sometimes behaves almost like a fresh installation.

Observed symptoms include:

  • HDD appears as “Path lost”
  • /media/HDD-Storage is missing
  • Docker fails to start
  • Nextcloud and other applications become unavailable
  • Existing applications/data appear to be missing from the UI
  • ZimaOS may show setup/login behavior that looks like a fresh system
  • /DATA, /media, /opt and /var/lib/casaos are not mounted correctly
  • /media and /opt remain on the read-only SquashFS root filesystem

IMPORTANT:
The actual data is NOT deleted.

I manually mounted the 4 TB Btrfs HDD read-only and confirmed that all old data was still present, including:

AppData
Backup
docker
Documents
Downloads
Gallery
Media

The Docker data and containers were also intact.

Root cause found from logs

During boot:

10:06:30
systemd starts waiting for:

/dev/disk/by-label/casaos-data

Then:

10:06:44
systemd reports:

Timed out waiting for device /dev/disk/by-label/casaos-data.

Dependency failed for File System Check on /dev/disk/by-label/casaos-data.

Dependency failed for Grow File System on /var/lib/casaos_data.

Because var-lib-casaos_data.mount is unavailable at that moment, these mounts also fail with dependency errors:

DATA.mount
media.mount
opt.mount
var-lib-casaos.mount
zimaos-persistent-dirs.service

However, about 30 seconds later:

10:07:11
casaos-data finally becomes available and fsck starts.

Log:

casaos-data: recovering journal

10:07:13
casaos-data: clean

10:07:14
/dev/nvme0n1p8 is successfully mounted read/write on:

/var/lib/casaos_data

So casaos-data eventually mounts correctly, but the dependent bind mounts that already failed are NOT automatically retried.

This appears to be the main problem.

Effect on Local Storage

zimaos-local-storage-first.service starts before /media is correctly bind-mounted.

The log shows:

lstat /media/HDD-Storage: no such file or directory

trying to mount…
/dev/sda → /media/HDD-Storage

Then:

mkdir /media/HDD-Storage: read-only file system

auto import disk mount failed

At this point /media is still coming from the read-only SquashFS root filesystem instead of:

/var/lib/casaos_data/.media

Because of this, the HDD cannot be mounted and ZimaOS shows “Path lost”.

Effect on casaos-every-boot

casaos-every-boot.service also fails because the persistent bind mounts are missing.

Examples from the log:

ln: failed to create symbolic link ‘/media/ZimaOS-HD’: Read-only file system

cp: cannot create regular file ‘/DATA/.bash_profile’: Read-only file system

cp: cannot create regular file ‘/DATA/.bashrc’: Read-only file system

mkdir: cannot create directory ‘/opt/zimaos’: Read-only file system

This happens because:

/DATA
/media
/opt

are still pointing to the read-only SquashFS root instead of their persistent locations.

Manual recovery

I was able to fully recover the system WITHOUT formatting or reinstalling.

After /var/lib/casaos_data became available, I manually restarted the failed bind mounts:

var-lib-casaos.mount
DATA.mount
media.mount
opt.mount
zimaos-persistent-dirs.service

After that:

/DATA
→ /dev/nvme0n1p8

/media
→ /dev/nvme0n1p8[/.media]

/opt
→ /dev/nvme0n1p8[/.opt]

/var/lib/casaos
→ /dev/nvme0n1p8[/.casaos]

all became read/write again.

Then I restarted:

zimaos-local-storage-first.service

The 4 TB HDD immediately mounted correctly again:

/media/HDD-Storage
/dev/sda
btrfs
rw

All old files were visible again.

Docker

Docker is configured with:

{
“data-root”: “/media/HDD-Storage/docker”
}

After the HDD was restored, Docker started normally again.

Docker reported:

Docker Root Dir: /media/HDD-Storage/docker
Containers: 8
Images: 8

All previous containers were recovered and started successfully, including:

Nextcloud
Immich
MariaDB
SwingMusic
Hermes

This confirms that the application/data disappearance was caused by the failed mount sequence, not actual data deletion.

Additional v1.7.0 observations

After upgrading to v1.7.0 I also experienced abnormal CPU/RAM behavior.

At one point the system became extremely slow/unresponsive and restarted or became unavailable.

After recovery, icewhale-files was one of the highest CPU consumers:

/usr/bin/icewhale-files
~21% CPU
~300 MB RSS

I noticed that v1.7.1-beta1 includes:

“Fixed abnormal memory usage in certain file operation scenarios”

So this may be related, although I cannot confirm that the memory issue directly caused the mount problem.

I also observed zimaos-app-management panics:

runtime error: invalid memory address or nil pointer dereference

This occurred in HTTP request handling after boot.

Possible root cause

Based on the logs, this looks like a boot ordering/race condition:

casaos-data device appears too late

var-lib-casaos_data.mount fails dependency

DATA.mount / media.mount / opt.mount / var-lib-casaos.mount fail

dependent services continue starting

/DATA, /media and /opt remain on read-only SquashFS

Local Storage cannot create /media/HDD-Storage

HDD becomes “Path lost”

Docker cannot access its data-root

Apps such as Nextcloud appear missing/unavailable

About 30 seconds later casaos-data mounts successfully, but the failed dependent mounts/services are not automatically retried.

Expected behavior

If casaos-data is temporarily delayed during boot:

  1. ZimaOS should wait for it long enough, or
  2. dependent persistent mounts should automatically retry after casaos-data becomes available.

Services such as:

zimaos-local-storage-first
casaos-every-boot
Docker
app management

should not continue initialization while /DATA, /media, /opt and /var/lib/casaos are still unavailable/read-only.

Most importantly, the UI should not make the system look like a fresh installation just because persistent mounts temporarily failed.

I believe this is a high-risk issue because a normal user may see “Path lost” and a fresh-looking system and assume their data was deleted, possibly leading them to format/reinitialize a perfectly healthy disk.

Please let me know which additional logs or diagnostics would be useful. I can reproduce/check the system again if needed.

and CPU got really high normally isnt like this