Как клонировать разделы от крупного диска на меньший диск

Я не знаю, как найти его с помощью команды ls . Но если вы действительно этого хотите, вы можете использовать btrfs-progs / btrfs-debug-tree .

Если reflink = always , файлы будут совместно использовать общий блок данных. Этот общий блок данных (он же экстенты) имеет более 1.

  1. Сначала вам нужно найти objectid для файлов один и два

     #. / Btrfs-debug-tree / dev / xvdc 
     (Отметьте в разделе FS_TREE) 
      
    ключ элемента 8 (256 DIR_INDEX 4) itemoff 15842 itemsize 33 
    ключ местоположения (259 INODE_ITEM 0) тип FILE 
    namelen 3 datalen 0 name: один 
    item 9 key (256 DIR_INDEX 5) itemoff 15809 itemsize 33 
    location key (260 INODE_ITEM 0) type FILE 
    namelen 3 datalen 0 name: two { {1}}  
     

Сверху мы видим его 259 (один) и 260 (два) .

  1. Теперь найдите его ссылки. из дерева экстентов. Команда ниже найдет блок данных, совместно используемый двумя файлами.

     # ./btrfs-debug-tree / dev / xvdc | grep -A2 "refs 2" 
    extension refs 2 gen 9 flags DATA 
    extension data backref root 5 objectid 260 offset 0 count 1 
    extension data backref root 5 objectid 259 offset 0 count 1 
     

Бонус: Создайте еще одну ссылку:

# cp --reflink=always one three

убедитесь, что счетчик ссылок увеличивается на 1.

# ./btrfs-debug-tree   /dev/xvdc | grep -A3 "refs 3"
        extent refs 3 gen 9 flags DATA
        extent data backref root 5 objectid 260 offset 0 count 1
        extent data backref root 5 objectid 261 offset 0 count 1
        extent data backref root 5 objectid 259 offset 0 count 1

Здесь блок данных разделяется между тремя файлами, на которые указывает objectid 259,260,261 .

1
12.01.2019, 17:14
2 ответа

Используемая вами команда ddкопирует не отдельные разделы, а весь /dev/sdc, что не сработает, поскольку /dev/sdcв ~в 4 раза больше /dev/sdb..

Вам нужно создать разделы одинакового размера на /dev/sdb, а затем использовать ddили catдля клонирования разделов по отдельности.

Убедитесь, что на /dev/sdbнет смонтированных файловых систем. После создания разделов на/dev/sdb:

dd if=/dev/sdc3 of=/dev/sdb3 bs=2M

dd if=/dev/sdc4 of=/dev/sdb4 bs=2M

Для лучшей (и более быстрой )производительности используйтеcat:

cat /dev/sdc3 > /dev/sdb3

cat /dev/sdc4 > /dev/sdb4

И так далее и тому подобное.

0
28.01.2020, 00:23

Как правило, вы не можете клонировать диск большего размера на диск меньшего размера.

Но есть обходные пути.

  • Вы можете уменьшить (и, возможно, переместить )разделы на большом диске, чтобы все они находились в пределах меньшего диска (с небольшим объемом дискового пространства, зарезервированным для резервной копии таблицы разделов. в конце в случае таблицы разделов GUID, GPT ).

    Имейте в виду, что если вы переместите головную часть загрузочного раздела (, корневой раздел может быть загрузочным разделом ), загрузчик должен быть переустановлен, чтобы найти его. Это возможно, но осложнение.

  • Затем вы можете клонировать эту часть большего диска, и, если это таблица разделов GUID, GPT, впоследствии исправить резервную копию таблицы разделов, например, с помощью gdisk.

    Я бы по-прежнему рекомендовал клонировать «весь» диск, от /dev/sdxдо /dev/sdy, где x— буква устройства исходного диска, а y— буква устройства целевого диска. Клонирование с помощью ddили подобных инструментов будет усечено, когда целевой диск будет заполнен.

  • Есть и другие вещи, которые могут создать проблемы. Несколько минут назад я написал список вещей, на которые следует обратить внимание, когда вы собираетесь клонировать диск. См. следующую ссылку Клонирование с одного диска на другой диск .

0
28.01.2020, 00:23

Теги

Похожие вопросы