我正在尝试调整 Linux 机器上的 Fat 32 分区的大小。以下是系统规格。
- 这不是 PC,因此基于 UI 的工具不适用。
- 我正在尝试调整大小的内存分区已经以文件形式保存了数据。我不能丢失它们。
- 我正在尝试将分区缩小到仅使用的空间,并将剩余空间移动到另一个分区。
- 最好不要重新启动系统,卸载分区就可以了。
编辑:备份此分区的数据不是我想要的。我正在尝试看看是否有一种方法可以尝试而不丢失数据。这更像是一项分析,而不是任务。
我到目前为止尝试过的方法:尝试使用 parted 工具,因为 gparted 需要 UI。尽管我能够缩小此分区,但由于文件碎片,它会导致不必要的问题。例如,缩小后,当我运行文件系统检查时,我收到一些文件未找到链之类的错误。
我不能使用像 resizee2fs 这样的工具,因为它只支持 ext 文件系统(如果我错了请纠正我)。
我尝试使用工具 fatresize,尽管我能够成功地将它安装在我的 debian 中,但我无法获得可安装在 arm 上的东西,无论我得到什么链接,都会在第 1 行语句本身上抛出一个错误。
有人能帮助我提供任何他们能提供的信息吗?
答案1
fat32 部分调整大小
笔记:首先,备份您的数据,以防万一。
将 sda1 从 28G 调整到 10GB 的测试。
0. 原始尺寸
//检查分区大小
ubuntu$ sudo mount /dev/sda1 /media/chen/test
ubuntu$ lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.9G 0 disk
└─sda1 8:1 1 28.9G 0 part /media/chen/test
//检查文件系统大小
sudo fatresize -i /dev/sdXX
1. 更改 fs: fatresize
ubuntu$ sudo fatresize /dev/sda1 -s 10G -p -v
fatresize 1.0.2 (06/16/18)
.Error: Partition /dev/sda1 is being used. You must unmount it before you modify it with Parted.
ubuntu$ sudo umount /dev/sda1
ubuntu$ sudo fatresize /dev/sda1 -s 10240M -p -v
fatresize 1.0.2 (06/16/18)
.FAT: fat32
Size: 30985420800
Min size: 2483422208
Max size: 30989615104
笔记
// gparted 似乎不会改变 fs 大小,如果没有这个步骤,将会得到一个损坏的 fs,提示:fs 大于卷:
ubuntu$ sudo dosfsck /dev/sda1
fsck.fat 4.1 (2017-01-24)
Seek to 30985420288:Invalid argument
ubuntu$ sudo fatresize /dev/sda1 -s 9G -p -v
fatresize 1.0.2 (06/16/18)
.Error: The file system is bigger than its volume!
2. 更改分区:gparted 或 partx
在 gparted GUI 中调整 sda1 部分大小 // partx cli 也可以执行此操作。
ubuntu$ lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.9G 0 disk
└─sda1 8:1 1 10G 0 part
ubuntu$ sudo blkid /dev/sda*
/dev/sda: PTUUID="d45b4904" PTTYPE="dos"
/dev/sda1: UUID="0403-0201" TYPE="vfat" PARTUUID="d45b4904-01"
3. 检查结果
ubuntu$ sudo mount /dev/sda1 /media/chen/test
ubuntu$ df -h /media/chen/test
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 10G 2.4G 7.7G 24% /media/chen/test
ubuntu$ sudo dosfsck /dev/sda1
...
更新1:
似乎 gparted 将在步骤 1 中调整 fat fs 的大小。
// 但如果 fs 已安装,它可能会失败,但不会暂停
这是正常的日志和结果:
答案2
好吧,首先,如果您“已经拥有文件形式的数据。我不能丢失它们”,那么您的第一步就是在做任何其他事情之前备份它们。
调整分区大小和移动分区通常不会导致数据丢失,如果其他方法都失败了,你几乎总是可以使用 photorec 恢复文件 -http://www.cgsecurity.org/wiki/PhotoRec- 这样做很痛苦。
其次,您无法调整正在使用的分区的大小或移动它们。这是人们建议您从实时 USB 执行这些操作的主要原因。
因此,无论如何,如果不启动到实时 USB,您就无法移动或调整根分区的大小(添加到 LVM 是一种例外)。
只要相关分区未使用(即未挂载),您就可以移动它们并调整其大小:
看如何在不使用服务器上的 GUI 的情况下使用命令行调整分区大小?
否则,您的问题可能会被关闭,因为:
你正在运行 Debian
缺乏信息-您没有发布您的分区方案,告诉我们您想要移动什么,安装了哪些分区,以及您收到了什么命令和错误消息。
答案3
你最好将数据以文件形式复制到安全的地方(如果您愿意,可以将其称为备份),但在这种情况下也是一个临时位置,因为我认为您必须接受无法使用 Linux 工具缩小 FAT 文件系统的事实。您可能能够使用 Windows 工具来做到这一点(FAT32 是 Microsoft 文件系统。)
因此,将数据以文件形式复制到安全的地方后,您可以
从另一个驱动器启动并卸载此驱动器中您想要更改的所有分区
编辑分区(最简单的方法是删除 FAT32 分区并创建具有所需大小的新分区。
在新分区中创建 FAT32 文件系统
对分区表做其他修改...
将文件从安全的地方复制到新的 FAT32 分区。