LINUX.ORG.RU
ФорумAdmin

Помогите плиз восстановить большой раздел


0

1

Hello, Есть в наличии сервер с рейдконтроллером и двумя массивами на нем и установленной Fedora 8 x86_64. Второй массив имеет объем 6 террабайт. Я его разбил parted-ом на три раздела по 1.9 террабайта и взгромоздил xfs. В прошлую субботу мне пришлось перегрузить сервер (абсолютно корректно reboot). После загрузки mount отказался монтировать третий раздел sdb3. После обследования получил следующую информацию. Судя по всему, третий раздел в таблице разделов сейчас прописан с совершенно неверными цифрами. А именно:

fdisk -l

Диск /dev/sdb: 5999.9 ГБ, 5999909928960 байт

255 heads, 63 sectors/track, 729447 cylinders

Units = цилиндры of 16065 * 512 = 8225280 bytes

Disk identifier: 0x00094bb7

Устр-во Загр Начало Конец Блоки Id Система

/dev/sdb1 1 243032 1952148437+ 83 Linux

/dev/sdb2 243032 486063 1952148437+ 83 Linux

/dev/sdb3 218714 461988 1954101562+ 83 Linux

То есть sdb3 как бы наложен на sdb1 и sdb2. sdb1 и sdb2 сейчас чувствуют себя нормально. То есть, насколько я понимаю, надо прописать в таблицу разделов правильные стартовый и финальный сектора для sdb3. Только как это сделать ? Пробовал использовать sfdisk, но он меня мягко говоря, послал. Сначала я снял дамп с sdb и получил файл следующего содержания:

# таблица разделов /dev/sdb

unit: sectors

/dev/sdb1 : start= 1, size=3904296875, Id=83

/dev/sdb2 : start=3904296876, size=3904296875, Id=83

/dev/sdb3 : start=3513626455, size=3908203125, Id=83

/dev/sdb4 : start= 0, size= 0, Id= 0

С помощью калькулятора и общего количества секторов вычислил стартовый сектор и размер третьего раздела, прописал эти цифры в файле

cat mysdb_sfdisk_new_1

# таблица разделов /dev/sdb

unit: sectors

/dev/sdb1 : start= 1, size=3904296875, Id=83

/dev/sdb2 : start=3904296876, size=3904296875, Id=83

/dev/sdb3 : start=7808593751, size=3909972304, Id=83

/dev/sdb4 : start= 0, size= 0, Id= 0

и скормил его sfdisk-у на запись. Получил нижеследующее:

sfdisk -n /dev/sdb < mysdb_sfdisk

Диск /dev/sdb: 729447 цилиндров, 255 головок, 63 секторов/дорожку

Старая ситуация:

Единицы = цилиндры по 8225280 байт, блоки по 1024 байт, начиная с 0

Устр-во Загр Нач Конец #цил #блоки Id Система

/dev/sdb1 0+ 243031- 243032- 1952148437+ 83 Linux

/dev/sdb2 243031+ 486062- 243032- 1952148437+ 83 Linux

/dev/sdb3 218713+ 461987- 243275- 1954101562+ 83 Linux

/dev/sdb4 0 - 0 0 0 Пустой

Новая ситуация:

Единицы = секторы по 512 байт, начиная с 0

Устр-во Загр Начало Конец #секторы Id Система

/dev/sdb1 1 3904296875 3904296875 83 Linux

/dev/sdb2 3904296876 7808593750 3904296875 83 Linux

/dev/sdb3 7808593751 11718566054 3909972304 83 Linux

/dev/sdb4 0 - 0 0 Пустой

Предупреждение: раздел 1 не заканчивается на границе цилиндра

sfdisk: Не нравятся мне эти разделы - ничего не изменено. (Если вы действительно хотите этого, используйте опцию --force.)

Попробовал я его запустить с командой --force. Он это дело проглотил, сказал "записываю .. перечитываю таблицу .." После этого я предложил ему рассказать про обновленную таблицу разделов и просто офигел, когда увидел в дампе те же самые цифры, что и в самом начале. То есть sdb3 начинался с того же 3513626455 сектора. Теперь обращаюсь к многоуважаемой общественности. Подскажите пожалуйста почему так неуважительно ведет себя sfdisk и можно ли как-то попытаться прописать правильные цифры для sdb3, дабы попытаться вытянуть этот раздел без переразбиения ?

anonymous

А если просто удалить раздел sdb3 fdisk'ом, а потом его создать с нужного по нужный сектор? у меня как-то падал корневой раздел из-за похожей ситуации. Загрузился с ливсд, удалил раздел, и создал новый того же размера. Так даже данные не потерялись, после перезагрузки все заработало)

NikitoZ
()
Ответ на: комментарий от NikitoZ

Hello,

Есть, как минимум, один нюанс. fdisk не понимэ таких больших разделов, поэтому когда я разбивал этот массив, пользовался parted-ом. А parted сейчас при попытке показать список разделов на этом массиве посылает меня с грязными ругательствами:

parted /dev/sdb GNU Parted 1.8.6 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print Ошибка: Can't have overlapping partitions.

esculap
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.