У меня есть диск (A) (жесткий диск SATA 2 ТБ 3.5), и у меня есть NAS D-Link DNS-320L (с точной моделью жесткого диска SATA 2 ТБ 3.5). Оба подключены к роутеру (локальной сети) 192.168.1.3
и 192.168.1.2
соответственно.
Как я могу клонировать диск A ( /dev/sda
) на моем NAS ( //192.168.1.2/disk
) с dd
?
Гипотетический пример (это не работает):
sudo dd if=/dev/sda |pv|dd of=//192.168.1.2/disk bs=1M conv=notrunc,noerror
Примечание: мне нужно клонировать (реплицировать) весь HD "A" в HD "B" . HD "A" содержит SO Ubuntu 16.04 x64, swap, MBR и другие разделы.
Цель: если в «А» есть повреждение, быстро замените его на «В».
linux
hard-drive
nas
dd
ajcg
источник
источник
rsync
для копирования содержимого, оставляя тип файловой системы, геометрию и т. Д. Целевых дисков на NAS. Таким образом, вы получаете возможность восстановления, если процесс требует перезапуска и проверки целостности на уровне файлов.rsync -axHAWXS --numeric-ids --info=progress2 /path/to/src /path/to/share/mount/
Ответы:
Извлеките HD «B» из своего NAS и подключите его непосредственно к системе, в которой находится HD «A». Тогда вы можете клонировать с
pv
илиdd
,ddrescue
или даже сcp
илиcat
я думаю, и это может быть так же просто, какИспользуйте параметры, которые вам нужны. (Кстати, в вашем примере
conv=notrunc,noerror
это не имеет смысла. Это будет иметь смысл с первымdd
.)И это правда, вы не должны делать это, когда любая файловая система
/dev/sda
смонтирована с правами на запись или/dev/sdb
каким-либо образом смонтирована. Это то, что происходит, когда ваш источник может измениться во время последовательного клонирования .Ваш целевой диск (его разделы, файловые системы и файлы) может или не может быть увиден NAS при переустановке диска там. NAS может записать некоторые изменения и испортить клон (например, он может изменить или не изменить данные загрузчика в MBR и последующих секторах).
Я знаю, что вам нужно решение, в котором целевой диск постоянно находится внутри NAS. Это сложно, потому что ваш NAS не раскрывает диск (устройство) для вас, ни его раздел (ы), ни файловую систему (ы). Он предоставляет файлы (существующие в файловой системе EXT3) с использованием CIFS / SMB, NFS, AFP или HTTP / HTTPS. Чтобы клонировать диск, вы должны иметь возможность записи на него на уровне секторов - я думаю, что ваш NAS не позволит вам сделать это просто так.
Я сказал «это сложно», а не «невозможно», потому что, если вы сможете получить доступ к SSH (или через telnet, или около того) к вашему NAS, вы сможете записать на диск на уровне сектора. Вы можете найти оболочку Linux (?) Со стандартными инструментами и, возможно, вы можете сделать что-то похожее на это (из живого дистрибутива Linux на ПК, где HD "A"):
Или используйте
nc
для потоковой передачи ваших данных.Редактировать 1. Хотя я не уверен, что это будет работать с рассматриваемым NAS (или любым другим NAS), я добавляю
nc
решение на основе, потому что OP явно запросил его (в комментариях). Следующее решение наверняка подойдет для «NAS» - обычного компьютера с Linux.Прежде чем вы скажете своему NAS, чтобы он прослушивал входящие данные и передавал их на устройство, вы должны убедиться, что никакой другой процесс не записывает на целевой диск;
umount
это если вы можете или хотя бы отменить совместное использование устройства в конфигурации NAS. Затем:Номер
3210
является номером порта, вы можете выбрать его из диапазона1024..65535
. Замените/dev/sda
строку с нужным устройством. С этого момента ваш NAS ожидает входящего соединения. Если кто-то подключится к нему через выбранный порт, его данные будут записаны на устройство, но в домашней среде это вряд ли является проблемой. Однако, если вас это беспокоит, вы должны знать,nc
что примет только одно соединение (одно за раз и одно в общем, то есть оно завершится после завершения первого соединения). Таким образом, если вы успешно подключитесь на следующем шаге, то вы будете знать, что никто другой не сделал.Затем скажите вашей ОС с исходным диском (HD «A») прочитать его и отправить данные на прослушивание
nc
на NAS. Как/dev/sda
не должно быть смонтировано (строго: оно может быть смонтировано, но только для чтения), вам лучше выполнить этот шаг из некоторого живого дистрибутива Linux.Используйте
dd
параметры, которые вам нужны (какconv=notrunc,noerror
). Обратите внимание на3210
номер порта прослушивания, который я выбрал на предыдущем шаге.На практике вы можете следить за прогрессом, поэтому лучшей командой может быть:
Или вы можете запросить
dd
отчет о его прогрессе, передав емуUSR1
сигнал. Запустите следующее в другом терминале:и информация появится в терминале, где
dd
работает.После
dd
завершения и ошибки нет (ни на одной из сторон), вам следует изящно перезагрузить NAS . Очень важно, чтобы этоsync
был целевой диск, поэтому не просто отключайте питание. Используйте любой способ правильной перезагрузки или завершения работы вашего NAS.Правка 1 заканчивается здесь.
Если вам это удастся, то обычные операции NAS могут или не могут испортить что-то в клоне, как если бы вы переустанавливали диск, клонированный напрямую.
Несколько комментариев предложили смонтировать общий ресурс и записать его на уровне файлов. У вас есть как минимум два варианта:
rsync
);Оба метода могут быть полезны, но ни один не клонирует. Вы не сможете заменить HD "A" просто на HD "B", как хотите. Более того, последний метод не будет работать вообще в вашем конкретном случае, потому что ему требуется свободное место в файловой системе HD «B», чтобы быть больше, чем весь HD «A» (это ограничение может не действовать, если вы используете разреженный файл, но вы не можете использовать один с NFS, SMB и т. д., вы можете?). Вы можете написать сжатый файл, и он может соответствовать, но это еще дальше от клонирования.
источник
partclone
поэтому я не буду включать его в свой ответ. Ответ теперь расширен за счет общегоnc
решения.