我想从 1TB 迁移到 500GB SSD。我相信使用的不到 100GB(通过 Docker 安装了 Home Assistant)。我见过dd
Clonezilla 等选项。
我知道这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
例如使用 DVD 或 USB 闪存驱动器来启动 Ubuntu Live CD。
一旦 Live CD 启动,使用它来卸载,然后对硬盘的根 Ubuntu 分区执行文件系统检查。例如,如果您的硬盘是,
/dev/sda
并且 Ubuntu 的根文件系统结构位于ext3
,/dev/sda2
则运行:sudo umount /dev/sda2 ; sudo fsck.ext3 /dev/sda2
现在你的根分区已经被卸载并且文件系统已经检查过,请
gparted
在这样的 Live CD 上安装(如果尚未安装):sudo apt install gparted -y
跑步
gparted
:pkexec gparted & sleep 30 ; exit
一旦
gparted
的窗口打开,右键单击例如/dev/sda2
,选择Resize/Move
选项,设置新的大小(即 500GB)并确认。检查调整大小后的分区的当前大小、已使用的空间量和可用空间量:
查看以兆字节为单位的大小:
df -B 1M /dev/sda2
...或者查看以 GB 为单位的大小:
df -B 1G /dev/sda2
如果最终使用的空间小于 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
关闭计算机,拔下硬盘和 Live CD,然后尝试从 SSD 启动。
PS:如果无法启动SSD,很有可能是GPT数据位于块设备末尾,这种情况下,请运行sudo gdisk /dev/sdb
然后输入w
并按Enter重新将GPT分区表写入SSD。