{{tag>gentoo linux}} # mkfs.ext4 たまにしかやらないからコマンド忘れます。 ## 普通に作る `-L` はなんとなくボリュームラベルを付けているだけです。 ``` # mkfs.ext4 -L home /dev/vdb1 mke2fs 1.43.3 (04-Sep-2016) Creating filesystem with 524278 4k blocks and 131072 inodes Filesystem UUID: da887148-9728-46df-9cfa-4afed5ed62bb Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done ``` ## inode の数を調整して作る gentoo の /usr/portage とかは大体 2GB もあればサイズ的に十分なんですが、とにかくファイル数が多いので普通にファイルシステムを作ると inode が枯渇してしまいます。 とくに inode を指定せずに 2GB のファイルシステムを作るとこんな感じになります。 ``` # df -i /mnt/test Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vdb1 131072 11 131061 1% /mnt/test # df -hT /mnt/test Filesystem Type Size Used Avail Use% Mounted on /dev/vdb1 ext4 2.0G 6.0M 1.9G 1% /mnt/test ``` デフォルトだと 4ブロックごとに1つの inode ブロックを作るらしいです。で、ブロックサイズのデフォルトは 4KB なので、16KB に対して1つの inode ブロックが作成される……らしいです。なので /usr/portage のように、極端に小さなファイルを多く格納するファイルシステムを作成する場合は、`-i` オプションでこの比率をいじってあげると良いです。 ``` mkfs.ext4 -i 4096 -L home /dev/vdb1 mke2fs 1.43.3 (04-Sep-2016) Creating filesystem with 524278 4k blocks and 524288 inodes Filesystem UUID: 6be69ad9-9376-446c-b243-ba9c4aa0d71c Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done ``` `-i` は bytes-per-inode ratio を指定するので、デフォルトで 16384(16K) に対して1つの inode だったものを、`-i 4096` とすることで4096(4K) に対して1つの inode ブロックを持つようにします。こうすると、デフォルトの4倍の inode ブロックが確保できます。 ``` # df -i /mnt/test Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vdb1 524288 11 524277 1% /mnt/test # df -hT /mnt/test Filesystem Type Size Used Avail Use% Mounted on /dev/vdb1 ext4 1.9G 6.0M 1.8G 1% /mnt/test ``` inode ブロックをたくさん確保するので、このファイルシステムで実際に使用できる容量は減りますけどね。