У Linux (і Unixes епохи 1980-х років) пристрій збереження даних (досить часто розділ диска на якомусь жорсткому диску або на якомусь SSD ) є блоковим пристроєм (див. Це ), тому є [під-] послідовністю блоків (що є основна одиниця фізичного вводу-виводу. Фізичний розмір блоку залежить від апаратного забезпечення (старі диски IDE мали розмір блоку 512 байт, нові великі диски SATA мають розмір блоку в 4 Кбайт, читайте вікі-сторінку розширеного формату ) та коли ви створюєте файлову систему (наприклад mkfs
, див. Mke2fs (8)) Ви можете вказати логічний розмір блоку, який є кратним (часто це невелика потужність у два, включаючи 1) цього фізичного розміру блоку. Читайте також про логічне блокування адрес .
У минулому (подумайте про робочі станції Sun3 1990-х років) диск був виготовлений із циліндрів з головами, організованими по секторах (читайте вікі-сторінку CHS ), із сектором, що містить блок. Сьогодні вони все ще залишаються, але є штучним артефактом, наданим контролером жорсткого диска (схема на самому диску). У деяких ОС ОС драйвер блокового пристрою перепланував і упорядкував запити вводу-виводу, щоб мінімізувати рух головки диска та затримку обертання .
Таким чином файлова система може працювати з будь-яким типом пристрою зберігання даних (традиційний жорсткий диск, SSD, флешка та ін.), І змінюється лише драйвер пристрою для накопичувача.
Так, але зло полягає в деталях (наприклад, читайте про TRIM і Write Amplification , характерні для SSD). І деталі важливі, тому реальна реалізація менш проста, ніж ваша фігура. Детальніше про файлові системи (і подумайте про кластеризовані та віддалені файлові системи, включаючи SMB & NFS ; читайте також про Logical Volume Manager ).
Прочитайте Операційні системи: Три простих частини (і її частина, що зберігається ).
Зауважте, що блокові пристрої відсутній у FreeBSD (фактично надаючи загальну абстракцію для персонажів та блокових пристроїв). Я підозрюю, що навіть у Windows ОС знає про розділи, розмір блоку тощо (але слід перевірити).