HalNiの雑記

備忘録を兼ねて。サーバマシンとかネットワークとか

【小ネタ】openSUSEで CrazyDiskInfo をインストールしてディスクの健康状態を監視

この記事はopenSUSE Advent Calendar 2018 21日目の記事です.

んにちは初めまして,v_7zrgu0 こと Harukaと申します.
今回はストレージに関する話題について.
サーバ運用の鉄則として,RAIDカードを用いない環境では使用者か監視,適切な時期にディスクを交換する必要があります.
WindowsにはCrystalDiskInfoと呼ばれるsmart値を使用した監視ソフトウェアが存在しますが,
実はLinux にも,CyazyDiskInfo と呼ばれるCrystalDiskInfoライクなソフトウェアがあります.

github.com

作者はDebian / ubuntu 系でのインストール法を紹介しているのですが,openSUSEでもインストール・実行ができたので軽く紹介します.

今回使用するバージョンはopenSUSE Leap 15.0 です.

haruka@SUSE-H55M:~> cat /etc/os-release 
NAME="openSUSE Leap"
VERSION="15.0"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.0"
PRETTY_NAME="openSUSE Leap 15.0"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.0"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
haruka@SUSE-H55M:~> 

CyrazyDiskInfoでは
・ ncurses
・ libatasmart
計2つのライブラリが動作する上で必須となっています.
Debian系にインストールする場合,

sudo apt install libatasmart-dev libncurses5-dev libncursesw5-dev

となっているため,それっぽいライブラリをインストールしていきます.

まず,zypper search ncurses すると

S | 名前                     | 概要                                   | 種類            
--+--------------------------+----------------------------------------+-----------------
  | gambas3-gb-ncurses       | The ncurses component for Gambas       | パッケージ      
  | libncurses5              | Terminal control library               | パッケージ      
  | libncurses5-32bit        | Terminal control library               | パッケージ      
i | libncurses6              | Terminal control library               | パッケージ      
  | libncurses6-32bit        | Terminal control library               | パッケージ      
  | libyui-ncurses-devel     | Libyui-ncurses ヘッダファイル          | パッケージ      
  | libyui-ncurses-doc       | Libyui-ncurses ドキュメンテーション    | パッケージ      
  | libyui-ncurses-pkg       | Libyui - yast2 package selector widg-> | ソースパッケージ
  | libyui-ncurses-pkg-devel | Libyui-ncurses-pkg ヘッダファイル      | パッケージ      
  | libyui-ncurses-pkg-doc   | Libyui-ncurses-pkg ドキュメンテーシ -> | パッケージ      
  | libyui-ncurses-pkg-doc   | Libyui-ncurses-pkg ドキュメンテーシ -> | ソースパッケージ
i | libyui-ncurses-pkg8      | Libyui - ncurses UI 向けの yast2 パ -> | パッケージ      
i | libyui-ncurses8          | Libyui  - キャラクタベースのユーザイ-> | パッケージ      
  | ncurses                  | Terminal control library               | ソースパッケージ
  | ncurses-devel            | Development files for the ncurses6 t-> | パッケージ      
  | ncurses-devel-32bit      | Development files for the ncurses6 t-> | パッケージ      
i | ncurses-utils            | 新しい curses ライブラリを使用するツ-> | パッケージ      
  | ncurses5-devel           | Development files for the ncurses5 t-> | パッケージ      
  | ncurses5-devel-32bit     | Development files for the ncurses5 t-> | パッケージ   

この中から,今回は libncurses5 ncurses5-devel を選択しました

また, zypper search libatasmart すると

S | 名前              | 概要                                                | 種類      
--+-------------------+-----------------------------------------------------+-----------
  | libatasmart-devel | ATA S.M.A.R.T. ディスク健全性監視ライブラリ - 開 -> | パッケージ
  | libatasmart-utils | ATA S.M.A.R.T. ディスク健全性監視ライブラリ - ユ -> | パッケージ
i | libatasmart4      | ATA S.M.A.R.T. ディスク健全性監視ライブラリ         | パッケージ

この中から,今回は libatasmart-devel を選択しました
それぞれインストールします.

haruka@SUSE-H55M:~> sudo zypper install libncurses5 ncurses5-devel
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...
パッケージの依存関係を解決しています...

以下 4 個の新しいパッケージをインストールします:
  libncurses5 ncurses-devel ncurses5-devel tack

以下 1 個のパッケージをアップグレードします:
  libncurses6

1 個のパッケージアップグレード, 4 個の新規.
全ダウンロードサイズ:10.9 MiB。すでにキャッシュ済み:0 B。 この操作を行うには、追加で
31.8 MiB の容量が必要です。
続行しますか? [y/n/...? すべてのオプションを表示] (y): y
haruka@SUSE-H55M:~> sudo zypper install libatasmart-devel 
[sudo] root のパスワード:
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...
パッケージの依存関係を解決しています...

以下 1 個の新しいパッケージをインストールします:
  libatasmart-devel

1 個の新規パッケージのインストール.
全ダウンロードサイズ:21.8 KiB。すでにキャッシュ済み:0 B。 この操作を行うには、追加で
43.5 KiB の容量が必要です。
続行しますか? [y/n/...? すべてのオプションを表示] (y): y


また,本ソフトは各自でコンパイルする必要があります.
コンパイルに必要なgcc や cmake , また openSUSEc++コンパイルするために,gcc-c++ をインストールします

sudo zypper install cmake gcc gcc-c++ git

環境が整ったら,git してダウンロード,buidディレクトリを作成,コンパイルしてインストールします

git clone https://github.com/otakuto/CrazyDiskInfo.git
cd CrazyDiskInfo/
mkdir build
cd build
cmake ..
make && make install
sudo crazy

するとソフトウェアが立ち上がるはずです.

f:id:v_7zrgu0:20181217120325p:plain
見慣れた画面がターミナル上で

複数ディスクを差している場合,左右矢印キーで移動・表示できます.