Можно объединить многодисковый zfs zpool на один (больший) диск?

У меня есть этот zpool:

    bash-3.2# zpool status dpool
  pool: dpool
 state: ONLINE
 scan: none requested
 config:
        NAME                                     STATE     READ WRITE CKSUM
        dpool                                    ONLINE       0     0     0
          c3t600601604F021A009E1F867A3E24E211d0  ONLINE       0     0     0
          c3t600601604F021A00141D843A3F24E211d0  ONLINE       0     0     0

Я хотел бы заменить оба этих диска на один (больший диск). Это можно сделать? zpool attach позволяет мне заменить один физический диск, но не позволяет заменить оба одновременно.

2 ответа

Решение

Нет, я не думаю, что это возможно так, как вы описываете.

Однако вы можете создать новый пул с одного диска и скопировать файловые системы ZFS в новый пул, используя простой процесс отправки / получения zfs.

Ты должен быть способен zpool attach новый и больший диск, дождитесь завершения зеркалирования, а затем zpool detach старые диски.

Редактировать: я неправильно прочитал ваш вопрос, и я был совершенно уверен, что вы запускаете их как зеркало.

Я согласен, что лучший способ действий - это создать новый пул и рекурсивно отправить все наборы данных в новый пул, но если вы действительно не можете этого сделать, то вы все равно можете выполнить изложенные мной шаги при условии, что вы разбиваете новый больший диск, на два раздела, каждый размером не менее того диска, который предполагается заменить.

Я рекомендую против этого, главным образом потому, что (1) управление становится более сложным, и (2) вы не сможете использовать кэш записи диска.

Я вставлю здесь последовательность, как показано на недавней коробке Illumos. Обратите внимание, что я создаю пустые файлы, чтобы показать это, вместо того, чтобы использовать целые диски и фрагменты / разделы, поскольку я не могу манипулировать физическими устройствами на этом блоке. Файлы названы aa1, aa2 а также aa3,

  1. Подготовьте устройства. aa3 200M большой, в то время как aa1 а также aa2 только 100M:

    # dd if=/dev/zero of=/opt/local/aa1 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa2 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa3 bs=1M count=200
    
  2. Создайте наш тестовый пул:

    # zpool create test mirror /opt/local/aa1 /opt/local/aa2
    

    Убедитесь, что все прошло гладко:

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   106K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   106K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
    
  3. Установить autoexpand имущество:

    # zpool set autoexpand=on test
    
  4. Присоедините новое устройство:

    # zpool attach test /opt/local/aa2 /opt/local/aa3
    

    Все ли еще хорошо?

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   120K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   120K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
        /opt/local/aa3      -      -      -         -
    

    Да, это.

  5. Отключите первых двух разработчиков:

    # zpool detach test /opt/local/aa1
    # zpool detach test /opt/local/aa2
    

Наконец, давайте снова проверим пул:

# zpool list -v test
NAME               SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
test               196M   124K   195M         -     0%  1.00x  ONLINE  -
  /opt/local/aa3   196M   124K   195M         -

Он правильно вырос до 200 МБ.

Другие вопросы по тегам