Документация по ОС FreeBSD Четверг, 25.04.2024, 10:21
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Восстановление упавшей ФС [2012]
Так сложились звезды, что стал зависать у меня домашний сервачок. Да зависать намертво. Ну я его ресет, да ресет.. Вариантов то больше нет. Но после очередного ресета он перестал появляться в сети. Подключив монитор, я узрел его жалостливые крики о том что не откуда грузиться и мне бы хорошо INSERT SYSTEM DISK AND PRESS ENTER. Времени разбираться не было, поэтому я наскоро собрал замену, а вот руки посмотреть тот хард дошли только сейчас:
testbed# mount /dev/ad1s1a /mnt/
mount: /dev/ad1s1a : Operation not permitted
testbed# fsck /dev/ad1s1a
fsck: Could not determine filesystem type
Как же быть, что же делать?!

На самом деле тот факт, что на диске присутствуют слайсы и партиции уже обнадеживает. Для самоуспокоения можно посмотреть мнение fdisk и bsdlabel:
testbed# fdisk /dev/ad1
******* Working on device /dev/ad1 *******
parameters extracted from in-core disklabel are:
cylinders=77542 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=77542 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
 start 63, size 36852417 (17994 Meg), flag 80 (active)
 beg: cyl 256/ head 0/ sector 0;
 end: cyl 1023/ head 7/ sector 7
The data for partition 2 is:
sysid 7 (0x07),(NTFS, OS/2 HPFS, QNX-2 (16 bit) or Advanced UNIX)
 start 36853110, size 41287050 (20159 Meg), flag 0
 beg: cyl 1023/ head 255/ sector 63;
 end: cyl 1023/ head 15/ sector 63
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
testbed# bsdlabel /dev/ad1s1
# /dev/ad1s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
 a: 1048576 0 4.2BSD 2048 16384 8
 b: 4126352 1048576 swap
 c: 36852417 0 unused 0 0 # "raw" \
\ part, don't edit
 d: 4159488 5174928 4.2BSD 2048 16384 28552
 e: 1048576 9334416 4.2BSD 2048 16384 8
 f: 26469425 10382992 4.2BSD 2048 16384 28552
Для начала надо сделать рабочую и резервную копии раздела.
Попутно проверим, остались ли на партиции данные об ФС и подготовим рабочий образ для дальнейших операций.
testbed# dd if=/dev/ad1s1a of=/usr/ad1s1a.img
testbed# cp /usr/ad1s1a.img /usr/ad1s1a.img.orig
testbed# file /usr/ad1s1a.img
/usr/ad1s1a.img: Unix Fast File system [v2] (little-endian) last mounted on /, 
last written at Tue May 31 17:37:51 2011, clean flag 0, readonly flag 0, 
number of blocks 262144, number of data blocks 253815, number of cylinder 
groups 4, block size 16384, fragment size 2048, average file size 16384, 
averagenumber of files in dir 64, pending blocks to free 0, pending inodes 
to free 0, system-wide uuid 0, minimum percentage of free blocks 8, TIME 
optimization
testbed# mdconfig -a -t vnode -f /usr/ad1s1a.img
md0
testbed# mount /dev/md0 /mnt/
mount: /dev/md0 : Operation not permitted
123456789_123456789_123456789_123456789-123456789-12465789-123456789-123456789-
Как видно, партиция не убита, на ней действительно есть UFS2 (aka FFS), но она 
почему то не хочет монтироваться.
Если же у вас ситуация более запущена, возможно придется выковыривать останки 
ФС с диска, в чем поможет sysutils/scan_ffs.
Одна из вероятных причин(с которой столкнулся я) - повреждение суперблока 
(160-го блока для UFS2). для таких случаем предусмотрены резервные копии 
суперблока, расположение которых выводится при создании файловой системы и 
должно быть записано в надежном месте. Если вы не знаете что такое суперблок 
и как устроена файловая система, то эту информацию стоит найти в Сети и 
ознакомиться с ней

Если же у вас такой информации нет - посыпьте голову пеплом и воспользуйтесь newfs(8)
testbed# man newfs
NEWFS(8) FreeBSD System Manager's Manual NEWFS(8)

NAME
 newfs -- construct a new UFS1/UFS2 file system

...

 -N Cause the file system parameters to be printed out without really
 creating the file system.
^C
testbed# newfs -N /dev/md0
/dev/md0: 512.0MB (1048576 sectors) block size 16384, fragment size 2048
 using 4 cylinder groups of 128.02MB, 8193 blks, 16448 inodes.
super-block backups (for fsck -b #) at:
 160, 262336, 524512, 786688
Какмы видим, партиция разделена на 4 "группы цилиндров" в каждой из которых 
есть копия суперблока. 

Пробуем проверить диск, принудительно используя альтернативный суперблок
testbed# man fsck_ffs
FSCK_FFS(8) FreeBSD System Manager's Manual FSCK_FFS(8)

NAME
 fsck_ffs, fsck_ufs -- file system consistency check and interactive
 repair

SYNOPSIS
 fsck_ffs [-BFprfny] [-b block] [-c level] [-m mode] filesystem ...

...

 -b Use the block specified immediately after the flag as the super
 block for the file system. An alternate super block is usually
 located at block 32 for UFS1, and block 160 for UFS2.
^C
testbed# fsck_ffs -b 262336 /dev/md0
Alternate super block location: 262336
** /dev/md0
** Last Mounted on
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
SUMMARY BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

3430 files, 117564 used, 136251 free (771 frags, 16935 blocks, 
0.3% fragmentation)

UPDATE STANDARD SUPERBLOCK? [yn] y

***** FILE SYSTEM IS CLEAN *****

***** FILE SYSTEM WAS MODIFIED *****
testbed# mount /dev/md0 /mnt/
testbed# 
Ура! =) Починили!
Теперь у нас в наличии корректный ОБРАЗ файловой системы -  /usr/ad1s1a.img 
при необходимости производим аналогичные действия с другими партициями, очень подозрительно проверяем диск на наличие ошибок. При необходимости заменяем диск и разбиваем его так, чтобы каждая новая партиция смогла вместить в себя содержимое старой партиции, после чего переносим содержимое старых партиций на новый диск через tar, pax или dump/restore, кому как больше нравится.

О переносе данных на новый диск и работе с md-устройствами  можно почитать 
тут http://www.lissyara.su/articles/freebsd/trivia/mount_iso_images/
и тут http://www.lissyara.su/articles/freebsd/trivia/move_system_between_hard_drives/


Источник: http://www.lissyara.su/articles/freebsd/file_system/restore_ffs/
Категория: Установка и настройка | Добавил: oleg (14.04.2012) | Автор: FreeBSP
Просмотров: 1463 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024