Apakah sistem file “melihat” perangkat penyimpanan sebagai array byte (sangat besar)?

12

Saya ingin tahu bagaimana sistem file menulis dan membaca dari perangkat penyimpanan.

Saya pikir ini cara kerjanya:

Sistem file tidak mengakses perangkat penyimpanan secara langsung, melainkan perangkat penyimpanan disajikan (oleh driver perangkat perangkat penyimpanan) ke sistem file sebagai array byte (sangat besar).

Misalnya, jika sistem file ingin mengakses hard disk, ia hanya akan mengakses array byte yang mewakili hard disk.

Dengan cara ini sistem file dapat bekerja dengan semua jenis perangkat penyimpanan (hard disk tradisional, SSD, USB flash drive, dll.), Dan hanya driver perangkat untuk perangkat penyimpanan yang diubah.

Gambar ini menunjukkan apa yang baru saja saya jelaskan:

masukkan deskripsi gambar di sini

Apakah saya benar dalam pengertian saya?

joseph_m
sumber

Jawaban:

15

Di Linux (dan era 1980-an Unixes), perangkat penyimpanan (cukup sering partisi disk pada beberapa hard disk , atau pada beberapa SSD ) adalah perangkat blok (lihat ini ) sehingga urutan [sub-] blok (yang merupakan unit dasar I / O fisik ). Ukuran blok fisik tergantung pada perangkat keras (disk IDE lama memiliki ukuran blok 512 byte, disk SATA besar baru memiliki ukuran blok 4Kbytes, baca wikipage Format Lanjutan ), dan ketika Anda membuat sistem file (dengan misalnya mkfs, lihat mke2fs (8)) Anda dapat menentukan ukuran blok logis yang merupakan kelipatan (seringkali kekuatan kecil dua, termasuk 1) dari ukuran blok fisik itu. Baca juga tentang pengalamatan blok logis .

Di masa lalu (pikirkan workstation Sun3 tahun 1990-an) disk itu terbuat dari silinder dengan kepala diatur dalam sektor (baca CHS wikipage), dengan sektor yang berisi blok. Hari ini, ini masih tetap tetapi merupakan artefak buatan yang disediakan oleh pengontrol hard disk (sirkuit pada disk itu sendiri). Dalam beberapa OS driver perangkat blok menjadwal ulang dan memesan ulang permintaan IO untuk meminimalkan pergerakan kepala disk dan latensi rotasi .

Dengan cara ini sistem file dapat bekerja dengan semua jenis perangkat penyimpanan (hard disk tradisional, SSD, USB flash drive, dll.), Dan hanya driver perangkat untuk perangkat penyimpanan yang diubah.

Ya, tetapi kejahatan ada dalam perinciannya (mis. Membaca tentang TRIM dan Tulis Amplifikasi , khusus untuk SSD). Dan detailnya penting, sehingga implementasi sebenarnya tidak sesederhana gambar Anda. Baca lebih lanjut tentang sistem file (dan pikirkan sistem file berkerumun & jauh termasuk SMB & NFS ; baca juga tentang Logical Volume Manager ).

Baca Sistem Operasi: Tiga Potong Mudah (dan bagiannya yang bertahan lama ).

Perhatikan bahwa perangkat blok hilang dalam FreeBSD (sebenarnya menyediakan abstraksi umum untuk perangkat karakter dan blok). Saya menduga bahwa bahkan di Windows OS tahu tentang partisi, ukuran blok, dll (tetapi Anda harus memeriksa).

Basile Starynkevitch
sumber
Windows juga menangani partisi pada disk, dan setiap partisi dapat menggunakan sistem file yang berbeda (mungkin FAT-32 pada satu dan NTFS pada yang lain). Sistem file dapat mengakses partisi di tingkat blok, atau blok dapat digabungkan menjadi "cluster". Pada setiap partisi yang diberikan, ukuran cluster akan diperbaiki.
Simon B
Saya semacam tahu itu, karena MSDOS sebagian besar melakukannya.
Basile Starynkevitch
Sebenarnya, FreeBSD masih menggunakan apa yang Anda sebut "blokir perangkat". Tidak ada cara untuk mengakses hard disk selain sebagai array besar blok. Mereka hanya disebut karakter / perangkat mentah di FreeBSD. Mereka masih mengakses perangkat sebagai sejumlah besar blok. Satu-satunya hal yang hilang di FreeBSD adalah caching di tingkat perangkat, yang tidak diperlukan karena sistem file sudah menyediakan caching.
juhist
3

Semua yang dikatakan Basile Starynkevitch benar. Saya akan menambahkan sedikit lebih banyak. Memang disk drive adalah "blok" drive, tetapi perangkat blok (dan banyak perangkat lainnya) disajikan dalam dua bentuk: "mentah" dan "dimasak". Perangkat mentah hanya dapat dialamatkan dalam potongan yang merupakan kelipatan dari ukuran penyimpanan asli mereka. Jadi perangkat disk mentah hanya bisa dibaca atau ditulis satu atau banyak blok pada suatu waktu, bukan hanya satu atau dua byte. Perangkat yang dimasak menambahkan lapisan yang akan memungkinkan operasi yang lebih kecil, serta berbagai fitur lainnya.

Sistem file bekerja dengan perangkat mentah, dan dengan demikian melihatnya bukan sebagai array besar byte, melainkan array besar blok, seperti yang dijelaskan BS.

Topher
sumber