fat32 部分调整大小

fat32 部分调整大小

我正在尝试调整 Linux 机器上的 Fat 32 分区的大小。以下是系统规格。

  1. 这不是 PC,因此基于 UI 的工具不适用。
  2. 我正在尝试调整大小的内存分区已经以文件形式保存了数据。我不能丢失它们。
  3. 我正在尝试将分区缩小到仅使用的空间,并将剩余空间移动到另一个分区。
  4. 最好不要重新启动系统,卸载分区就可以了。

编辑:备份此分区的数据不是我想要的。我正在尝试看看是否有一种方法可以尝试而不丢失数据。这更像是一项分析,而不是任务。

我到目前为止尝试过的方法:尝试使用 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 的情况下使用命令行调整分区大小?

否则,您的问题可能会被关闭,因为:

  1. 你正在运行 Debian

  2. 缺乏信息-您没有发布您的分区方案,告诉我们您想要移动什么,安装了哪些分区,以及您收到了什么命令和错误消息。

答案3

你最好将数据以文件形式复制到安全的地方(如果您愿意,可以将其称为备份),但在这种情况下也是一个临时位置,因为我认为您必须接受无法使用 Linux 工具缩小 FAT 文件系统的事实。您可能能够使用 Windows 工具来做到这一点(FAT32 是 Microsoft 文件系统。)

因此,将数据以文件形式复制到安全的地方后,您可以

  • 从另一个驱动器启动并卸载此驱动器中您想要更改的所有分区

  • 编辑分区(最简单的方法是删除 FAT32 分区并创建具有所需大小的新分区。

  • 在新分区中创建 FAT32 文件系统

  • 对分区表做其他修改...

  • 将文件从安全的地方复制到新的 FAT32 分区。

相关内容