How to Move dphys-swapfile Btrfs Volume to Magnetic Disk

Abstract: Move dphys-swapfile from Btrfs to magnetic disk to avoid COW issues and reduce write amplification on flash storage.

Created: 2026-08-24 by

To move the dphys-swapfile from a Btrfs volume to a magnetic disk, you must first disable and remove the existing swapfile using dphys-swapfile swapoff and dphys-swapfile purge. Next, configure the new path in /etc/dphys-swapfile, recreate the file on the HDD, and enable it with dphys-swapfile swapon. This ensures proper cleanup of the old Btrfs-based swap space.

Understanding Swapfile Limitations on Btrfs

The dphys-swapfile utility is designed to manage a single swapfile located at /var/swap. While modern versions of Btrfs support swapfiles, many systems, particularly older Raspberry Pi distributions or specific embedded Linux setups, rely on dphys-swapfile for simplicity. However, running swap on a Btrfs filesystem can sometimes lead to performance issues or compatibility warnings because Btrfs uses copy-on-write (COW) semantics that may interfere with swap operations if not explicitly disabled for the swapfile location. Moving the swapfile to a magnetic disk (HDD) is often recommended for systems where the primary storage is an SSD or SD card, as it reduces write amplification on the faster media. Magnetic disks handle large sequential writes differently than flash storage, making them suitable for the heavy read/write cycles associated with swapping memory pages. Before proceeding, ensure your target magnetic disk is mounted and accessible. For instance, if you are moving to an external USB drive, verify its mount point using mount | grep sdX or check /etc/fstab for the correct device identifier.

Step 1: Disable and Remove the Existing Swapfile

The most critical step is to properly deactivate the current swapfile. Many users mistakenly delete the file directly using rm /var/swap. This approach is dangerous because it leaves the system in an inconsistent state if the swap daemon has already unmapped the file but not fully released resources, or if the deletion fails midway. Instead, you must use the dphys-swapfile commands to handle the lifecycle correctly. First, stop the usage of the swapfile by running:
sudo dphys-swapfile swapoff
This command tells the kernel to stop using the current swapfile and removes the mapping. It does not delete the file itself. Next, you must remove the actual file and reset the configuration state. Run:
sudo dphys-swapfile purge
The purge command deletes the swapfile at /var/swap and resets the configuration file /etc/dphys-swapfile to its default values. This ensures that no residual references to the old Btrfs-based swap location remain active. If you skip this step and simply create a new file, you might end up with two swapfiles or encounter permission errors because the system expects the default location to be managed exclusively by dphys-swapfile.

Step 2: Configure the New Swapfile Location

With the old swapfile removed, you need to instruct dphys-swapfile to create the new file on your magnetic disk. Open the configuration file using a text editor such as nano or vim:
sudo nano /etc/dphys-swapfile
Look for the line starting with CONF_SWAPFILE=. By default, it will be set to /var/swap. Change this path to the desired location on your magnetic disk. For example, if your magnetic disk is mounted at /mnt/hdd, you might set:
CONF_SWAPFILE=/mnt/hdd/swapfile
Ensure that the directory /mnt/hdd exists and has sufficient free space. The swapfile size is determined by CONF_SWAPSIZE, which defaults to 100MB if not specified. You can adjust this value based on your RAM size, but keeping it reasonable (e.g., 512MB or 1GB) is usually sufficient for most desktop and server workloads. Save the file and exit the editor.

Step 3: Create and Enable the New Swapfile

Now that the configuration is updated, you can generate the new swapfile. Run:
sudo dphys-swapfile setup
This command reads /etc/dphys-swapfile and creates the file at the specified path with the correct permissions (typically 600) and size. Once the file is created, activate it by running:
sudo dphys-swapfile swapon
Verify that the new swapfile is active by checking the output of swapon --show or free -h. You should see the new path listed under the NAME column. If the command fails, check the system logs using dmesg | tail for any permission denied errors or I/O faults. Ensure that the magnetic disk is not suspended or disconnected during this process.

Verifying Stability and Performance

After enabling the new swapfile, monitor the system for stability. Use vmstat 1 to observe page in/out activity. If the system becomes unresponsive, consider reducing the swappiness value in /etc/sysctl.conf to discourage excessive swapping. Additionally, since you are now using a magnetic disk, be aware that swap access times will be significantly slower than on SSDs or RAM. This is acceptable for occasional overflow but not for high-performance computing tasks. For related information on managing filesystem transitions, you might find How to Convert ext4 Partition on RAID 1 to btrfs useful if you are planning further storage optimizations. Understanding how different filesystems handle swap can prevent future conflicts.

Frequently Asked Questions

Can I have multiple swapfiles on different disks?

Yes, Linux supports multiple swap files or partitions. However, dphys-swapfile is designed to manage only one swapfile at a time. To add additional swap spaces manually, you would need to use mkswap and swapon directly, bypassing dphys-swapfile for those specific entries.

What happens if the magnetic disk is disconnected?

If the magnetic disk containing the swapfile is disconnected while the system is running, the kernel may throw I/O errors, potentially leading to system instability or crashes. It is advisable to use nofail in /etc/fstab for non-critical swap drives to allow booting even if the disk is missing.

Why did my previous attempt fail after deleting /var/swap?

Directly deleting the file bypasses the kernel's swap unmapping process. The system still thinks the swapfile is active until you run dphys-swapfile swapoff. Skipping this step leaves the swap entry in the kernel's memory management tables, causing errors when you try to create a new file or re-enable swap.

Is it safe to keep swap on Btrfs?

While newer kernels support swapfiles on Btrfs, it requires disabling Copy-On-Write (COW) for the specific file using chattr +C. dphys-swapfile does not automatically apply this attribute, which is why moving to a standard filesystem like ext4 on a magnetic disk is often more reliable for this specific tool.

How do I revert to the default Btrfs swapfile?

To revert, edit /etc/dphys-swapfile and change CONF_SWAPFILE back to /var/swap. Then run sudo dphys-swapfile setup followed by sudo dphys-swapfile swapon. This will recreate the default swapfile in the original location.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More