Назад | Перейти на главную страницу

Могу ли я объединить многодисковый 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 позволяет заменить один физический диск, но не позволяет заменять оба сразу.

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

Вы жестяная банкаоднако создайте новый пул с одним диском и скопируйте файловые системы 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 МБ.