Loading content/onlide-disk-copy.rst +17 −17 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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. Loading Loading
content/onlide-disk-copy.rst +17 −17 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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. Loading