ClonezillaをLACP+タグVLAN環境で使う


システムディスクのバックアップ/リストアを行えるDebian/Ubuntuベースで構成されているClonezilla を使ってシステム障害に備えたバックアップディスクを取得しようと思ったのだが、ネットワークがLACP (802.3ad) +タグVLANで作成されていることに気がついた。

複数NICが搭載されている環境でClonzillaを起動すると、ネットワーク設定の際に「bond0 Use_channel_bonding」という選択肢が表示される。

しかし、次のNetwork Configで「static Use static IP address」を選択してみてもIPアドレスに関する設定のみでLACPで使うNICの選択やVLANに関する入力する場面はない。

というわけで、「enter_shell Enter_command_line_prompt._Do_it_manually」を選択してみるしかない。

選択してみると、設定したあと「exit」すれば続きから始まるよ、といわれる。

では、どのように設定を行うのか?下記でヒントを発見

Clonezillaの機能追加希望「#61 no lacp / etherchannel / Bonding support」(2015年07月15日~2016年10月13日)
Clonezillaのフォーラム「VLANs / bonding configuration」(2020年12月09日~2020年12月14日)

手動で設定する場合のやりかたと、ocs-live-nicbonding というスクリプトを追加して今後のバージョンで使える様にする、というものになる。

Clonezilla 2.8.0で確認してみると ocs-live-nicbonding は存在していた。

しかし、ドキュメントが見当たらないので、スクリプトを読んでみると下記仕様のようだった。

・bond0 を mode=802.3ad(LACP) 、miimon=100 で作成する
・ocs-live-nicbonding のオプションとして指定したNICがスレーブデバイスとして登録される
・xmit_hash_policy は指定しないのでデフォルトのlayer2設定

というわけで、eth3,eth4を使用してbond0を作成する場合は「ocs-live-nicbonding eth3 eth4」と実行する

「ip a s bond0」を実行してbond0が作成されていることを確認

bond0へのタグVLAN追加はvconfigコマンドで実行。

「vconfig add bond0 <VLANID>」を実行する

そうすると「bond0.<VLAN ID>」というデバイスが作成される(「ip a s bond0.<VLANID>」で確認)

IPアドレスを「ifconfig bond0.<VLANID> <IPアドレス> netmask <ネットマスク> up」を実行して設定。

で「exit」を実行すると、下記の様にClonezillaの操作に戻ります。

ONTAPで未接続のイーサポートを無効化する手法


NetApp ONTAPのWeb管理画面 ONTAP System Managerは、未使用でネットワークケーブルを接続していないポートがあると、オフラインになってるポートがあるよ、的な警告を表示する。

System Managerからだと簡単にネットワークポートの無効化が設定できる

無効化したいポートを選択して、「無効化」

続行します。

選択したポートのグラフィックが灰色に変化します。

さて、この操作、コマンドで行うにはどうすればいいのか?

まず、状況については「network port show」で確認出来ます。

fas8300::> network port show

Node: fas8300-01
                                                  Speed(Mbps) Health
Port      IPspace      Broadcast Domain Link MTU  Admin/Oper  Status
--------- ------------ ---------------- ---- ---- ----------- --------
a0a       Default      -                up   9000     -/-     healthy
a0a-1000  Default      Storage          up   9000     -/-     healthy
e0M       Default      Default          up   1500  auto/1000  healthy
e0c       Cluster      Cluster          up   9000 100000/100000 healthy
e0d       Cluster      Cluster          up   9000 100000/100000 healthy
e0e       Default      -                up   9000  auto/25000 healthy
e0f       Default      -                up   9000  auto/25000 healthy
e0g       Default      -                up   9000  auto/25000 healthy
e0h       Default      -                down 9000  auto/-     -

Node: fas8300-02
                                                  Speed(Mbps) Health
Port      IPspace      Broadcast Domain Link MTU  Admin/Oper  Status
--------- ------------ ---------------- ---- ---- ----------- --------
a0a       Default      -                up   9000     -/-     healthy
a0a-1000  Default      Storage          up   9000     -/-     healthy
e0M       Default      Default          up   1500  auto/1000  healthy
e0c       Cluster      Cluster          up   9000  auto/100000 healthy
e0d       Cluster      Cluster          up   9000  auto/100000 healthy
e0e       Default      -                up   9000  auto/25000 healthy
e0f       Default      -                up   9000  auto/25000 healthy
e0g       Default      -                up   9000  auto/25000 healthy
e0h       Default      -                up   9000  auto/25000 healthy
18 entries were displayed.

fas8300::>

しかし、network port modifyで指定できるオプションには、link up/downに関する設定がなさそう・・・

fas8300::> network port modify -node fas8300-01 -port e0h -?
  [ -mtu <integer> ]                                            MTU
  [ -autonegotiate-admin {true|false} ]                         Auto-Negotiation Administrative
  [ -duplex-admin {auto|half|full} ]                            Duplex Mode Administrative
  [ -speed-admin {auto|10|100|1000|10000|100000|40000|25000} ]  Speed Administrative
  [ -flowcontrol-admin {none|receive|send|full} ]               Flow Control Administrative
  [ -ipspace <IPspace> ]                                        IPspace Name

