创建文件系统时“inode_size (128) * inodes_count (0) 对于具有 0 个块的文件系统来说太大”

创建文件系统时“inode_size (128) * inodes_count (0) 对于具有 0 个块的文件系统来说太大”

我的分区表如下所示:

 Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    32505855    16251904   83  Linux
/dev/sda2        32505856    33554431      524288   83  Linux

当我在 上放置文件系统时sda2,它抛出了以下错误:

sudo mkfs -t ext4 /dev/sda2
mke2fs 1.42.9 (4-Feb-2014)
mkfs.ext4: inode_size (128) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i) or lower inode count (-N).

我尝试了扩展分区和主分区,但出现了相同的错误。我有 Ubuntu 14.04TLS。该怎么办?

答案1

1:它不必对主/扩展/逻辑分区执行任何操作。

2:我想你想说的是“逻辑”分区而不是“扩展”。

3:mkfs 认为您的分区大小为 0 字节。这是非常肯定的,因为内核在重新分区后无法更新分区表。编辑分区表后,您是否收到一些需要重新启动的警告?

在Linux上,有两个不同的分区表:一个位于硬盘的第0块。并且在内核内存中也有一个。您可以使用命令读取第一个fdisk -l /dev/sda。第二个你可以用cat /proc/partitions命令来阅读。这两者需要同步,但这并不总是可能的。例如,您无法更改当前使用的分区的限制。在这种情况下,内核分区表不会改变。

您可以使用命令让内核重新读取磁盘分区表blockdev --rereadpt /dev/sda。大多数分区工具在将新更改的分区表写入磁盘后都会执行此命令。

问题是只有较新的 Linux 内核才能重新读取已用硬盘的分区表。从这个角度来看,如果硬盘上有一个简单分区被工具或安装点使用,或者它是活动交换分区,则该硬盘被视为“已使用”。

即使这些较新的内核也无法更改当前正在使用的分区的限制。

我认为,您的根系统已打开/dev/sda,因此您需要在重新分区后重新启动。

答案2

你必须运行partprobe更新表的命令

答案3

在 RHEL8 中,我创建了扩展为“Linux”类型的新分区。

我曾经mkfs.ext4格式化过它,并且partprobepartx /dev/sda

经过多次重新启动后,该分区仍然存在。

答案4

cat /proc/partitions将导致

major minor  #blocks  name

   8        0  292968750 sda
   8        1    1048576 sda1
   8        2   70637568 sda2
   **8        3          1 sda3**
   8       16  292968750 sdb
   8       17  143373716 sdb1
 253        0   63463424 dm-0
 253        1    7168000 dm-1
  11        0    1048575 sr0

我照做了,partprobe然后就跑了cat /proc/partitions

正在上映

major minor  #blocks  name

   8        0  292968750 sda
   8        1    1048576 sda1
   8        2   70637568 sda2
   8        3  221281582 sda3
   8       16  292968750 sdb
   8       17  143373716 sdb1
 253        0   63463424 dm-0
 253        1    7168000 dm-1
  11        0    1048575 sr0

经过以上结果。我成功运行了下面的命令。

mkfs -t ext4 /dev/sda3

相关内容