【ハードウェア】

LANカード交換で小ハマリ

LANカードの交換で小ハマリしたのでメモ。

サーバが、どうにも不安定だ。
ある時突然、サーバ上のファイルが開くことができなくなったり、RDPでも、コンソールからでも、sshでもログインできなくなったりする。
サーバ全体がフリーズした状態になってしまう。
しかし、しばらくすると復活して普通にアクセスできるようになり、またアクセスできなくなる。
正しくはフリーズではなく、操作が極端に遅くなる。
どうも、バックアップを実行している時に、発生しやすいように思える。

真っ先に疑ったのは、やはりディスク。

ディスクを検査する

ディスクに問題があれば異音が発生してそうだが、特に異音はないように思う。
非RAIDの内臓ディスクには、smartctl で S.M.A.R.T. を検査し、更に、CHKDSK で検査してみるが、問題は発見されない。
RAIDのディスクは、常時稼働している監視ツールで再確認、更にはディスクを取り外して smartctl で検査してみるが、問題は発見されない。
外付けのディスクは CHKDSK で検査してみるが、問題は発見されない。
この状態で稼働を再開すると、同じ症状に陥る。
ディスクに問題は無いようだ。
何が原因なのだ?

次に疑ったのは RAIDカード。

RRAIDカードを交換してみる

RAIDカードを交換し、リビルドを実行してみる。
この状態で稼働を再開すると、同じ症状に陥る。
RAIDカードに問題は無いようだ。
何が原因なのだ?

ここまでで一週間かかったが、まだ問題は解消しない。
ここまでで何回再起動をしたかわからない。
そして、ある時、再起動をかけたら起動できなくなってしまった。
Windows の起動中画面のまま進まない。

Windows の起動中画面のまま進まない

うわー、サーバの環境を壊してしまったか。ディスクのダメージが大きくなったか。
なんてこった!

しかし、セーフモードでの起動を試してみると、起動できる。
むむ、何が原因なのだ?

まてよ、この起動してこない状態、稼働中にフリーズしたようになる状況と同じじゃないか?
セーフモードはネットワーク無しで起動しているが、ネットワークありで起動すると、起動しない。
これだ! オンボードのLANインターフェースが故障したんだ!

オンボードのLANインターフェース

BIOSの設定でオンボードのLANインターフェースをオフにして、Windows を起動してみる。
起動した!

オンボードのLANインターフェースを修理するのは無理だと思うので、LANカードを増設する事にする。
ストックしてある部品から、BUFFALO LGY-PCI-TXD を掘り出してきて、サーバに取り付ける。

BUFFALO LGY-PCI-TXD

BUFFALO のサイトからドライバをダウンロードして、インストールする。
このLANカード、かなり骨董品だと思うのだけれど、驚くべき事に、Windows 10 にも対応しているらしい。
更に、現在でも販売しているようだ。すごいな。

LGY-PCI-TXD(BUFFALO直販)

さて、ネットワークの設定をすると…

エラー

がくっ。orz
なんやねん。
WEBで検索してみると、BIOSで無効化したLANインターフェースの情報が残っていて、このエラーが発生するらしい。
追加されたネットワークは「識別されていないネットワーク」となり、使用できない。

「識別されていないネットワーク

無効化したインターフェースを削除する必要があるようなのだが、コントロールパネルの「ネットワークと共有センター」を見ても、デバイス・マネージャで見ても、無効化したインターフェースは見えない。
どうやって削除すりゃいいわけ?

更にググる。あった。
なになに、環境変数をひとつ設定した状態でデバイス・マネージャを起動し、非表示のドライバを表示すると、無効化したLANインターフェースが見えるようになって、削除ができるって?
やってみよう。

コマンドプロンプトを起動し、コマンドをふたつ入力する。
環境変数「DEVMGR_SHOW_NONPRESENT_DEVICES」を設定した状態でデバイス・マネージャを起動するところがミソだ。

SET DEVMGR_SHOW_NONPRESENT_DEVICES=1
DEVMGMT.MSC

デバイス・マネージャが起動する。

デバイス・マネージャが起動する

「表示」メニュー → 「非表示のデバイスの表示」をポイントすると、おー、無効化したLANインターフェースがグレー表示で見えた!

無効化したLANインターフェースが見えた

無効化したLANインターフェースを削除する。

デバイスを削除する

ネットワークを再設定する。

ネットワークが識別された

はふぅ、無事、設定が通った。
しかし、LANカードの交換などは、普通にありそうな話なので、もう少し簡単に削除できるようにならないものなのだろうか。

楽天SocialNewsに投稿!
0 0 0

RAIDカードで小ハマリ

RAIDカードで小ハマリしたのでメモ。

AliexpressでRAIDカードを購入した。

RAIDカード
RAIDカード VIA6421

RAID 0 または RAID 1 を構成する事ができ、ATAポート×1、SATAポート×3、インターフェースはPCIバスという製品である。

商品が到着したので、さっそく取り付けて電源をオン。

