`stat -c '%B' *` とはどういう意味ですか? [コピー]

`stat -c '%B' *` とはどういう意味ですか? [コピー]

stat -c '%B' *各ファイルは同じ番号512を報告します。どういう意味ですか%B?マニュアルを読むことができません。

%B - '%b'によって報告された各ブロックのサイズ(バイト単位)

私のブロックサイズに関連していますか?

$ sudo blockdev --getbsz /dev/sda1
4096

ありがとうございます。

答え1

ファイルシステムを表示する際には、重要な2つの割り当てサイズがあります。ファイルシステムのブロックサイズとディスクのセクタサイズ。ほとんどのSATAドライブ512バイトのセクターがあります。しかし、例外もあります。 4KBセクターのドライブはまれではありません。この情報は次の方法で入手できますhdparm

# hdparm -I /dev/sdb|grep Sector
        Logical/Physical Sector size:           512 bytes

ただし、ファイルシステムブロックにマッピングするときにドライブが十分に大きい場合、512バイトはブロック名を指定するときにかなりのオーバーヘッドを課します(割り当て情報を格納するために必要なメタデータはデータを格納するために使用できないスペース)。通常、ブロックサイズが決定されます。フォーマットプログラムによって自動的に実行されますが、通常は無視できます。たとえば、ext3/4で使用する方法は次のとおりです。次のように:

-T usage-type[,...]

mke2fsその目的に最適なファイルシステムパラメータを選択できるようにファイルシステムを使用する方法を指定します。サポートされている使用タイプは/etc/mke2fs.conf構成ファイル(5)で定義されています。ユーザーは、カンマ区切りリストを使用して1つ以上の使用タイプを指定できます。

このオプションを指定しない場合、mke2fs生成されるファイルシステムのサイズに応じて、単一のデフォルト使用タイプが選択されます。ファイルシステムサイズが3MB以下の場合、mke2fs ファイルシステムタイプが使用されますfloppy。ファイルシステムサイズが3より大きく512 MB以下の場合mke2fs(8)ファイルシステムが使用されますsmall。それ以外の場合mke2fs(8)デフォルトのファイルシステムタイプが使用されますdefault

デフォルト値は、次のように4KBブロックがデフォルト値であることを示します/etc/mke2fs.conf

[defaults]
        base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr
        default_mntopts = acl,user_xattr
        enable_periodic_fsck = 0
        blocksize = 4096
        inode_size = 256
        inode_ratio = 16384

したがって、%B物理セクタのサイズを表示します。ここで使用されているセクタの数を掛けると、%bディスクに割り当てられた合計バイト数がわかります。ファイルシステムの割り当てはブロックサイズより小さくないため、通常はまったく関係ありませんが、物理セクタのすべての割り当てが8の倍数(4KB / 512バイト= 8)であるかどうかを判断するのに役立ちます。

# stat test.img
  File: test.img
  Size: 536870912       Blocks: 1048584    IO Block: 4096   regular file

したがって、この情報を使用して、ディスクに割り当てられたバイト数と、このファイルに割り当てられている未使用領域を確認できます。

ブロック数*ブロックサイズ= 1048584ブロック* 512バイト/ブロック= 536875008バイト。

未使用割り当てスペースの量:536875008-536870912バイト= 4096バイト未使用。

答え2

statコマンドがマニュアルページの説明に従って動作すると、%Bインクルードファイルの値が返されます。DEV_BSIZEparam.h

この値はほとんどのシステムでは512ですが、HP-UXでは1024です。

注:この値はドライブのセクタサイズとは関係ありません。

関連情報