Perbedaan antara ukuran blok dan ukuran cluster

20

Saya punya pertanyaan tentang ukuran blok dan ukuran cluster. Mengenai apa yang telah saya baca tentang itu saya berasumsi sebagai berikut:

  • Ukuran blok adalah ukuran fisik dari sebuah blok, kebanyakan 512 byte. Tidak ada cara untuk mengubah ini.
  • Ukuran cluster adalah ukuran minimal blok yang dibaca dan ditulis oleh OS. Jika saya membuat filesystem baru misalnya ext3, saya dapat menentukan ukuran blok minimal ini dengan switch -b. Hampir semua program seperti dumpe2fs, mke2fs menggunakan ukuran blok sebagai nama untuk ukuran cluster.

Jika saya sudah mendapatkan output berikut:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

Apakah benar bahwa ukurannya adalah ruang aktual dalam byte, blok adalah blok yang digunakan secara fisik (512 byte untuk masing-masing) dan blok IO berkaitan dengan ukuran blok yang ditentukan saat membuat FS?

sial
sumber

Jawaban:

26

Saya pikir Anda bingung, mungkin karena Anda telah membaca beberapa dokumen yang menggunakan terminologi berbeda. Istilah seperti "ukuran blok" dan "ukuran kluster" tidak memiliki makna universal, bahkan dalam konteks literatur sistem file.

Sistem File

Untuk ext2 atau ext3 , situasinya relatif sederhana: setiap file menempati sejumlah blok tertentu . Semua blok pada sistem file yang diberikan memiliki ukuran yang sama, biasanya satu dari 1024, 2048 atau 4096 byte. File¹ yang ukurannya antara N blok ditambah satu byte dan N + 1 blok menempati N + 1 blok. Ukuran blok itulah yang Anda tentukan mke2fs -b. Tidak ada gagasan cluster yang terpisah.

The FAT filesystem yang digunakan khususnya oleh MS-DOS dan versi awal dari Windows memiliki alokasi ruang sama sederhana. Apa blok panggilan ext2, FAT panggilan cluster ; konsepnya sama.

Beberapa sistem file memiliki skema alokasi yang lebih canggih: mereka memiliki blok ukuran tetap, tetapi dapat menggunakan blok yang sama untuk menyimpan beberapa byte terakhir lebih dari satu file. Ini dikenal sebagai suballokasi blok ; Reiserfs dan Btrfs melakukannya, tetapi tidak ext3 atau bahkan ext4.

Utilitas

Utilitas Unix sering menggunakan kata "blok" berarti unit berukuran sewenang-wenang, biasanya 512 byte atau 1kB. Penggunaan ini tidak terkait dengan sistem file atau perangkat keras disk apa pun. Secara historis, blok 512B memang muncul karena disk dan sistem file pada waktu itu sering dioperasikan dalam potongan 512B, tetapi penggunaan modern hanya sewenang-wenang. Utilitas dan antarmuka unix tradisional kadang-kadang masih menggunakan blok 512B, meskipun sekarang blok 1kB lebih disukai . Anda perlu memeriksa dokumentasi masing-masing utilitas untuk mengetahui ukuran blok apa yang digunakannya (beberapa memiliki switch, misalnya du -Batau df -Bdi Linux).

Dalam statutilitas GNU / Linux , blocksangkanya adalah jumlah blok 512B yang digunakan oleh file. The IO BlockAngka adalah ukuran yang lebih disukai untuk file input-output, yang pada prinsipnya tidak berhubungan tetapi biasanya merupakan indikasi dari filesystem yang mendasari ukuran blok (atau cluster ukuran jika itu yang apa yang Anda ingin menyebutnya). Di sini, Anda memiliki file 13-byte, yang menempati satu blok pada sistem file ext3 dengan ukuran blok 2048; oleh karena itu file tersebut menempati 4 unit 512-byte (disebut "blok" oleh stat).

Disk

Kebanyakan disk menghadirkan antarmuka yang menunjukkan disk sebagai sekelompok sektor . Disk hanya dapat menulis atau membaca seluruh sektor, bukan bit atau byte individual. Sebagian besar hard disk memiliki sektor 512-byte, meskipun disk sektor 4kB mulai muncul beberapa tahun yang lalu.

Ukuran sektor disk tidak terkait langsung dengan ukuran blok sistem file, tetapi memiliki blok menjadi sejumlah sektor lebih baik untuk kinerja.

¹ Pengecualian: file jarang menghemat ruang.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
Terima kasih atas klarifikasi Anda. Saya tiba di sini karena kebingungan yang disebabkan oleh alat ext2fsd untuk windows. Opsi baris perintah mereka mulai: ´Usage: mke2fs [-c | -l filename] [-b block-size] [-C cluster-size] ... ´ Yah, begini, baik ukuran blok maupun cluster ...
Bernhard Hiller
Saya juga tertarik untuk mengetahui apa perbedaan antara ukuran blok mke2fs dan ukuran cluster. Apakah ada yang tahu ?
X.LINK
1
@ X.LINK Ini dijelaskan di halaman manual. Ukuran cluster digunakan oleh fitur bigalloc , yang jika saya mengerti benar membuat akses ke file besar lebih cepat dengan mengorbankan penyimpanan yang lebih terbuang.
Gilles 'SO- stop being evil'