RAIDカードを装着

が…RAIDカードのBIOS画面に入れない。orz

RAIDカードのBAIOS画面に入れない

何だよ、ちくしょう。

何か接続にミスなどで認識しない状況も考えられるので、RAIDカードのみを手元にある別のRAIDカードに交換して電源をオン。
うん、問題なくRAIDカードのBIOS画面に入れる。

RAIDカードに交換 RAIDカードに交換

うーむ、どうしたものか。
単に「品質の悪い Made in chaina 製品」という話なのだろうか。

このRAIDカードのチップセットは VIA6421 なのだけれど、VIAチップ用のWindows用ツールは、そのツールからRAIDを構成する事ができる。
もしかして、Windows上からなら認識できるという事なのだろうか。
やってみよう。

Windows 7 をクリーンインストール。

Windows 7 をクリーンインストール

一旦シャットダウンし、問題のRAIDカードを装着して Windows 7 を起動。
起動後にデバイス・マネージャを確認すると、VIA6421用のドライバが自動的にインストールされていた。

VIA6421用のドライバが自動的にインストールされていた

ドライバのバージョンは、マイクロソフト提供の 6.0.6000.6210。
念のため、RAIDカード提供会社の最新ドライバに更新する。ドライバのバージョンは 6.0.7600.6250 になった。

バージョン 6.0.6000.6210 バージョン 6.0.7600.6250

次に VIA V-RAID のツールをインストールし、念のため、再起動する。
VIA V-RAID のツールを起動すると…おぉ、RAID カードが認識されている!

RAID カードが認識されている

接続されているハードディスクも認識されている。
19.475GB のディスクが2台だ。

接続されているハードディスクも認識されている 接続されているハードディスクも認識されている

接続されているハードディスクも認識されている

VIA V-RAID のツールを操作して、RAID 0 を構成してみる。
できた!
1本の 38.23GB になった!

RAID 0 を構成 RAID 0 を構成

続いて RAID 1 を構成してみる。
できた!
1本の 19.11GB になった!

RAID 1 を構成 RAID 1 を構成

と、いう事で、RAIDカードそのものは動作した。

結局、このカードは、以下の様な構成になっていた。

・BIOSはない。
・ドライバは Windows 用のみ。
・RAID を構成するには、Windows 上にインストールしたツールから行う。

このカードは、Windows を起動しないと、RAIDカードと、接続されているディスクが認識できないという事になるので、おそらく、RAIDカードに接続したディスクからブートする事はできない仕様であると思われる。
また、OSを起動してからRAIDのディスクを接続するという事なので、ディスクはハードウェアで接続し、RAIDの管理はソフトウェアで行うという、「ハードウェアRAID」と「ソフトウェアRAID」のハイブリット的な構成のRAIDカードという事の様である。

前述の通り、このRAIDカードに接続したディスクからはブートできないので、データ用に接続したディスクの保護をメインに使用する廉価版RAIDカード、という事らしい。

RAIDカードのBIOS画面に入れなかった時は「だめじゃん」とか思ったけど、いろいろな仕様のカードが存在している事を知った。
なるほど、勉強になった。

楽天SocialNewsに投稿!
0 0 0

SDカードを修復

手元にある、このSDカード。

2GB SDカード

なぜか、容量3.93MB(GBではない)としてしか認識しない。(T_T)

容量 3.93MB (T_T)

以前に Raspberry pi の起動ディスクに使用した後あたりからこんな状態になったのだが、書き込みに失敗するなどしてSDカードが壊れたのだと思っていた。
貧乏性の ずんべ は、壊れたSDカードもがらくた箱に入れてとってあったのだけれど、ふと思い立って、このSDカードを「ディスクの管理」で開いてみた。
すると…

「ディスクの管理」で確認

SDカード全体の容量は1.90GBと認識されていて、パーティションがブツ切り状態になっていた。
SDカードは壊れていなかった。
ブツ切りされたパーティションが見えないだけだった。
これらのパーティションを削除してフラットな状態に戻せば、容量が復活するのではないか。

しかし、この「ディスクの管理」のインターフェースでは、パーティションを削除の操作はグレーアウトされていて、削除できない。
どうやって、これらのパーティションを削除するのだろう?

いろいろWEBを探していると、方法はいろいろあるようだ。

・「EaseUS Partition Master(日本語ページ英語ページ)」を使う。

・「SDカードフォーマッター」を使う。

これらはお手軽そうなのだけれど、PCにソフトウェアをインストールしなければならない。
ソフトウェアをインストールせずになんとかできないかな。

更にWEBを探していると、Windowsの標準コマンド「DISKPART」でパーティションを削除できるらしい。
さっそく試してみる。

DISKPARTを起動する。

C:\>DISKPART

Microsoft DiskPart バージョン 6.3.9600

Copyright (C) 1999-2013 Microsoft Corporation.
コンピューター: **********

認識されているディスクを一覧する。

DISKPART> list disk

