Tune2fs: Adjusting Ext4 Superblock Parameters, Reclaiming Reserved Storage Blocks, and Hardening Filesystem Integrity in Production
Yet when you log in and inspect the storage metrics, the numbers do not make sense. The volume reports 100% capacity and applications are choking on write errors, but raw arithmetic shows more than 800 gigabytes of physical space sitting entirely untouched. The underlying NVMe drive is healthy, latency is near zero, and no runaway processes are hoarding hidden files.
The database has collided with an operational relic dating back to the mid-1990s: the ext4 filesystemβs default five-percent reserved block buffer. Hardcoded into the filesystem to prevent early Unix system daemons from crashing if a drive filled up, this safety valve made sense on a 500-megabyte workstation disk three decades ago. On a modern 16-terabyte database array, however, it quietly traps nearly a terabyte of usable storage behind root-only administrative privileges.
The fastest way to resolve the incident without restarting services, unmounting drives, or waiting hours for a disk resize is to adjust that reserve live on the running kernel:
tune2fs -m 1 /dev/nvme0n1p1
Running this single command instantly reduces the reserved space from five percent to one percent, freeing over 650 gigabytes of capacity in less than a second while production traffic continues to flow uninterrupted.
The command-line utility behind this operational rescue is tune2fs, the essential tool for inspecting, reconfiguring, and tuning ext2, ext3, and ext4 filesystems without reformatting partitions or taking filesystems offline.
1. What tune2fs Does in Plain English
Every ext4 filesystem contains a central registry called the superblock. The superblock stores the master configuration for your storage: how much capacity is held in reserve, how the Linux Virtual Filesystem (VFS) should respond if it detects corrupted data, whether automated maintenance scans should run at boot time, and which modern performance features are enabled.
The tune2fs utility allows systems engineers to modify these core parameters directly on disk and in the kernelβs active memory. Rather than wiping a drive or scheduling disruptive downtime, administrators can reconfigure filesystem behaviour, modernise legacy volumes, and protect infrastructure against cascading failures on live, production systems.
2. Core Flags & Superblock Inspection Quick-Start
Mastering tune2fs begins with understanding the primary operational switches used to query and alter filesystem metadata:
| Flag | Category | Operational Mechanism |
|---|---|---|
-l |
Telemetry & Query | Reads and displays the entire superblock configuration in human-readable key-value pairs. |
-m <percentage> |
Capacity Management | Adjusts the percentage of filesystem blocks reserved exclusively for the privileged superuser (root). |
-r <block_count> |
Capacity Management | Explicitly sets the exact number of reserved blocks, bypassing percentage rounding. |
-c <max_mounts> |
Boot Governance | Configures the maximum mount count before triggering an automated filesystem check (0 or -1 disables). |
-i <interval> |
Boot Governance | Sets the time interval between automated filesystem checks (0 disables). |
-e <behavior> |
Resilience & Panic | Configures kernel VFS behavior upon encountering metadata errors (continue, remount-ro, panic). |
-O [^]feature |
Feature Flags | Enables or disables specific filesystem capabilities (e.g. dir_index, has_journal, sparse_super). |
-U <uuid> |
Identity Governance | Overwrites the filesystem Universally Unique Identifier (UUID), or assigns a random one. |
-L <volume_label> |
Identity Governance | Sets or updates the filesystem volume label (up to 16 characters). |
The First Command Every Engineer Must Run: Superblock Telemetry
Before executing any modification, inspect the active superblock parameters of the target block device using the -l (list) flag.
tune2fs -l /dev/nvme0n1p1
tune2fs 1.47.0 (5-Feb-2023)
Filesystem volume name: pg_data_vol
Last mounted on: /var/lib/postgresql/data
Filesystem UUID: 8f3e2b1a-9c4d-4e7a-bb12-3456789abcde
Filesystem magic number: 0xEF53
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1048576000
Block count: 4194304000
Reserved block count: 209715200
Free blocks: 210850000
Free inodes: 1048200000
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1024
Blocks per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Thu Jun 15 10:22:04 2023
Last mount time: Mon Aug 17 04:12:00 2026
Last write time: Mon Aug 17 04:12:00 2026
Mount count: 14
Maximum mount count: -1
Last checked: Thu Jun 15 10:22:04 2023
Check interval: 0 (<none>)
Lifetime writes: 42 TB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Journal UUID: <none>
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: b7d34a8e-2f11-4a30-8910-c4e6123490ab
Journal backup: inode blocks
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Line-by-Line Telemetry Decomposition
Filesystem magic number: 0xEF53: Confirms unambiguously that the partition is formatted as an ext2, ext3, or ext4 filesystem at binary offset0x438.Block count: 4194304000&Block size: 4096: Multiplies approximately $4.19 \times 10^9$ blocks by 4 KiB per block, giving a total gross capacity of 16.0 TiB.Reserved block count: 209715200: Indicates that 209,715,200 blocks (exactly 5.0% of the drive, or 819.2 GiB) are reserved exclusively for therootuser (uid: 0).Errors behavior: Continue: A significant operational risk. If the kernel encounters corrupted metadata, it will log the error and attempt to proceed with writes, risking silent, cascading data corruption across the storage tree.Maximum mount count: -1&Check interval: 0 (<none>): Indicates that legacy mount-count and time-based boot consistency sweeps are disabled, preventing unexpected boot delays.Filesystem features: ... dir_index ... metadata_csum: Confirms that HTree directory indexing and 32-bit metadata checksumming are active, protecting on-disk structures and maintaining search performance.
3. Five Production Engineering Use Cases
β’ Block & Inode Counts
β’ Reserved Block Limits
β’ Error Handling Policy
β’ Mount & Time Check Limits
β’ Active Feature Flags"] GDT0["Block Group Descriptors"] BM0["Block & Inode Bitmaps"] IT0["Inode Table & Data Blocks"] end subgraph BackupGroup1["Block Group 1 (Sparse Backup)"] SB1["Backup Superblock"] GDT1["Backup Group Descriptors"] Data1["Data Blocks & Bitmaps"] end subgraph BackupGroupN["Block Group N (Sparse Backup)"] SBN["Backup Superblock"] GDTN["Backup Group Descriptors"] DataN["Data Blocks & Bitmaps"] end SB0 -.->|Replicated to| SB1 SB0 -.->|Replicated to| SBN
Use Case 1: Live Storage Reclamation on Multi-Terabyte Data Volumes
Scenario
A high-throughput analytics cluster running on cloud block storage triggers a critical out-of-disk alert. The mount point /data is a dedicated 10-terabyte ext4 volume servicing unprivileged timeseries database workers. Because the filesystem was formatted with standard defaults, five percent of the volume (500 GiB) is held in reserve for root. The application is failing with POSIX ENOSPC (No space left on device) errors while hundreds of gigabytes of unallocated storage remain locked.
Command Invocation
Adjust the reserved block percentage down to zero percent (or one percent on shared application servers) while the filesystem remains mounted and actively processing transactions:
tune2fs -m 0 /dev/mapper/vg_data-lv_timeseries
Alternatively, to allocate an exact fixed buffer of 10 GiB (2,621,440 blocks of 4,096 bytes) rather than a percentage:
tune2fs -r 2621440 /dev/mapper/vg_data-lv_timeseries
Terminal Execution & Telemetry Output
# Verify baseline capacity before modification
df -hT /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_timeseries ext4 9.8T 9.3T 0 100% /data
# Execute runtime superblock modification
tune2fs -m 0 /dev/mapper/vg_data-lv_timeseries
tune2fs 1.47.0 (5-Feb-2023)
Setting reserved blocks percentage to 0% (0 blocks)
# Validate available capacity immediately after execution
df -hT /data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_timeseries ext4 9.8T 9.3T 502G 95% /data
Line-by-Line Explanation
df -hT /datainitially showsUsed: 9.3TwithAvail: 0andUse%: 100%. The Linux virtual filesystem subtracts reserved blocks (s_r_blocks_count) from the total free count when calculating space available to standard users.tune2fs -m 0 ...opens the block device, navigates to the primary superblock at byte offset 1024, and setss_r_blocks_countto0. The kernelβs in-memory ext4 driver synchronises immediately.- The post-execution
df -hTreflects 502 GiB of instantly usable storage (Avail: 502G,Use%: 95%) without requiring a reboot or filesystem remount.
SRE Next Steps
Update your infrastructure-as-code automation (such as Terraform storage modules or Ansible disk playbooks) to pass -m 0 or -m 1 during the formatting step (mkfs.ext4 -m 1 ...) on all dedicated non-root data volumes.
Use Case 2: Neutralising Boot-Time Latency Spikes in Ephemeral and Cloud Fleets
Scenario
During a rolling restart of an autoscaling cluster across 200 Kubernetes worker nodes, several cloud instances take upwards of 45 minutes to boot. This triggers node readiness timeouts and cascading pod rescheduling failures. An investigation reveals that the filesystems reached their maximum mount count (s_max_mnt_count) or expired their check interval (s_checkinterval). The system initialization manager halted the boot sequence to run a mandatory, synchronous e2fsck surface scan across multi-terabyte drives.
Command Invocation
Disable counter-based and time-based automated filesystem checks across all non-root block devices:
tune2fs -c 0 -i 0 /dev/nvme1n1p1
Terminal Execution & Telemetry Output
# Query current filesystem check counters
tune2fs -l /dev/nvme1n1p1 | grep -E -i "mount count|check interval|last checked"
Mount count: 28
Maximum mount count: 30
Last checked: Mon Jun 1 14:32:10 2026
Check interval: 15552000 (6 months)
Next check after: Sat Nov 28 13:32:10 2026
# Disable mandatory boot-time fsck sweeps
tune2fs -c 0 -i 0 /dev/nvme1n1p1
tune2fs 1.47.0 (5-Feb-2023)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
# Validate updated superblock telemetry
tune2fs -l /dev/nvme1n1p1 | grep -E -i "mount count|check interval|next check"
Mount count: 28
Maximum mount count: -1
Check interval: 0 (<none>)
Line-by-Line Explanation
Mount count: 28alongsideMaximum mount count: 30indicates that after two more system reboots, the operating system init system (systemd-fsck) will intercept the boot sequence, lock the device, and execute a full disk scan.tune2fs -c 0 -i 0sets the superblock fieldss_max_mnt_countto-1(disabled) ands_checkintervalto0(no time limit).- The verification confirms
Check interval: 0 (<none>). The operating system now relies on the ext4 write-ahead journal (JBD2) for consistency and defers deep filesystem audits to scheduled maintenance windows.
SRE Next Steps
Establish deterministic maintenance jobs that execute non-destructive, read-only integrity checks (e2fsck -f -n /dev/...) against volume snapshots during off-peak windows, rather than leaving consistency checks to non-deterministic boot events.
Use Case 3: Hardening Kernel Error Policies Against Silent Corruption
Scenario
A distributed block storage cluster experiences an intermittent storage network disconnect. The underlying ext4 filesystem encounters an unrecoverable metadata transaction error while traversing an inode tree. Because the filesystemβs default error behavior was set to continue, the Linux kernel logged an error to dmesg, bypassed the broken pointer, and continued writing data into corrupted sector chains. This cascading corruption damaged several database tables before the failure was caught.
Command Invocation
Reconfigure the kernel's ext4 error-handling policy to immediately remount the filesystem as read-only (remount-ro), or trigger an immediate kernel panic (panic) to initiate automated failover in high-availability clusters:
# Option A: Standard Production Resilience (Remount Read-Only)
tune2fs -e remount-ro /dev/mapper/vg_database-lv_postgres
# Option B: High-Availability Clustered Failover (Force Immediate Kernel Panic)
tune2fs -e panic /dev/mapper/vg_database-lv_postgres
Terminal Execution & Telemetry Output
# Query the active error policy
tune2fs -l /dev/mapper/vg_database-lv_postgres | grep "Errors behavior"
Errors behavior: Continue
# Apply strict read-only remount semantics
tune2fs -e remount-ro /dev/mapper/vg_database-lv_postgres
tune2fs 1.47.0 (5-Feb-2023)
Setting error behavior to 2
# Confirm the updated policy in the superblock
tune2fs -l /dev/mapper/vg_database-lv_postgres | grep "Errors behavior"
Errors behavior: Remount read-only
Line-by-Line Explanation
Errors behavior: Continuerepresents state1in kernel internals. The kernel will attempt to ignore structural metadata corruption, creating severe risks of silent data decay.tune2fs -e remount-ro ...writes integer value2(EXT4_ERRORS_RO) to thes_errorsfield in the superblock.- If an invalid inode extent or corrupted block bitmap is subsequently encountered, the kernel will immediately revoke write access on the mount, flush the journal log, and reject new writes with
EROFS(Read-only file system). This isolates corruption and alerts monitoring agents instantly.
SRE Next Steps
Configure infrastructure monitoring agents to detect dmesg events matching "Remounting filesystem read-only", and test failover automation in staging environments to verify that cluster management software handles node fencing cleanly.
Use Case 4: Modernising Legacy Volumes with High-Density Directory Indexing
Scenario
A legacy document repository stores millions of files within a single directory (/var/data/storage/inbox). As the folder exceeds 250,000 files, routine operations like ls, file ingestion, and POSIX stat() calls experience severe latency, taking tens of seconds per query. The volume was originally formatted without the modern HTree directory indexing feature, forcing the kernel to perform linear $O(N)$ string searches across unindexed directory blocks.
file_001 ... file_050"] --> D1["Directory Block 1
file_051 ... file_100"] D1 --> D2["Directory Block 2
file_101 ... file_150"] D2 --> DN["Directory Block N
file_N ..."] end subgraph HTree["Modern HTree Indexing (Indexed O(log N) Search)"] Root["Root HTree Node
(32-bit Hash Map)"] Root --> H1["Intermediate Hash Block 1"] Root --> H2["Intermediate Hash Block 2"] H1 --> L1["Leaf Block A-D"] H1 --> L2["Leaf Block E-H"] H2 --> L3["Leaf Block I-M"] H2 --> L4["Leaf Block N-Z"] end
Command Invocation
Enable HTree directory indexing (dir_index) on the filesystem, followed by an offline directory re-indexing pass:
tune2fs -O dir_index /dev/sdc1
Terminal Execution & Telemetry Output
# Check existing filesystem features
tune2fs -l /dev/sdc1 | grep "Filesystem features"
Filesystem features: has_journal ext_attr resize_inode filetype extent sparse_super
# Enable the HTree directory indexing feature flag
tune2fs -O dir_index /dev/sdc1
tune2fs 1.47.0 (5-Feb-2023)
# Confirm that the feature flag is registered in the superblock
tune2fs -l /dev/sdc1 | grep "Filesystem features"
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent sparse_super
# Unmount and optimize existing unindexed directory trees
umount /dev/sdc1
e2fsck -D -f /dev/sdc1
e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 142050/26214400 files (0.8% non-contiguous), 8940120/104857600 blocks
# Remount the optimized filesystem
mount /dev/sdc1 /var/data/storage
Line-by-Line Explanation
- The baseline
Filesystem featuresoutput confirms the absence ofdir_index. In this state, directory structures store filenames sequentially across data blocks. tune2fs -O dir_index /dev/sdc1updates thes_feature_compatbitmask in the superblock, enabling theEXT4_FEATURE_COMPAT_DIR_INDEXflag. New directories will now use constant-depth HTrees (a B-tree variant using 32-bit filename hashes).e2fsck -D -f /dev/sdc1sorts existing unindexed directory entries by hash value and converts flat lists into balanced HTrees, reducing lookup times from $O(N)$ to $O(\log N)$.
SRE Next Steps
Monitor application file-lookup latencies and POSIX readdir() execution times to confirm that file ingestion performance has normalised.
Use Case 5: Resolving UUID and Label Collisions in Cloned Disaster Recovery Volumes
Scenario
During a disaster recovery exercise, an engineer attaches a storage volume cloned from a production SAN snapshot to a standby server. Upon boot, the operating system mounts the cloned snapshot instead of the primary production drive because both volumes share an identical ext4 UUID. Automated mount scripts that rely on /dev/disk/by-uuid/ behave unpredictably due to non-deterministic device scanning order in udev.
Command Invocation
Generate a new, random Universally Unique Identifier (UUID) on the cloned block device and assign an explicit human-readable filesystem volume label:
# Regenerate the filesystem UUID randomly
tune2fs -U random /dev/sdd1
# Assign an unambiguous volume label
tune2fs -L "dr_analytics_01" /dev/sdd1
Terminal Execution & Telemetry Output
# Inspect the block layer to confirm the UUID collision
lsblk -o NAME,SIZE,FSTYPE,LABEL,UUID,MOUNTPOINT /dev/sd[c-d]
NAME SIZE FSTYPE LABEL UUID MOUNTPOINT
sdc 2T ext4 prod_db_data 4a8c9e12-789a-4123-8abc-def012345678 /var/lib/postgresql
sdd 2T ext4 prod_db_data 4a8c9e12-789a-4123-8abc-def012345678
# Randomize the superblock UUID on the cloned partition
tune2fs -U random /dev/sdd1
tune2fs 1.47.0 (5-Feb-2023)
Setting the UUID on this filesystem could take some time.
Proceed anyway (or wait %d seconds) ? (y,n) y
# Relabel the volume for administrative clarity
tune2fs -L "dr_analytics_01" /dev/sdd1
tune2fs 1.47.0 (5-Feb-2023)
# Verify the updated metadata across the block layer
blkid /dev/sdd1
/dev/sdd1: LABEL="dr_analytics_01" UUID="e7f2b109-c45a-49d8-9123-01ab45cd89ef" BLOCK_SIZE="4096" TYPE="ext4"
Line-by-Line Explanation
lsblkshows that/dev/sdc(the production drive) and/dev/sdd(the attached snapshot) share identical UUID strings (4a8c9e12...) and identical volume labels (prod_db_data), creating race conditions in device discovery.tune2fs -U random /dev/sdd1generates a new 128-bits_uuidin the superblock. When metadata checksumming (metadata_csum) is active,tune2fsrecalculates checksums across all internal Block Group Descriptors, which use the UUID as a hashing salt.tune2fs -L ...updates the 16-bytes_volume_namebuffer inside the superblock, making the volume easily identifiable in administrative tooling.
SRE Next Steps
Update /etc/fstab on the recovery host using blkid to reference the new unique UUID (UUID=e7f2b109-c45a-49d8-9123-01ab45cd89ef), execute systemctl daemon-reload, and mount the volume cleanly.
4. What Can Go Wrong: Architectural Pitfalls & Recovery
While tune2fs operates directly on superblock metadata, incorrect usage can lead to boot failures, system hangs, or corrupted filesystems.
| Safety Check | Operational Rule | Rationale |
|---|---|---|
1. Protect Root (/) |
Never set -m 0 on the root filesystem |
Preserves an emergency storage margin for core system daemons (sshd, syslog) to prevent admin lockouts. |
| 2. Sync Storage Tables | Update /etc/fstab and initramfs immediately when changing UUIDs (-U) or labels (-L) |
Mismatched filesystem UUIDs will halt boot sequences into emergency maintenance shells. |
| 3. Kernel Compatibility | Never enable unsupported feature flags (-O) on older kernels |
Unsupported metadata flags prevent older kernels from mounting the partition. |
| 4. Superblock Backup | Back up superblock telemetry (tune2fs -l /dev/... > sblock.bak) before modifications |
Provides an exact baseline configuration for rapid rollback and troubleshooting. |
Pitfall 1: Zeroing Reserved Space on the Root Boot Filesystem (/)
- The Disaster: An administrator executes
tune2fs -m 0 /dev/nvme0n1p1on the root boot partition (/) to silence a disk space alert. Within days, runaway application logs fill the remaining disk capacity to 100%. Critical operating system daemons (sshd,systemd-journald,cron) crash because they cannot allocate temporary locks or write state files. Administrators are completely locked out becausesshdcannot allocate a pseudo-terminal or write authentication logs. - The Root Cause: The 5% reserved block allocation (
s_resuid = 0) maintains an essential operational buffer for root daemons and mitigates storage fragmentation. Ext4 block allocation algorithms suffer severe fragmentation when utilization exceeds 95% without a reserve. - The Recovery Path:
1. Boot the machine into an emergency target or rescue shell via GRUB (
init=/bin/shor single-user mode). 2. Restore an operational safety margin of at least 3% to 5% usingtune2fs:bash tune2fs -m 5 /dev/nvme0n1p13. Clean up unneeded rotated logs in/var/logto restore daemon functionality.
Pitfall 2: Mutating Filesystem UUIDs Without Synchronising /etc/fstab
- The Disaster: An engineer runs
tune2fs -U random /dev/sda1on a core server partition to resolve an identity conflict, but forgets to update local configuration files. Upon the next scheduled system reboot, the node fails to initialize and drops into an emergency maintenance shell with the error:Give root password for maintenance (or press Control-D to continue):Timed out waiting for device /dev/disk/by-uuid/4a8c9e12... - The Root Cause: The system initialization manager (
systemdandinitramfs) parses/etc/fstabby UUID during early boot. When the underlying superblock UUID is changed,udevcannot match the expected mount target, halting the boot sequence. - The Recovery Path:
1. From the recovery shell, identify the new on-disk UUID using
blkid:bash blkid /dev/sda12. Remount the root partition with write permissions:bash mount -o remount,rw /3. Edit/etc/fstabto point the target mount path to the new UUID string. 4. Regenerate the initial RAM disk image if the root filesystem itself was modified:bash # Debian/Ubuntu update-initramfs -u # RHEL/Rocky/AlmaLinux dracut --force
Pitfall 3: Modifying Journal Feature Flags on Active Distributed Mounts
- The Disaster: An engineer attempts to disable the filesystem journal (
tune2fs -O ^has_journal /dev/sdb1) on a mounted disk to boost raw write throughput during a batch data load. The kernel rejects the operation or leaves the filesystem in an inconsistent metadata state, causing data loss if the system experiences a power loss or reset. - The Root Cause: Modifying core structural capabilities such as journaling (
has_journal) or 64-bit block numbers (64bit) changes how the Ext4 Driver Subsystem manages dirty buffers in memory. Removing the journal while the VFS has uncommitted transactions in flight corrupts filesystem metadata. - The Recovery Path: Always unmount the volume prior to modifying journal states or core architectural feature flags:
bash umount /dev/sdb1 tune2fs -O has_journal /dev/sdb1 e2fsck -f /dev/sdb1 mount /dev/sdb1 /mnt/data
5. Technical Reference & Authoritative Documentation
For deeper exploration of the ext4 superblock format, kernel VFS parameters, and filesystem tuning, consult the following technical resources:
- Linux Kernel Documentation: Ext4 Filesystem Internals β Comprehensive specification of ext4 on-disk layouts, Block Group Descriptors, and inode structures.
- Kernel.org e2fsprogs
tune2fs(8)Manual β The primary command reference detailing all operational switches and parameter values. - ArchWiki: Comprehensive ext4 Optimization & Maintenance Guide β Practical tuning benchmarks, mount options, and administrative guidelines for high-performance workloads.
- Debian Manual:
tune2fsSuperblock Management β Distribution-specific operational notes, flags, and filesystem utilities. - Linux Kernel Virtual Filesystem (VFS) Architecture β Architectural documentation on how the Linux kernel interfaces with concrete filesystem drivers.
6. Today's Takeaway
The most effective action you can take right now is to audit your non-root storage volumes for wasted capacity trapped behind the legacy five-percent default. Open a terminal on one of your database or auxiliary data servers and run lsblk -f to list your active ext4 partitions. For any dedicated data volume over 100 gigabytes, run tune2fs -l /dev/<device> | grep -i "reserved" to check how much space is cordoned off for the superuser. If you see thousands of blocks locked on a pure data partition, run tune2fs -m 1 /dev/<device> to instantly reclaim tens or hundreds of gigabytes of usable storage without taking a single second of downtime.