fas8300::>

マニュアルの「network port modify」を確認してみると下記の記述がある。

[-up-admin {true|false}] – Up Administrative (privilege: advanced)
The administrative state of the port. If set to true, the port is used if it is operational. If set to false, the port is configured down.

標準の管理CLIではなく、advanced以上の権限であれば実行できる、とのこと。

fas8300::> set advanced

Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp
         personnel.
Do you want to continue? {y|n}: y

fas8300::*>

advancedモードに切り替えてから、再度オプション一覧を確認

fas8300::*> network port modify -node fas8300-01 -port e0h -?
  [ -mtu <integer> ]                                            MTU
  [ -autonegotiate-admin {true|false} ]                         Auto-Negotiation Administrative
  [ -duplex-admin {auto|half|full} ]                            Duplex Mode Administrative
  [ -speed-admin {auto|10|100|1000|10000|100000|40000|25000} ]  Speed Administrative
  [ -flowcontrol-admin {none|receive|send|full} ]               Flow Control Administrative
  [ -up-admin {true|false} ]                                    *Up Administrative
  [ -ipspace <IPspace> ]                                        IPspace Name
  [ -ignore-health-status {true|false} ]                        *Ignore Port Health Status

fas8300::*>

設定出来る項目に現れました。

fas8300::*> network port modify -node fas8300-01 -port e0h -up-admin true

fas8300::*>

設定が反映されたかを確認します

fas8300::*> network port show

Node: fas8300-01
                                                                       Ignore
                                                  Speed(Mbps) Health   Health
Port      IPspace      Broadcast Domain Link MTU  Admin/Oper  Status   Status
--------- ------------ ---------------- ---- ---- ----------- -------- ------
a0a       Default      -                up   9000     -/-     healthy  false
a0a-1000  Default      Storage          up   9000     -/-     healthy  false
e0M       Default      Default          up   1500  auto/1000  healthy  false
e0c       Cluster      Cluster          up   9000 100000/100000 healthy false
e0d       Cluster      Cluster          up   9000 100000/100000 healthy false
e0e       Default      -                up   9000  auto/25000 healthy  false
e0f       Default      -                up   9000  auto/25000 healthy  false
e0g       Default      -                up   9000  auto/25000 healthy  false
e0h       Default      -                up   9000  auto/25000 healthy  false

Node: fas8300-02
                                                                       Ignore
                                                  Speed(Mbps) Health   Health
Port      IPspace      Broadcast Domain Link MTU  Admin/Oper  Status   Status
--------- ------------ ---------------- ---- ---- ----------- -------- ------
a0a       Default      -                up   9000     -/-     healthy  false
a0a-1000  Default      Storage          up   9000     -/-     healthy  false
e0M       Default      Default          up   1500  auto/1000  healthy  false
e0c       Cluster      Cluster          up   9000  auto/100000 healthy false
e0d       Cluster      Cluster          up   9000  auto/100000 healthy false
e0e       Default      -                up   9000  auto/25000 healthy  false
e0f       Default      -                up   9000  auto/25000 healthy  false
e0g       Default      -                up   9000  auto/25000 healthy  false
e0h       Default      -                up   9000  auto/25000 healthy  false
18 entries were displayed.

fas8300::*>

全てのポートがupになりました。

System Managerの方でも表示がupに戻ったかを確認できました。

Web GUIだと簡単に設定変更できるものが、コマンドだとadvanced権限必要だった、というのは驚きでした。

NetAppで電源電圧を確認する方法


NetAppを稼働させていたら電源電圧の警告が出ていたので、その確認手法を調べた。

ONTAP OS側からだと「system node environment sensors show」で現在値のみが確認出来た。

ただ、上記だと各部センサーの情報が全て含まれてしまうので、電源電圧だけを見るのであれば「system node environment sensors show -name *VIN*」と指定することで入力電圧のみを見ることが出来る。

fas8300::> system node environment sensors show -name *VIN*
Node Sensor                 State Value/Units Crit-Low Warn-Low Warn-Hi Crit-Hi
---- --------------------- ------ ----------- -------- -------- ------- -------
fas8300-01
     PSU1 VIN              normal
                                    99840 mV     90480    93600  261040  263120
     PSU2 VIN              normal
                                    94640 mV     90480    93600  261040  263120
fas8300-02
     PSU1 VIN              normal
                                    99840 mV     90480    93600  261040  263120
     PSU2 VIN              normal
                                    94640 mV     90480    93600  261040  263120
4 entries were displayed.

fas8300::>

「Value/Units」が現在値で、それ以外が注意/警告を発令する電圧設定となる。

これまでに電源電圧警報が発令された時に何Vだったのかを確認するには、Service Processor/BMC側にログインして調べる必要があった。

「system log sel」で表示されるIPMIログを見て確認する。