ディスク 状態 サイズ 空き ダイナ GPT
### ミック
———— ————- ——- ——- — —
ディスク 0 オンライン 74 GB 0 B
ディスク 1 オンライン 931 GB 345 GB
ディスク 2 オンライン 1950 MB 1160 MB *

「ディスク 2」がSDカードのボリュームなので、これを選択する。

DISKPART> select disk 2:

ボリューム 5 が選択されました。

DISKPART>

ボリューム上のパーティションを一覧する。

DISKPART> list partition

Partition ### Type Size Offset
————- —————— ——- ——-
* Partition 1 システム 4064 KB 32 KB
Partition 0 プライマリ 249 MB 4112 KB
Partition 0 プライマリ 249 MB 254 MB
Partition 0 プライマリ 285 MB 614 MB

DISKPART>

「Partition 1」を選択し、削除する。

DISKPART> select partition 1

パーティション 1 が選択されました。

DISKPART> list partition

Partition ### Type Size Offset
————- —————— ——- ——-
* Partition 1 システム 4064 KB 32 KB
Partition 0 プライマリ 249 MB 4112 KB
Partition 0 プライマリ 249 MB 254 MB
Partition 0 プライマリ 285 MB 614 MB

DISKPART> delete partition

仮想ディスク サービス エラー:
force protected パラメーターを設定しないと、保護されたパーティションは削除できま
せん。

DISKPART>

おっと…。
上書きオプションを指定して再度実行。

DISKPART> select partition 1

パーティション 1 が選択されました。

DISKPART> delete partition override

DiskPart は選択されたパーティションを正常に削除しました。

DISKPART> list partition

Partition ### Type Size Offset
————- —————— ——- ——-
Partition 1 プライマリ 249 MB 4112 KB
Partition 0 プライマリ 249 MB 254 MB
Partition 0 プライマリ 285 MB 614 MB

DISKPART>

同様に、残りのパーティションも削除する。

DISKPART> select partition 1

パーティション 1 が選択されました。

DISKPART> delete partition

DiskPart は選択されたパーティションを正常に削除しました。

DISKPART>

「ディスクの管理」で確認。

「ディスクの管理」で確認

よし、フラットになった。
改めて領域を確保し、フォーマット。

2GB SDカードが復活!

容量 2GB (^^)

おしおし。(^^)

楽天SocialNewsに投稿!
0 0 0

HDMI→VGA変換で小ハマリ

Raspberry pi をはじめて購入した頃のエピソードだけれど、HDMI→VGA 変換で小ハマリしたのでメモ。

 Raspberry pi + VGAディsププレイ

Raspberry pi には、少し古い15インチの液晶ディスプレイ(写真のディスプレイは、三菱電機「RDT154LM」)を接続して使っているのだが、このディスプレイの入力は VGA のみで、HDMI は無い。
もちろん、HDMI 端子があるディスプレイを購入すれば問題は解決するわけだが、少し古いディスプレイは社内に余っているので、なんとかこれを活用したい。
VGAで出力する場合は Raspberry pi の設定を変えてやる必要があるが、今回の小ハマリはそこではないのでこのあたりの話は割愛。

何が小ハマリなのかと言うと、VGAケーブルだ。

HDMI の出力を VGA のディスプレイに出力するためには、変換ケーブルを使用する。
こんな製品だ。

SODIAL(R) 1080P HDMIプラスPC VGAマイナスビデオコンバータのアダプタのケーブル
SODIAL(R) 1080P HDMIプラスPC VGAマイナスビデオコンバータのアダプタのケーブル
HDMI to VGA変換アダプタ〔黒〕PC モニタ対応〔バスパワー(AC電源不要)Liberta
HDMI to VGA変換アダプタ〔黒〕PC モニタ対応〔バスパワー(AC電源不要)Liberta

この変換ケーブルの HDMI 端子側を Raspberry pi に接続し、VGA端子側をディスプレイに接続したいのだが…これができない。
なぜかと言うと、変換ケーブルのVGA端子はメスで、ディスプレイのVGA端子もメスだからだ。

Raspberry pi のHDMI端子

変換ケーブル
↓(メス)
×【接続できない】
↓(メス)
ディスプレイ

つまり、この製品は、以下のように接続する事が前提になっている。

Raspberry pi のHDMI端子

変換ケーブル
↓(メス)
↓(オス)
VGAケーブル
↓(オス)
↓(メス)
ディスプレイ

一般的に、PCとディスプレイは、ある程度離れた位置に置かれる(PCは机の下、ディスプレイは机の上)事が多いと思うので、VGAケーブルは1.5mくらいある。これに変換ケーブルの長さを足すとケーブルの長さは1.8mくらいになる。
しかし、Raspberry pi は、机の下に置くようなものではなく、たいていの場合、机の上に置くことが多いだろう。
つまり、上の写真の様になり、Raspberry pi とディスプレイは接近した位置に置かれるので、VGAケーブルの1.5mでも持て余すのに、変換ケーブルを加えた1.8mというケーブル長は邪魔で仕方がない。なんとかならないか。

