Mám dotaz ohledně velikosti bloku a velikosti clusteru. S ohledem na to, co jsem o tom četl, předpokládám následující:
- Velikost bloku je fyzická velikost bloku, většinou 512 bajtů. Neexistuje způsob, jak to změnit.
- Velikost clusteru je minimální velikost bloku, který operační systém čte a do kterého lze zapisovat. Pokud vytvořím nový souborový systém, např. ext3, mohu určit tuto minimální velikost bloku pomocí přepínače -b. Téměř všechny programy jako dumpe2fs, mke2fs používají velikost bloku jako název pro velikost clusteru.
Pokud mám následující výstup:
$ stat test
File: `test'
Size: 13 Blocks: 4 IO Block: 2048 regular file
Device: 700h/1792d Inode: 15 Links: 1
Je správné, že velikost je skutečný prostor v bajtech, bloky jsou fyzicky používané bloky (512 bajtů pro každý) a IO blok se vztahuje k velikosti bloku zadané při vytváření FS?
Přijatá odpověď:
Myslím, že jste zmatení, možná proto, že jste četli několik dokumentů, které používají odlišnou terminologii. Termíny jako „velikost bloku“ a „velikost clusteru“ nemají univerzální význam, a to ani v kontextu literatury o souborových systémech.
Systémy souborů
U ext2 nebo ext3 je situace poměrně jednoduchá:každý soubor zabírá určitý počet bloků. Všechny bloky na daném souborovém systému mají stejnou velikost, obvykle jeden z 1024, 2048 nebo 4096 bajtů. Soubor¹, jehož velikost je mezi N bloky plus jeden bajt a N+1 bloky zabírá N+1 bloků. Tato velikost bloku je velikost, kterou určíte pomocí mke2fs -b
. Neexistuje žádný samostatný pojem shluků.
Souborový systém FAT používaný zejména MS-DOSem a staršími verzemi Windows má podobně jednoduché přidělení místa. Co ext2 nazývá bloky, FAT nazývá clustery; koncept je stejný.
Některé souborové systémy mají sofistikovanější schéma přidělování:mají bloky pevné velikosti, ale mohou použít stejný blok k uložení posledních několika bajtů více než jednoho souboru. Toto je známé jako dílčí přidělení bloku; Reiserfs a Btrfs to dělají, ale ne ext3 nebo dokonce ext4.
Nástroje
Unixové nástroje často používají slovo „blok“ k označení jednotky libovolné velikosti, typicky 512 bajtů nebo 1 kB. Toto použití nesouvisí s žádným konkrétním souborovým systémem nebo hardwarem disku. Historicky blok 512B vznikl, protože disky a souborové systémy v té době často fungovaly v 512B blocích, ale moderní použití je pouze libovolné. Tradiční unixové nástroje a rozhraní stále někdy používají 512B bloky, ačkoli 1kB bloky jsou nyní často preferovány. Musíte zkontrolovat dokumentaci každého nástroje, abyste věděli, jakou velikost bloku používá (některé mají přepínač, např. du -B
nebo df -B
v systému Linux).
V GNU/Linux stat
nástroj, blocks
obrázek je počet 512B bloků použitých souborem. IO Block
obrázek je preferovaná velikost pro vstup-výstup souboru, který v zásadě nesouvisí, ale obvykle označuje velikost bloku základního souborového systému (nebo velikost clusteru, chcete-li to nazvat). Zde máte 13bajtový soubor, který zabírá jeden blok na souborovém systému ext3 s velikostí bloku 2048; proto soubor zabírá 4 512-byte jednotky (nazývané „bloky“ podle stat
).
Disky
Většina disků má rozhraní, které zobrazuje disk jako skupinu sektorů. Disk může zapisovat nebo číst pouze celý sektor, nikoli jednotlivé bity nebo bajty. Většina pevných disků má 512bajtové sektory, ačkoli 4kB sektorové disky se začaly objevovat před několika lety.
Velikost sektorů disku přímo nesouvisí s velikostí bloku souborového systému, ale mít blok tvořený celým počtem sektorů je pro výkon lepší.
¹ Výjimka:řídké soubory šetří místo.