[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Работа с дисками, папками и файлами.
xrsxДата: Понедельник, 24.10.2011, 11:54 | Сообщение # 1
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
Badsect - программа, создаёт файл с дефектным сектором. (вернее сказать, она помещает дефектные секторы в отдельные файлы - каждый в свой.) Нужно это в том случае, если посыпался диск, заменить его прямо сейчас нельзя, а работать надо. Обычная, в общем-то ситуация...
Итак. У программы всего два параметра - директория, где должны размещаться файлы с бэд-блоками и номер битого сектора.

Пример:
Code
/usr/home/lissyara/>su
/usr/home/lissyara/>df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    248M    115M    113M    51%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e     14G    5.2G    7.3G    42%    /usr
/dev/ad0s1f    3.5G    593M    2.7G    18%    /var
/dev/ad8s1      73G     63G    5.0G    93%    /usr/local/smb
/dev/ad0s1d    989M    1.4M    909M     0%    /tmp
/usr/home/lissyara/>mkdir /tmp/bad-sect
/usr/home/lissyara/>badsect /tmp/bad-sect 104100
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104101
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104102
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104103
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104104
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104105
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>ls -lah /tmp/bad-sect
ls: 104100: Bad file descriptor
ls: 104101: Bad file descriptor
ls: 104102: Bad file descriptor
ls: 104103: Bad file descriptor
ls: 104104: Bad file descriptor
ls: 104105: Bad file descriptor
ls: 104448: Bad file descriptor
ls: 104449: Bad file descriptor
total 4
drwxr-xr-x   2 root  wheel   512B  1 янв 02:22 .
drwxrwxrwt  12 root  wheel   1,0K  1 янв 01:58 ..
/usr/home/lissyara/>umount -f /tmp
/usr/home/lissyara/>fsck /dev/ad0s1d
** /dev/ad0s1d
** Last Mounted on /tmp
** Phase 1 - Check Blocks and Sizes

HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=8 (0 should be 4)
CORRECT? [yn] y

26112 DUP I=9
UNEXPECTED SOFT UPDATE INCONSISTENCY

HOLD BAD BLOCK? [yn] y

26112 DUP I=16
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=16 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=17 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

26025 DUP I=18
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=18 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

26025 DUP I=19
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=19 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

26025 DUP I=20
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=20 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=21 (0 should be 4)
CORRECT? [yn] y

HOLD BAD BLOCK? [yn] y

26026 DUP I=22
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=22 (0 should be 4)
CORRECT? [yn] y

INTERNAL ERROR: dups with -p
UNEXPECTED SOFT UPDATE INCONSISTENCY
** Phase 1b - Rescan For More DUPS
26112 DUP I=8
UNEXPECTED SOFT UPDATE INCONSISTENCY

26025 DUP I=17
UNEXPECTED SOFT UPDATE INCONSISTENCY

26026 DUP I=21
UNEXPECTED SOFT UPDATE INCONSISTENCY

** Phase 2 - Check Pathnames
DUP/BAD  I=9  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 01:53 2006
FILE=/lost+found/#000009

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=8  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:21 2006
FILE=/bad-sect/104448

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=16  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:21 2006
FILE=/bad-sect/104449

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=17  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104100

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=18  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104101

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=19  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104102

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=20  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104103

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=21  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104104

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=22  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104105

UNEXPECTED SOFT UPDATE INCONSISTENCY
 
xrsxДата: Понедельник, 24.10.2011, 11:58 | Сообщение # 2
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
Code
REMOVE? [yn] n

** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

SUMMARY INFORMATION BAD
SALVAGE? [yn] y

ALLOCATED FRAGS 26025-26026 MARKED FREE
BLK(S) MISSING IN BIT MAPS
SALVAGE? [yn] y

253 files, 714 used, 505773 free (77 frags, 63212 blocks, 0.0% fragmentation)

***** FILE SYSTEM MARKED DIRTY *****

***** FILE SYSTEM WAS MODIFIED *****

***** PLEASE RERUN FSCK *****
/usr/home/lissyara/>mount /tmp
/usr/home/lissyara/>ls -lah /tmp/bad-sect
total 20
drwxr-xr-x   2 root  wheel   512B  1 янв 02:22 .
drwxrwxrwt  12 root  wheel   1,0K  1 янв 01:58 ..
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104100
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104101
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104102
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104103
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104104
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104105
-rw-------   1 root  wheel   2,0K  1 янв 02:21 104448
-rw-------   1 root  wheel   2,0K  1 янв 02:21 104449
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 11:59 | Сообщение # 3
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
clri - утилита для удаления "невидимых" файлов (невидимость - это следствие ошибок файловой ситемы) Она забивает нулями первые 64 байта дескриптора файла - в итоге все остальные блоки файла определяются как потерянные, потому после clri надо запускать fsck

Пример:
Code
/usr/home/lissyara/>su
/usr/home/lissyara/>mount /dev/ad1s1a /mnt
/usr/home/lissyara/>cd /mnt
/mnt/>mkdir clri
/mnt/>cd clri/
/mnt/clri/>touch 1.txt
/mnt/clri/>touch 2.txt
/mnt/clri/>touch 3.txt
/mnt/clri/>ls -i
188417 1.txt    188418 2.txt    188419 3.txt
/mnt/clri/>clri /dev/ad1s1a 188417
clri: /dev/ad1s1a: Operation not permitted
/mnt/clri/>cd /
//>umount /mnt
//>clri /dev/ad1s1a 188417
clearing 188417
//>clri /dev/ad1s1a 188418
clearing 188418
//>clri /dev/ad1s1a 188419
clearing 188419
//>fsck /dev/ad1s1a
** /dev/ad1s1a
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
UNALLOCATED  I=188417  OWNER=root MODE=0
SIZE=0 MTIME=Jan  1 03:00 1970
NAME=/clri/1.txt

REMOVE? [yn] y

UNALLOCATED  I=188418  OWNER=root MODE=0
SIZE=0 MTIME=Jan  1 03:00 1970
NAME=/clri/2.txt

REMOVE? [yn] y

UNALLOCATED  I=188419  OWNER=root MODE=0
SIZE=0 MTIME=Jan  1 03:00 1970
NAME=/clri/3.txt

REMOVE? [yn] y

** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

SUMMARY INFORMATION BAD
SALVAGE? [yn] y

BLK(S) MISSING IN BIT MAPS
SALVAGE? [yn] y

241 files, 489 used, 1012502 free (38 frags, 126558 blocks, 0.0% fragmentation)

***** FILE SYSTEM WAS MODIFIED *****
//>mount /dev/ad1s1a /mnt
//>cd /mnt/clri/
/mnt/clri/>ls
/mnt/clri/>
 
xrsxДата: Понедельник, 24.10.2011, 12:01 | Сообщение # 4
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
bsdlabel - программа для изменения (а также проверки и установки новой) метки диска. До кучи может устанавливать код начальной загрузки (MBR, короче). Раньше она называлась disklabel (До FreeBSD 5.1). C её помощью можно сохранять старую метку в файл и восстанавливать её из него, ну и, разумеется, менять её прямо на диске.

Т.к. в этом деле требуется аккуратность - за ошибки придётся расплачиваться содержимым диска... Пример:
Code
/usr/home/lissyara/>su
/usr/home/lissyara/>dmesg | grep "ad[0-9]"
ad0: 16384MB <VMware Virtual IDE Hard Drive 00000001> at ata0-master UDMA33
ad1: 4096MB <VMware Virtual IDE Hard Drive 00000001> at ata0-slave UDMA33
Trying to mount root from ufs:/dev/ad0s1a
/usr/home/lissyara/>fdisk ad1
******* Working on device /dev/ad1 *******
parameters extracted from in-core disklabel are:
cylinders=8322 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=8322 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:
<UNUSED>
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 12:02 | Сообщение # 5
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
В системе два диска, на первом (ad0) стоит система, второй пустой - его и будем ковырять. Для начала диск надо инициализировать, программой fdisk:
Code
/usr/home/lissyara/>fdisk -BI ad1
******* Working on device /dev/ad1 *******
fdisk: Geom not found
/usr/home/lissyara/>fdisk ad1
******* Working on device /dev/ad1 *******
parameters extracted from in-core disklabel are:
cylinders=8322 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=8322 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 8388513 (4095 Meg), flag 80 (active)
         beg: cyl 0/ head 1/ sector 1;
         end: cyl 129/ head 15/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
/usr/home/lissyara/>
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 12:03 | Сообщение # 6
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
После fdisk появился раздел типа 165 (BSD). Вот теперь пришла пора bsdlabel - размечаем диск, в данном примере - одним шматком:
Code
/usr/home/lissyara/>bsdlabel -w ad1s1 auto
/usr/home/lissyara/>
/usr/home/lissyara/>bsdlabel ad1s1 > label_ad1
/usr/home/lissyara/>cat label_ad1
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
   a:  8388497       16    unused        0     0
   c:  8388513        0    unused        0     0         # "raw" part, don't edit
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 12:04 | Сообщение # 7
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
Если бы мне нужен бут сектор то это выглядело бы так:
Code
/usr/home/lissyara/>bsdlabel -w -B ad1s1 auto
/usr/home/lissyara/>

Пожалуй и всё, по bsdlabel... Тока чтобы не выглядело всё это незаконченным - добьём начатое до конца:
Code
/usr/home/lissyara/>newfs /dev/ad1s1c
/dev/ad1s1c: 4096.0MB (8388512 sectors) block size 16384, fragment size 2048
         using 23 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
  160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328,
  3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792, 6398144, 6774496,
  7150848, 7527200, 7903552, 8279904
/usr/home/lissyara/>mount /dev/ad1s1c /mnt
/usr/home/lissyara/>df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a     15G    1.4G     12G    10%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad1s1c    3.9G    4.0K    3.6G     0%    /mnt
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 12:08 | Сообщение # 8
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
Программа dump (rdump) предназначена для создания дампа файловой системы - для последующего восстановления при помощи restore. dump может делать полный дамп файловой системы, или только файлы изменённые после определённой даты.

Примеры:
Code
/usr/home/lissyara/>dump -0 -f - /dev/ad0s1a > dump_ad0s1a.img
   DUMP: WARNING: should use -L when dumping live read-write filesystems!
   DUMP: Date of this level 0 dump: Sat Jan 14 23:37:12 2006
   DUMP: Date of last level 0 dump: the epoch
   DUMP: Dumping /dev/ad0s1a (/) to standard output
   DUMP: mapping (Pass I) [regular files]
   DUMP: mapping (Pass II) [directories]
   DUMP: estimated 56292 tape blocks.
   DUMP: dumping (Pass III) [directories]
   DUMP: dumping (Pass IV) [regular files]
   DUMP: DUMP: 56891 tape blocks
   DUMP: finished in 32 seconds, throughput 1777 KBytes/sec
   DUMP: DUMP IS DONE
/usr/home/lissyara/>ls -lah | grep img
-rw-r--r--  1 root      wheel    56M Jan 14 23:37 dump_ad0s1a.img
/usr/home/lissyara/>df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    248M     55M    173M    24%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1f    145M     12K    133M     0%    /tmp
/dev/ad0s1d    1.4G    1.1G    190M    86%    /usr
/dev/ad0s1e     87M     17M     63M    21%    /var
/usr/home/lissyara/>
 
xrsxДата: Понедельник, 24.10.2011, 12:09 | Сообщение # 9
Подполковник
Группа: Администраторы
Сообщений: 117
Статус: Offline
Во как. Для "живых" файловых систем есть специальный ключик, оказывается. Ладно, сделаем ещё раз, с ним.
Code
/usr/home/lissyara/>dump -0 -L -f - /dev/ad0s1a > dump_ad0s1a.img
   DUMP: Date of this level 0 dump: Sat Jan 14 23:39:05 2006
   DUMP: Date of last level 0 dump: the epoch
   DUMP: Dumping snapshot of /dev/ad0s1a (/) to standard output
   DUMP: mapping (Pass I) [regular files]
   DUMP: mapping (Pass II) [directories]
   DUMP: estimated 56293 tape blocks.
   DUMP: dumping (Pass III) [directories]
   DUMP: dumping (Pass IV) [regular files]
   DUMP: DUMP: 56892 tape blocks
   DUMP: finished in 32 seconds, throughput 1777 KBytes/sec
   DUMP: DUMP IS DONE
/usr/home/lissyara/>ls -lah | grep img
-rw-r--r--  1 root      wheel    56M Jan 14 23:39 dump_ad0s1a.img
/usr/home/lissyara/>

Это делали дамп в файл. Кстати, из листинга видно, что "задампилось" 56 мегабайт - только то, что было занято, после архивации станет ещё меньше. Кстати, компрессию программа не поддерживает - это косяк (я для эксперимента сжал дамп: 56->21Mb - хорошая прибавка к пенсии :)) Поэтому придётся как-то изгаляться - если дампить в файл - то можно bzip2 или gzip`ом жать, а если надо на ленту, со сжатием - тогда дампить в файл через "трубу", сжимая сразу, или сжимать потом, но писать в любом сучае tar`у... Если без сжатия - можно сразу на стример писать.

По поводу восстановления из полученного дампа - программа restore.
 
  • Страница 1 из 1
  • 1
Поиск:

Storm Troopers © 2024