変換ケーブルのVGA端子側がオスである製品はないだろうか。
いろいろ探してみたが、以下のような、VGAからHDMIに変換する変換ケーブルでは端子がオスのものはあるのだが、残念ながら、HDMIからVGAに変換する変換ケーブルでは、VGA端子がオスである製品は存在しないようだ。

Patech VGA→HDMI 出力ビデオ コンバーター変換アダプタケーブル  TV  PCノートパソコン モニタオーディオ用  1080pサポート
Patech VGA→HDMI 出力ビデオ コンバーター変換アダプタケーブル  TV  PCノートパソコン モニタオーディオ用  1080pサポート
【Bizbenefit】 VGA to HDMI コンバーター変換ケーブル28CM
【Bizbenefit】 VGA to HDMI コンバーター変換ケーブル28CM

また、以下のような「HDMI to VGA」と謳っている製品はあるが、これらはコンバータの機能は付いていない、単なるケーブルなので、これで接続しただけでは何も映らない。

HDMI to VGAケーブル HDMI(レッド) (オス)to VGA HD-15(オス) ケーブル 1.8m 並行輸入品
HDMI to VGAケーブル HDMI(レッド) (オス)to VGA HD-15(オス) ケーブル 1.8m 並行輸入品

では、少し発想を変えて、VGAケーブルを短いものに交換できないだろうか。
探してみたところ、もっとも短いもので0.5mのようだ。
変換ケーブルの長さを加えて、0.8mくらいになった。1.8mよりはマシではあるけれど、それでも長い。
もう少しなんとかならないか。

3Aカンパニー VGAケーブル 0.5m φ5.5mm ミニD-sub15ピン
3Aカンパニー VGAケーブル 0.5m φ5.5mm ミニD-sub15ピン
VGAケーブル 50cm [D-Sub15ピン(オス)-D-Sub15ピン(オス)] ダブルコア付き 高品質 【76998】
VGAケーブル 50cm [D-Sub15ピン(オス)-D-Sub15ピン(オス)] ダブルコア付き 高品質 【76998】

いっそのこと、オス-オスの短いケーブルを自分で作るか…。
いやまてよ、ケーブルではなく、チェンジャーみたいなパーツがあるのではないだろうか。
探してみる…あった!

ミニDサブ 15ピン 小型アダプタ ( オス - オス ) DE-15 VGA端子 アナログRGB
ミニDサブ 15ピン 小型アダプタ ( オス - オス ) DE-15 VGA端子 アナログRGB

さっそく購入して試してみる。
VGAケーブルを数珠つなぎにするのではなく、VGAアダプタで挟む形で、変換ケーブルとディスプレイを接続する。

VGAアダプタで接続する

よし、映った!

映った!

VGAケーブルがそっくり不要になった。
これでヨシ。

楽天SocialNewsに投稿!
0 0 0

Raspberry pi シャットダウンUSBキー V2

このエピソードの続き。

Raspberry pi シャットダウンUSBキー

Raspberry pi をお手軽にシャットダウンできるUSBキー V2 を作ってみた。

Raspberry pi シャットダウンUSBキー V2

前版では、SDカードにファイルを書き込み、特定のファイルが存在しているか否かでシャットダウンを実行するように作成した。
しかし、SDカードを準備して、0バイトのファイルを1個だけ置くという、ひじょうに無駄の多い構成で、たとえば、SDカードの故障によってファイルが読み出せず、シャットダウンに移行できない状況も発生し得る。
もう少しシンプルな構成にできないだろうか。

前版では、「情報=ファイル」という頭があって、SDカードに情報を書き込んだのだけれど、SDカードに拘らず、USBデバイスの固有情報を利用して、特定のUSBデバイスが挿されたらシャットダウンをかける様にする事はできないだろうか。

SDカードを挿していないカードリーダーを Raspberry pi に挿し、接続されているUSBデバイスを一覧してみる。

$ lsusb | sort
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 004: ID 1267:0201 Logic3 / SpectraVideo plc A4Tech SWOP-3 Mouse
Bus 001 Device 005: ID 0566:3002 Monterey International Corp.
Bus 001 Device 012: ID 05e3:0751 Genesys Logic, Inc.
$

上記の例では、最後の「Bus 001 Device 012」がカードリーダーだ。
カードリーダーのみでもUSBデバイスとして認識された。

カードリーダーの詳細を表示してみる。

$ lsusb -v -s 12
Bus 001 Device 012: ID 05e3:0751 Genesys Logic, Inc.
Couldn’t open device, some information will be missing
Device Descriptor:
bLength                18
bDescriptorType         1
bcdUSB               2.00
bDeviceClass            0 (Defined at Interface level)
bDeviceSubClass         0
bDeviceProtocol         0
bMaxPacketSize0        64
idVendor           0x05e3 Genesys Logic, Inc.
idProduct          0×0751
bcdDevice           14.03
iManufacturer           3
iProduct                4
iSerial                 0

