本文分享自天翼云开发者社区《inode节点扩容》,作者:2****m
1. inode 概述
在 Linux 系统中,每个文件和目录都有一个对应的 inode 节点,用于存储文件或目录的元数据信息,如:文件大小、创建时间、修改时间、权限等。当文件或目录被创建时,系统会为其分配一个 inode 节点。然而,当系统中的 inode 节点数量达到一定限制时,就会出现 inode 节点满的情况。
inode 节点满主要由于 文件数量过多 和 硬盘空间不足 导致的。
2. inode 扩容方式
1) 增加磁盘空间
挂载一块磁盘空间更大的硬盘(inode 节点数与磁盘大小成正比)。
# 创建挂载目录
mkdir -p /data
# 挂载磁盘(xfs)
parted /dev/sdb -s mklabel gpt
parted /dev/sdb -s -- mkpart primary 0% 100%
mkfs.xfs -f /dev/sdb1
echo "UUID=$(/sbin/blkid | grep sdb | awk -F \" '{print $2}') /data xfs defaults 0 0" >> /etc/fstab
mount -a
lsblk
# 挂载磁盘(ext4)
parted /dev/sdb -s mklabel gpt
parted /dev/sdb -s -- mkpart primary 0% 100%
mkfs.ext4 /dev/sdb1
echo "UUID=$(/sbin/blkid | grep sdb | awk -F \" '{print $2}') /data ext4 defaults 0 0" >> /etc/fstab
mount -a
lsblk
复制代码
2) 初始化磁盘时指定 inode 大小
# 创建挂载目录
mkdir -p /data
# 挂载磁盘(xfs)
parted /dev/sdb -s mklabel gpt
parted /dev/sdb -s -- mkpart primary 0% 100%
# maxpct表示可用于分配inode的空间百分比
mkfs.xfs -i maxpct=50 -f /dev/sdb1
echo "UUID=$(/sbin/blkid | grep sdb | awk -F \" '{print $2}') /data xfs defaults 0 0" >> /etc/fstab
mount -a
lsblk
# 挂载磁盘(ext4)
parted /dev/sdb -s mklabel gpt
parted /dev/sdb -s -- mkpart primary 0% 100%
# N 指定inode数
mkfs.ext4 -N 10000000 /dev/sdb1
echo "UUID=$(/sbin/blkid | grep sdb | awk -F \" '{print $2}') /data ext4 defaults 0 0" >> /etc/fstab
mount -a
lsblk
复制代码
3) 修改 inode 数量占用百分比(仅适用于 xfs)
# 查看xfs文件系统信息
xfs_info /dev/sdb1
# 修改inode数量占用百分比(m的值越大,inode数越大)
xfs_growfs -m 30 /dev/sdb1
复制代码
评论