====== 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/