如何在 OpenVZ 和 Xen VPS 上增加 inode

前几天有位客户问我们 “能不能增加 inode?”,刚开始误解了客户的意思,以为客户问的是 “能不能增加文件数限制?”,因为 inode 是在格式化分区和创建文件系统的时候决定的,不是在运行时可以更改的内核或系统参数,所以很好奇客户为什么会这么问。接着客户问到 “我在 BurstNet 的 VPS 上可以免费增加 inode,为什么你们的 VPS 不能?”,所以 VPSee 在这里有必要解释一下 OpenVZ 和 Xen 在对待 inode 上的区别,以免大家误认为 OpenVZ 很强大。OpenVZ VPS 是一个虚拟环境(容器),与母机(host)和邻居(同母机的其他 VPS)分享计算资源,有较多的限制,OpenVZ VPS 不能使用自己的内核、不能自己添加或卸载内核模块(所以需要服务商介入加载 tun 模块后才能用 vpn)、不拥有自己的文件系统、甚至 inode 这种资源也需要服务商授权来分配,简单的说母机上有什么就只能用什么(除了可以自己安装程序以外)。在 OpenVZ 上 inode 已经由服务商在安装母机(格式化)的时候就决定了系统的总 inode,然后根据每个不同 OpenVZ VPS 的需要来调整 inode 的大小,服务商再打上免费的标签配上一副严肃专业的口气告诉客户这是 “免费” 的,让客户误认为自己占了大便宜。OpenVZ 服务商能监控客户的 “一切” 活动,客户正在运行什么程序、客户的 VPS 还剩下多少内存和硬盘、CPU 状况等。比如,服务商可以通过 vzctl 命令来查看客户 VPS 1 的硬盘和 inode 消耗情况:

# vzctl exec 1 df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs             10G  386M  9.7G   4% /

# vzctl exec 1 df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs            200000   24853  175147   13% /

如果想在 OpenVZ 上增加 inode 的话需要 VPS 服务商的帮助,比如把 VPS 1 的 inode 增加3倍:

# vzctl set 1 --diskinodes $(( 200000*3 )):$(( 220000*3 )) --save
Saved parameters for CT 1

# vzctl exec 1 df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs            600000   24853  575147    5% /

如果想在 Xen 上增加 inode 的话和在独立的 Linux 服务器上增加 inode 是一样的,可以增加硬盘分区的容量、重新格式化分区指定需要的 inode 数目等。VPSee 在这里介绍一个比较简单、不破坏原系统(不用重新格式化硬盘)、不增加 VPS 客户成本(不用购买和增加硬盘容量)的替代办法:可以在自己的 Xen VPS 或 Linux 服务器上创建一个大文件来充当硬盘、用 mke2fs -N 指定 inode 数目并格式化这个硬盘、然后挂载到系统里使用,下面是格式化 vpsee0.img 的 inode 数目为默认值和格式化 vpsee1.img 的 inode 数目为 1572864:

# dd if=/dev/zero bs=1024k count=4096 > vpsee0.img
# dd if=/dev/zero bs=1024k count=4096 > vpsee1.img

# losetup /dev/loop0 vpsee0.img
# losetup /dev/loop1 vpsee1.img

# mke2fs /dev/loop0
# mke2fs -N 1572864 /dev/loop1

# losetup -d /dev/loop0
# losetup -d /dev/loop1

把上面创建好的文件系统(分区)挂载后就可以用 df -i 看到 vpsee1.img 的 inode 比 vpsee0.img 的 inode 扩大了3倍(虽然分区大小是一样的):

# mkdir /mnt0 /mnt1

# mount -o loop vpsee0.img /mnt0
# mount -o loop vpsee1.img /mnt1

# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
...
/tmp/vpsee0.img        524288      11  524277    1% /mnt0
/tmp/vpsee1.img       1572864      11 1572853    1% /mnt1

评论 (1 Comment)

  1. 博主 写的文档 很不错 做过链接 http://hi.baidu.com/xu521huan

发表评论