仕事で見積もりを作る際、ファイルサイズの統計(平均や中央値)が欲しかったので少し調べてみた。
で、いくつかの手法があることがわかったので、備忘として残しておく。

1.awkで計算する

まずは、一番準備が手軽なawkでの計算方法。
基本、どのUNIX系OSでも入ってるので、とりあえずはすぐ使えるだろう(Macとかの場合はgawkにしたほうが良いけど)。

以下、ざっと項目別に出すコマンドを書いてみる。

平均

awk '{x++;sum+=$1}END {print sum/x}'
[root@BS-PUB-CENT7-01 ~]# find /root -type f...

Proxmox VE 4.1でストレージ機器を用いずにクラスタ間でライブマイグレーションを行う(DRBD9)

Proxmoxのクラスタ間でのライブマイグレーションを行う場合、通常であればiSCSIやSANで仮想HDDなどをおいておくストレージが必要なのだけど、それなしでもvSANやNutanix CEを利用するようにしてライブマイグレーションを出来ないか調べてみた。
一応、ProxmoxのノードでCeph(RBD)を利用することが出来るのだけど、そうなると最低でも3台構成以上じゃないとあまり旨味が無いので、なんかいい方法が無いかと調べていたところ、各クラスタノードで共通のディレクトリ(ディスク)をDRBDで同期させて、そこに仮想マシンのファイルを配置することで対応出来そうだったので、やってみることに...


Linuxのコンソール上で統計情報を計算する方法について調べていたところ、「st」というコマンドがそれを出来るようだということがわかったので試してみる事にした。
利用するOSはCentOS 7とする。

まず、以下のコマンドでインストールを行う。

yum install git perl-ExtUtils-MakeMaker
git clone https://github.com/nferraz/st
cd st/
perl Makefile.PL
make && make install


先日のOSCで、NixOSという関数管理型のパッケージマネージャなるものを持つLinuxディストリビューション『NixOS』というものを知ったので、入れてみる事にした。
手順としては、こちらの内容を元に作業をしている。

1.ISOファイルのダウンロード

まずは、こちらでISOファイルのダウンロードをする。
とりあえずGUIのついたLiveCDをダウンロードすれば良いだろう。

ダウンロードしたら、このISOをインストール先で読めるようにする。
(物理だったら焼くなり、仮想マシンならISOをマウントしろってことね。)

2.インストール開始

コンソール表示後、以...


Linuxで、すでにバックグラウンドや他のターミナルで動作中のプロセスの管理を今接続しているセッションに紐付けたい時もあるだろう。
そんな時は、今回紹介する『reptyr』コマンドを用いる事で、現在のセッションでプロセスを動作させる事が出来るようになる。

1.インストール

まずはインストール。
以下のコマンドでインストールを行う。

RHEL系の場合

yum install -y epel-release
yum install -y reptyr

Ubuntu/Debian系の場合

sudo apt-get install reptyr

...

Linuxコンソール上でGUIでアスキーアートをかける『aewan』

なんとなしにネットサーフィンをしていた所、Linuxコンソール上でGUIでアスキーアートを描く事が出来る『aewan』コマンドというものを見かけたので、試しに使ってみる事にする。
なお、インストール先はUbuntu Server 14.04 LTSとする。

1.インストール

まずはインストールから。
以下のコマンドをコンソール上で実行する。

sudo apt-get install aewan

Zabbix 3.0でサーバ⇔エージェント間の通信を暗号化する

Zabbix 3.0では、サーバ⇔エージェント間の通信を暗号化する事ができるようになったらしい。
今回は、それを実際に試してみる事にする。以下のページを参考に作業を行った。

なお、OSはZabbixサーバ、エージェント共にCentOS 7を用いるものとする。

1.共有鍵の生成

まずは、サーバ側でpsktoolコマンドを用いて、共有鍵の生成を行う。
ここでは、psktoolをインストールしてデフォルト長の鍵を生成している。

yum -y install gnutls-utils
psktool -u zabbix_age...

ちょっとR言語をいじってみようと思ったので、CentOS 7にRをインストールしてみる。
インストールの仕方は簡単。以下のコマンドを実行しyumでインストールするだけだ。

yum install -y epel-release
yum install -y R

wcコマンドといえば、Linux/UNIXで使える行数やバイト数を数えるのに使えるコマンドだ。
今回は、このwcコマンドで覚えておきたい使い方についてをまとめてみる。

1.基本の使い方

基本的には、以下のように用いる事でファイルの改行数、単語数、バイト数を表示する。

wc ファイルPATH
[root@test-node work]# wc /tmp/test
  50  120 1270 /tmp/test

表示させる内容については、以下のオプションで指定した数字だけを出力させることができる。

  • -c … バイト数
  • -m … 文字数
  • -l … 改行の数
  • -...

curlコマンドで覚えておきたい使い方14個

Webスクレイピングを行う際に重宝するcurlコマンド。
今回は、このコマンドで覚えておくと便利な使い方についてをまとめてみる。

1.基本的な使い方

