设想
我的计算机中有一个 SSD (250GiB),上面有/boot
和/
/分区。/home
我想将其移至更大的新 M.2 NVME 驱动器 (1TiB)。
我使用的发行版是 Fedora 37。
我的/etc/fstab
样子是这样的:
#
# /etc/fstab
# Created by anaconda on Tue Jun 28 05:26:41 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=5ed1bf26-ab2f-4e5a-ab5e-d2d56f5f3803 / btrfs subvol=root,compress=zstd:1 0 0
UUID=a14f6d42-3a64-4f96-856c-51e0f4344481 /boot ext4 defaults 1 2
UUID=5ed1bf26-ab2f-4e5a-ab5e-d2d56f5f3803 /home btrfs subvol=home,compress=zstd:1 0 0
lsblk
看起来像这样:
NAME KNAME PATH TYPE MODEL STATE RO RM HOTPLUG FSTYPE FSVER LABEL PTTYPE PARTTYPE PARTTYPENAME PARTLABEL PARTFLAGS SIZE FSSIZE FSAVAIL
sda sda /dev/sda disk Samsung SSD 850 EVO 250GB running 0 0 0 dos 232.9G
├─sda1 sda1 /dev/sda1 part 0 0 0 ext4 1.0 dos 0x83 Linux 0x80 1G 973.4M 608.1M
└─sda2 sda2 /dev/sda2 part 0 0 0 btrfs fedora_localhost-live dos 0x83 Linux 231.9G 231.9G 108.3G
zram0 zram0 /dev/zram0 disk 0 0 0 7.5G
笔记:和/
都是/home/
同一分区的子卷!它们本身并不位于单独的分区上。
问题
我该如何做才能最大限度地减少对工作时间的干扰?我想我应该启动一个实时发行版gparted
,然后将分区移过去,但由于 UUID 分散在我当前的设置中,我想我可能会遇到问题,而且我也不确定这是首选方法。
作为一个奖金,我想,我想要在我的硬盘上有一个交换分区,该分区大于我当前的 RAM 量(8GB)。目前,我只使用 ZRAM,但我希望有一个比我当前 RAM 容量更大(可能是两倍大小)的交换分区,以便我可以安全地将计算机置于休眠状态。另外,更多的交换对我的虚拟机来说非常好,而且目前我正在努力运行两个以上的虚拟机。
我认为我应该大致这样处理:
- 我想将当前布局克隆到 1TB 驱动器上,但我不确定使用哪种工具最好,从而将驱动器的一大块空间留空。
- 然后,我将在未分配空间的末尾创建一个交换分区。
- 然后扩大我的
/dev/sda2
分区,以便我可以使用整个驱动器等。
请告知程序的顺序(显然,步骤 0 是创建备份),以及我应该尝试的工具等。
答案1
最简单的方法是:
- 启动像 gparted 这样的实时 ISO
- 裸机将250G SATA SSD复制到NVMe SSD
- 拔下 SATA SSD
- 从 NVMe 启动
- 验证一切仍然有效
- 将分区大小调整为最大
btrfs filesystem resize max /
可选但建议采取的进一步步骤:
- 重新启动以再次使用 live ISO
- 再次插入SSD
blkdiscard
SATA SSD- 使用新的东西格式化 SATA SSD
重要问题:
- 克隆后,不要在两个磁盘都连接时挂载文件系统。 (启动将挂载文件系统!)
- 如何克隆磁盘并不重要。你甚至可以使用
cp
.重要的是它是 1:1 的副本 /dev/disk/by-id/
每当需要在 CLI 上输入磁盘时,请使用节点。使其不易出错。
答案2
或者
- 如果没有足够的本地空间用于克隆文件,请添加另一个目标磁盘:
sudo mkdir /media/disk sudo mount /dev/sdb1 /media/disk sudo chmod ugo+wx /media/disk
将可用空间清零https://unix.stackexchange.com/a/506097/518235
然后仅克隆已使用的空间
sudo dd if=/dev/xvda bs=16M conv=sparse,noerror | pv | sudo pigz -c > /media/disk/TargetImg.dd.gz
如果没有 pv,则可选择 dd 选项:status=progress
- 使用 cp / rsync 进行本地传输(参见 8)或远程 Target:
sshpass -p "xxxxxxxxx" scp TargetImg.dd.gz [email protected]:/home/fedora | pv -lep -s 42
- 恢复(本地或远程):
sudo pigz -cdk TargetImg.dd.gz | pv | sudo dd of=/dev/sdb bs=16M
- 或选择将磁盘格式转换为例如选择的虚拟机:
sudo dnf install qemu sudo qemu-img convert -O vmdk TargetImg.dd TargetImg.vmdk -p
- 可选的 HD 调整大小,例如在 ESXi 主机上:
vmkfstools -X 100G "TargetImg.vmdk"
- 第一个和第二个或新旧驱动器之间的本地同步也是可能的:
sudo rsync -aHAXS \ --filter='-x security.selinux' \ --no-compress \ --no-inc-recursive \ --stats \ --numeric-ids \ --info=progress2 \ /media/disk/ \ /
来源:stackoverflow 等