看到有人说阿里云磁盘还没满就写入不了文件,我对比了一下各家 VPS 的磁盘 inode 数量 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
weisoo
V2EX    云计算

看到有人说阿里云磁盘还没满就写入不了文件,我对比了一下各家 VPS 的磁盘 inode 数量

  •  
  •   weisoo 2015-02-17 11:09:35 +08:00 8398 次点击
    这是一个创建于 3918 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [root@aliyun ~]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/xvda1 1310720 979799 330921 75% /
    tmpfs 187056 1 187055 1% /dev/shm
    /dev/xvdb1 1966080 203565 1762515 11% /mnt
    [root@aliyun ~]# df -lh
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvda1 20G 5.5G 14G 30% /
    tmpfs 947M 0 947M 0% /dev/shm
    /dev/xvdb1 30G 15G 14G 54% /mnt
    首先是阿里云的,请只看系统盘/dev/xvda1,20G空间,只放操作系统,网站文件和数据库等都放其他盘的,居然用了差不多75%的inodes。

    -------------------------------------------

    [root@linode ~]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/xvda 2560896 96768 2464128 4% /
    tmpfs 128290 2139 126151 2% /dev/shm
    [root@linode ~]# df -lh
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvda 20G 4.8G 14G 26% /
    tmpfs 502M 108K 502M 1% /dev/shm
    这是Linode.com的,同样是20G硬盘,inodes数量比阿里云多一倍,并且我网站数据也放这个磁盘,只用了4%

    ---------------------------------------------------

    [root@vr ~]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/xvda3 4817280 399480 4417800 9% /
    /dev/xvda1 30120 37 30083 1% /boot
    tmpfs 128593 1 128592 1% /dev/shm
    [root@vr ~]# df -lh
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvda3 19G 11G 7.6G 59% /
    /dev/xvda1 114M 13M 96M 12% /boot
    tmpfs 503M 0 503M 0% /dev/shm
    这是vr.org的vps,同样是20G硬盘,inodes数量是阿里云的3倍多

    --------------------------------------

    结论:如果你的文件数量多,还是别用阿里云了
    21 条回复    2015-02-17 18:51:03 +08:00
    myliyifei
        1
    myliyifei  
       2015-02-17 11:13:37 +08:00
    inode多少为什么是由VPS商决定?
    wzxjohn
        2
    wzxjohn  
       2015-02-17 11:23:48 +08:00
    @myliyifei 因为楼主这是典型的一知半解。。。
    mahone3297
        3
    mahone3297  
       2015-02-17 11:30:02 +08:00
    @wzxjohn 请详细说说,让我学习学习。。。
    extreme
        4
    extreme  
       2015-02-17 11:39:08 +08:00
    @mahone3297 半虚拟化和全虚拟化的磁盘INODES都是可以自定义的,因为你有权限操作储存设备文件。
    不过半虚拟化要更改“/”的确有点难。
    当然也不是没有解决办法,别忘了有/dev/loop[0-9]+。

    恐怕仅有OpenVZ那类,类chroot的可以真正的限制你的INODES了……
    az
        5
    az  
       2015-02-17 11:42:26 +08:00
    有点道理,当初缓存、系统一个盘的收获,阿里云还有30多G剩余间,就不可以写入任何文件了。
    hjc4869
        6
    hjc4869  
       2015-02-17 11:42:59 +08:00
    @myliyifei
    @wzxjohn
    openvz和xen确实是又vps商决定的吧。。
    az
        7
    az  
       2015-02-17 11:43:08 +08:00
    @wzxjohn 那Aliyun的inode要怎么解决呢?
    ryd994
        8
    ryd994  
       2015-02-17 11:58:56 +08:00
    tune2fs吧
    mahone3297
        9
    mahone3297  
       2015-02-17 12:12:46 +08:00
    @extreme 为什么要限制inode?为了什么?
    leo108
        10
    leo108  
       2015-02-17 12:12:56 +08:00
    好神奇啊,我这边阿里云的系统盘(centos6.6)装了一堆东西(ganglia memcache php),inode才用了167795,占13%,楼主用的啥系统要用那么多inode。inode总数和楼主是一样的1310720。
    msg7086
        11
    msg7086  
       2015-02-17 12:14:24 +08:00
    openvz大多是与母机共享磁盘inode数量,遇上无良的商家,限死你就完了。
    至于kvm机器,完全是自己定义的。
    甚至是不同的文件系统默认的inode都不一样。
    比如你试试xfs,inode上限爆表。
    vimutt
        12
    vimutt  
       2015-02-17 12:17:27 +08:00
    @leo108
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/xvda1 1310720 88228 1222492 7% /
    msg7086
        13
    msg7086  
       2015-02-17 12:17:28 +08:00
    @mahone3297 我没有用过你说的那个阿里云,但是我看介绍似乎是用的KVM。
    如果是KVM的话,那inode设定就应该是你自己的责任了。
    leo108
        14
    leo108  
       2015-02-17 12:20:14 +08:00
    一个比较合理的解释是楼主的某个程序在xvda1盘创建了大量的小文件并删除,但是这个程序却没有关闭打开的文件,这就导致文件已删除但仍然占用inode和磁盘空间的情况。
    azuis
        15
    azuis  
       2015-02-17 12:20:24 +08:00
    inode 数量是格式化的时候自定义的....和你用什么云有什么关系。
    msg7086
        16
    msg7086  
       2015-02-17 12:33:26 +08:00
    实地帮你测试一下。

    $ dd if=/dev/zero of=20g bs=100M seek=200 count=0
    记录了0+0 的读入
    记录了0+0 的写出
    0字节(0 B)已复制,0.000151916 秒,0.0 kB/秒

    $ mkfs.ext3 20g
    mke2fs 1.42.12 (29-Aug-2014)
    Discarding device blocks: 完成
    Creating filesystem with 5120000 4k blocks and 1281120 inodes
    Filesystem UUID: cb7bdc48-63af-4a86-baad-9950ed619d0d
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000

    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成

    $ mount 20g 20

    $ df -hTi 20
    文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
    /dev/loop0 ext3 1.3M 11 1.3M 1% /home/msg7086/20

    和你的测试结果完全一致。
    然后手动指定inode数量:

    $ mkfs.ext3 -N 4096 20g
    mke2fs 1.42.12 (29-Aug-2014)
    Discarding device blocks: 完成
    Creating filesystem with 5120000 4k blocks and 5024 inodes
    Filesystem UUID: c26c21b6-18a6-4d82-bd9f-e1fc90926b51
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000

    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成

    $ df -hTi 20
    文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
    /dev/loop0 ext3 5.0K 11 4.9K 1% /home/msg7086/20

    然后我们换个文件系统,比如xfs。

    $ mkfs.xfs 20g
    meta-data=20g isize=256 agcount=4, agsize=1280000 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=0 finobt=0
    data = bsize=4096 blocks=5120000, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=0
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0

    $ df -hTi 20
    文件系统 类型 Inode 已用(I) 可用(I) 已用(I)% 挂载点
    /dev/loop0 xfs 20M 3 20M 1% /home/msg7086/20

    所以,结论就是你其实不懂你自己在做什么。
    extreme
        17
    extreme  
       2015-02-17 12:38:15 +08:00
    @mahone3297 不能说是限制吧,是由EXT这种格式的特点,数据不是按顺序写入到BLOCK里面的,需要在INODES里面记录BLOCK的位置,当然不仅是BLOCK的位置信息,还有其它的。
    更多的你通过搜索引擎了解吧,当年看了书,就记得大概的。
    lacrimosa
        18
    lacrimosa  
       2015-02-17 12:57:17 +08:00 via Android
    格式化分区可以自己设这个数量。我设置的数量都在千万以上
    likuku
        19
    likuku  
       2015-02-17 15:29:55 +08:00
    @msg7086 reiserfs 直接没有inode这个概念了...无限
    cst4you
        20
    cst4you  
       2015-02-17 17:33:46 +08:00
    root@hidden:~# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    rootfs 1310720 75915 1234805 6% /
    udev 126897 354 126543 1% /dev
    tmpfs 128383 275 128108 1% /run
    /dev/disk/by-uuid/edb4d685-8d7d-4dab-975b-c233a6733d2c 1310720 75915 1234805 6% /
    tmpfs 128383 2 128381 1% /run/lock
    tmpfs 128383 2 128381 1% /run/shm
    /dev/sdb1 104857600 1301079 103556521 2%

    青云默认的系统盘也小, 刚好我的项目有大量<5K的小文件, 一下就爆炸了, 被迫开了个100G的磁盘...钱一下子就上去了.
    kn007
        21
    kn007  
       2015-02-17 18:51:03 +08:00
    [email protected]:~
    > df -lh
    Filesystem Size Used Avail Use% Mounted on
    /dev/vda1 79G 33G 42G 44% /
    tmpfs 1.9G 76K 1.9G 1% /dev/shm
    tmpfs 1.9G 201M 1.7G 11% /tmp

    [email protected]:~
    > df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/vda1 5189760 364107 4825653 8% /
    tmpfs 490321 9 490312 1% /dev/shm
    tmpfs 490321 377 489944 1% /tmp
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2485 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:34 PVG 23:34 LAX 07:34 JFK 10:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86