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 сохраняется по историческим причинам.

March 2024

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

Автор стиля

Развернуть

No cut tags
Page generated 2026-05-06 11:17 am
Powered by Dreamwidth Studios