BMC fas8300-01> system log sel
   1 | 11/09/2021 | 09:38:39 | System Firmware Progress | Secondary CPU Initialization | Asserted
   2 | 11/09/2021 | 09:38:39 | System Firmware Progress | USB resource configuration | Asserted
   3 | 11/09/2021 | 09:38:41 | System Firmware Progress | PCI resource configuration | Asserted
   4 | 11/09/2021 | 09:38:41 | System Firmware Progress | Video initialization | Asserted
   5 | 11/09/2021 | 09:38:41 | System Firmware Progress | Keyboard controller initialization | Asserted
   6 | 11/09/2021 | 09:38:42 | System Firmware Progress | Hard-disk initialization | Asserted
   7 | 11/09/2021 | 09:38:50 | System Firmware Progress | Hard-disk initialization | Asserted
   8 | 11/09/2021 | 09:39:01 | System Event |  | Asserted
   9 | 11/09/2021 | 09:39:20 | Voltage #0x50 | Lower Non-critical going low
   a | 11/09/2021 | 09:39:24 | Voltage #0x5a | Lower Non-critical going low
   b | 11/09/2021 | 09:40:29 | Voltage #0x50 | Lower Non-critical going low
   c | 11/09/2021 | 09:40:29 | Voltage #0x5a | Lower Non-critical going low
   d | 11/09/2021 | 09:41:02 | System Event #0xff | Timestamp Clock Sync | Asserted
   e | 11/09/2021 | 09:41:02 | System Event #0xff | Timestamp Clock Sync | Asserted
   f | 11/09/2021 | 10:41:48 | Voltage #0x50 | Lower Non-critical going low
<略>
 b97 | 11/30/2021 | 23:45:25 | Voltage #0x5a | Lower Non-critical going low
 b98 | 11/30/2021 | 23:46:33 | Voltage #0x5a | Lower Non-critical going low
 b99 | 11/30/2021 | 23:46:46 | Voltage #0x5a | Lower Non-critical going low

BMC fas8300-01>

上記の「Voltage #0x50 | Lower Non-critical going low」というのが16進数表記の電圧となる。

0x50=80V、0x5a=90Vとなる。

さすがにAC 80Vは低すぎでしょ!!というわけで、電源経路確認が実施されましたとさ

Ubuntu 20.04でインストールされるdrbdは8.4なのか9.11なのか?


Ubuntu 20.04でdrbdを使おうとしたら、drbd-utilsのバージョンは9.11.0だが、drbd自体は8.4.11 といういまいちわけがわからない状態になっていた。

2022/04/22追記:Ubuntu 22.04 LTSでも状況はほぼ同じだった。詳しくは最後尾
2023/02/20: 本文を現状にあわせて若干修正

どういうことなのか調査してみた。

なお、drbd 8.4.11として使った場合にいくつか問題点があったが、それについては別記事「Ubuntu 20.04で標準のdrbd 8.4.11を使う場合の注意点」に記載している。


ubuntuのサイトに掲載されている「Ubuntu HA – DRBD」ではバージョンに関する話は特に書いておらず「sudo apt install drbd-utils」だけでインストールは完了し、あとは/etc/drbd.confの編集、という手順になっている。

次にdrbdの開発元であるlinbitが公開している「drbd 8ドキュメント」と「drbd 9ドキュメント」を見るとそれぞれ手順が異なっている。

drbd8では標準レポジトリだけでインストールできる、という趣旨だったものが、drbd9では明示的にPPAレポジトリを使え、と変更されている。

とりあえずは「apt install drbd-utils」でインストールかな?と実行してみると普通に実行できる。

$ sudo -i
# apt install drbd-utils
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  guile-2.2-libs libgc1c2 libgsasl7 libidn11 libkyotocabinet16v5 libmailutils6
  libmysqlclient21 libntlm0 mailutils mailutils-common mysql-common postfix
  ssl-cert
Suggested packages:
  heartbeat mailutils-mh mailutils-doc procmail postfix-mysql postfix-pgsql
  postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin
  | dovecot-common resolvconf postfix-cdb postfix-doc openssl-blacklist
The following NEW packages will be installed:
  drbd-utils guile-2.2-libs libgc1c2 libgsasl7 libidn11 libkyotocabinet16v5
  libmailutils6 libmysqlclient21 libntlm0 mailutils mailutils-common
  mysql-common postfix ssl-cert
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 9,579 kB of archives.
After this operation, 66.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
<略>

postfixとdovecotもインストールされるため下記のダイアログも開くので注意が必要。

インストール後、パッケージを調べて見ると、drbd-utilsは9.11.0だけど、drbd-docは8.4というちぐはぐな状態であることに気がつく。

root@ubuntu143:~# apt search drbd
Sorting... Done
Full Text Search... Done
collectd-core/focal 5.9.2.g-1ubuntu5 amd64
  statistics collection and monitoring daemon (core system)

drbd-doc/focal 8.4~20151102-1 all
  RAID 1 over TCP/IP for Linux (user documentation)

