1
myliyifei 2015-02-17 11:13:37 +08:00
inode多少为什么是由VPS商决定?
|
3
mahone3297 2015-02-17 11:30:02 +08:00
@wzxjohn 请详细说说,让我学习学习。。。
|
4
extreme 2015-02-17 11:39:08 +08:00
@mahone3297 半虚拟化和全虚拟化的磁盘INODES都是可以自定义的,因为你有权限操作储存设备文件。
不过半虚拟化要更改“/”的确有点难。 当然也不是没有解决办法,别忘了有/dev/loop[0-9]+。 恐怕仅有OpenVZ那类,类chroot的可以真正的限制你的INODES了…… |
5
az 2015-02-17 11:42:26 +08:00
有点道理,当初缓存、系统一个盘的收获,阿里云还有30多G剩余空间,就不可以写入任何文件了。
|
8
ryd994 2015-02-17 11:58:56 +08:00
tune2fs吧
|
9
mahone3297 2015-02-17 12:12:46 +08:00
@extreme 为什么要限制inode?为了什么?
|
10
leo108 2015-02-17 12:12:56 +08:00
好神奇啊,我这边阿里云的系统盘(centos6.6)装了一堆东西(ganglia memcache php),inode才用了167795,占13%,楼主用的啥系统要用那么多inode。inode总数和楼主是一样的1310720。
|
11
msg7086 2015-02-17 12:14:24 +08:00
openvz大多是与母机共享磁盘inode数量,遇上无良的商家,限死你就完了。
至于kvm机器,完全是自己定义的。 甚至是不同的文件系统默认的inode都不一样。 比如你试试xfs,inode上限爆表。 |
12
vimutt 2015-02-17 12:17:27 +08:00
|
13
msg7086 2015-02-17 12:17:28 +08:00
@mahone3297 我没有用过你说的那个阿里云,但是我看介绍似乎是用的KVM。
如果是KVM的话,那inode设定就应该是你自己的责任了。 |
14
leo108 2015-02-17 12:20:14 +08:00
一个比较合理的解释是楼主的某个程序在xvda1盘创建了大量的小文件并删除,但是这个程序却没有关闭打开的文件,这就导致文件已删除但仍然占用inode和磁盘空间的情况。
|
15
azuis 2015-02-17 12:20:24 +08:00
inode 数量是格式化的时候自定义的....和你用什么云有什么关系。
|
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 所以,结论就是你其实不懂你自己在做什么。 |
17
extreme 2015-02-17 12:38:15 +08:00
@mahone3297 不能说是限制吧,是由EXT这种格式的特点,数据不是按顺序写入到BLOCK里面的,需要在INODES里面记录BLOCK的位置,当然不仅是BLOCK的位置信息,还有其它的。
更多的你通过搜索引擎了解吧,当年看了书,就记得大概的。 |
18
lacrimosa 2015-02-17 12:57:17 +08:00 via Android
格式化分区可以自己设这个数量。我设置的数量都在千万以上
|
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的磁盘...钱一下子就上去了. |
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 |