このBlog はNutanix アドベントカレンダー2020 の12/4 分です。


今年もいきなりJST を無視したスタートとなりました。

コロナ禍で3月上旬より在宅勤務となり既に10カ月が過ぎようとしています。仕事の方は幸いリモート + ちょいちょい対面でなんとかなっていますが、以前から夜型だったのが更に悪化してしまい、ベッドに入る時間が4:00 過ぎなんてのもザラになってしまいました。

なので主観時間では今日はまだ12/4 という事でひとつよろしくお願いします。


さて、今回はライトなネタという事でNutanix CE 環境でのHDD 交換で行こうと思います。

たいていどのメーカーでもローエンドのデスクトップ用HDD シリーズは低価格とトレードオフで耐久性も控えめになっています。ここでは具体的な製品名は上げませんが某社の青いラベルのやつとか某社2の緑のラベルのやつとかは連続稼働をさせるとなかなかの頻度で壊れてくれます。でも安いのでテスト用途だとついつい買ってしまうんですよね。

今回交換対象になったのもそんな感じで我が家のNutanix CE クラスターに組み込まれて1年ちょい位のディスクでした。

ある日Prism にログインすると様子がおかしい…

「データの信頼性」がレッドアラートに

3ノードクラスター以上の構成の正常時の表示

データの信頼性に重要アラートがあがっており、冗長性が無くなってしまっているようです。(でもクラスターとしては普通に動作している)
アラート内容を確認するとHDD が1基 Failして既にディスクとして認識しなくなっている模様。


HDD 交換後の作業

交換用のHDD も主に安かったからという理由で、故障したものと同型のSeagate BarraCuda のST4000DM004 を購入し、そのまま物理的にリプレイスしました。

商用版Nutanix の様にホットスワップ可能なディスクが複数本搭載されている環境では物理的な交換 + Prism上でのGUI 操作と非常に簡単に故障ディスクの交換が可能ですが、通常CE 環境では交換後にCLI でディスクを認識させる必要があります。
HDD を交換してディスク構成が変わったのでマシンを起動してもCVM は起動しません。SSH でAHV ホストに接続し、virsh でCVM のディスク構成を編集します。
編集するにあたり、交換後のディスク情報が必要になりますので、CLI で情報収集し、必要な項目をメモしておきます。


1. lsscsi でディスク構成を確認し、 /devの場所を特定(青字が交換後のディスク)

[root@AHV-Z420-B ~]# lsscsi
[1:0:0:0]    disk    SanDisk  Ultra Fit        1.00  /dev/sdc
[2:0:0:0]    disk    ATA      Samsung SSD 860  2B6Q  /dev/sda
[6:0:0:0]    cd/dvd  HL-DT-ST DVD-RAM GH40L    RB02  /dev/sr0
[7:0:0:0]    disk    ATA      ST4000DM004-2CV1 0001  /dev/sdb


2. smartctl でディスクの詳細情報を確認し、シリアル番号やWWNを確認

