waqur: (Евро)
[personal profile] waqur
Только познакомившись историей развития операционной системы FreeBSD, я понял, почему в Unix'ах папки наподобие bin,etc,lib повторяются в / и /usr.

Когда-то очень давно FreeBSD не поддерживала файловую систему ZFS, код поддержки UFS не умел делать SoftUpdates, а о журналируемых файловых системах и речи не было. Примерно в то же время в Linux'е была только файловая система ext2 без журналирования.

Ну, Линукс просто её себе монтировал и надеялся на fsck в случае незапланированной перезагрузки; а в FreeBSD было два режима монтирования файловых систем: синхронный и асинхронный. Первый — медленный (на IDE-диске вы за и день не удалите папку, в которой 100000 файлов) зато надёжный, второй — быстрый зато ненадёжный (требующий fsck в случае незапланированной перезагрузки).

В этих условиях вся файловая система системного тома делилась на две части: надёжную и ненадёжную. Надёжная часть ФС содержит загрузчик, его конфигурацию, ядро, модули ядра, init, шелл, fsck, а также необходимые библиотеки и инитскрипты. Ненадёжная часть ФС содержит всё остальное. Надёжная часть ФС монтируется как / в синхронном режиме и работает медленно, ненадёжная часть монтируется как /usr, /root, /home, /tmp и так далее — в асинхронном режиме и работает быстро; однако она полагается на то, что в случае незапланированной перезагрузки сервера — fsck из надёжной части сможет всё починить (наверное).

В Linux (где не поддерживается синхронное монтирование) была популярна схема загрузки с initrd, сжатый образ которого лежит в отдельном разделе /boot, вместе с ядром, загрузчиком, и конфигами загрузчика. Нормально /boot был смонтирован в режиме readonly. В случае незапланированной перезагрузки с initrd запустится fsck и (наверное) починит всё остальное. Нестандартный системный вызов pivot_root(2) обеспечивает бесшовную замену корневой файловой системы в процессе загрузки.

Появление журналируемых файловых систем позволило смягчить эту проблему (если загрузчик + его конфиги + ядро и все папки по пути к ним не затронуты журналом, то всё загрузится как надо), а технологии SoftUpdates, ZFS и btrfs добили её окончательно (файловая система всегда, в любой момент времени консистентна на диске: транзакции объединяются в группы, для каждой транзакционной группы изменения пишутся в свободное место на диске, после коммита транзакционной группы атомарно обновляется указатель на суперблок).

Поэтому, в наши дни уже не нужно при установке UNIX создавать надёжные и ненадёжные точки монтирования — можно просто устанавливать всё в /. Однако разделение папок bin,etc,lib и подобных между / и /usr сохраняется по историческим причинам.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

March 2024

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Автор стиля

Развернуть

No cut tags
Page generated 2026-05-07 01:46 am
Powered by Dreamwidth Studios