drbd-utils/focal,now 9.11.0-1build1 amd64 [installed]
  RAID 1 over TCP/IP for Linux (user utilities)

nagios-plugins-contrib/focal 25.20191015+1ubuntu1 amd64
  Plugins for nagios compatible monitoring systems

prometheus-hacluster-exporter/focal 0.4.0-2 amd64
  Prometheus exporter for HA cluster services

root@ubuntu143:~#

動作させてみると /proc/drbd が返すバージョンは 「version: 8.4.11 (api:1/proto:86-101)」だった。

root@ubuntu143:~# cat /proc/drbd
version: 8.4.11 (api:1/proto:86-101)
srcversion: FC3433D849E3B88C1E7B55C
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:6276 nr:0 dw:42864576 dr:5041 al:328 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
root@ubuntu143:~#

drbdは9.0からauto promoteという機能が追加されたので、それを使いたい場合に、8.4だと困る、ということになる。

このauto promoteは、両ノードが再起動した際に最初にdrbdデバイスにアクセスしてきたノードを自動的にprimaryに設定してくれる、という機能である。(8.xまでは両方ともSecondaryのままで、手動でprimaryに設定する必要があった)

というわけで、drbd9を使いたい場合は、PPAレポジトリを追加してlinbitが提供するdrbd9をインストールする必要がある。

ドキュメントに書かれているPPAレポジトリ情報は誤りがあり、正しくは「https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack」だった。

ここにあるように「add-apt-repository ppa:linbit/linbit-drbd9-stack」を実行してPPAレポジトリを追加する。

root@ubuntu143:~# add-apt-repository ppa:linbit/linbit-drbd9-stack
 This PPA contains DRBD9, drbd-utils, LINSTOR (client, python API, server).

This differs from official, production grade LINBIT repositories in several ways, including:
- We push RCs immediately to the PPA
- We don't push hotfixes, these usually have to wait until the next RC/release
- We only keep 2 LTS versions up to date (Bionic and Focal, but not Xenial)

For support and access to official repositories see:
https://www.linbit.com or write an email to: sales AT linbit.com
 More info: https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack
Press [ENTER] to continue or Ctrl-c to cancel adding it.

Hit:1 http://jp.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:4 http://jp.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:5 http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu focal InRelease [24.4 kB]
Get:6 http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu focal/main amd64 Packages [2,344 B]
Get:7 http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu focal/main Translation-en [1,308 B]
Fetched 356 kB in 3s (137 kB/s)
Reading package lists... Done
root@ubuntu143:~#

で・・・linbit提供のdrbdはdkmsモジュールとして提供されるため「apt install drbd-utils drbd-dkms」を実行してインストールすることになる。

今回のテスト環境ではdrbd8が既にインストールされていたので、最初に「apt update;apt upgrade」を実行してapt-utilsのバージョンアップを行った。

root@ubuntu143:~# apt update
Hit:1 http://jp.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:4 http://jp.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:5 http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu focal InRelease
Fetched 328 kB in 1s (538 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
root@ubuntu143:~# apt list --upgradable
Listing... Done
drbd-utils/focal 9.19.1-1ppa1~focal1 amd64 [upgradable from: 9.11.0-1build1]
N: There is 1 additional version. Please use the '-a' switch to see it
root@ubuntu143:~# apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  drbd-utils
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 720 kB of archives.
After this operation, 75.8 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu focal/main amd64 drbd-utils amd64 9.19.1-1ppa1~focal1 [720 kB]
Fetched 720 kB in 3s (214 kB/s)
Preconfiguring packages ...
(Reading database ... 72754 files and directories currently installed.)
Preparing to unpack .../drbd-utils_9.19.1-1ppa1~focal1_amd64.deb ...
Unpacking drbd-utils (9.19.1-1ppa1~focal1) over (9.11.0-1build1) ...
Setting up drbd-utils (9.19.1-1ppa1~focal1) ...

Configuration file '/etc/drbd.d/global_common.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** global_common.conf (Y/I/N/O/D/Z) [default=N] ? y
Installing new version of config file /etc/drbd.d/global_common.conf ...
Installing new version of config file /etc/init.d/drbd ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.13) ...
root@ubuntu143:~#

次に、「apt install drbd-dkms」でdrbd本体をインストールした。