(省略)

$

取得したUSBデバイスの情報から、「idVendor」「idProduct」あたりが固有情報(に近い情報)として使えそうだ。

これらの情報を抽出し、特定の値であればシャットダウンを実行するようにする。

$ lsusb -v -s 12 2> /dev/null | egrep “id(Vendor|Product)”
idVendor           0x05e3 Genesys Logic, Inc.
idProduct          0×0751
$

これならば、SDカードを準備する必要はない。
USBカードリーダー単体であれば、Amazonでは200円程度から、中国通販サイトなら20円程度からある。
また、中国通販サイトでSDカードを購入すると、多くの場合、カードリーダーもセットで送られてくるので、ずんべ の手元にも余ったものがけっこうあり、それらを活用できる。
必要な機材点数が減り、コストも削減できた。同時に故障率も減るものと考えていいだろう。

USBカードリーダ

更に言うと、シャットダウン・キーとするUSBデバイスは、別にカードリーダーである必要もない。マウスでも、キーボードでも、USBデバイスなら何でもいい。

もちろん、シャットダウン用の「idVendor」「idProduct」と同一のUSBデバイスを挿してしまうとシャットダウンが始まってしまうわけだけれど、別に一般ピープルが使用するわけではなく、限定された環境で使うものなので、気にしない事にする。

楽天SocialNewsに投稿!
0 0 0

サーバのファンを交換

社内のサーバの冷却ファンが故障してしまった。
サーバは DELL PowerEdge 700。

DELL PowerEdge 700 DELL PowerEdge 700
DELL PowerEdge 700 

2004年頃に購入したものなので、12年が経過しているマシン。
当時としては高性能のマシンだったけれど、32ビットCPU、搭載可能なメモリは最大4GBで、VM環境なども作れないので、流石に古さを感じるけれど、ストレージ・サーバや、バックアップ・サーバとしては、十分に使える性能なので、今でも Windows Server 2008 を入れて現役で稼働中だ。

12年も動かしていれば、ファンなどの機械部品が壊れるのは仕方がない。
ファンの故障で捨ててしまうのはもったいないので、修理する事にする。

しかし、DELLのファンには少し問題が。
マザーボード側のコネクタが、一般の形状と違うのである。

コネクタ形状

左がDELLのファンに付いているコネクタ、右が通常のコネクタ。
一般的に販売されているファンのコネクタは右のコネクタなので、そのままでは取り付けられない。コネクタを付け直す必要がある。
DELLよ、なんでこう、標準規格ではない部品を使うかな。何のために規格が制定されていると思ってるんだよ。しょうもない設計をするなよ。

さて、ファンを交換しようと、ストックしてある部品を探してみるが、交換する12cmのファンがない。
ファンそのものは部品として販売されているので問題ないが、部品を購入して届くまでの間、なんとかしないといけない。仕方がないので、ストックしてある部品の中で、風量が多そうなファンを探してみた。

応急パーツ

これも、DELLのサーバに付いていたものであるが、そのサーバはアタッチメント的にファンを交換できる構造のもので、これまたコネクタ形状が違う。
仕方がないので、取り外したファンのコネクタを、このファンに移植する事にする。
こんな感じ。絶縁がセロハンテープだけど、応急処置なので、とりあえずこれで。

応急パーツのコネクタを交換

ファンは、とりあえず、結束バンドで固定。

応急パーツを仮取り付け

まずは、これでよし。12cmのファンを購入するのだが、当然の事ながら、DELLのタイプのコネクタが付いているものは販売されていない。
取り外したファンの型式で検索すると、日本国内では見つからなかった。Aliexpressなどでは、そのものズバリの型式のものが見つかるが、残念ながらコネクタの形状については書かれていないので、購入はためらわれる。
どうするか。

(1).購入したファンのコネクタを、応急処置をしたときと同様に、付け替える。
(2).いわゆる延長ケーブルを購入し、DELLの形状のコネクタに付け替える。

前者(1)の方が安く済むわけだけど、新品のファンのケーブルを切断するのは少々ためらわれるので、後者(2)を選択する。

とりあえず、ファンを購入。

交換パーツ

NEW 12V 4Pin & 3Pin 120mm x 25mm 12025 Red Color Nine Sickle Leaves Fan PC Case System Cooling Fan
NEW 12V 4Pin & 3Pin 120mm x 25mm 12025 Red Color Nine Sickle Leaves Fan PC Case System Cooling Fan

別に延長ケーブルを購入。

延長ケーブル

High Quality 3Pin PWM Fan Power Extension Cable Male Plug to Female Socket Lead Power Adapter Computer Cables
High Quality 3Pin PWM Fan Power Extension Cable Male Plug to Female Socket Lead Power Adapter Computer Cables

これを加工して、DELLのマザーボードに繋げられるようにする。
応急処置の時は、簡易的にセロハンテープで絶縁したが、本修理では熱収縮チューブを使う事にする。

