如何更改 EXT3 分区上的 inode 大小?

如何更改 EXT3 分区上的 inode 大小?

设置:

对于我的双启动笔记本电脑,我购买了一个大硬盘作为外部 USB 解决方案。我决定使用 EXT3 作为文件系统,考虑使用Ext2IFS从 Windows 访问驱动器(就像我已经对其他各种外部设备所做的那样)。

问题:

Linux 是我首选的操作系统;因此,在我尝试从 Windows 访问驱动器之前,驱动器已经占满 2/3。直到那时我才意识到我犯了一个严重的错误 - 我忘记将 inode 大小限制为 128。Linux 发行版使用的默认值是 256,Ext2IFS 无法访问。

该驱动器的容量为 1 TB,是目前为止我最大的存储空间,如果容量达到 2/3,则备份会非常不方便。

问题:

是否可以更改 EXT3 分区上的 inode 大小(而不会丢失数据)?我不在乎这是否需要几个小时。


附言:

David Spillett 完美地回答了最初的问题——“如何更改 EXT3 分区上的 inode 大小?”。

潜在的然而,问题是“如何从 Windows 访问 EXT3 分区我使用 Linux 的 inode 大小默认值创建了它?”。

答案是Ext2Fsd,这是适用于 Windows 的 EXT3 驱动程序,不会对较大的 inode 大小产生影响。(但是,它不支持大于 2 TB 的驱动器所需的 GUID 分区表 (GPT)。)

我认为这可能会引起许多关注这个问题的人的兴趣。

答案1

据我所知,您无法就地更改它。您可能无需找到另一个 Tb 驱动器来复制数据,同时通过迂回方法重建文件系统即可做到这一点:

  1. 尽可能缩小当前文件系统,并相应减少分区的长度
  2. 在新释放的空间中添加第二个分区
  3. 安装两个分区,并将尽可能多的内容移至新分区
  4. 再次缩小第一个分区,将新分区移到磁盘下方,并将其扩大到填满驱动器,然后重复步骤 3
  5. 您可能需要重复第 4 步一到两次,具体取决于原始文件系统的容量

fdisk您可以使用和resize2fs相关工具手动完成上述所有操作,也可以使用分开在大多数发行版的存储库中都有提供,并且作为现场 CD.gparted 可能是迄今为止最安全的选择,除非您已经非常熟悉手动工具。

像这些这样的主要文件系统移动/调整大小操作是我总是开始之前做好备份,因为如果出现任何问题,你可能会丧命一切在受影响的文件系统上。因此,如果您非常谨慎,上述内容并不能消除您在重新格式化/重新排列时寻找某个地方来复制数据的需要……但是如果大多数数据是可替换的,通过重新下载音乐/视频内容等,您可以备份最重要的内容,并尝试处理其余内容。

作为重新格式化/重新排列驱动器的替代方案,您可以运行一个小型 Linux VM(使用 vmware 或 vbox),将 USB 驱动器连接到该 VM,并让它通过 Samba 将数据共享到主机(Windows)操作系统。当然,这种方法效率低下且不太方便,但“暂时”可能足够高效,直到您找到更永久的解决方案,例如购买新驱动器来重新格式化并将所有内容移到上面,而且这肯定比对您未备份的数据进行大规模文件系统操作更安全。您不需要为 VM 分配太多资源,我猜 Ubuntu 的服务器安装或 Debian 的基本安装可以在 128Mb 或更少的 RAM 中顺利运行这样的 Samba 共享,并且不需要超过 1 Gb 的磁盘空间(事实上,如果是这样的话,它可能只需要几百 Mb)在主机上。

答案2

您无法改变它,您必须从头开始重新创建文件系统。

来自 man 页面制作文件系统

-I inode-size
    Specify  the  size  of  each  inode  in  bytes.   mke2fs creates
    256-byte inodes by default.
    ...
    It is not possible to change this value
    after the filesystem is created.

相关内容