LINUX.ORG.RU

Раздел на /dev/sda

 


0

1

Совершенно неожиданно обнаружил такую бяку: у меня оказывается раздел не на sda1, а на sda.

lsblk: sda      8:0    0   1,8T  0 disk /media/daten2
fstab:
# /media/daten2 was on /dev/sda during installation
UUID=43617ee4-d1e7-4dd6-92d1-ba7d8639a210 /media/daten2   ext3    defaults        0       2

Все прекрасно работает, но меня несколько нервируют заявления GParted, что он там вообще никакой валидной ФС не нашел. С его точки зрения диск не разбит. Есть ли способ без переформатирования и потери данных сделать раздел sda1?


Есть ли способ без переформатирования и потери данных сделать раздел sda1?

Есть, но лучше ничего не трогать, оно того не стоит.

нервируют заявления GParted

Можно просто выкинуть эту поделку, она не нужна.

Homura_Akemi
()

Совершенно неожиданно обнаружил такую бяку: у меня оказывается раздел не на sda1, а на sda.

Это не бяка а файловая система созданная на всю ёмкость устройства без создания таблицы разделов.

Все прекрасно работает, но меня несколько нервируют заявления GParted, что он там вообще никакой валидной ФС не нашел. С его точки зрения диск не разбит

Всё правильно диск не разбит, т.к. отсутсвует таблица разделов, она находится в нулевом секторе (512 байт), поэтому раз нет таблицы разделов то и gparted считает диск не разбитым.

Есть ли способ без переформатирования и потери данных сделать раздел sda1?

Врядли, в особенности если файловая система начинается с нулевого сектора. В идеале, если файловая система начинается с 2048 сектора то можно «нарисовать» таблицу разделов и первый раздел, указав что он начинается с 2048 сектора.

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

Это не бяка а файловая система созданная на всю ёмкость устройства без создания таблицы разделов.

Я это это делал в пьяном угаре, не иначе. Тем более что разделу уже больше года.

Есть какая годная утилита для анализа дисков? Чтобы подробно показала, на каких секторах что лежит. HEX-редактор не предлагать))

Gregon
() автор топика
Ответ на: комментарий от kostik87

Вот скрипт, который поможет определить с какого сектора начинается файловая системе (суперблок файловой системы):

#!/usr/bin/perl -w
for ($sector = 0; ; $sector++)
{
$offset = $sector * 512;
$cmd = "mount /dev/sda /mnt/tmp -t ext3 -o ro,offset=$offset > /dev/null";
`$cmd`;
print "sector: $sector offset: $offset\n";
die "partition found @ offset $offset!" if ($? == 0);
} 

Сохраните эти строки в файл, сделайте его сиполняемым и создайте точку монтирвоания:

chmod +x mount.pl
mkdir /mnt/tmp
./mount.pl

В итоге в выводе будет указан сектор, с которго начинается суперблок файловой системы. Но, скорее всего, это нулевой сектор.

С другой стороны в том, что файловая система создана на устройстве без таблицы разедлов, нет ничего плохого.

kostik87 ★★★★★
()

Это дело вкуса. Я так некоторые хранилища намерено форматирую, например переносные.

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

Так безопаснее. Gparted - это комбайн, который не только позволяет редактировать таблицу разделов, но и создаёт файловые системы вместе с записью о разделе в таблице разделов. Так что не зная ничего об этой особенности gparted можно не только случайно изменить таблицу разделов, но и затереть данные.

В то время как функционая fdisk и mkfs куда больше, да и надёжности больше.

kostik87 ★★★★★
()

Есть ли способ без переформатирования и потери данных сделать раздел sda1?

Уменьшить фс, передвинуть вперед (на место будущего раздела) и создать раздел.

Но зачем?

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 2)
Ответ на: комментарий от J

Или сам parted не нужен?

Да. Даже учитывая, что они выкинули собственные велосипеды для манипуляций с ФС, parted остаётся довольно странным и неудобным. А про GUI к нему вообще не вижу смысла что-то говорить.

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

Вот скрипт

/me вспоминает однострочники на перле

Нескромный вопрос, а зачем mount внутри цикла? Я перл не изучал, но скрипт вроде понятный.

Gregon
() автор топика

Все прекрасно работает, но меня несколько нервируют заявления GParted,

Просто не обращай внимания.

Есть ли способ без переформатирования и потери данных сделать раздел sda1?

Это не нужно.

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

Ну если скрипт понятный, то вам должно быть всё ясно, если же нет, тогда вот обяснение: в цикле происходит попытка смонтировать файловую систему на устаройстве /dev/sda с некоторым смещением 'offset=$offset', значение которого рассчитыается произведением номера сектора на его разме (512 байт), после попытки монтирования оценивается код ошибки 'die «partition found @ offset $offset!» if ($? == 0);' , если он равен нулю, то команда выполнена успешно, т.е. смонтирована файловая система с некоторым смещением от начала устройства. Цикл завершается. Если вы уберёте это '> /dev/null' то увидите сообщения mount, о том, что файловую систему не удалось смонтировать, а если после вызова команды напишете ещё и вывод $? то увидите код ошибки.

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

Спасибо за разъяснения, теперь все ясно.

Скрипт прошелся по первым 16 тысячам секторов, ничего не нашлось. Почему-то он (не смотря на /dev/null) выплевывал ошибку:

sector: 16871 offset: 8637952
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error

ХЗ, причем тут loop0.

Gregon
() автор топика
Ответ на: комментарий от kostik87

Спасибо за помощь. Оставлю как есть, ну его в пень. Подожду следующего апгрейда.

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