延長ケーブルのコネクタを交換 熱収縮チューブ

ファンに接続。

交換パーツに接続

筐体に取り付けて試運転。

交換パーツを取り付け

 これでヨシ!

楽天SocialNewsに投稿!
0 0 0

Raspberry pi シャットダウンUSBキー

Raspberry pi をお手軽にシャットダウンできるUSBキーを作ってみた。

Raspberry pi + シャットダウンUSBキー

Raspberry pi をシャットダウンするには、基本的には、ログインしてコマンドを入力する必要がある。
シャットダウン用のボタンを付けてシャットダウンをかける方法は、WEBで様々書かれているけれど、ずんべ は電子回路には明るくないし、すぐに実装したかったので、手元にあるSDカード/USBメモリを使って、お手軽にシャットダウンする方法を考えてみた。

まぁ、「考えてみた」と言っても、たいした実装ではなく、以下のように動作させ、シャットダウンをかけるだけである。

(1).Raspberry pi にUSBメモリを挿す。
(2).USBメモリが自動的にマウントされる。
(3).マウントされたUSBメモリ内に「/shutdown.txt」が存在するか確認する。
(4).「/shutdown.txt」が存在していれば、シャットダウンする。

お手軽だ。(^^)

USBメモリは、こんな感じ。

シャットダウンUSBキー

USBメモリの中には、0バイトのファイルが1個だけ置いてある。

$ find . -type f -exec ls -l {} \;
-rwxr-xr-x 1 root root 0 Jul 14 03:33 ./shutdown.txt
$

USBメモリが挿されたか否かは、おそらく何らかの方法でリアルタイムに検出できるのだろうけれど、お手軽に cron による起動で、5分間隔くらいで実行する事にする。

$ EDITOR=cat crontab -e 2> /dev/null | grep shutdown.pl
5,10,15,20,25,30,35,40,45,50,55 * * * * /home/pi/foo/bar/shutdown.pl
$

USBメモリが挿されているか否かの検査は、こんな感じで。

$ mount| grep /media/ | grep vfat
/dev/sda1 on /media/pi/E405-3402 type vfat ( ・・・ )
$

この出力から、マウントされているディレクトリ(上記の場合「/media/pi/E405-3402」)を求める。
そして、その直下に「shutdown.txt」が存在するか検査し、存在していれば、シャットダウンを実行する。

$ ls -l /media/pi/E405-3402/shutdown.txt
-rwxr-xr-x 1 root root 0 Jul 14 03:33 /media/pi/E405-3402/shutdown.txt
$

今回作成したものは「シャットダウン・キー」なのだけれど、USBメモリ内に置くファイルを「reboot.txt」や「apatch_restart.txt」などとして、「リブート・キー」や「Apache再起動キー」など、キーボードなしで Raspberry pi に動作指示を与えるキー・セットを作る事もできると思う。


