Safe Data Migration under High I/O Load
Use this method when you need to transfer data from a storage device that is already under heavy load (e.g., RAID resync, slow USB, high latency) to prevent system lockups (high I/O Wait).
The Command
ionice -c 3 rsync -avxW --progress /source/path/ /destination/path/
Parameter Breakdown
ionice -c 3 (Idle Class)
Function: Sets the I/O scheduling class to “Idle”.
Effect: The process will only read/write to the disk when no other program needs access to it.
Benefit: Prevents the system from freezing or becoming unresponsive (High Load/IO Wait) during the transfer.
rsync -W (–whole-file)
Function: Copies the whole file without calculating delta checksums.
Effect: Reduces CPU usage and disk seek operations.
Benefit: Significantly faster for directories with thousands of small files (e.g., `node_modules`, Docker overlays) where calculating diffs is more expensive than the transfer itself.
-avx
-a: Archive mode (preserves permissions, timestamps, ownership).
-v: Verbose (shows progress).
-x: One File System (prevents rsync from crossing partition boundaries).
Typical Use Case
Migrating Docker data or large file structures while a RAID array is resyncing or scrubbing:
# Example: Moving Docker data to a new partition
ionice -c 3 rsync -avxW --progress /var/lib/docker/ /mnt/new_drive/docker/