|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> Файловая система
—> Лечим FFS
Восстановление упавшей ФС
Автор: FreeBSP.
Так сложились звезды, что стал зависать у меня домашний сервачок. Да зависать намертво. Ну я его ресет, да ресет.. Вариантов то больше нет. Но после очередного ресета он перестал появляться в сети. Подключив монитор, я узрел его жалостливые крики о том что не откуда грузиться и мне бы хорошо 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://forum.lissyara.su/viewtopic.php?f=14&t=33585.
размещено: 2011-09-14,
последнее обновление: 2012-04-12,
автор: FreeBSP
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
|
Статистика сайта
|
Сейчас на сайте находится: 19 чел.
|
За последние 30 мин было: 57 человек
|
За сегодня было 8531 показов, 995 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|
Комментарии пользователей [6 шт.]