Commit 29a5c774 authored by nimrod's avatar nimrod
Browse files

fixup! New post on copying the drive on a running machine.

parent d0a12162
Loading
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -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.