基本的には、以下のようにコマンドを実行することでHTTPリクエストを実施し、その内容を標準出力に出してくれる。

curl http://対象のURL

2.ファイルに出力する

HTTPリクエストの回答をファイルに書き出す場合は、リダイレクトで出力先を指定するか、「-o」オプションで出力先PATHを指定してやれば良い。

curl http://対象のURL > 出力先PATH
curl -o 出力先PATH http:/...

Maxscaleについて調べていたところ、中継するSQL文の内容に応じて、指定したサーバにSQLを飛ばすように出来るフィルター機能(Named Server Filter)があるようなので、試してみる事にした。
なお、検証に用いたMaxscaleのバージョンは1.3.1を利用している。

今回は、SQL文に「five」という文字列があった場合は特定のサーバに行く、というような記述をしてみる。

●/etc/maxscale.cnf(Before)

[maxscale]
threads=4 # 同時処理数
log_messages=1
log_trace=1
logdir=/var...

MaxscaleでルーティングするSQLクエリの書き換えを行う

Maxscaleについて調べていたところ、中継するSQLクエリを正規表現で書き換えてDB側に伝える機能(Regex Filter)があるようだったので、少し触ってみる事にした。
※Maxscale 1.3.0以降で利用可能になったらしい。

書き換えルールについては、Maxscaleの設定ファイルに事前に書いておく必要があるので、以前書いたこちらの記事の設定を元にして記述していく。

●/etc/maxscale.cnf(Before)

[maxscale]
threads=4 # 同時処理数
log_messages=1
log_trace=1
logdir=/var/lo...

wgetコマンドで覚えておきたい使い方16個(+1個)

wgetコマンドといえば、webからファイルをダウンロードしたりする際によく利用するコマンドだ。
今回は、このwgetコマンドについて覚えておきたい使い方をまとめてみる事にする。

1.基本の使い方

基本的には、以下のようにオプション無しでコマンドを実行することで、Web上のファイルをダウンロードする。
ダウンロードしたファイルはカレントディレクトリに同じ名前で保存される。

wget http://ファイルのURL
[root@test-node work]# ls -la
合計 4
drwxr-xr-x.  2 root root    6  3月 19 00:39 .
d...

Linux/UNIXで実行しているコマンドをバックグラウンドジョブに切り替える

Linux/UNIXで仕事している際、コマンド実行中に別の作業をしたり、ターミナル自体を閉じたくなる事がある。
(たとえば、処理が思ったよりも時間がかかってて、離席したい時など)

screenやtmuxなどで接続している場合はそのまま切っても再接続できるけど、そうでない場合も多いだろう。そんな時は、実行しているコマンドをバックグラウンドに移してやれば良い。
やり方は簡単。まず、コマンドを実行中のターミナル上で、「Ctrl + z」キーを押下することで、コマンドが一時停止状態に移行する。

●実行例

で、この状態で「bg」コマンドを実行することで、先ほどまで実行されていたコマン...


Kraken dashでCephクラスタの監視を行う

Cephの管理用ダッシュボードに、『ceph-dash』と同じようなツールで『Kraken dash』というものがあるようなので、試しにインストールしてみることにした。
導入先はCeph管理ノード(CentOS 7)とする。

インストールは、以下のコマンドで行える。

yum upgrade && yum install -y python-pip python-devel libxml2-devel libxslt-devel git gcc
mkdir -p /var/www && cd /var/www
git clone https://github.com/krake...

Proxmox VE 4.1でHyperVのディスクイメージを利用する場合、KVMで利用できるような形式に変換する必要がある。

1.仮想マシンの作成

まず、こちらを参考にKVMのディスクイメージを利用する仮想マシンを作成する。
作成時、今回の場合はディスクイメージタイプはraw、ディスクイメージは出来れば後ほどアップロードするimgファイルと同じ容量で作成を進める。
※ディスクイメージタイプ・容量が違う場合、仮想マシンの設定ファイル(/etc/pve/nodes/仮想ホスト名/qemu-server/仮想マシンID.conf)を直接いじって、ディスク容量をいじってやらないといけ...


LinuxでソースファイルをSyntaxHighlightして標準出力するコマンド6個

Linuxなどで、ソースなどをcatで開いた際に自動的にSyntaxHighlightしてくれるツールってどんなのがあるのかなぁ、と思ったので、少し調べてみた。
基本的に、インストール先はCentOSやUbuntuとして記述していくので、それ以外のディストリを使っている場合は随時読み替えてもらいたい。

1.vimcat・vimpager

まぁ、まずは基本と言ってもいいvimcatから。
インストールも簡単で、以下のコマンドでインストール可能だ。
※なお、利用にはvimをインストールしている必要があるので注意。

git clone git://github.com/rkitov...

Cephの管理・運用について、その瞬間のデータを保持する場合はスナップショットの取得が有効だ。
スナップショットを取得しておくことで、後からそのオブジェクトのデータを再取得することが出来る。

Cephでのスナップショットの取得には、radosコマンドを用いる。

