Файлавая сістэма UFS (Unix File System) існуе ў некалькіх варыянтах і сустракаецца ў многіх разнавіднасцях UNIX, уключаючы FreeBSD, HP-UX, NetBDS, OpenBSD, Apple OS X і Sun Solaris. За мінулыя гады ў многіх АС некаторыя структуры дадзеных былі зменены ў адпаведнасці з іх патрэбамі, але ўсе яны грунтуюцца на адных і тых жа канцэпцыях. У цяперашні час існуе дзве асноўныя мадыфікацыі UFS: UFS1 і UFS2. UFS2 падтрымлівае дыскі большага аб'ёму і пашыраныя часовыя штампы. Я буду выкарыстоўваць тэрмін «UFS» для абазначэння абедзвюх сістэм. Эксперт можа сутыкнуцца з файлавай сістэмай UFS пры аналізе сістэм UNIX, звычайна на серверах. Паколькі раней мы ўжо падрабязна разглядалі сістэмы Ext2 і Ext3, пабудаваныя на базе UFS, гэтая кіраўнік не ўтрымлівае вялізных тлумачэнняў - мяркуецца, што чытач ужо разумее канцэпцыі, апісаныя ў чале 14. У гэтым раздзеле разглядаюцца канцэпцыі і метады аналізу ў файлавай сістэме UFS, а у главе 17 - яе структуры дадзеных. Гэтую і наступную кіраўніка можна чытаць як паралельна, так і паслядоўна.
ўвядзенне
Сістэма UFS звязаная з файлавай сістэмай Berkeley FFS (Fast File System), а яе архітэктура праектавалася ў разліку на шпаркасць і надзейнасць. Рэзервовыя копіі важных структур дадзеных захоўваюцца ў некалькіх месцах файлавай сістэмы, а дадзеныя лакалізуюцца такім чынам, каб звесці да мінімуму перамяшчэння галовак цвёрдай кружэлкі пры чытанні файла. Сістэма UFS дзеліцца на секцыі, званыя групамі цыліндраў. Памер кожнай групы вызначаецца на падставе геаметрыі дыска. Групы цыліндраў з'яўляюцца аналагамі груп блокаў ExtX.
У пачатку UFS знаходзіцца суперблок з асноўнай інфармацыяй пра будынак файлавай сістэмы. Змесціва кожнага файла захоўваецца ў блоку, які ўяўляе сабой групу сумежных сектараў. Блокі таксама могуць дзяліцца на фрагменты; фрагмент выкарыстоўваецца для захоўвання завяршальных байтаў файла (замест вылучэння поўнага блока). Метададзеныя файлаў і каталогаў захоўваюцца ў структурах дадзеных, званых індэксных вузламі. Імёны файлаў захоўваюцца ў запісах каталогаў, якія змяшчаюцца ў вылучаных каталогу блоках. Запіс каталога ўяўляе сабой найпростую структуру дадзеных з імем файла і паказальнікам на індэксны вузел. Адносіны паміж структурамі дадзеных паказаны на мал. 16.1. Кожная група цыліндраў валодае ўласнай табліцай індэксных вузлоў, бітавай картай з інфармацыяй пра стан выдзялення фрагментаў і копіяй суперблока.
Мал. 16.1. Адносіны паміж запісамі каталогаў UFS, індэксных вузламі і блокамі дадзеных, што выкарыстоўваюцца для захоўвання змесціва
Усе разнавіднасці UFS пабудаваныя на гэтых базавых прынцыпах. Відавочна, гэта тыя ж канцэпцыі, якія былі апісаны раней для ExtX. Разнавіднасці UFS адрозніваюцца спосабамі арганізацыі структур дадзеных і рэалізаванымі ў іх дадатковымі магчымасцямі. Зрэшты, у параўнанні з ExtX UFS змяшчае менш эксперыментальных магчымасцяў, якія адлюстроўваюцца на дыскавых дадзеных.
Файлавая сістэма UFS1 выкарыстоўваецца па змаўчанні ў OpenBSD і Solaris. Раней яна таксама лічылася стандартнай файлавай сістэмай FreeBSD і NetBSD да таго моманту, як у FreeBSD 5.0 і NetBSD 2.0 з'явілася UFS2. У UFS2 дададзеная падтрымка вялікіх файлаў і дыскаў, а таксама іншыя сучасныя магчымасці. На момант напісання кнігі толькі FreeBSD і NetBSD падтрымлівалі UFS2. Apple OS X і Linux таксама падтрымліваюць UFS1, але гэтая сістэма ў іх не з'яўляецца стандартнай. Разнавіднасць UFS таксама рэалізавана ў Solaris для падтрымкі вялікіх файлаў і дыскаў. Кампанія Sun не апублікавала інфармацыю аб структурах дадзеных сваёй версіі UFS, але праграмы, заснаваныя на апісаннях структур дадзеных ад FreeBSD, паспяхова працуюць у файлавай сістэме Solaris. Тым не менш з неабавязковымі дадзенымі справа можа ісці інакш.
У пакінутай частцы гэтай часткі мы разгледзім мадэль з пяццю катэгорыямі дачыненні да разнавіднасцяў UFS. У кожным раздзеле будуць апісаны асноўныя ўласцівасці кожнай катэгорыі і яе адметныя асаблівасці ў кожным варыянце рэалізацыі. Я буду пазначаць FreeBSD, NetBSD і OpenBSD агульным тэрмінам «BSD».
Катэгорыя дадзеных файлавай сістэмы
Да катэгорыі дадзеных файлавай сістэмы ставяцца агульныя звесткі аб будынку і памеры кампанентаў файлавай сістэмы. У гэтай секцыі распавядаецца месцазнаходжанне службовых дадзеных UFS і метады іх аналізу.
Агульныя звесткі
У UFS дадзеныя катэгорыі файлавай сістэмы захоўваюцца ў трох відах структур дадзеных: суперблоке, зводках груп цыліндраў і дэскрыптарах груп. Суперблок знаходзіцца ў пачатку файлавай сістэмы і змяшчае асноўную інфармацыю аб памеры і канфігурацыі. У суперблоке захоўваецца спасылка на вобласць файлавай сістэмы, званую зводкай груп цыліндраў; у ёй змяшчаецца зводная інфармацыя аб выкарыстанні груп цыліндраў. Кожная група цыліндраў змяшчае структуру дадзеных дэскрыптара групы з больш падрабязнай інфармацыяй аб асобнай групе. Далей усе гэтыя структуры дадзеных будуць апісаны больш падрабязна.
суперблок
Суперблок иР8 змяшчае асноўныя параметры файлавай сістэмы - такія, як памер кожнага фрагмента і колькасць фрагментаў у кожным блоку. Акрамя таго, у ім захоўваецца памер кожнай групы цыліндраў і месцазнаходжанне розных структур дадзеных у кожнай групе. На падставе гэтай інфармацыі можна вызначыць канфігурацыю файлавай сістэмы. У суперблоке таксама можа захоўвацца пазнака тома і час апошняга мантавання файлавай сістэмы. Суперблок 11Р8 гуляе тую ж ролю, што і суперблок ЕхгХ, але інфармацыя аб структуры і неабавязковыя дадзеныя адрозніваюцца.
Суперблок иР8 захоўваецца паблізу ад пачатку файлавай сістэмы. На здымных носьбітах ён можа пачынацца ў першым сектары. Звычайна суперблок 11Р81 знаходзіцца ў 8, а суперблок 11Р82 - у 64 кілабайтах ад пачатку файлавай сістэмы. Таксама суперблок ЦТ82 можа размяшчацца ў 256 кілабайтах ад пачатку файлавай сістэмы, але такі варыянт размяшчэння не з'яўляецца стандартным. Рэзервовыя копіі суперблока могуць прысутнічаць ва ўсіх групах цыліндраў.
У иР81 і иР82 выкарыстоўваюцца злёгку адрозніваюцца структуры дадзеных, але ў абедзвюх версіях іх памер перавышае 1 Кбайт, а структуры ўтрымліваюць каля 100 палёў. Суперблоке иРБ1 і иР82 адрозніваюцца тым, што версія иРБ2 ўключае 64-разрадныя версіі палёў памеру і даты, якія дадаюцца ў канец структуры дадзеных. Невыкарыстоўваныя 32-разрадныя поля ігнаруюцца і не выкарыстоўваюцца для захоўвання іншых дадзеных.
У суперблоке таксама захоўваецца іншая службовая інфармацыя - напрыклад, агульная колькасць свабодных індэксных вузлоў, фрагментаў і блокаў. З суперблока можна даведацца месцазнаходжанне вобласці, званай зводкай групы цыліндраў. У гэтай галіне таксама захоўваецца табліца з запісамі для ўсіх груп цыліндраў; у запісах дакументуе колькасць вольных блокаў, фрагментаў і індэксных вузлоў. Як будзе паказана пазней, гэтая інфармацыя таксама прысутнічае ў дэскрыптараў кожнай групы.
Суперблок змяшчае інфармацыю аб геаметрыі дыска, якая выкарыстоўваецца для найбольш эфектыўнай арганізацыі і аптымізацыі файлавай сістэмы. Многія вытворныя значэння захоўваюцца асобна, каб АС не даводзілася кожны раз вылічаць іх нанова. Напрыклад, памер блока захоўваецца як у байтах, так і ва фрагментах. Акрамя таго, маецца поразрядная маска і велічыні зрухаў для пераўтварэння адрасу байта ў адрас блока і наадварот. Тэарэтычна дастаткова захоўваць толькі адно з гэтых значэнняў, а астатнія вылічаць пры неабходнасці. Нягледзячы на тое што многія палі абавязковымі не з'яўляюцца, у гэтым раздзеле асноўная ўвага будзе нададзена як абавязковым, так і неабавязковым дадзеных, якія могуць утрымліваць доказы.
Падрабязныя апісанні структур дадзеных прыведзены ў чале 17. суперблоке як иР81, так і иР82 будуць разглядацца на прыкладзе тэставых вобразаў файлавых сістэм.
⇐ Структуры дадзеных часопіса | Крыміналістычны аналіз файлавых сістэм | Дэскрыптар групы цыліндраў ⇒