root@ubuntu143:~# apt install drbd-dkms
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  autoconf automake autopoint autotools-dev binutils binutils-common
  binutils-x86-64-linux-gnu build-essential cpp cpp-9 dctrl-tools debhelper
  dh-autoreconf dh-strip-nondeterminism dkms dpkg-dev dwz fakeroot g++ g++-9
  gcc gcc-9 gcc-9-base gettext intltool-debian libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl
  libarchive-zip-perl libasan5 libatomic1 libbinutils libc-dev-bin libc6-dev
  libcc1-0 libcroco3 libcrypt-dev libctf-nobfd0 libctf0 libdebhelper-perl
  libdpkg-perl libfakeroot libfile-fcntllock-perl
  libfile-stripnondeterminism-perl libgcc-9-dev libgomp1 libisl22 libitm1
  liblsan0 libltdl-dev libmail-sendmail-perl libmpc3 libquadmath0
  libstdc++-9-dev libsub-override-perl libsys-hostname-long-perl libtool
  libtsan0 libubsan1 linux-libc-dev m4 make manpages-dev po-debconf
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc binutils-doc cpp-doc
  gcc-9-locales debtags dh-make menu debian-keyring g++-multilib
  g++-9-multilib gcc-9-doc gcc-multilib flex bison gdb gcc-doc gcc-9-multilib
  gettext-doc libasprintf-dev libgettextpo-dev glibc-doc bzr libtool-doc
  libstdc++-9-doc gfortran | fortran95-compiler gcj-jdk m4-doc make-doc
  libmail-box-perl
The following NEW packages will be installed:
  autoconf automake autopoint autotools-dev binutils binutils-common
  binutils-x86-64-linux-gnu build-essential cpp cpp-9 dctrl-tools debhelper
  dh-autoreconf dh-strip-nondeterminism dkms dpkg-dev drbd-dkms dwz fakeroot
  g++ g++-9 gcc gcc-9 gcc-9-base gettext intltool-debian
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libarchive-cpio-perl libarchive-zip-perl libasan5 libatomic1 libbinutils
  libc-dev-bin libc6-dev libcc1-0 libcroco3 libcrypt-dev libctf-nobfd0 libctf0
  libdebhelper-perl libdpkg-perl libfakeroot libfile-fcntllock-perl
  libfile-stripnondeterminism-perl libgcc-9-dev libgomp1 libisl22 libitm1
  liblsan0 libltdl-dev libmail-sendmail-perl libmpc3 libquadmath0
  libstdc++-9-dev libsub-override-perl libsys-hostname-long-perl libtool
  libtsan0 libubsan1 linux-libc-dev m4 make manpages-dev po-debconf
0 upgraded, 66 newly installed, 0 to remove and 0 not upgraded.
Need to get 47.8 MB of archives.
After this operation, 208 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
<略>
drbd.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.4.0-90-generic/updates/dkms/

drbd_transport_tcp.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.4.0-90-generic/updates/dkms/

depmod..........

DKMS: install completed.
Processing triggers for install-info (6.7.0.dfsg.2-5) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Processing triggers for man-db (2.9.1-1) ...
root@ubuntu143:~#

これで再起動

すると下記の様にdrbdのバージョンが「version: 9.1.4 (api:2/proto:110-121)」となった。

root@ubuntu143:~# cat /proc/drbd
version: 9.1.4 (api:2/proto:110-121)
GIT-hash: e4de25c3a65811b0fa4733b1c2a000ee322f5cfa build by root@ubuntu143, 2021-11-24 07:10:11
Transports (api:17): tcp (9.1.4)
root@ubuntu143:~#

この状態でdrbd関連パッケージの状態を確認する下記の様になっていた。

root@ubuntu143:~# apt search drbd
Sorting... Done
Full Text Search... Done
collectd-core/focal 5.9.2.g-1ubuntu5 amd64
  statistics collection and monitoring daemon (core system)

drbd-dkms/focal,now 9.1.4-1ppa1~focal1 all [installed]
  RAID 1 over TCP/IP for Linux module source

drbd-doc/focal 8.4~20151102-1 all
  RAID 1 over TCP/IP for Linux (user documentation)

drbd-module-source/focal 9.1.4-1ppa1~focal1 all
  RAID 1 over TCP/IP for Linux module source

drbd-reactor/focal 0.5.0-1ppa1~focal1 amd64
  Monitors DRBD resources via plugins.

drbd-utils/focal,now 9.19.1-1ppa1~focal1 amd64 [installed]
  RAID 1 over TCP/IP for Linux (user utilities)

drbd8-utils/focal 2:9.19.1-1ppa1~focal1 amd64
  transitional dummy package

linstor-common/focal 1.16.0-1ppa1~focal1 all
  DRBD distributed resource management utility

linstor-controller/focal 1.16.0-1ppa1~focal1 all
  DRBD distributed resource management utility

linstor-satellite/focal 1.16.0-1ppa1~focal1 all
  DRBD distributed resource management utility

nagios-plugins-contrib/focal 25.20191015+1ubuntu1 amd64
  Plugins for nagios compatible monitoring systems

prometheus-hacluster-exporter/focal 0.4.0-2 amd64
  Prometheus exporter for HA cluster services

root@ubuntu143:~#

2022/04/22追記

Ubuntu 22.04 LTSが出たので状況を確認してみた。

user$ apt search drbd
Sorting... Done
Full Text Search... Done
drbd-doc/jammy 8.4~20220106-1 all
  RAID 1 over TCP/IP for Linux (user documentation)

drbd-utils/jammy 9.15.0-1build2 amd64
  RAID 1 over TCP/IP for Linux (user utilities)

