Рейтинг:1

Почему Linux «dd» выдает ошибку «на устройстве не осталось места» при копировании одного раздела на меньшее устройство?

флаг cn

Я пытаюсь скопировать один раздел /dev/sda1 в /dev/sdc1, но получаю сообщение об ошибке «на устройстве не осталось места», и я, честно говоря, не понимаю, почему.

Я работаю над виртуальной машиной Oracle Cloud Infrastructure (OCI), где /dev/sda — это том объемом 768 ГБ, чей раздел sda1 был сжат до 32 ГБ (процесс прошел нормально, потери данных нет! Я могу гарантировать, потому что этот том группу дисков Oracle Database ASM, и после сжатия все работает нормально).

Поскольку OCI позволяет только увеличивать размер тома, я создал новый том /dev/sdc размером 50 ГБ (это минимально допустимый размер) и создал раздел /dev/sdc1 размером всего 32 ГБ (того же размера, что и /dev/sda1).

НАИМЕНОВАНИЕ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА КРЕПЛЕНИЯ
sdc 8:32 0 50G 0 диск
ââsdc1 8:33 0 32G 0 часть
sda 8:0 0 768G 0 диск
ââsda1 8:1 0 32G 0 часть

Я получаю сообщение об ошибке во время работы

# dd if=/dev/sda1 of=/dev/sdc1 bs=512b conv=noerror,sync
dd: ошибка записи â/dev/sdc1â: на устройстве не осталось места
22567+0 записей в
22566+0 записей
скопировано 5915787264 байта (5,9 ГБ), 42,9384 с, 138 МБ/с

Два раздела имеют одинаковый размер, как показывает fdisk.

# fdisk /dev/sda

Диск /dev/sda: 824,6 ГБ, 824633720832 байт, 1610612736 секторов
Единицы = сектора 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер ввода-вывода (минимальный/оптимальный): 4096 байт / 1048576 байт
Тип метки диска: dos
Идентификатор диска: 0x7c9bf84b

   Система идентификаторов блоков начала загрузки устройства
/dev/sda1 2048 67108863 33553408 83 Linux


# fdisk /dev/sdc
Диск /dev/sdc: 53,7 ГБ, 53687091200 байт, 104857600 секторов
Единицы = сектора 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер ввода-вывода (минимальный/оптимальный): 4096 байт / 1048576 байт
Тип метки диска: dos
Идентификатор диска: 0x9b11add5

   Система идентификаторов блоков начала загрузки устройства
/dev/sdc1 2048 67108863 33553408 83 Linux

Что я делаю не так?

флаг in
Он выдает ошибки довольно рано по сравнению с 32G, я бы проверил узлы `ls -l /dev/sd?1`, проверил номера узлов с помощью `lsblk -b`, проверил `dmesg` на наличие сообщений, использовал `dd_rescue` или `ddrescue` вместо.
Рейтинг:0
флаг cn

Я не знаю, в чем проблема, но у меня сработало просто клонирование всего тома.

# dd if=/dev/sda of=/dev/sdc bs=512b conv=noerror,sync

Конечно, операция останавливается на 50 ГБ, что соответствует общему размеру /dev/sdc с тем же сообщением об ошибке, но результат в порядке.

A.B avatar
флаг cl
A.B
В чем может быть проблема: ваша система не обновляла свои таблицы разделов в памяти.Вы, вероятно, создали /dev/dc1 на ~ 6G и увеличили его позже. Самый простой инструмент для принудительного обновления — `kpartx -u ...`. Однако это должно происходить только в том случае, если раздел используется.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.