[root@AHV-Z420-B ~]#  smartctl -i /dev/sdb
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.4.77-1.el7.nutanix.20191030.415.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 3.5
Device Model:     ST4000DM004-2CV104
Serial Number:    WFN3VZPN
LU WWN Device Id: 5 000c50 0d0688774
Firmware Version: 0001
User Capacity:    4,000,787,030,016 bytes [4.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5425 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Sat Nov 28 08:40:11 2020 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled


3. ls /dev/disk/by-id/ | grep シリアル番号 でディスク IDを確認します。

[root@AHV-Z420-B ~]#  ls /dev/disk/by-id/ | grep WFN3VZPN
ata-ST4000DM004-2CV104_WFN3VZPN


4. virsh list でCVM 名を確認します。

[root@AHV-Z420-B ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 2     52cda452-72a6-418a-8ddb-9b2ef1aa2808 running
 3     44b99f4e-3741-4595-9097-ca6694797d84 running
 -     NTNX-Z420-B-CVM                shut off


5. virsh edit でCVM の仮想マシン構成情報を編集します。
  vi が起動するので、スクロールダウンして</disk> の項目を探します。
  先の確認手順でメモしておいた各種ディスク情報で青文字の個所を置き換えます。

    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/disk/by-id/ata-ST4000DM004-2CV104_WFN3VZPN'/>
      <target dev='sdb' bus='scsi'/>
      <serial>WFN3VZPN</serial>
      <wwn>5000c500d0688774</wwn>
      <vendor>ATA</vendor>
      <product>ST4000DM004-2CV1</product>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>


6. CVM を起動します。

[root@AHV-Z420-B ~]# virsh start NTNX-Z420-B-CVM


CVM 上での作業

7. CVM にSSH 接続し、list_disks でディスク構成を確認します。

nutanix@NTNX-6bb43c52-A-CVM:192.168.10.107:~$ list_disks
Slot  Disk      Model             Serial           Size
0     --------  ----------------  ---------------  ------
1     /dev/sdb  Samsung SSD 860   S4BENG0KA10895W  500 GB
2     /dev/sda  ST4000DM004-2CV1  WFN3VZPN         4.0 TB
 (※交換したディスクは認識されているがvirsh edit でSSD とドライブ順を逆にしてしまった模様)


8. cluster/bin/repartition_disks で交換したディスクのパーティション設定をおこないます。

nutanix@NTNX-6bb43c52-A-CVM:192.168.10.107:~$ sudo cluster/bin/repartition_disks -d /dev/sda
Node is managed by Hades. This script should not be run manually. Do you really want to continue? (Y/[N]):Y
2020-11-28 09:09:56,494Z INFO repartition_disks:295 Cleaning existing partition tables on disks: set(['/dev/sda'])
2020-11-28 09:09:56,715Z INFO repartition_disks:323 Creating data partitions on disks: ['/dev/sda']
2020-11-28 09:09:56,791Z INFO repartition_disks:199 Detected partition /dev/sda1
2020-11-28 09:09:56,791Z INFO repartition_disks:154 sgdisk not found, unable to prevent hyper-V automount


9. cluster/bin/clean_disks でファイルシステムの初期化を実施。

nutanix@NTNX-6bb43c52-A-CVM:192.168.10.107:~$ sudo cluster/bin/clean_disks -p /dev/sda1
Node is managed by Hades. This script should not be run manually. Do you really want to continue? (Y/[N]):Y
2020-11-28 09:10:44,570Z INFO clean_disks:250 Cleaning partitions: ['/dev/sda1']
2020-11-28 09:10:44,571Z INFO clean_disks:96 Formatting partition /dev/sda1 with ext4
2020-11-28 09:10:44,572Z INFO disk.py:1192 Formatting disk /dev/sda1 with ext4
2020-11-28 09:10:44,572Z INFO disk.py:1160 Checking if ext4 FS should enable bigalloc for /dev/sda1
2020-11-28 09:10:44,572Z INFO disk.py:1164 Checking if partition /dev/sda1 on /dev/sda is a HDD for bigalloc
2020-11-28 09:10:44,572Z INFO disk.py:1167 Executing: sudo sg_vpd --page=bdc /dev/sda
2020-11-28 09:10:44,681Z ERROR disk.py:1171 Couldn't read sg_vpd for /dev/sda1, retval: 5, received err: fetching VPD page failed

2020-11-28 09:10:44,681Z INFO disk.py:1202 Formatting using command: sudo mke2fs -F -m 1 -t ext4  -E lazy_itable_init,nodiscard /dev/sda1


10. cluster/bin/mount_disks でCVMにディスクをマウントします。

nutanix@NTNX-6bb43c52-A-CVM:192.168.10.107:~$ sudo cluster/bin/mount_disks
Node is managed by Hades. This script should not be run manually. Do you really want to continue? (Y/[N]):Y
2020-11-28 09:11:51,229Z INFO mount_disks:515 No disks to stripe, continuing...
2020-11-28 09:11:51,230Z INFO fio_utils.py:72 Executing command lspci
2020-11-28 09:11:51,258Z INFO fio_utils.py:113 No Fusion IO cards present on the local node
2020-11-28 09:11:51,260Z INFO mount_disks:585 Mounting disks: set(['/dev/sdb', '/dev/sda'])
2020-11-28 09:11:51,274Z INFO mount_disks:195 Partition /dev/sdb4 is mounted, skipping...
2020-11-28 09:11:51,275Z INFO mount_disks:195 Partition /dev/sdb3 is mounted, skipping...
2020-11-28 09:11:51,276Z INFO mount_disks:195 Partition /dev/sdb2 is mounted, skipping...
2020-11-28 09:11:51,277Z INFO mount_disks:202 Skipping partition /dev/sdb1 used by Nutanix software
2020-11-28 09:11:51,278Z INFO mount_disks:230 Setting /sys/block/sdb/queue/rotational to 1 for disk /dev/sdb
2020-11-28 09:11:51,279Z INFO mount_disks:173 Disabling the write cache on disk /dev/sda
2020-11-28 09:11:51,531Z INFO mount_disks:215 Checking for corrupt filesystem on partition /dev/sda1
2020-11-28 09:11:51,531Z INFO mount_disks:219 Enabling journaling on ext4 partition /dev/sda1


11. genesis サービスを再起動します。

nutanix@NTNX-6bb43c52-A-CVM:192.168.10.107:~$ genesis restart
2020-11-28 09:12:39.155756: Stopping genesis (pids [2693, 2782, 2805, 2806, 4437, 4438])
2020-11-28 09:12:42.002151: Genesis started on pids [25666]


動作確認

以上で物理交換後の再認識作業は完了です。
Prism にログインして確認します。

無事に認識された様で、クラスターのデータ冗長性が回復しました。


また、ディスク一覧を確認するとこちらも正常に認識されている事が確認出来ます。

交換したディスクの使用状況が表示されるまでには状況により時間がかかります。


ディスク交換方法を把握しておくことで、Nutanix CE クラスターを長期にわたり安定して検証利用する事が可能になります。


なお余談ですが、構築済みのCEノードに単純にディスクを追加する場合は ce_add_disk コマンドを使えば簡単に追加する事が出来るはずです。

それでは。





コメント