在我的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使用?
答案 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
添加一行。