我的文件系统:
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 9.8G 0 9.8G 0% /dev
tmpfs 9.8G 18M 9.8G 1% /dev/shm
tmpfs 9.8G 1.8M 9.8G 1% /run
tmpfs 9.8G 0 9.8G 0% /sys/fs/cgroup
/dev/mapper/fedora-root 49G 14G 33G 30% /
tmpfs 9.8G 160K 9.8G 1% /tmp
/dev/nvme0n1p5 976M 195M 715M 22% /boot
/dev/mapper/fedora-home 37G 28G 6.3G 82% /home
/dev/nvme0n1p1 256M 47M 210M 19% /boot/efi
tmpfs 2.0G 12M 2.0G 1% /run/user/1000
gnome-app“磁盘”显示我在/dev/nvme0n1
.
如何将这 400GB 添加到我的 home 分区,以便 /dev/mappe/fedora-home 将变为 437 GB。
我使用磁盘加密 (LUKS) 和 Fedora 29
编辑
分开-l
输出sudo parted -l
如下:
Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 274MB 273MB fat32 EFI System Partition boot, hidden, esp
2 274MB 290MB 16.8MB Microsoft reserved partition msftres
5 406GB 407GB 1074MB ext4
6 407GB 511GB 104GB
4 511GB 512GB 1049MB ntfs Basic data partition hidden, diag
LSBL
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 260M 0 part /boot/efi
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p4 259:4 0 1000M 0 part
├─nvme0n1p5 259:5 0 1G 0 part /boot
└─nvme0n1p6 259:6 0 96.7G 0 part
└─luks-29414c5a-13ed-4ddb-9403-8aa5d983fd4f
253:0 0 96.7G 0 crypt
├─fedora-root 253:1 0 50G 0 lvm /
├─fedora-swap 253:2 0 9.8G 0 lvm [SWAP]
└─fedora-home 253:3 0 36.9G 0 lvm /home
编辑2
感谢@frostschutz 的回答,我有一些后续/理解问题。
我的理解
从lsblk
我可以看到整个设备及其分区从parted -l
我可以看到每个使用分区的内容。
所以从 lsblk 我可以看到 nvme0n1 的总大小为 477 GB。该磁盘有 6 个分区。我可以看到分区 6 是具有三个挂载点的 luks 加密容器。
分区号对应于输出parted
所以:
- nvme0n1p1 = 260M 是 EFI 启动(我可以从parted -l 中看到)
- nvme0n1p2 = 16M是微软保留的(我猜是恢复分区)
- nvme0n1p3 丢失。我们可以推断这里有 400 GB - 但不完全是。我们有 477G - 260M -16M - 1000M - 1G - 96.7G = 378G
- nvme0n1p4 = 基本数据空间,Ntfs - 可能是旧窗口 - 但隐藏?不知道这是什么
- nvme0n1p5 = 引导,我猜这是用于 linux grub 的?
- nvme0n1p6 = fedora 安装,使用 luks lvm 容器加密。
lsblk
还向我显示,从分区 2 结束位置 (290 MB) 到分区 3 开始位置 (406 GB) 有“空间”。
我的后续问题
我可以看到这一点parted
并且lsblk
不同意分区大小?Parted
说第 6 部分是 104GB。lsblk
说第 6 部分是 96.7 GB
gnome 程序disk
说我有 406 GB 可用空间。计算总大小减去已使用的分区,如报告所述,lsblk
我有大约。 378G 看parted
我有 406G 减去 290M - 所以可能是 405
1:我应该相信哪个报告的尺寸?。或者更确切地说,为什么 lsblk 报告错误的大小?这种差异似乎比 G(基数为 10)和 GB(基数为 2?)的任何差异都要大 - 但真的是这样吗?
我了解如何创建分区 3。我猜您随机分配它 9 MB,这样我们就得到了一个整数。今天 boot 是 1 GB - 您分配 newboot ca。 900 MB - 根据我的输出,df
这已经足够了。今天,root 是 96.7 GB,您分配给它(200G 减去 1200M)大约。 199G - 因为为什么没有足够的空间呢?
2:它是否正确?
我了解如何通过 dd 复制数据。
我知道您现在想要删除分区 5(旧启动 - 刚刚复制到 7)、分区 6(不存在的分区?)分区 7 和 8(newboot 和 newroot? - 但我们刚刚创建并复制了这些?)
3:那么我不明白为什么我们删除这些新分区?或者只是被删除的编号?
4:*我不明白为什么要再次创建newboot和newroot?在我看来,我们创建它,我们将数据复制到其中,我们删除然后我们创建它?如果它没有被删除(按照问题 3)那么为什么要再次创建它呢?
我的阅读方式:我理解调整大小命令随后会将分区扩展到 511 GB 位置。
但我想我现在没有任何数据?我哪里理解错了?
编辑3
当我走到这一步时,稍后我将需要研究pvresize
、lvextend
和resize2fs
。
答案1
因此,磁盘中间有大约 400GB 的未分区间隙(缺少分区号 3)。此间隙后面是 /boot 分区 (5) 和 LUKS 加密分区 (6),其中包含 Fedora 安装。因此您有分区 1、2、(缺少 3 个)、5、6、4。
在这种情况下,我将启动 Live CD (不要安装任何东西)并移动分区 5、6,然后增长分区 6。分区 1、2 和 4 保持不变。这可以大致(!)这样完成:
# parted /dev/nvme0n1 mkpart unused3 290MiB 299MiB # should be 3
# parted /dev/nvme0n1 mkpart newboot 300MiB 1199MiB # should be 7
# parted /dev/nvme0n1 mkpart newroot 1200MiB 200GiB # should be 8
这将创建一个分区号 3(只是为了保留该编号),以及两个新分区 7 和 8 来替换 5 和 6。只能以这种方式完成,因为您的分区间隙足够大以包含引导分区和根分区。
将数据复制到:
# dd status=progress bs=1M if=/dev/nvme0n1p5 of=/dev/disk/by-partlabel/newboot
# dd status=progress bs=1M if=/dev/nvme0n1p6 of=/dev/disk/by-partlabel/newroot
仅当两个副本都成功制作后才能继续。如果到此为止出现任何问题,请在重新启动之前删除 newboot 和 newroot 分区,否则您将遇到 UUID 冲突。
恢复原始分区编号并增长到大小:
# parted /dev/nvme0n1 rm 5 rm 6 rm 7 rm 8
# parted /dev/nvme0n1 mkpart newboot 300MiB 1199MiB # previously 7 now 5
# parted /dev/nvme0n1 mkpart newroot 1200MiB 200GiB # previously 8 now 6
# parted /dev/nvme0n1 resizepart 6 511GB
重新启动后,剩下的就是pvresize
, lvextend
, resize2fs
, ... 您认为合适的正常增长操作。
笔记parted /dev/nvme0n1 unit mib print free
:用或类似的方法验证每一步。上面的命令都未经测试(因为我现在无法轻松复制您的情况)。理论上应该是这样,但您可能必须在实践中进行调整。首先备份您的数据,这样如果出现问题,您可以重新安装。
另一种方法是重新创建丢失的分区 3,对其进行 luksFormat,然后添加到您的 LVM。这样就不需要移动任何数据,但是每次启动时都必须打开两个 LUKS 容器,而不是只打开一个。
您还可以尝试移动分区,gparted
而不是在终端中手动执行此操作。我自己从未使用过该程序,所以我不知道它处理 LUKS 容器等的效果如何。