monitoring-plugins-contrib/jammy 37.20211217ubuntu1 amd64
  Plugins for nagios compatible monitoring systems

prometheus-hacluster-exporter/jammy 1.2.3-2 amd64
  Prometheus exporter for HA cluster services

user@ubuntu2204:~$ modinfo drbd
filename:       /lib/modules/5.15.0-25-generic/kernel/drivers/block/drbd/drbd.ko
alias:          block-major-147-*
license:        GPL
version:        8.4.11
description:    drbd - Distributed Replicated Block Device v8.4.11
author:         Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>
srcversion:     C369F58AE19642816B00C81
depends:        lru_cache,libcrc32c
retpoline:      Y
intree:         Y
name:           drbd
vermagic:       5.15.0-25-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        43:DE:0B:33:F7:CF:5A:CE:F6:19:E2:2A:DD:DD:1D:BD:4D:ED:8E:ED
sig_hashalgo:   sha512
signature:      72:7A:0C:A3:E5:31:68:E8:FC:55:61:6F:FF:E1:11:B1:90:9F:8D:DF:
                29:E0:16:9D:C5:6D:0A:D4:A6:48:88:87:E0:5B:46:73:96:24:8A:1D:
                51:1E:39:4B:A4:20:65:42:2F:A7:2B:6A:ED:AE:8B:4E:FD:0F:E5:94:
                7C:03:0D:53:1F:21:C4:09:AF:7A:91:32:23:0E:E2:3A:32:79:FF:0B:
                36:E7:BC:7A:5E:72:A0:6E:05:2C:04:B6:4B:01:77:65:5A:43:EA:AB:
                F0:BE:B0:97:2E:65:81:7B:90:67:76:E5:64:2D:EF:8A:9A:3F:21:DD:
                CF:A6:C8:3B:87:4D:C1:1C:6C:F8:AD:F2:01:C2:DC:BD:CA:3F:85:4C:
                A8:A6:B3:C5:83:C8:13:76:31:77:51:8C:37:3D:D4:77:00:29:8F:BE:
                1A:E3:C4:1F:EE:96:1E:24:24:9A:77:BE:F4:7C:40:4D:BD:34:83:69:
                8D:0C:E6:DA:FC:F0:65:74:52:86:EA:8F:26:2B:71:5B:BB:79:73:0C:
                26:D1:66:4D:FC:71:B2:E4:B3:0B:4D:85:EC:CF:98:CB:E6:83:C6:79:
                28:F1:BF:23:CC:30:68:0E:F4:50:85:04:D1:AF:87:31:E0:4E:A5:1D:
                5B:F7:6F:18:34:17:E9:8D:84:6C:B5:2C:9F:6F:38:DA:4D:9D:4B:3F:
                38:6D:38:5E:02:56:23:DB:B3:F4:06:6E:EE:52:F1:09:62:59:1A:BA:
                57:1E:E7:10:0F:61:E1:86:5C:3E:ED:67:D6:AF:9F:CE:69:F3:38:D4:
                EA:91:30:72:7F:B3:02:08:82:0F:C4:4B:8C:85:86:6E:4A:9F:E3:51:
                78:A7:4D:C2:E1:E2:7D:20:F5:42:F6:A7:6F:76:76:04:B9:93:E7:99:
                53:9A:3F:6D:61:AA:31:B2:04:59:BE:E4:16:E3:8C:4E:D0:58:0A:FE:
                FF:1C:79:D6:5E:72:72:3D:A0:41:47:DC:04:8C:04:04:C6:E7:6A:55:
                5A:E7:FC:B1:C5:B5:CD:C3:D3:03:3A:B8:3E:C1:24:87:93:DD:34:1A:
                4B:97:3B:61:7C:CB:E9:34:90:C2:C5:C5:2A:79:74:D1:49:E6:50:A1:
                9F:35:AA:14:38:1B:0F:01:27:4E:44:F5:0F:7C:28:41:77:0A:AB:A9:
                0A:43:0C:CB:69:27:B8:E4:CA:FA:E9:01:12:A3:57:D2:7B:9F:9F:8E:
                4D:A1:F9:5B:12:AD:F8:87:FA:49:F2:E3:72:D4:2A:A4:6F:EF:C7:13:
                2D:96:BF:E9:7C:3F:63:5B:60:C7:33:7B:5C:FA:9A:3A:66:83:41:63:
                B6:67:18:DC:D4:5F:D6:4B:5F:DA:F2:74
parm:           allow_oos:DONT USE! (bool)
parm:           disable_sendpage:bool
parm:           proc_details:int
parm:           minor_count:Approximate number of drbd devices (1-255) (uint)
parm:           usermode_helper:string
user@ubuntu2204:$

drbd-utilsのバージョンが 9.15.0 にアップデートしているが、kernelに含まれているdrbd は8.4.11 のままとなっていた。

ONTAP 9.xでntpやDNSの動作確認


