如何将 Ubuntu 22.04 从 1TB 迁移至 500GB SSD?

如何将 Ubuntu 22.04 从 1TB 迁移至 500GB SSD?

我想从 1TB 迁移到 500GB SSD。我相信使用的不到 100GB(通过 Docker 安装了 Home Assistant)。我见过ddClonezilla 等选项。

我知道这dd不涉及调整分区大小,但我认为 Clonezilla 只有在移动到更大的 SSD 时才会调整大小。那么我该如何缩小 1TB SSD,以便 Clonezilla 将其视为小于 500GB SSD?

除了 Clonezilla 之外,我愿意接受其他更好的选择。

根据请求:

lsblk

返回:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0     4K  1 loop /snap/bare/5
loop1    7:1    0  63.3M  1 loop /snap/core20/1828
loop2    7:2    0    73M  1 loop /snap/core22/583
loop3    7:3    0  63.3M  1 loop /snap/core20/1852
loop4    7:4    0 163.3M  1 loop /snap/firefox/1635
loop5    7:5    0 239.9M  1 loop /snap/firefox/2487
loop6    7:6    0 346.3M  1 loop /snap/gnome-3-38-2004/119
loop7    7:7    0 460.4M  1 loop /snap/gnome-42-2204/68
loop8    7:8    0 460.3M  1 loop 
loop9    7:9    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop10   7:10   0  45.9M  1 loop /snap/snap-store/582
loop11   7:11   0  45.9M  1 loop /snap/snap-store/638
loop12   7:12   0  49.8M  1 loop /snap/snapd/18357
loop13   7:13   0  49.8M  1 loop /snap/snapd/18596
loop14   7:14   0   304K  1 loop /snap/snapd-desktop-integration/49
loop15   7:15   0   428K  1 loop /snap/snapd-desktop-integration/57
loop16   7:16   0  65.1M  1 loop /snap/sublime-text/118
loop17   7:17   0 349.7M  1 loop /snap/gnome-3-38-2004/137
loop18   7:18   0    73M  1 loop /snap/core22/607
loop19   7:19   0 460.6M  1 loop /snap/gnome-42-2204/87
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0   931G  0 part /var/snap/firefox/common/host-hunspell
                                 /
sdb      8:16   1     0B  0 disk 
sdc      8:32   1     0B  0 disk

答案1

  1. 例如使用 DVD 或 USB 闪存驱动器来启动 Ubuntu Live CD。

  2. 一旦 Live CD 启动,使用它来卸载,然后对硬盘的根 Ubuntu 分区执行文件系统检查。例如,如果您的硬盘是,/dev/sda并且 Ubuntu 的根文件系统结构位于ext3/dev/sda2则运行:

    sudo umount /dev/sda2 ; sudo fsck.ext3 /dev/sda2
    
  3. 现在你的根分区已经被卸载并且文件系统已经检查过,请gparted在这样的 Live CD 上安装(如果尚未安装):

    sudo apt install gparted -y
    
  4. 跑步gparted

    pkexec gparted & sleep 30 ; exit
    
  5. 一旦gparted的窗口打开,右键单击例如/dev/sda2,选择Resize/Move选项,设置新的大小(即 500GB)并确认。

  6. 检查调整大小后的分区的当前大小、已使用的空间量和可用空间量:

    查看以兆字节为单位的大小:

    df -B 1M /dev/sda2
    

    ...或者查看以 GB 为单位的大小:

    df -B 1G /dev/sda2
    
  7. 如果最终使用的空间小于 SSD 的 500GB 大小,那么您现在可以将 SSD 连接到计算机(我假设您可以通过扩展坞或 e-SATA 端口等将此类 SSD 连接到 USB 端口,或直接连接到主板的 SATA 端口),然后在此类 SSD 上创建相同的分区表和分区。使用查看gparted硬盘的分区表类型和每个分区的文件系统。

    例如:如果您的硬盘是/dev/sda,而您的 SSD 是/dev/sdb,您的硬盘有一个 GPT 分区表和 3 个分区(/dev/sda1作为启动分区、/dev/sda2作为 Ubuntu Linux 根分区和/dev/sda3作为交换分区),那么请记下这些信息(以及每个分区的第一个和最后一个扇区是什么),然后使用例如fdisk在您的 SSD 上创建相同的分区表和分区。最后,使用gdisk(安装命令sudo apt install gdisk -y:)从原始(源)GPT 分区表克隆数据并将其写入 SSD:

    sudo sgdisk /dev/sda -R /dev/sdb
    

    ...然后使用dd将硬盘上的每个分区克隆到 SSD:

    sudo dd if=/dev/sda1 of=/dev/sdb1 bs=1M status=progress
    sudo dd if=/dev/sda2 of=/dev/sdb2 bs=1M status=progress       
    sudo dd if=/dev/sda3 of=/dev/sdb3 bs=1M status=progress
    
  8. 关闭计算机,拔下硬盘和 Live CD,然后尝试从 SSD 启动。

PS:如果无法启动SSD,很有可能是GPT数据位于块设备末尾,这种情况下,请运行sudo gdisk /dev/sdb然后输入w并按Enter重新将GPT分区表写入SSD。

相关内容