256MB RAMおよび4GBeMMCのBBBベースのカスタムボードがあります。
以下のコードを使用してパーティションを作成しました。
parted --script -a optimal /dev/mmcblk0 \
mklabel gpt \
mkpart primary 128KiB 255KiB \
mkpart primary 256KiB 383KiB \
mkpart primary 384KiB 511KiB \
mkpart primary 1MiB 2MiB \
mkpart primary 2MiB 3MiB \
mkpart primary 3MiB 4MiB \
mkpart primary 4MiB 5MiB \
mkpart primary 5MiB 10MiB \
mkpart primary 10MiB 15MiB \
mkpart primary 15MiB 20MiB \
mkpart primary 20MiB 21MiB \
mkpart primary 21MiB 22MiB \
mkpart primary 22MiB 23MiB \
mkpart primary 23MiB 28MiB \
mkpart primary ext4 28MiB 528MiB \
mkpart primary ext4 528MiB 1028MiB \
mkpart primary ext4 1028MiB 1128MiB \
mkpart primary ext4 1128MiB 1188MiB \
mkpart primary ext4 1188MiB 2212MiB \
mkpart primary ext4 2212MiB 2603MiB \
mkpart primary ext4 2603MiB 2639MiB \
mkpart primary ext4 2639MiB 100% \
次に、以下のコマンドを使用してファイルシステムパーティションをフォーマットします
mkfs.ext4 -j -L $LABEL $PARTITION
Tune2fsを使用してファイルシステムのブロックサイズを読み取ると、1GiB未満のパーティションと1GiBパーティション以上のパーティションで異なる値が表示されます。
# tune2fs -l /dev/mmcblk0p15 | grep Block
Block count: 512000
Block size: 1024
Blocks per group: 8192
#
#
# tune2fs -l /dev/mmcblk0p16 | grep Block
Block count: 512000
Block size: 1024
Blocks per group: 8192
#
#
# tune2fs -l /dev/mmcblk0p19 | grep Block
Block count: 262144
Block size: 4096
Blocks per group: 32768
# tune2fs -l /dev/mmcblk0p22 | grep Block
Block count: 1191936
Block size: 4096
Blocks per group: 32768
ブロックサイズが異なる理由を理解できません。さらに、mke2fs.confはすべてのデフォルト値のみを持ち、ブロックサイズは4096と記載されています。
[defaults]
base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
default_mntopts = acl,user_xattr
enable_periodic_fsck = 0
blocksize = 4096
inode_size = 256
inode_ratio = 16384
[fs_types]
ext3 = {
features = has_journal
}
ext4 = {
features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
auto_64-bit_support = 1
inode_size = 256
}
ext4dev = {
features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
inode_size = 256
options = test_fs=1
}
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
floppy = {
blocksize = 1024
inode_size = 128
inode_ratio = 8192
}
big = {
inode_ratio = 32768
}
huge = {
inode_ratio = 65536
}
news = {
inode_ratio = 4096
}
largefile = {
inode_ratio = 1048576
blocksize = -1
}
largefile4 = {
inode_ratio = 4194304
blocksize = -1
}
hurd = {
blocksize = 4096
inode_size = 128
}
パーティションごとにブロックサイズが異なる理由を誰かがドキュメント/ヒントで説明/提案できますか?
@derobertがコメントで述べたように。
mkfs.ext4/mke2fsは_/etc/mke2fs.conf
_を参照し、パーティションをフォーマットします。
_mke2fs
_は、明示的に言及されていない場合、パーティションサイズに基づいてブロックサイズを選択します。 mke2fs manページ の_-b block-size
_と_-T usage-type
_を同じように読んでください。
したがって、パーティションサイズが512MB未満の場合、_mkfs.ext4
_は_mke2fs.conf
_ファイルから次の設定を使用してsmall
としてフォーマットします。
_ small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
_
ただし、パーティションサイズが512MBを超える場合は、_mkfs.ext4
_または_mke2fs
_は、_mke2fs.conf
_ファイルのdefaults
を使用してパーティションをフォーマットします。
_[defaults]
base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
default_mntopts = acl,user_xattr
enable_periodic_fsck = 0
blocksize = 4096
inode_size = 256
inode_ratio = 16384
_
それが私にとって異なるパーティションで異なるブロックサイズを引き起こしていたものです。
もう1つ注意してください。次のようにフォーマットを計算した後に取得するiノードの総数を取得するには、
_Total number of inodes = partition size / inode_ration
e.g.
for 500MB partition
total number of inodes = (500 * 1024 * 1024) / 4096
= 128000
_
注:上記で示した計算では、_tune2fs
_で示される実際の値は_Inode count: 128016
_ほぼ一致しますが正確ではありません。