NetApp ONTAP 9.x環境でNTPやDNSの設定をした際に、正常に動作しているかを確認する手法

(2022/08/12追記 「ONTAP 9.x環境でActive DirectoryとNISとでユーザ名マッピングを行わせた場合の確認手法」)

NTPの設定確認

NTP設定がされているかどうかを「cluster time-service ntp server show」で確認

::> cluster time-service ntp server show
                                        Is
                                        Authentication
Server                         Version  Enabled        Key ID
------------------------------ -------  -------------- ------
10.20.8.10                     auto     false          -

::>

NTPの動作確認

指定したNTPサーバと同期が取れているかは、adminモードでは確認出来ない。

advancedかdiagモードに切り替えて「cluster time-service ntp status show」を実行して確認。(注:ONTAPバージョンが9.1とかの古いものだと存在しない)

::> set adv

Warning: These advanced commands are potentially dangerous; use them only when
         directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y

::*> cluster time-service ntp status show

Node: netapp_02
Server                  Reachable  Selection State                Offset (ms)
----------------------- ---------  ------------------------------ ------------
10.20.8.10                   true  Currently Selected Server            21.552

Node: netapp_02
Server                  Reachable  Selection State                Offset (ms)
----------------------- ---------  ------------------------------ ------------
10.20.8.10                   true  Currently Selected Server             21.68
2 entries were displayed.

::*>

上記の様に「Reachable:true」となっていればNTPサーバと通信が取れている。

下記の様に「Reachable:false」となっている場合は接続が取れないか、リトライ中である。

::*> cluster time-service ntp status show

Node: netapp_01
Server                  Reachable  Selection State                Offset (ms)
----------------------- ---------  ------------------------------ ------------
10.20.8.10                  false  Server Not Responding or Too              0
                                   Distant

Node: netapp_02
Server                  Reachable  Selection State                Offset (ms)
----------------------- ---------  ------------------------------ ------------
10.20.8.10                  false  Server Not Responding or Too              0
                                   Distant
2 entries were displayed.

::*>

なお、-insオプションを付けると詳細が確認出来る。

::*> cluster time-service ntp status show -ins

                                      Node: netapp_01
NTP Server Host Name, IPv4 or IPv6 Address: 10.20.8.10
                         Server IP Address: 10.20.8.10
Is Peer Reachable and Responding to Polls?: true
         Is Peer Selected as Clock Source?: true
                 State of Server Selection: sys_peer
     Description of Server Selection State: Currently Selected Server
                      Poll Interval (secs): 64
                Time from Last Poll (secs): 9
              Offset from Server Time (ms): -16.61
                 Delay Time to Server (ms): 0.395
                 Maximum Offset Error (ms): 20.946
                    Reachability of Server: 1f
                   Stratum of Server Clock: 2
                 Reference Clock at Server: 133.243.238.163
           Reported Packet and Peer Errors: -

                                      Node: netapp_02
NTP Server Host Name, IPv4 or IPv6 Address: 10.20.8.10
                         Server IP Address: 10.20.8.10
Is Peer Reachable and Responding to Polls?: true
         Is Peer Selected as Clock Source?: true
                 State of Server Selection: sys_peer
     Description of Server Selection State: Currently Selected Server
                      Poll Interval (secs): 64
                Time from Last Poll (secs): 14
              Offset from Server Time (ms): 6.623
                 Delay Time to Server (ms): 0.398
                 Maximum Offset Error (ms): 17.906
                    Reachability of Server: 1f
                   Stratum of Server Clock: 2
                 Reference Clock at Server: 133.243.238.163
           Reported Packet and Peer Errors: -
2 entries were displayed.

::*>

“Stratum of Server Clock”と”Reference Clock at Server”の値が見えてればだいたい大丈夫でしょう。(ちなみに上記の 133.243.238.163 は ntp.nict.jp / ntp.nict.go.jp を構成するIPアドレスの1つです)

diagモードにしてsystemshellが使える状態であれば「systemshell -node local -command “sudo ntpq -pn”」を実行することで各ノードごとで動作しているntpdの状態を取得することもできます。

ontap91::*> systemshell -node local -command "sudo ntpq -pn"
  (system node systemshell)
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 xxx.xx.xx.xxx   133.243.238.164  2 u   33   64    1    0.489   29.541   2.335

ontap91::*>

“Error: command failed: Error: Account currently locked. Contact the storage administrator to unlock it.”と出力される場合は「security login show -username diag」を実行してdiagユーザ「Acct Locked」状態を確認し、「security login unlock -username diag」でロック解除することで実行できるようになります。(詳細→「NetApp ONTAPから他サーバに気軽にsshできる穴がふさがれてしまった」)

DNSの設定確認

DNSに関する設定は「vserver services name-service dns show」を実行する。

ontap98::> vserver services name-service dns show
                                                    Name
Vserver         Domains                             Servers
--------------- ----------------------------------- ----------------
ontap98         adosakana.local                   172.17.44.49
share225        adosakana.local                  172.17.44.49
share228        adosakana.local                  172.17.44.49
3 entries were displayed.