1.スナップショット取得前の状態を確認する

まず、スナップショットを作成する前に、対象とするプールを確認しよう。
プールの一覧は、以下のコマンドで取得出来る。

rados lspools
[root@BS-PUB-CEPHADM ~]# rados lspools
rbd
.rgw.root
.rgw.contr...

Proxmox VE 4.1では、KVMベースではあるが、残念ながらWebコンソールから他の仮想プラットフォームからのイメージをインポートする方法が無い(KVMのディスクイメージ含む)。
そのため、ターミナルからの操作が必要となってくる。

今回は、KVMのディスクイメージ(.img)ファイルをインポートして、Proxmox上で利用する方法について記述する。

1.仮想マシンの作成

まず、こちらを参考にKVMのディスクイメージを利用する仮想マシンを作成する。
作成時、ディスクイメージタイプはraw、ディスクイメージは出来れば後ほどアップロードするimgファイルと同じ容量で作成を進める。
※ディスクイメージタイプ・容量が違う場合、仮想マシンの設定ファイル(/etc/pve/nodes/仮想ホスト名/qemu-server/仮想マシンID.conf)を直接いじって、ディスク容量をいじってやらないといけない。


Proxmox VE 4.1では、ターミナルでの操作は必要となってくるが、以下のように操作することでVMware ESXiのディスクイメージ(vmdkファイル)をそのまま利用出来る(Webコンソール上からインポート出来ないけど)。

1.仮想マシンの作成

まず、こちらを参考にVMeare ESXiのディスクイメージを利用する仮想マシンを作成する。
作成時、ディスクイメージタイプはraw、ディスクイメージは出来れば後ほどアップロードするimgファイルと同じ容量で作成を進める。
※ディスクイメージタイプ・容量が違う場合、仮想マシンの設定ファイル(/etc/pve/nodes/仮想ホスト名/qemu-server/仮想マシンID.conf)を直接いじって、ディスク容量をいじってやらないといけない。


Maxscaleで特定のノードを優先的にマスターとして取り扱うようにする

※この設定は、Maxscale 1.3.1以降で利用可能。それ以前では動作しなかったので注意。
MariaDBのLBとして利用出来るMaxscaleだが、Read/Write Spliterとして動作させた場合、通常はwsrep_local_indexの値がもっとも若い番号(基本的には0)がマスター(書き込みノード)として扱われる。

で、このマスターに障害が発生した場合、Maxscale側でマスターを自動的に切り替えて書き込みを継続して出来るようにするのだが、Galera Clusterが復旧してwsrep_local_indexの値が変わると、自動的にMasterが切り替わってしま...


コンソール上からグラフィカルにCephの状態をモニタリングする『blessed-ceph-dash』

前回紹介したceph-dashと同様の監視を、ターミナル上で行える『blessed-ceph-dash』というものがあるようなので、使ってみる事にした。
ceph-dashと同じく、導入先はCeph管理ノードとする。

以下のコマンドでインストールを行う。

npm install blessed-ceph-dash

ceph-dashでCephクラスタの監視を行う

Cephの監視方法について検討していたところ、『ceph-dash』というダッシュボードがあるということが分かったので、試しに入れてみる事にした。
使い方は簡単。まず、以下のコマンドでファイルをダウンロードする。

git clone https://github.com/Crapworks/ceph-dash

その後、中にある「./ceph-dash.py」を実行するだけだ。
そのまま実行するとアクセス待受け状態になってしまうので、バックグラウンド実行すると良いだろう。

nohup ceph-dash/ceph-dash.py &


コレはすごい・・・データセンター管理ツール『Device42』を試してみた

以前に、OSSのデータセンター管理ツール『OpenDCIM』について紹介した事があったが、他にも似たようなツールが無いかと調べてみたところ、『Device42』という仮想マシンベースのツールがある事を知ったので触ってみる事にした。
このツールは有料のツールなので、「Free Trial」から仮想マシンイメージをダウンロードして試してみる。
ESXiやHyperV、KVM、VirtualBOXなどいくつかフォーマットに種類があるので、環境に合わせてダウンロードしよう。仮想マシンイメージをダウンロードしてからの仮想マシンの立ち上げについては、流石に分からない人はいないだろうと思うの...


前回、CephクラスタにOSDを追加していたが、今回はそのうちの1台をクラスタから切り離してみる。

1.ceph-monの設定から除外する

まず、ceph-monの監視対象から対象ノードを除外し、接続がされないようにする。
Ceph管理ノードで設定ファイルを開き、以下の項目から対象のノードを除外(削除)する。

  • mon_initial_members
  • mon_host

削除後、Ceph管理ノードから以下のコマンドで各ノードに設定ファイルを配布する。

ceph-deploy --overwrite config push Ceph管理ノード データノード1 ... デー...

ふと思い立って、CentOS 7"に"Vagrantを導入しようと思ったのでその備忘。
入れ方は簡単で、まず以下のコマンドでVirtualBoxをインストールする。

cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
yum update -y
yum install binutils qt gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
y...