NetAppのAdvanced Drive Partitioning(ADP)で実効容量を増やす

# NetApp
ADPの流れだけ

## Advanced Drive Partitioning

### NetAppの潜在能力を引き出すADP

NetAppでは、各ノード(コントローラ)にディスク所有権が割り当てられており、各ノードでパリティ・スペアディスクがあるために、「実効容量少なくね？」となることがある。

そんなときにADPを使って、所有権を片寄せすることで、スペアなどを減らし実効容量を増やすことができる。そんな機能。

分かりやすいのはココ↓

> https://www.networld.co.jp/netapp/cp_iwasenaiyo/main.htm

### 2ノードクラスタでのADP構成

※ざっくりした手順を載せていますので設定は自己責任でお願いします(適当かますと壊れるという噂)

公式の手順はココ↓

> https://kb-ja.netapp.com/Advice_and_Troubleshooting/Data_Storage_Software/ONTAP_OS/What_are_the_steps_followed_to__configure_advanced_drive_partitioning_from_ONTAP_boot_menu_option_9

手順1. 各ノードにて Boot Menu を開き **5** を選択 (ブートメニューは起動中にCtrl+Cで開く)
   
   ```
   (1) Normal Boot.
   (2) Boot without /etc/rc.
   (3) Change password.
   (4) Clean configuration and initialize all disks.
   (5) Maintenance mode boot.
   (6) Update flash from backup config.
   (7) Install new software first.
   (8) Reboot node.
   (9) Configure Advanced Drive Partitioning.
   Selection (1-9)? 5
   ```

手順2. `Please answer yes or no` yesを選択し、以下を実施(各ノードMaintenace modeになっていることを確認)

   * `disk remove_ownership all` - すべてのdiskの所有権を削除

   ```
   *> disk remove_ownership all
   All disks will have their ownership information removed.
   For high availability (HA) configurations, the partner node must be down.
   Do you wish to continue? y
   Volumes must be taken offline. Are all impacted volumes offline(y/n)?? y
   *>
   *> disk show
   Local System ID: xxxxxxxxx
   
   disk show: No disks match option show.
   *>
   *>halt
   ```

手順3. 各ノード再起動し、ノード#1にて再びブートメニューを開き、**9**を選択 (ノード#2はBoot Menuを開いて待機)

手順4. 以下画面が表示される

   ```
   ***************************************************************
   * Advanced Drive Partitioning Boot Menu Options               *
   ***************************************************************
   
   (9a) Unpartition all disks and remove their ownership information.
   (9b) Clean configuration and initialize system with partitioned disks.
   (9c) Clean configuration and initialize system with whole disks.
   (9d) Reboot the node.
   (9e) Return to main boot menu.
   
   
   Selection (9a-9e)?:
   ```

手順5. ノード1にて `(9a)` を選択し、実行する

   以下、実施時の動作 

   * コントローラが所有する既存のアグリゲートを削除
   * コントローラが所有する既存のパーティションを破棄
   * ローカルで所有されているすべてのディスクから所有権を削除

   ```
   9a
   
   ########## WARNING ##########
   
   This is a disruptive operation and will result in the
   loss of all filesystem data. Before proceeding further,
   make sure that:
   1) This option (9a) has been executed or will be executed
      on the HA partner node (and DR/DR-AUX partner nodes if
      applicable), prior to reinitializing any system in the
      HA-pair (or MCC setup).
   2) The HA partner node (and DR/DR-AUX partner nodes if
      applicable) is currently waiting at the boot menu.
   
   
   Do you still want to continue (yes/no)? yes
   
   -- 省略 --
   
   Removing disk ownership...
   
   Disk ownership successfully removed.
   bootarg.bootmenu.selection is ||
   ```

手順6. ノード1にて `(9e)` 選択してBootMenuに戻り、ノード2にて `(9a)` (手順5)実施

