|
Работа с дисками, папками и файлами.
| |
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.
|
|
| |
|
|
|