linux 在线扩inode,Ubuntu 18.04 磁盘根目录在线扩容 & 修改分区 inode 数量

总计 1,199 阅读, 今天 1 阅读

Ubuntu 作为服务器系统使用的时候,系统盘的空间可能并不是很充裕,apt apt 着,根目录就满了。诚然,增加磁盘 / 分区并挂载是一个方案,但并不能解决所有问题(例如 apt)。同时,一些跑在云平台上的服务器并没有很好的离线操作磁盘的手段,这时候在线扩容就显得极为必要了。

数据无价!对磁盘进行任何操作前,请务必做好备份!

1. 磁盘根目录在线扩容

操作环境:Proxmox VE 虚拟化 / Ubuntu 18.04.5 LTS / GPT 分区表 / ext4 分区

1.1 增大物理磁盘容量

这部分没什么好说的,虚拟机就在设置里改,云平台就在对应的平台修改。修改好之后 Ubuntu 应该就可以直接识别到新的容量了。

1.2 将容量合并进分区

首先运行  fdisk -l  命令查看磁盘容量是否被识别:

57bf7437a13247318b7d90e04178f884.png

从上图可以看到,磁盘容量已被正确识别为 64GiB,但分区表记录的磁盘容量仍为扩容前的 40GiB(见红色提示,错误已被识别到),分区大小也是同样的 40G。

1.2 修复分区表

运行  parted -l  查看分区情况。

parted 会立即提示磁盘的空间并没有被全部使用,这里输入 Fix 后回车,修复一下 GPT 分区表。

245c1916bedce3aca4c7386c73509757.png

从上图中已经可以看到,分区表记录的磁盘容量已经正常。

1.3 扩容分区

现在就可以将空闲的磁盘容量合并到分区里了,这里利用界面和操作都更加友好的 cfdisk 来进行操作。

按上下键选中要扩容的分区,再按左右键选择 Resize 操作,回车。cfdisk 应该会自动填写此分区与未分配空间的总容量,也可以自己输入扩容后的大小,回车即可。

1ce62e66c196f21ce62240600725a6ef.png

下图中的 sda2 分区已经变为 64G,分区扩容完毕。但此时的所有操作仅在内存中完成,我们需要选择 Write 来将更改保存到分区表。写入后退出 cfdisk。

e2ebb74258166dbc8c969f2084f4faf6.png

再次执行 fdisk -l ,可见分区容量已变为 64G。

1.4 扩容文件系统

此时扩容并未结束,因为文件系统记录的分区容量仍为 40G,我们需要让文件系统知道分区已被扩容。

ff5700646ada7ffc269ad4f02d76c4d3.png

这里需要用到 resize2fs,以我的磁盘 sda2 为例,执行以下命令:

resize2fs -p /dev/sda2

49746fa2d887e1d5377062aecf509105.png

等待操作完成即可。根据上图提示,我们已经完成了对文件系统的在线扩容。

2. 修改磁盘 inode

对于 ext4 文件系统,inode 会在格式化时被写死,若要修改必须重新格式化,丢失所有数据,请务必注意。xfs 等文件系统提供 inode 的动态扩展功能。

2.1 查看磁盘 inode 情况

运行  df -i 查看各个分区的 inode 使用情况。

b6cf0a70fd01160a231a71e5253972e9.png

从上图可以看到我的 sdc1 分区已经用尽了所有 4,194,304 个 inode,此时表现为无法写入任何数据,提示磁盘已满(即使仍有可用空间)。

2.2 重新格式化分区

在格式化分区的时候,可以利用-N 参数指定 inode 数量。

以格式化 sdb1 为具有 16,777,216 个 inode 的 ext4 分区为例,执行以下命令:

mkfs.ext4 /dev/sdb1 -N 16777216

mkfs 会提示磁盘已存在格式化后的文件系统,确认后等待格式化完成即可。

0203ad1fab0003bc5eef0fa2b47c61c0.png

2.3 检查 inode 数量

运行以下命令:

dump2fs -h /dev/sdb1 | grep node

结果如下图,可以看到 Inode count 一项已经变为我们指定的值。

856adb81e1b4dd6a6f017815dfbe4e68.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,inode是一个关键的概念,它用于存储文件和目录的元数据信息,包括文件类型、权限和所有者等。每个文件和目录都有一个对应的inode。 当我们在Linux系统中使用ext2、ext3或ext4等文件系统时,每个文件系统都有固定数量的inode分配给文件和目录。这意味着当inode被用尽时,即使文件系统的可用空间仍然存在,也无法创建新的文件或目录。 如果我们发现在Linux系统中inode的使用量已经接近或达到上限,我们需要扩容inode以支持更多的文件和目录。 要扩容inode,可以按照以下步骤进行操作: 1. 确定文件系统类型:使用命令`df -T`查看文件系统类型,通常使用ext2、ext3或ext4。 2. 创建新的文件系统:首先,我们需要创建一个新的文件系统,可以在存在空闲空间的磁盘分区上创建。使用命令`mkfs -t <文件系统类型> -N <新inode数量> <设备>`创建一个具有指定inode数量的新文件系统。 3. 挂载新的文件系统:将新的文件系统挂载到系统中的某个目录,可以使用命令`mount <设备> <挂载点>`来实现。注意,这一步需要确保挂载点不能为空目录。 4. 迁移数据:将原有文件系统中的数据迁移到新的文件系统中,可以使用命令`cp -r <原始目录>/* <新挂载点>`来实现。需要确保原始目录中所有的数据都迁移完毕。 5. 更新挂载配置:编辑`/etc/fstab`文件,将原始文件系统挂载点对应的行修改为新的文件系统的挂载点。 6. 重启系统:在完成上述步骤后,可以选择重启系统以使更改生效。 通过以上步骤,我们可以在Linux系统中扩容inode,以支持更多的文件和目录。但需要注意的是,在创建新的文件系统和迁移数据时,务必谨慎操作,以防止不可恢复的数据损坏或丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值