ontap98::>

Active Directoryに参加している場合は、DNSの自動更新に関する設定も重要なので「vserver services name-service dns dynamic-update show」で確認する。

ontap98::> vserver services name-service dns dynamic-update show
Vserver         Is-Enabled Use-Secure Vserver FQDN             TTL
--------------- ---------- ---------- ------------------------ -------
share225        true       false      adosakana.local    24h
share228        false      false      -                        24h
2 entries were displayed.

ontap98::>

上記例では、Storage VM:share225ではDNS自動更新を有効にしている、ということになる。

/etc/hosts ファイルに相当する固定の名前解決を行っているかは「vserver services name-service dns hosts show」で確認する。

注意が必要なのは、「NetAppのクラスタ管理」と「各Storage VM」でそれぞれ別の設定になっているということ。これを勘違いしているとうまく名前解決が実施できない。

ネットワークインタフェースとルーティングの設定も関係してくるので「network interface show」と「network route show」も確認すると良い。

DNSの動作確認

DNSサーバに接続ができているかは「vserver services name-service dns check -vserver SVM名 -ins」で確認出来る。

ontap98::> vserver services name-service dns check  -vserver ontap98 -ins

           Vserver: ontap98
       Name Server: 172.17.44.49
Name Server Status: up
    Status Details: Response time (msec): 1

ontap98::>

上記はStorageVM:ontap98 に対して確認を実施した結果となり、「Name Server status:up」で「Response time(msec)」の値があるのでDNSサーバ応答があった、ということになる。

指定したホスト名が名前解決できるかはadvancedモード/diagモードが必須となる。

コマンドは「vserver services name-service getxxbyyy getaddrinfo -vserver SVM名 -hostname 解決したいホスト名」か「vserver services name-service getxxbyyy gethostbyname -vserver SVM名 -hostname 解決したいホスト名」となる。

ontap98::> set advanced

Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y

ontap98::*>vserver services name-service getxxbyyy getaddrinfo -vserver ontap98 -hostname adserver
Host name: adserver
Canonical Name: adserver.adosakana.local
IPv4: 172.17.44.49


ontap98::*>

IPアドレスの逆引きは 「vserver services name-service getxxbyyy getnameinfo -vserver SVM名 -ipaddress IPアドレス」 か 「vserver services name-service getxxbyyy getnameinfo -vserver SVM名 -ipaddress IPアドレス 」 となる

ontap98::*> vserver services name-service getxxbyyy gethostbyaddr -vserver ontap98 -ipaddress 172.17.44.49
IP address: 172.17.44.49
Host name: adserver.adosakana.local


ontap98::*>

Active Directory関連

SVMのCIFSが動いてるかどうか確認

netapp9101::> vserver cifs show
            Server          Status    Domain/Workgroup Authentication
Vserver     Name            Admin     Name             Style
----------- --------------- --------- ---------------- --------------
svm0        SVM0            up        ADOSAKANA              domain

netapp9101::>

Active Directoryへの接続確認

netapp9101::> vserver cifs check -vserver svm0

                              Vserver : svm0
                    Cifs NetBIOS Name : SVM0
                          Cifs Status : Running
                                 Site : Default-First-Site-Name

Node Name       DC Server Name  DC Server IP    Status   Status Details
--------------- --------------  --------------- ------   --------------
netapp9101-01   adosakana.local   172.17.44.49    up       Response time (msec): 51

netapp9101::>

クライアントからアクセスがあった後に確認できるようになる情報

クライアントから共有にアクセスがあったあとに表示されるようになる情報群

どのActive Directoryサーバに接続してるか

netapp9101::> vserver active-directory discovered-servers show

Node: netapp9101-01
Vserver: svm0

Domain Name     Type     Preference DC-Name         DC-Address      Status
--------------- -------- ---------- --------------- --------------- ---------
adosakana.local   MS-LDAP  adequate   adserver      172.17.44.49    OK
adosakana.local   MS-DC    adequate   adserver      172.17.44.49    OK
2 entries were displayed.

netapp9101::>
netapp9101::> vserver active-directory discovered-servers show

Node: netapp9101-01
Vserver: svm0

Domain Name     Type     Preference DC-Name         DC-Address      Status
--------------- -------- ---------- --------------- --------------- ---------
adosakana.local   KERBEROS favored    adserver      172.17.44.49    undetermined
adosakana.local   MS-LDAP  favored    adserver      172.17.44.49    undetermined
adosakana.local   MS-DC    favored    adserver      172.17.44.49    OK
3 entries were displayed.

netapp9101::>

接続しにきたクライアントをどのLIFで受けたのか

netapp9101::> vserver cifs connection show

Node:    netapp9101-01
Vserver: svm0
Connection Session                               Workstation
ID         IDs                   Workstation IP  Port        LIF IP
---------- --------------------- --------------- ----------- ---------------
936674349  3075958545494048785   172.17.44.170   61391       172.17.44.56

netapp9101::>