Каж­дый, кто работал в Linux, хотя бы однажды уда­лял цен­ный файл, а то и весь кор­невой каталог целиком! rm -rf живее всех живых, резер­вной копии нет (а дол­жна бы быть!), вре­мени на поис­ки и выбор ути­лит для вос­ста­нов­ления — тоже. Как же быть?

info

В 2006 году выш­ла в свет кни­га Кри­са Кас­пер­ски «Вос­ста­нов­ление дан­ных», которая быс­тро ста­ла бес­тсел­лером. Сей­час эта кни­га готовит­ся к пере­изда­нию. Мы пуб­лику­ем отры­вок из этой кни­ги, пос­вящен­ный вос­ста­нов­лению дан­ных в фай­ловых сис­темах ext.

Оши­боч­ное уда­ление фай­лов в *NIX — это дос­таточ­но рас­простра­нен­ное явле­ние, навер­ное, даже более час­тое, чем в мире Microsoft. Под Windows боль­шинс­тво фай­ловых опе­раций выпол­няет­ся вруч­ную с помощью про­вод­ника или дру­гих инте­рак­тивных средств типа FAR или Total Commander. Инте­рак­тивные сре­ды есть и в Linux (KDE, GNOME, XFCE…), но немалая часть фанатов Linux — пок­лонни­ки коман­дной стро­ки. Коман­дная же стро­ка — это регуляр­ные выраже­ния и скрип­ты, то есть авто­мати­зиро­ван­ные средс­тва управле­ния — мощ­ные, удоб­ные и, при неп­равиль­ном исполь­зовании, раз­рушитель­ные. Малей­шая неб­режность — и можешь нав­сегда поп­рощать­ся со сво­ими фай­лами!

Пе­реф­разируя Бул­гакова, мож­но ска­зать: мало того что файл смер­тен, так он еще и вне­зап­но смер­тен! Беда никог­да не пре­дуп­режда­ет о сво­ем при­ходе, и адми­нис­тра­тору при­ходит­ся быть пос­тоян­но начеку. Нес­коль­ко секунд назад все было хорошо: цве­ла вес­на, вин­честер ожив­ленно стре­котал все­ми сво­ими голов­ками, адми­нис­тра­тор отхле­бывал кофе из чер­ной круж­ки с над­писью root, как вдруг сот­ни гигабайт цен­ней­ших дан­ных вне­зап­но раз­летелись на мел­кие осколки. Все силы бро­шены на раз­гре­бание завалов и спа­сение всех, кого еще мож­но спас­ти.

Дос­тупность исходных тек­стов драй­вера фай­ловой сис­темы зна­читель­но упро­щает иссле­дова­ние ее внут­ренней струк­туры, которая, кста­ти говоря, очень прос­та. Поэто­му вос­ста­нов­ление дан­ных на раз­делах ext2/3/4 — задача три­виаль­ная.

 

Знакомьтесь! Семейство расширенных файловых систем

Из­началь­но Linux был чем‑то вро­де воль­ного перес­каза ОС Minix, раз­работ­ка велась под ней же, и работа­ли пер­вые вер­сии Linux на фай­ловой сис­теме Minix. Называ­лась та незамыс­ловато — MINIX file system — и, в свою оче­редь, была вдох­новле­на фай­ловой сис­темой UNIX — UFS. Но, пос­коль­ку сама Minix раз­рабаты­валась ско­рее в учеб­ных целях, ее фай­ловая сис­тема не обла­дала широки­ми воз­можнос­тями. Нап­ример, раз­мер раз­дела не мог пре­вышать 64 Мбайт, а мак­сималь­ная дли­на име­ни фай­ла — 14 или 30 сим­волов в зависи­мос­ти от вер­сии. Что­бы пре­одо­леть такие огра­ниче­ния, начали раз­рабаты­вать собс­твен­ную ФС для Linux.

 

Немного об истоках

Но­вая фай­ловая сис­тема рас­ширяла воз­можнос­ти MINIXfs, за что, видимо, и получи­ла наз­вание extended filesystem. Пер­вая реали­зация рас­ширен­ной фай­ловой сис­темы, ext fs, уви­дела свет в 1992 году в ядре Linux вер­сии 0.96c. Теперь при­вер­женцы Linux были огра­ниче­ны дву­мя гигабай­тами для раз­дела, а фай­лы мог­ли иметь имя дли­ной до 255 сим­волов. Тем не менее эта ФС была все еще срав­нитель­но прос­та, поэто­му даль­нейшее ее раз­витие не зас­тавило себя дол­го ждать. При­мер­но в это же вре­мя, кста­ти, в Linux появил­ся такой уро­вень абс­трак­ции, как вир­туаль­ная фай­ловая сис­тема (VFS), облегча­ющий добав­ление под­дер­жки новых ФС в ядро.

С появ­лени­ем через пару лет ext2 мак­сималь­ные раз­меры фай­ла и фай­ловой сис­темы воз­росли до 16 Гбайт и 2 Тбайт соот­ветс­твен­но (при раз­мере бло­ка 1 Кбайт). Часть бло­ков (обыч­но 5%) теперь резер­вирова­лась под рут, не поз­воляя обыч­ным поль­зовате­лям запол­нить весь раз­дел без остатка. Тог­да эта ФС ста­ла прак­тичес­ки стан­дартом де‑фак­то на линук­сах, а ее реали­зации, говорят, были и под NT.

 

Поколение ext3

Третья рас­ширен­ная фай­ловая сис­тема (Third extended file system, ext3) появи­лась поч­ти двад­цать лет назад в одной из вер­сий Linux 2.4.14. Она во мно­гом напоми­нает свою пред­шес­твен­ницу, ext2, но отли­чает­ся под­дер­жкой жур­налиро­вания (в тер­миноло­гии NTFS — тран­закций). В отли­чие от ext2fs, она нам­ного береж­нее отно­сит­ся к мас­сиву катало­гов, хотя, как мы уви­дим чуть далее, нам это не силь­но поможет.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Оставить мнение