手順7. ノード2にて `(9e)` 選択してBootMenuに戻り、今度はノード1にて `(9b)` を実施

   <u>(9c) を選ぶとADPではなくなるので注意</u>

   以下、実施時の動作

   * 設定の消去
   * ローカルディスク所有権を自動的に割り当て、パーティションレイアウト(データ、パリティ、スペア)を決定
   * パーティション化されたディスクでコントローラを再初期化

   ```
   ########## WARNING ##########
   
   All configuration data will be deleted and the node will be
   initialized with partitioned disks. Existing disk partitions must
   be removed from all disks (9a) attached to this node and
   its HA partner (and DR/DR-AUX partner nodes if applicable).
   The HA partner (and DR/DR-AUX partner nodes if applicable) must
   be waiting at the boot menu or already initialized with partitioned
   disks (9b).
   Do you still want to continue (yes/no)? yes
   yes
   AdpInit: This system will now reboot to perform wipeclean.
   bootarg.bootmenu.selection is |wipeconfig|
   Reinitialized partition header on /dev/adaxxx.
   Coredump wipe complete.
   Terminated
   .
   
   -- 省略 --
   -- クラスタセットアップまで待機 --
   Type yes to confirm and continue {yes}:
   ```

手順8. ノード1にて `(9b)` 処理終了後、ノード2にて `(9b)` を実施

手順9. クラスタセットアップを `Ctrl` + `C` でスキップし、両ノードでontapにログイン

手順10. ノード2にて以下を実施、ディスク情報を確認してhalt

    ```
    ::> set -privilege diag
    
    Warning: These diagnostic commands are for use by NetApp personnel only.
    Do you want to continue? {y|n}: y
    
    ::*> 
    ::*> disk partition show
                              Usable  Container     Container
    Partition                 Size    Type          Name              Owner
    ------------------------- ------- ------------- ----------------- -----------------
    :xx.xx.0P1                 x.xxTB spare         Pool0
    :xx.xx.0P2                xx.xxGB aggregate     /aggr0/xxxx0/xx0
    :xx.xx.1P1                      - unknown       -
    :xx.xx.1P2                      - unknown       -
    :xx.xx.2P1                 x.xxTB spare         Pool0
    :xx.xx.2P2                xx.xxGB aggregate     /aggr0/xxxx0/xx0
    :xx.xx.3P1                      - unknown       -
    :xx.xx.3P2                      - unknown       -
    :xx.xx.4P1                 x.xxTB spare         Pool0
    :xx.xx.4P2                xx.xxGB aggregate     /aggr0/xxxx0/xx0
    :xx.xx.5P1                      - unknown       -
    :xx.xx.5P2                      - unknown       -
    :xx.xx.6P1                 x.xxTB spare         Pool0
    :xx.xx.6P2                xx.xxGB aggregate     /aggr0/xxxx0/xx0
    :xx.xx.7P1                      - unknown       -
    :xx.xx.7P2                      - unknown       -
    :xx.xx.8P1                 x.xxTB spare         Pool0
    :xx.xx.8P2                xx.xxGB aggregate     /aggr0/xxxx0/xx0
    :xx.xx.9P1                      - unknown       -
    Press <space> to page down, <return> for next line, or 'q' to quit...                                                                                
                              Usable  Container     Container
    Partition                 Size    Type          Name              Owner
    ------------------------- ------- ------------- ----------------- -----------------
    :xx.xx.9P2                      - unknown       -
    :xx.xx.10P1                x.xxTB spare         Pool0
    :xx.xx.10P2               xx.xxGB spare         Pool0
    :xx.xx.11P1                     - unknown       -
    :xx.xx.11P2                     - unknown       -
    24 entries were displayed.
    
    ::*> 
    ```

手順11. ノード1を再起動、 Boot Menu から **5** を開く

手順12. [10.]で確認した、ディスクをすべてノード1にアサインする

    ```
    *> disk assign xx.xx.xP1 -f
    
     disk assign: Disk is currently owned by the partner.  You must halt the 
    partner before proceeding. If you continue without halting the partner,
    the partner might halt or panic, or
    partner volumes might be degraded or suffer data loss.
    Do you want to continue (y/n)?? y
    disk assign: Disk assigned but unable to obtain owner name.  Re-run 'disk assign' with -o option to specify name.
    Cannot do remote rescan. Use 'run local disk show' on the console of  for it to scan the newly assigned disks
    *> XXX XX XX:XX:XX [localhost:diskown.RescanMessageFailed:error]: Could not send rescan message to .
    
    *> 
    ```

手順13. 両ノード再起動し、クラスタセットアップを完了させる

手順14. あとは思い通りにアグリゲートを作成...