LINUX.ORG.RU

[чёрная магия] Как перекроить таблицу разделов, не трогая один конкретный раздел?


0

0

Была таблица разделов, в которой после разных экспериментов разделы шли не по порядку и вообще походу она была поломана (cfdisk ругался, что есть перекрывающиеся разедлы, хотя таковых небыло). Сегодня я решил это дело пофиксить. Для этого снёс тблицу разделов и создал новую, разделы создал с теми же значениями начала и конца (но соответственно в другом порядке). В результате по непонятным причинам некторые разделы перестали монтироваться. Я пофиксил это дело testdisk'ом, но один раздел пришлось убить, так как изначально у меня было три основных раздела, один расширенный и два логических. Testdisk напрочь отказался создавать расширенный раздел, так что пришлось из пяти разделов сохранить только четыре.

Сейчас у меня четыре раздела и «дырка». Данные (/home) на последнем, он находится в конце диска и заполнен почти под завязку. А теперь вопрос: как не трогая данные на этом разделе сделать его логическим? Перемещать и ресайзить очень долго, а данные слить некуда. Все остальные разделы надо просто снести и создать на их месте новые.

Проблема в том, что если создать логический раздел с тем же началом и концом, то он просто не монтируется. Если так же создать как основной (primary), то монтируется. Уже мозг себе сломал - что я делаю не так?

Диск /dev/sda: 250.0 ГБ, 250059350016 байт
255 heads, 63 sectors/track, 30401 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd40b9876

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1               1        3916    31455238+   7  HPFS/NTFS
/dev/sda2            4415        4430      128520   83  Linux
/dev/sda3            4431        8360    31567662   83  Linux
/dev/sda4            8361       30401   177044332+  83  Linux

Хочу чтобы sda4 стал sda6. И да, что означает плюсик в конце чисел столбца «Блоки»?

Deleted

> Была таблица разделов, в которой после разных экспериментов разделы шли не по порядку и вообще походу она была поломана (cfdisk ругался, что есть перекрывающиеся разедлы, хотя таковых небыло). Сегодня я решил это дело пофиксить.

Забыл сказать - между экспериментами, приведшими таблицу разделов в плачевное состояние, и моментом когда я решил это пофиксить - несколько месяцев. Т.е. всё работало. Пофиксить решил из-за того, что анаконда при установке fedora 11 beta подыхала при поиске дисков для установки (сразу после выбора языка) и вываливала свои питоньи кишки на консоль.

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

>Не представляю чем бы мне в данном случае помог LVM...

Затем, что вопросов бы не возникало, как вводить/удалять новые разделы не трогая старые.

KRoN73 ★★★★★
()

Плюсик означает, что число блоков в разделе не соответсвует его границе по цилиндрам. То есть в первом разделе у вас 31455238 блоков (кБайт), а цилинров 3916; 3916*8225280/1024 = 31455270 блоков.

>Проблема в том, что если создать логический раздел с тем же началом и концом, то он просто не монтируется.

Покажите таблицу разделов когда диск не монтируется.

>а данные слить некуда.

Без бекапа лучше с диском ничего не делать.

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

Нашёл изначальный вариант, до того, как я полез в таблицу разделов своими кривыми ручонками =).

Диск /dev/sda: 250.0 ГБ, 250059350016 байт
255 heads, 63 sectors/track, 30401 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00029dd3

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 3916 31455238+ 7 HPFS/NTFS
/dev/sda2 3917 4414 4000185 82 Linux своп / Solaris
/dev/sda3 4415 4430 128520 83 Linux
/dev/sda4 4431 30401 208612057+ 5 Расширенный
/dev/sda5 8361 30401 177044332+ 83 Linux
/dev/sda6 4431 8360 31567662 83 Linux

> Без бекапа лучше с диском ничего не делать.


Важные данные забэкаплены. Но ведь есть же ещё фильмы и музыка, которые терять не хочется...

Deleted
()

> как не трогая данные на этом разделе сделать его логическим?

Есть вариант, но он требует чёрной магии. Надо создать расширенный раздел на один сектор/цилиндр раньше, чем логический, а на нем уже создавать логический.

Только надо быть аккуратным, т.к. инфа о логических разделах лежит в первом секторе/цилиндре расширенного, со всеми вытекающими при создании.

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

Файловые системы в Линуксе не используют первый сектор (туда может ставится загрузчик), поэтому, ИМХО, пропускать цилиндр в начале EXT-раздела не нужно.

