When SLES Btrfs Goes Read-Only: Diagnose Before Remounting

If a SUSE Linux Enterprise Btrfs filesystem reports “Read-only file system,” first find out whether it was mounted read-only intentionally or switched to read-only after an error. Check the mount options, free space, and kernel log before attempting a remount. Use Snapper rollback for a verified bootable system snapshot; if Btrfs logged I/O or metadata errors, protect the data and diagnose the storage path before writing to the filesystem again.

Terminal commands checking whether the /data Btrfs filesystem is mounted read-only and listing its device
The example checks mount options and identifies the Btrfs device backing /data.

1. Tell an intentional read-only mount from a filesystem error

Replace /data with the affected mount point, or / for root.

findmnt -T /data -o SOURCE,FSTYPE,OPTIONS
sudo btrfs filesystem show /data

In the first command, look for ro or rw in the options. A read-only Snapper snapshot is expected to reject writes. A mount configured with ro in /etc/fstab may also be intentional. Btrfs can also switch to read-only after serious transaction, metadata, or device errors. In that case, repeatedly running mount -o remount,rw does not repair the cause and may fail immediately.

If the filesystem was deliberately mounted read-only, its device is healthy, and the kernel log has no Btrfs or I/O errors, a normal data mount can be remounted read-write:

sudo mount -o remount,rw /data
findmnt -T /data -o TARGET,OPTIONS

Do not use that as a recovery command for a booted read-only snapshot or an error-forced read-only filesystem. A successful remount confirms writability, not filesystem integrity.

2. Check whether space pressure is the real problem

Terminal example comparing ordinary free space with Btrfs allocated and unallocated space
Compare filesystem free space with Btrfs allocation details; the sample values are illustrative.

Btrfs can run short of allocatable space even when a basic disk view looks surprising, because data and metadata allocation are tracked separately. Check both ordinary free space and Btrfs usage:

df -hT /data
sudo btrfs filesystem usage -T /data

If the system reports No space left on device and the kernel log does not show device failures or structural errors, inspect Snapper usage before removing anything:

sudo snapper list

Delete only snapshots that your retention policy allows you to lose, using sudo snapper delete SNAPSHOT_ID for each selected ID. Keep a known-good pre-update snapshot if you need a rollback option; deleting snapshots recovers space but removes recovery points. Cleanup may not return space immediately, and snapshots will not fix I/O errors. Do not run a balance to force a read-only filesystem writable; it moves data and is intended for a diagnosed allocation problem on a healthy, writable filesystem.

3. Read the kernel log before choosing a repair

Terminal example showing Btrfs and block-device I/O error messages in the kernel log
Kernel messages can distinguish space pressure from read, checksum, or device errors; the lines shown are examples.

Look for the first Btrfs, block-device, controller, or transport error, not just the final message that the filesystem became read-only:

sudo journalctl -k -b --no-pager | grep -Ei 'btrfs|I/O error|nvme|ata|scsi'

Messages about failed reads, checksum mismatches, missing devices, or I/O errors point to a different path than a simple ro mount option. Check the reported disk, controller, RAID/HBA, SAN or virtual-disk layer, and vendor health information. Correct unstable hardware or connectivity first. If data matters, minimize writes and arrange a backup or block-level image with an administrator before attempting filesystem repair.

4. Choose the least risky recovery that matches the evidence

What you foundNext actionTrade-off
ro is configured or the mount was intentionally read-only; no relevant kernel errorsCorrect the mount configuration if it is unintended, or remount a normal writable subvolume after confirming the device is healthy.Fast, but remounting cannot clear an error-forced read-only state or make a read-only snapshot writable.
A bootable root snapshot works and the issue followed a system changeBoot and test the snapshot, then run sudo snapper rollback and reboot to the default entry.Restores the root subvolume to the snapshot state. Data in excluded or separate subvolumes is not rolled back. SLES 15 SP7 supports this rollback only with its default root-subvolume layout and a single-device root filesystem.
Kernel log contains storage I/O errors or Btrfs structural errorsStabilize storage and preserve data; use a rescue environment and escalate for filesystem-specific recovery.Slower, but avoids hiding an unresolved hardware problem with a writable remount.
Only space exhaustion is reported; storage errors are absentReview Snapper retention and free permitted snapshots or data, then recheck Btrfs usage.Frees capacity at the cost of selected recovery points or files.
Boot menu example with an older entry highlighted in the Bootable snapshots list
Choose a snapshot from before the failure, verify the read-only test boot, and then perform the Snapper rollback if it resolves the issue.

