diff --git a/content/onlide-disk-copy.rst b/content/onlide-disk-copy.rst index c0fc216047d0ab04775308c5c9308f7ad8e9a9d4..a241c0fea35cd5e6db18802572323652b07f43d1 100644 --- a/content/onlide-disk-copy.rst +++ b/content/onlide-disk-copy.rst @@ -2,17 +2,17 @@ Copy a drive on a running machine ################################# :date: 2024-06-08 -:summary: Copying to a new drive while the machine is running +:summary: Copying from an old drive to a new drive while the machine is running -I was close to running out of disk space the homelab machine I use for running -services with personal data that I run in my home (I feel more comfortable -having physical control). I was too lazy to connect the machine to a monitor -and keyboard and rebooting from a thumbdrive so I tried to copy the old drive -to a new drive while the machine was running. Here's what I did: +I was close to running out of disk space on the homelab machine I use for +running services with personal data that I run in my home (I feel more +comfortable having physical control). I was too lazy to connect the machine to +a monitor and keyboard and reboot from a thumbdrive so I tried to copy the old +drive to a new drive while the machine was running. Here's what I did: #. Stop running processes that have open files. For me it was stopping Docker - containers, some services (I have most services running in containers so I - have few services). + containers, some services (I have most things running in containers so most + of the services are ones that come with a standard OS installation). .. code:: shell @@ -21,7 +21,7 @@ to a new drive while the machine was running. Here's what I did: #. :code:`cd` to a directory on a different drive to avoid keeping the path - open :code:`cd /tmp`. Remount all partitions as read-only: :code:`sudo mount + open (:code:`cd /tmp`). Remount all partitions as read-only: :code:`sudo mount --all -o remount,ro -t vfat,btrfs,ext4`. This may fail and you will see an error with a path that couldn't be remounted due to open files. Run :code:`lsof /path/that/has/open/files`, find the processes that still have @@ -36,14 +36,14 @@ to a new drive while the machine was running. Here's what I did: #. Once the copy is complete, run :code:`sudo sync` again and :code:`echo 1 | sudo tee /sys/block/nvme0n1/device/rescan`. Now we need to resize the data - partition, `sudo parted /dev/nvme0n1 --script resizepart 3 100%` (in my case - the data partition was the 3rd partition after the EFI and root partitions). - Open the encrypted partition :code:`sudo cryptsetup open /dev/nvme0n1p3 - _dev_nvme0n1p2` and resize the encrypted partition :code:`sudo cryptsetup - resize _dev_nvme0n1p3`. Last resize is the filesystem in the encrypted - partition, we mount it :code:`sudo mount /dev/mapper/_dev_nvme0n1p3 /mnt` - and resize it :code:`sudo btrfs filesystem resize max /mnt`. Umount the data - partition :code:`sudo umount /mnt`. + partition, :code:`sudo parted /dev/nvme0n1 --script resizepart 3 100%` (in + my case the data partition was the 3rd partition after the EFI and root + partitions). Open the encrypted partition :code:`sudo cryptsetup open + /dev/nvme0n1p3 _dev_nvme0n1p2` and resize the encrypted partition + :code:`sudo cryptsetup resize _dev_nvme0n1p3`. Last resize is the filesystem + in the encrypted partition, we mount it :code:`sudo mount + /dev/mapper/_dev_nvme0n1p3 /mnt` and resize it :code:`sudo btrfs filesystem + resize max /mnt`. Umount the data partition :code:`sudo umount /mnt`. #. Let's reinstall the boot loader.