---
title: "Ремонт файловой системы UFS2"
slug: "remont-faylovoy-sistemy-ufs2"
date: "2014-08-13T12:48:00+04:00"
author: "at-hacker"
tags:
  - "FileSystem"
  - "FreeBSD"
  - "Troubleshooting"
canonical_url: "https://at-hacker.in/?go=all/remont-faylovoy-sistemy-ufs2/"
---
Поимел сейчас неясного происхождения баг — домашнее хранилище, организованное на основе неттопа, зависло. Система там стоит на флэшке, на винте только своп и юзерские файлы. Перезагрузил, начал чинить ошибки на файловой системе флэшки. Ну, всё как обычно:

# fsck -fy /dev/da0a
...

после одного из разделов fsck доложил, что часть ошибок исправлена, но filesystem is still dirty, please rerun fsck. Я перезапустил, а в ответ мне:

# fsck -fy /dev/da0d  

ioctl (GCINFO): Inappropriate ioctl for device  
 
fsck_ufs: /dev/da0d: can't read disk label 
Хотя визуально все разделы на месте, о чём подтверждали все утилиты. Поиск по интернету конкретного рецепта не принёс, но навёл на размышления о повреждённом суперблоке. В итоге вылечил таки.

Сначала надо выяснить, где размещаются копии суперблока. Делаем раз:

# newfs -N /dev/da0d  

/dev/da0d: 1024.0MB (2097152 sectors) block size 32768, fragment size 4096  

        using 4 cylinder groups of 256.03MB, 8193 blks, 32896 inodes.  

super-block backups (for fsck -b #) at:  

 192, 524544, 1048896, 1573248
Нужно починить файловую систему с правильным суперблоком. Сделать это можно командой *fsck_ffs*::

# fsck_ffs -b 1573248 /dev/da0d
Ключ *-b 1573248* указывает, что нужно при ремонте ФС нужно использовать не первый суперблок, а тот, который лежит по смещению 1573248. После этого система починилась нормально. указывает, что нужно при ремонте ФС нужно использовать не первый суперблок, а тот, который лежит по смещению 1573248. После этого система починилась нормально.
