Yii2:减少vServer上的inode使用

时间:2016-02-27 12:29:25

标签: php linux yii2 inode

在我的Linux vServer上,inode是有限的(例如250.000)。我发现Yii2安装需要相当多的inode。 inode的数量大致是文件和目录的数量。

可以使用

确定当前目录及其子目录中使用的inode数
find .  -xdev -printf '%h\n' | sort | uniq -c | awk '{total = total + $1}END{print total}'

我的Yii2项目的平均值约为30k inode。 ./web/assets./runtime./web/images个文件夹中的文件数量不多。大多数inode都在./vendor目录中使用。

所以我的Yii2项目数量限制为8个项目。

如何减少Yii2项目中的inode使用?

1 个答案:

答案 0 :(得分:1)

假设您在Linux vServer中拥有root权限,则可以将新文件系统嵌入到单个文件中并进行挂载。这样的文件在父文件系统中只占用一个inode,而图像中的inode数量由你决定。

# dd if=/dev/zero of=myfs bs=1MB count=512
512+0 records in
512+0 records out
512000000 bytes (512 MB) copied, 4.10134 s, 125 MB/s
# losetup --find --show `pwd`/myfs
/dev/loop0
# mkfs -t ext4 -i 1024 /dev/loop0
mke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done
Creating filesystem with 500000 1k blocks and 500464 inodes
Filesystem UUID: fef5ab29-8991-4f99-8a27-80b4d11b3133
Superblock backups stored on blocks:
        8177, 24529, 40881, 57233, 73585, 204401, 220753, 400625

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

# mount /dev/loop0 /mnt
# df -i | sed -n '1p;/mnt/p'
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/loop0     500464     11 500453    1% /mnt

在这里,我选择了ext4并将每个inode的字节数-i设置为其最小值,为ext4上的512MiB提供了最大的inode计数500464。

你可以用这种方式制作多个文件系统,每个项目一个,或者用更多的inode制作更大的文件系统。

要在下次重新启动时安装图像,请在/etc/fstab添加一行。