今回は手元にある余り機材を集めて準備したので、こんな構成になった。
SDカードのサイズはミニ(マイクロではない、骨董品だ)。(^^;
容量は16MB(16GBではない、骨董品だ)。(^^;

シャットダウンUSBキーの構成

SDカードに書き込むファイルは「shutdown.txt」が1個だけで、サイズは0バイトなので、16MBでも容量はあり余っているのだが、今時16MB程度の容量など、写真を数枚入れたらいっぱいになってしまうので使い道がなかったのだが、やっと有効活用できた。

今回は余り機材で構成したので、SDカード+USBアダプタになったけれど、スマートな構成にしようとすれば、スティック型のUSBメモリになるのかな。そうなると、サイズ0バイトのファイルを1個を置くためだけに4GBや8GBは無駄だし、コストも無視できない。
やはり、少し回路系の勉強をして、スイッチを付けるべきかな。
少し勉強してみよう。

楽天SocialNewsに投稿!
1 0 0

中国製WEBカメラで小ハマリ

このエピソードの続き。

中国製WEBカメラで小ハマリ

再び中国製のWEBカメラを購入した。

中国製WEBカメラ

価格は $3.07。先に購入した中国製WEBカメラよりは少し高いが、それでも 314円くらいだ。安い。

しかし、やはり、中国製品といえば、品質だ。きちんとした製品である事を願うのだが…。

まずは撮影してみる。

テスト撮影 テスト撮影

うん、撮影は問題なさそうだ。
しかし、ピント合わせをするために、レンズ部分を回している時に、少し違和感が。何の違和感だろう。
むむ、よく見ると、レンズが歪んでいる。

レンズが歪んでいる

あきらかに歪んでいる。
このパーツは、単にレンズ部分を回すだけのもので、おそらく、実際にレンズが付いているわけではないだろうから、撮影そのものに大きな問題はないとは思うが、ちょっと気になる。

さて、どうするか。

【選択肢1】
ショップにクレームを入れて代替品を送ってもらうか。
しかし、中国通販サイト(Aliexpress)のショップは、どのショップでも常にそうなのだが、クレームを入れても、何だかんだと言ってなかなか代替品は送ろうとしない。
何度も何度もやりとりをしないといけないので、ひじょうにメンドクサイ。
【選択肢2】
捨ててしまうか。
数百円の商品と言えど、それは悔しい。
【選択肢3】
ダメ元で修理をトライしてみるか。

前回と同じ選択肢だ。
ここはやはり、選択肢3で行く事にする。

とりあえず、分解してみる。

分解してみる

やはり、回す部品は、やはり単に回すだけのものだった。
つまり、工場で組み立てをする時に組み付けがいい加減と言う事だろう。

ところで、カメラの先端部分にテープが見える。

テープが見える

これは、先のカメラの問題と同様、滑ってピント合わせができない問題が発生したのだろうな。
やはり本来は、溝を切るなりして滑らない様にする必要があるのだろうけれど、既に生産してしまった部品に手で溝を切るわけにもいかないだろうから、応急処置的に両面テープで対処したのだろう。
元々のテープは乾燥してしまっていて粘着力がなくなっているので、貼り直す。

テープを貼り直す

レンズ部分をまっすぐにして組み付け直す。

組み付け直す

修理完了。

修理完了

中国製品はいろいろメンドイのう…。

楽天SocialNewsに投稿!
0 0 0

ESXi監視で大ハマリ (12) – コマンドで監視(F)

このエピソードの続き。

ESXiをUSBメモリからブート
ESXi監視で大ハマリ (1) – RAIDを構築
ESXi監視で大ハマリ (2) – 警告ランプで監視
ESXi監視で大ハマリ (3) – コマンドで監視(A)
ESXi監視で大ハマリ (4) – コマンドで監視(B)
ESXi監視で大ハマリ (5) – DELLツールで監視(A)
ESXi監視で大ハマリ (6) – DELLツールで監視(B)
ESXi監視で大ハマリ (7) – あとがき(A)
ESXi監視で大ハマリ (8) – あとがき(B)
ESXi監視で大ハマリ (9) – コマンドで監視(C)
ESXi監視で大ハマリ (10) – コマンドで監視(D)
ESXi監視で大ハマリ (11) – コマンドで監視(E)

もうひとつアイデアを出しておこうと思う。
ESXi へは、https でもアクセスできる。
以下のページにアクセスして、IDとパスワードを入力すると…

https://(ESXi)/

以下のようなページが表示される。

ESXi WELCOMEページ

WELCOMEページが表示がされるという事は、おそらくHTMLファイルが存在しているであろうとアタリを付け、ESXiのディスクを探索してみる。

# find / -type f -name "*.html"
/usr/lib/vmware/hostd/docroot/index.html

あった。「/usr/lib/vmware/hostd/docroot/」の配下だ。
ここにファイルを置けば、https経由で情報を取れるのではないか。

# cd /usr/lib/vmware/hostd/docroot
# mkdir disk
# esxcli storage core device smart get -d ***** > disk/ata-status.txt

監視サーバからアクセスしてみる。

$ wget -q --no-check-certificate --http-user=root --http-password=***** https://(ESXi)/disk/ata-status.txt
$ cat ata-status.txt
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       N/A    N/A        N/A
Write Error Count             N/A    N/A        N/A
Read Error Count              80     44         63
Power-on Hours                63     0          63
Power Cycle Count             100    20         100
Reallocated Sector Count      100    36         100
Raw Read Error Rate           80     44         63
Drive Temperature             39     0          44
Driver Rated Max Temperature  61     45         56
Write Sectors TOT Count       200    0          200
Read Sectors TOT Count        N/A    N/A        N/A
Initial Bad Block Count       100    99         100

取れた!
WEB経由でも取得する事ができた。

ちなみに、以下のページアクセスすると…

https://(ESXi)/host

以下のようなページが表示され、ログや設定情報を参照する事ができる。

ESXi 情報ページ

この情報ページに組み込むこともできるようだ。
このページに表示されている情報は、以下のファイルにに定義されている。

/etc/vmware/hostd/webAccessibleConfigFiles.xml

このファイルに定義を追加する。

<configFileInfo>
  <uriReference>/host/disk-status-raid</uriReference>
  <path>/*****/disk-status-raid.txt</path>
  <displayName>Disk Status (RAID DISK)</displayName>
  <mimeType>text/plain</mimeType>
  <method>GET</method>
  <method>HEAD</method>
  <method>PUT</method>
</configFileInfo>

<configFileInfo>
  <uriReference>/host/disk-status-ata</uriReference>
  <path>/*****/disk-status-ata.txt</path>
  <displayName>Disk Status (ATA DISK)</displayName>
  <mimeType>text/plain</mimeType>
  <method>GET</method>
  <method>HEAD</method>
  <method>PUT</method>
</configFileInfo>

サーバを再起動する。

# /etc/init.d/hostd restart

情報ページにアクセスする。

https://(ESXi)/host

定義した「Disk Status (RAID DISK)」と「Disk Status (ATA DISK)」が表示されている。
クリックすると、内容も表示される。

ESXi 情報ページ

これにより、https経由でESXiから情報をダウンロードする事ができる。


更に、CGIも探してみる。
あった。CGIは「/usr/lib/vmware/hostd/cgi-bin/」の配下だ。

# find / -type f -name "*.cgi"
/usr/lib/vmware/hostd/cgi-bin/esxcli.cgi
/usr/lib/vmware/hostd/cgi-bin/esxcfg-info.cgi
/usr/lib/vmware/hostd/cgi-bin/vm-support.cgi

今回は試していないが、CGIでスクリプトを実行し、動的に状態を生成する事も可能だろう。
もしかしたら、ESXi側から他のサーバに情報をWEB経由でプッシュする事も可能かもしれない。
機会があったら試してみようと思う。

一連記事:

楽天SocialNewsに投稿!
0 0 0

ESXi監視で大ハマリ (11) – コマンドで監視(E)

このエピソードの続き。

ESXiをUSBメモリからブート
ESXi監視で大ハマリ (1) – RAIDを構築
ESXi監視で大ハマリ (2) – 警告ランプで監視
ESXi監視で大ハマリ (3) – コマンドで監視(A)
ESXi監視で大ハマリ (4) – コマンドで監視(B)
ESXi監視で大ハマリ (5) – DELLツールで監視(A)
ESXi監視で大ハマリ (6) – DELLツールで監視(B)
ESXi監視で大ハマリ (7) – あとがき(A)
ESXi監視で大ハマリ (8) – あとがき(B)
ESXi監視で大ハマリ (9) – コマンドで監視(C)
ESXi監視で大ハマリ (10) – コマンドで監視(D)

ESXi側で能動的に監視をしようとすると、どうしてもESXi上で cron などを用いて定期実行をかける必要がある。
少し発想を変えて、ESXiを「監視情報を提供する」サーバとし、監視サーバを「監視情報を取得する」クライアントとして構成したらどうだろうか。

sshコマンドには、接続先のコンピュータ上のプログラムを実行する機能がある。
sshのヘルプを参照してみる。

$ ssh --help
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
     [-D [bind_address:]port] [-e escape_char] [-F configfile]
     [-I pkcs11] [-i identity_file]
     [-L [bind_address:]port:host:hostport]
     [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
     [-R [bind_address:]port:host:hostport] [-S ctl_path]
     [-W host:port] [-w local_tun[:remote_tun]]
     [user@]hostname [command]

最後に [command] とある。 実験してみよう。

$ ssh zunbe@(server) /bin/date
zunbe@(server)'s password:
2016年  6月 21日 火曜日 20:07:38 JST

サーバ側のプログラムが実行され、その実行結果を取得する事ができた。

esxcliコマンドとMegaCliコマンドを実行するスクリプトを準備し、ESXi側に置く。

#!/bin/sh
echo "===== " `hostname' " ====="
echo "----- RAID -----"
MegaCli -PDList -aALL
echo "----- ATA -----"
esxcli storage core device smart get -d *****

監視サーバ側からESXiに接続し、先のスクリプトを実行する。

$ ssh zunbe@(server) disk.sh
Password:

取れた!

=====  (server)  =====
----- RAID -----
Adapter #0Enclosure Device ID: N/A
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: N/A
Device Id: 0
WWN:
Sequence Number: 2
Media Error Count: 0
Other Error Count: 36
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA:

  :
----- ATA -----
Parameter                     Value  Threshold  Worst
----------------------------  -----  ---------  -----
Health Status                 OK     N/A        N/A
Media Wearout Indicator       N/A    N/A        N/A
Write Error Count             N/A    N/A        N/A
Read Error Count              80     44         63
Power-on Hours                63     0          63
Power Cycle Count             100    20         100
Reallocated Sector Count      100    36         100
Raw Read Error Rate           80     44         63
Drive Temperature             40     0          44
Driver Rated Max Temperature  60     45         56
Write Sectors TOT Count       200    0          200
Read Sectors TOT Count        N/A    N/A        N/A
Initial Bad Block Count       100    99         100

自動実行させる場合は、ESXi側から監視サーバに転送した時と同様、ssh-keygen で鍵セットを作り、ESXi(サーバ)、監視サーバ(クライアント)にセットして実行するようにすればよい。

取得したファイルを解析して、改めてアラート・メールを発信するプログラムを準備する必要がある事は、ESXi 側から転送する場合と同じであるが、この方法なら、ESXi上での設定は最小限で、ESXi 上でのファイル生成と、ファイル取得の際のアクセスがコンフリクトする事もない。
いい感じだ。
これで行こう。

一連記事:

楽天SocialNewsに投稿!
0 0 0

広告

まとめページ

取得した資格
登った山

広告

サイト内検索

WordPress

広告

RSS

RSS 記事
RSS コメント
Server offered by
有限会社パテンティックソフトウェア
Profile for zunbe
zunbeの読書メーター
読んだ本
-
ページ数
-
書評投稿数
-