
Ubuntu 11.04 を実行していますが、アロケーション ユニットのサイズを確認する方法を知りたいです。Ubuntu には、これを確認するコマンドがありますか? また、アロケーション ユニットのサイズに応じて、ファイルで使用されるハード ディスク領域の合計量は変わりますか? と を使用してファイル サイズを確認しましたがls
、du -b
どちらの場合も同じ値が得られました。
データを含む:
sudo tune2fs -l <file system>
Block count: 8052736
Reserved block count: 402636
Free blocks: 2797402
First block: 0
Block size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Journal backup: inode blocks
ブロック サイズが 4096 バイトの場合、4096 より小さいファイルはハード ディスク上で 4096 バイトのストレージを占有しますが、4096 バイトより大きいファイルの場合はどのくらいのスペースを占有するのでしょうか。同じことを調べるコマンドはありますか。
答え1
トップ投稿編集:
事前にサイズを見つける:
temp = int(サイズ/ブロック) mod(サイズ/ブロック) != 0の場合: 温度 += 1 温度 = 温度*ブロック 印刷温度
ディスク上のファイルにあるブロックの数を知るには:
ls -s
ここで、ブロックサイズはパーティションのブロックサイズであり
、ディスク上のサイズはブロックサイズ * ブロック数です。
sudo fdisk -l /dev/sda
/dev/sda が問題のハードディスクである場合のブロック サイズの用語の違いについて説明します。
ディスク /dev/sda: 500.1 GB、500107862016 バイト 255 ヘッド、63 セクター/トラック、60801 シリンダー、合計 976773168 セクター 単位 = 1 セクター * 512 = 512 バイト セクターサイズ(論理/物理):512バイト/512バイト I/O サイズ (最小/最適): 512 バイト / 512 バイト ディスク識別子: 0x000c1f6b デバイス ブート 開始 終了 ブロック ID システム /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 976768064 488135025 5 拡張 /dev/sda5 498078 976768064 488134993+ 83 Linuxこれはいくつかのことを物語っています。すでに誰かがもっとうまく言っていますので、引用します。
これの問題は、覚えておかなければならない 4 つの異なる単位があることです。さらに悪いことに、これらの単位のうち 2 つは同じ名前を持っています。これらは異なる単位です。
- ハードウェア ブロック サイズ、「セクター サイズ」
- ファイルシステムのブロックサイズ、「ブロックサイズ」
- カーネル バッファ キャッシュ ブロック サイズ、「ブロック サイズ」
- パーティション テーブル ブロック サイズ、「シリンダ サイズ」
ファイルシステム ブロック サイズとバッファ キャッシュ ブロック サイズを区別するために、FAT の用語に従い、ファイルシステム ブロック サイズに「クラスター サイズ」を使用します。
セクター サイズは、ハードウェアが処理する単位です。これはハードウェアの種類によって異なりますが、ほとんどの PC スタイルのハードウェア (フロッピー、IDE ディスクなど) では 512 バイトのセクターが使用されます。
クラスター サイズは、ファイル システムが使用する割り当て単位であり、断片化の原因となります。これはご存じだと思います。中程度のサイズの ext3 ファイル システムでは、通常 4096 バイトですが、dumpe2fs で確認できます。これらは通常「ブロック」とも呼ばれますが、ここではクラスターと呼んでいます。
クラスター サイズは、プログラムがファイルの実際のディスク使用量を計算できるようにするために、統計バッファーの st_blksize で返されるものです。
ブロック サイズは、ストレージ デバイスから読み取られたセクターをキャッシュするときにカーネルが内部的に使用するバッファーのサイズです (そのため、「ブロック デバイス」と呼ばれます)。これはカーネル内の最も原始的なストレージ形式であるため、すべてのファイル システム クラスター サイズはこの倍数でなければなりません。このブロック サイズは、ユーザー空間プログラムによってほぼ常に参照されるものでもあります。たとえば、「du」を -h または -H オプションなしで実行すると、ファイルが占めるこれらのブロックの数を返します。df もこれらのブロックのサイズを報告し、fdisk -l 出力の「ブロック」列はこのタイプです。これが、最も一般的に「ブロック」と呼ばれるものです。各ブロックには 2 つのディスク セクターが収まります。
シリンダー サイズはパーティション テーブルと BIOS でのみ使用されます (BIOS は Linux では使用されません)。
「df」はファイルシステム上でのみ動作します。したがって、ファイルシステムなしでは使用できません。ファイルシステムがなければ、返されるデータは存在しません。「du」は個々のファイル上で動作します。
からここ。
答え2
stat
マウントポイントをパラメータとして実行するコマンドは、IO Block
プロパティの下にファイルシステムのクラスタサイズを表示します。
stat /dev/shm/minifs-mounted
表示されます
File: /dev/shm/minifs-mounted
Size: 1024 Blocks: 2 IO Block: 1024 directory
Device: 709h/1801d Inode: 2 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
Birth: -
上記の情報は、以下で作成されたファイルシステムに属します。
cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted
1024バイト長のクラスターを強制する