2mironov_ivan: Попробуйте сделать ext-раздел с 4431 цилинра, sda5 с 4431-цилиндра, а sda6 c 8361-цилиндра. Но перед этим выполните команды

"cfdisk -P t /dev/sda" и "cfdisk -P s /dev/sda".

Эти команды показывают "настоящие" границы разделов, так как разделы не обязаны граничить по цилиндрам. И "чёрной магией" вам нужно добиться, чтобы "cfdisk -P t" показывал для /home одинаковый "Start Sector" будь оно sda4 (primary) или sda6 (logical).

P.S. Как вы уже поняли, до копания с диском надо было выполнить команду "cfdisk -P t" и записать её результат, чтобы потом не пришлось запускать testdisk...

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

> поэтому, ИМХО, пропускать цилиндр в начале EXT-раздела не нужно.

Да, очень вероятно. Тогда надо выравнивать и экст- и логический раздел на один и тот же цилиндр.

LamerOk ★★★★★
()

В fdisk ручками выставить правильные начала и окончания разделов, и все будет нормально. Я не меньше десятка раз так делал, в том числе превращая primary в logical и обратно.

no-dashi ★★★★★
()

В общем. После testdisk'а у меня такая таблица разделов:

Partition Table for /dev/sda

               First       Last
 # Type       Sector      Sector   Offset    Length   Filesystem Type (ID) Flag
-- ------- ----------- ----------- ------ ----------- -------------------- ----
 1 Primary           0    62910539     63    62910540 HPFS/NTFS (07)       Boot
   None       62910540    70910909      0     8000370 Unusable             None
 2 Primary    70910910    71167949      0      257040 Linux (83)           None
   None       71167950    71168075*     0         126*Unusable             None
 3 Primary    71168076*  134303399*     0    63135324*Linux (83)           None
 4 Primary   134303400*  488392064      0   354088665 Linux (83)           None
Partition Table for /dev/sda

         ---Starting----      ----Ending-----    Start     Number of
 # Flags Head Sect  Cyl   ID  Head Sect  Cyl     Sector    Sectors
-- ----- ---- ---- ----- ---- ---- ---- ----- ----------- -----------
 1  0x80    1    1     0 0x07  254   63  3915          63    62910477
 2  0x00    0    1  4414 0x83  254   63  4429    70910910      257040
 3  0x00    2    1  4430 0x83  254   63  8359    71168076    63135324
 4  0x00    0    1  8360 0x83  254   63 30400   134303400   354088665

При попытке сделать раздел №4 логическим я получаю такую таблицу (4 -> 6):

Partition Table for /dev/sda

               First       Last
 # Type       Sector      Sector   Offset    Length   Filesystem Type (ID) Flag
-- ------- ----------- ----------- ------ ----------- -------------------- ----
 1 Primary           0    62910539     63    62910540 HPFS/NTFS (07)       None
 2 Primary    62910540    71312534      0     8401995 Linux swap / So (82) None
 3 Primary    71312535    71585639      0      273105 Linux (83)           None
 4 Primary    71585640   488392064      0   416806425 Extended (05)        None
 5 Logical    71585640   134303399     63    62717760 Linux (83)           None
 6 Logical   134303400   488392064     63   354088665 Linux (83)           None
Partition Table for /dev/sda

         ---Starting----      ----Ending-----    Start     Number of
 # Flags Head Sect  Cyl   ID  Head Sect  Cyl     Sector    Sectors
-- ----- ---- ---- ----- ---- ---- ---- ----- ----------- -----------
 1  0x00    1    1     0 0x07  254   63  3915          63    62910477
 2  0x00    0    1  3916 0x82  254   63  4438    62910540     8401995
 3  0x00    0    1  4439 0x83  254   63  4455    71312535      273105
 4  0x00    0    1  4456 0x05  254   63 30400    71585640   416806425
 5  0x00    1    1  4456 0x83  254   63  8359          63    62717697
 6  0x00    1    1  8360 0x83  254   63 30400          63   354088602

Смысл цифр в колонке "Start Sector" мне не совсем понятен, но именно
эти цифры отличаются. В результате раздел не монтируется.

Сейчас я выкрутился таким способом: сделал расширенным не четвёртый,
а третий раздел. Четвёртый так и оставил основным. И теперь вот сижу
и соображаю - а зачем оно мне вообще надо было? =)

Deleted
()
Ответ на: комментарий от no-dashi

> В fdisk ручками выставить правильные начала и окончания разделов, и все будет нормально. Я не меньше десятка раз так делал, в том числе превращая primary в logical и обратно.

Видать руки у меня кривые и я что-то делаю не так...

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