On SLES, bootable snapshots use the default Snapper root configuration. The root must be Btrfs on one device, the boot loader must support it, and only the root subvolume is rolled back. Verify a candidate before committing; if unsuitable, reboot to the current system or rescue environment. See the SLES 15 SP7 Snapper rollback procedure.

When offline checks or a scrub are appropriate

If the filesystem will not mount or kernel messages suggest structural damage, boot the SLES rescue system or other suitable recovery environment, identify the correct device, and ensure it is unmounted before running the default, read-only check:

sudo btrfs check /dev/DEVICE

Use the actual Btrfs block device, not a mount-point placeholder. A check can take time and memory and reports structural findings; it does not guarantee repair. Do not add --repair as a routine next step. The Btrfs documentation warns that repair can make matters worse and should be used only with expert guidance after accepting the data risk. Consult SUSE support or a Btrfs specialist when the check reports errors or the device has I/O faults.

After storage is stable and the filesystem is mounted read-write, sudo btrfs scrub start -B /data can verify checksums. Scrub is not a structural checker. It can repair damage only from a known-good redundant copy; on a single-copy layout, it detects errors but cannot reconstruct lost data. Read the Btrfs scrub documentation. Also see SUSE’s SLES 15 SP7 file-systems guide, the SUSE’s Btrfs recovery article, and the Btrfs check manual.

Verify the result

After the chosen recovery, check that the mount has the intended options and can perform a safe write:

findmnt -T /data -o TARGET,SOURCE,FSTYPE,OPTIONS
sudo touch /data/.rw-check && sudo rm /data/.rw-check

For a root snapshot rollback, reboot first and confirm the default system starts normally. Then review the new kernel log for recurring Btrfs or device errors. A read-write flag alone is not a clean bill of health: if errors recur, stop writes and return to storage diagnosis.

Leave a Comment

When SLES Btrfs Goes Read-Only: Diagnose Before Remounting

When SLES Btrfs Goes Read-Only: Diagnose Before Remounting

Identify whether Btrfs is intentionally read-only, short on space, or protecting data after errors, then choose a recovery path that fits the cause.

Register SLES 15 with SUSE Manager in an Offline Network

Register SLES 15 with SUSE Manager in an Offline Network

Prepare mirrored channels, create an activation key, and bootstrap an SLES 15 client without direct internet access while preserving the connection needed for Manager check-ins.

Get YaST’s X11 Forwarding Working Over SSH

Get YaST’s X11 Forwarding Working Over SSH

Fix YaST’s XIO launch error over SSH, verify X11 forwarding and xauth, and switch to the ncurses interface when a remote window is unnecessary.

Safely Roll Back a Failed SLES Update with Snapper

Safely Roll Back a Failed SLES Update with Snapper

Find the pre-update Btrfs snapshot, test it read-only, and make recovery permanent with Snapper while understanding which data stays outside the root rollback.

Secure SLES Syslog Forwarding with rsyslog and Mutual TLS

Secure SLES Syslog Forwarding with rsyslog and Mutual TLS

Send SLES system logs to a remote rsyslog collector over authenticated TLS, with certificate checks, outage buffering, and delivery tests.

Trace SLES Upgrade Memory Errors Before Retrying

Trace SLES Upgrade Memory Errors Before Retrying

Use RAM, swap, kernel, and Zypper logs to identify real memory pressure, protect package state, and choose a safer SLES upgrade retry.

Keep Debian 12 Security Updates Running on a Headless Server

Keep Debian 12 Security Updates Running on a Headless Server

Enable Debian’s unattended security updates over SSH, keep the default package sources, and verify scheduled runs through systemd and APT logs.

Get Ubuntu SMART Disk Warnings by Email with smartd

Get Ubuntu SMART Disk Warnings by Email with smartd

Compare mail delivery options, configure smartd on Ubuntu, and verify that disk-health warnings reach your inbox.

Debian 12 DNS Lookup Failures: Repair systemd-resolved

Debian 12 DNS Lookup Failures: Repair systemd-resolved

Restore DNS lookups on Debian 12 by checking systemd-resolved, repairing resolv.conf when needed, and verifying upstream DNS and application resolution.

Ubuntu 24.04 Won’t Show HDMI Audio? Restore the Output

Ubuntu 24.04 Won’t Show HDMI Audio? Restore the Output

Get Ubuntu to detect your monitor or TV as an audio output, select it in Sound settings, and check the connection or PipeWire device list if HDMI is missing.