fallocateで素早く仮想化ディスクを用意する

今まで、仮想環境のディスクファイルなんかで使う大きめのファイルといえばddでzero fillをしていたが、

実際にディスクにzeroを書き込むので遅くて困っていた。

1Gファイルを作るとき

最近だとfallocateの方が良いっぽい。

同じく1Gファイルを作るとき

sparse fileじゃなくてちゃんと確保してくれている模様。

ext4からの機能らしい。

bashのeオプションを一時的に無視する

シェルスクリプトを書いていると、エラー処理を書くのが面倒で、とりあえずbashをeオプションで起動しておけばいいや程度に思っていたりします。シェルスクリプト中のどこかでエラーが出ればスクリプト自体を終了してくれるので何かと便利なんですが、途中無視できる程度のエラー処理で止まって困ることもあるので、そこを何とか無視する方法を調べました。まーmanに書いてあったんでちょっと読めば気付くんでしょうが自分は結構時間かかりました。

-e      単純なコマンド (前述の シェルの文法セクションを参照) が 0 でないステータスで終了した場合、即座に終了します。ただし 失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または ││ リストの一部である、コマンドの返り値が !  で反転されている、のいずれかの場合にはシェルは終了しません。

上の条件に当てはめてしまえばいいだけです。

サンプルとして、以下のようなスクリプト。

 

最初のfalseでは、止まらず次のfalseで止まって、最後のechoは処理されないはずです。

メモリをメッチャ使ってみる

前回cpuに負荷をかけてload averageをメッチャ上げてみたが、今度は、メモリをひたすら消費するとどうなるか見てみます。

今回もwatchdogタイマーの動作具合を見るのが目的です。

まず、以下のようなコードを書いて

 

 

 

コンパイルして、

 

 

 

実行します。

 

 

メモリをジワリジワリと消費して行って、そのうち強制終了されると思います。

その間、経過を見るため他のコンソールでtopします。

 

 

 

RESの値が搭載メモリ近くになると、強制終了すると思います。このRESの値が実際に確保する値です。malloc時に

もっと多めに取れば、早く確保出来ると思ったのですが、あまり値が大きいと仮想メモリ(VIRT)ばかり増えて、

実メモリ(RES)が少ししか増えなかったので、小さめにしていっぱい回します。

RESが搭載メモリ近くになると、コンソールの反応とかも悪くなりますが、しばらくすると対象プロセス(mem_full)が

強制終了されます。この強制終了は、有名なoom-killerさんが行なってくれます。

syslogを見ればそんなメッセージがあると思います。

ただ、必ず予想していたプロセス(mem_full)とは限らず、他の正常プロセスも落とされる可能性があります。

ここまでやってメモリを食い尽くすプロセスがいても、きっとoom-killerさんが良きに計らってくれるので

watchdogタイマーで落ちることは無さそうです。

せっかくなので、今度は、メモリ食い尽くしプログラムを同時多発的に実行してみます。

 

 

 

とりあえず100個実行します。topで見るとわんさかプロセスがいます。

コンソールのレスポンスも激遅になり、topの表示も更新されなくなるが

地味にoom-killerさんも動いており、watchdogのリセットが実行される形跡はありません。

watchdogデバイスに定期的に書き込んでいるのは、CentOSにあったその名もwatchdogな

パッケージでインストールしたデーモンなんですが、こいつが何とか頑張っているようです。

この状況だとコマンドも打てないので、強制的に電源を落とすしかありませんでした。

watchdogの意味なし。

一応CentOSのwatchdogでは、load averageにしきい値を設定出来そうなので

それで対処するのもありかと思います(未検証)。

ただしきい値の設定は頭の痛いところです。因みにこのテスト実施時は160くらいいってました。

また、デーモンタイプのwatchdogでは性能が良すぎるのかとも思います。都度コマンドを実行して

デバイスに書き込むタイプの簡易的なものなら、おそらくコマンドの実行が出来ずwatchdogからリセットがかかる可能性が高い気がします。

うーん。watchdogに期待しすぎなのかもしれません。

load averageをメッチャ上げてみる

watchdogタイマーとか仕込んでみて、ふとload averageメッチャ上がってる時に、書き込めなくて落とされたりしないのだろうかと思って
load averageをこれでもかって上げてみた

 

 

 

/dev/urandomをひたすらddで取ってくるだけ。

 

 

load average 100超えてるけど、とりあえず落とされることはないですね。
本番環境だと、何が原因で上がってるのかアタフタしますが、
上げる気になれば簡単に上げられますね。
ただこれだと、CPUには負荷かかってるけど、メモリやI/Oは全然使ってないので
その点も検証する必要がありそう。

シェルでMACアドレスをランダムに生成

ちょっと悩んだので自分用にメモ。
表題の通り、シェルでMACアドレスをランダムに生成する方法。仮想化なんかで、ゲストを自動作成するスクリプトを書いていると、固有のMACアドレスが必要だったりするのでそのメモ。

 

 

 

エレガントでは無いけど、これだけ。
%Xを%xと小文字にすれば、小文字のアドレスが生成される。OUIを指定したかったら、最初の3オクテットを固定にするだけ。

ubuntu 12.10 で SPICE

仮想化と言えば、最近は一貫してkvm(libvirt経由の更にvirt-managerでの)だが、

サーバ用途では全く問題ないが、クライアントとなるとグラフィックがどうしても貧弱で

ちょっとだけ困っていた。最近のvirt-managerの設定をみると、VNCと同じ箇所で、

spiceなるものが選べるようになっていたのだが、ちょっと調べてみたらなんか良さそうなので

とりあえず試してみることにした。spiceに詳細については、ネットで調べるとあまり多くないですが

情報が得られます。

まず、必要パッケージのインストール

 

 

 

virt-manager(仮想マシーンマネージャー)で、ディスプレイを、spiceに
ビデオカードを、qxlに変更します。

なぜか起動時に、
unsupported configuration: spicevmc not supported in this QEMU binary
とかってエラーがでます。

インストールした、qemu-kvm-spiceコマンドを使ってないのが問題なようなので
virshコマンドで手動で変更します。

 

 

を、

 

に変更する。

とりあえず、これで仮想マシンは起動します。

起動したゲスト側で、ドライバが必要な場合は、別途インストールが必要です。
ゲストがWindowsの場合は、
http://spice-space.org/download.html
から、「Guest」の「Windows binaries」をゲストのWindowsにインストールします。

なんかインストール時に聞かれますが、テキトーに答えれば進めました。

最近のウィンドウズだと、ドライバに署名が無いとインストール出来ない場合があるのですが、

なんとかすれば回避できると思います(雑)

spiceにしてみてですが、なんとなく快適になったような気がします。

品質はあまり良くないですが音もでます。

ダーツボード設置

なんちゃってハマりだしている、ダーツだが一向に上手くならないので、家にダーツボードを設置することにした。ダーツライブのカードを作ったけど、やっぱり外で投げると結構お金かかるし、amazonで揃えたら、6000円ちょっとで済んでしまいそうだし。

色々と調べたところ、家に置くならソフトダーツより、ハードダーツの方が静かで良いそうなのでハードダーツの設置で検討を進めた。

■設置前の問題点

  1. 借家なので壁に、穴が開けられない。
  2. 1K(7畳)という狭い部屋なので場所が確保出来ない。
1.に関しては、突っ張りパーテーションなるものがあるので、それを設置すれば良いが、2.に関しては、距離とか測って見たけどはっきりしないので見込みで買ってみることにした。
    • 突っ張りパーテーションは、amazonで安そうな以下のもの。
    • ダーツボードは、ハードダーツで一番安そうな以下のもの。
  • これとは別に、木の板が別途必要です。パーティションに張り付けこの板にダーツボードを固定します。横40cm以下、縦40cmくらい、厚み2cmくらいが必要です。近所のホームセンターで探しましょう。自分は350円くらいで購入しました。サイズは横が大きすぎなければアバウトで大丈夫です。
    木の板

ダーツボードの品質が気になったが、あっという間に飽きる可能性があるのでとりあえず最安のものにした。実際物が来てからの品質の感想ですが他の物を見たことが無いから比較のしようが無いです(笑)。何の参考にもなりませんが、自分としては、普通にソフトティップのダーツも刺さるし、格安なのにハードダーツが2セットついているし(使ってませんが)十分満足の品だと思ってます。

実際の設置でまず問題になる設置場所ですが、ダーツボードの設置場所は、突っ張りパーテーションさえ設置出来れば良いのでどうとでもなると思います。部屋の壁際とかに置きましょう。

次に問題となるスローラインからダーツまでの距離ですが、ボードはハードダーツにしましたが、実際に練習したいのはソフトダーツなので244cm必要です。1Kの狭い部屋だとここがまず問題となります。実際自分も一回設置場所を変更しました。

1Kでは、スローラインからダーツボードまでの空間を専用に確保するのは無理です。ただダーツが飛ぶ空間て限られて(自分の顔の前からダーツボードまで)ますので、その他(特に下)の空間は、なんか物があっても問題ありません。結果的に自分の場合は、ベッド上をダーツが通過することになりました。寝てる時にダーツをやって、刺さらなかったダーツが落ちてきたら大変じゃんとかあるかもしれませんが、一人身なので全くそんな心配は必要ありません。頭の先にダーツボードがあるので、突っ張りパーテーションが崩壊して落ちてきたらどうしようという恐怖はちょっとあります。

実際の設置方法ですが、

      • パーティションに木の板を固定します。
        パーティションの網目のパーツは、上部と、下部で2つありますので必ず上部に固定します。上部の網目の真ん中辺りに固定すれば良いと思います。高さは突っ張りパーティションの方で後から調整可能です。
        木の板固定
        何度か失敗の跡がありますが、こんな感じです。ステップルと、気休め程度で木ネジも使ってます。
      • パーティションを組み立てます。説明書が付いてますのでそれを参考にします。板の真ん中が173cmになるくらいにパーティションのポールで高さを調整します。
        パーティション組立
      • ダーツボードを開梱します。
        ダーツ開梱
        こんな感じです。付属品は、
        ダーツ付属品
        こんな感じです。
        下の木ネジ2本と、金具はダーツボードを木の板に引っ掛けるための物です。真ん中の太めの木ネジは、ダーツボードの裏面の真ん中にねじ込みます。このネジをさきほどの金具に引っ掛けます。上のゴムと釘は、ダーツボードと木の板との隙間を埋めるためのものです。
      • 金具を木の板に固定します。金具の真ん中が173cmの高さになるようにします。
        金具固定
        173cmに鉛筆などで印をします。金具はマスキングテープなどで固定するとネジ止めが簡単です。
      • ダーツボードの裏にネジを入れ込みます。真ん中に既に穴があるのでそこに木ネジを入れ込みます。
        ネジ固定
      • 写真を撮り忘れたのですが、3つの黒いゴムを固定します。ダーツボードの説明書では、ボード側に付けるようだったのですが、木の板側に取り付けました。3箇所バランスよく取り付けます。
      • ダーツボードを金具に取り付けます。上から引っ掛けるように下にさげます。横からのぞきならがやると場所がわかります。こちらも写真はありません。
上記で完成です。
完成
特に難しいところは無くすんなりいけば1時間くらいで出来ると思います。と言いつつ自分は、板のやり直しや、位置の移動で結構時間がかかっております。
これでダーツが上手くなれば!!!

samba4でActive Directoryを構築してみた。

昨年の12月に待望のsamba4がリリースされたので嬉しさのあまり、Active Directory環境を構築してみた。

詳細はここ

ADの素晴らしさはいつも羨ましく思っていたが、ついにオープンソースでの実装が可能となりグループポリシーが反映された時なんて涙がでそうだった。

そもそもADに関して詳しくないので、自分の設定が悪いのかsambaの不具合なのか判断出来ず、実現できない箇所などあるが普通にユーザとグループ作ってGPOを配布する位なら現段階でも問題無さそう。

今のところ一番問題となっているのは、サイトを分けた時のサイト間のレプリケーションが上手く行かないこと。

拠点にADを設置した際に、必要な設定だと思うのでなんとか回避したい。これさえ回避できれば本運用に入っても良いのじゃないかと思う。

ネットワークのトラフィック監視

コマンドでの監視限定

このへんが良さそう

詳しくは見てないがコマンド実行するだけで、なんとなくわかる。

ざっと調べただけで結構あった。

ubuntu nexus7 calibreで電子書籍

nexus7を買ったが、家でちょっとニュースを見たりとか程度で、イマイチ有効活用していなかった。

外出時に使いたいのだが、テザリング環境が整ってないため、出先ではゲームをやるくらいしか使い道がなくなんか良い使い道ないかなーと悶々としていた。

nexus7の電子書籍としての用途は、マンガを読んだ程度だが、サイズ的にも丁度いいし外出先で電子書籍見れないかなーと考えたところcalibreという電子書籍管理ソフトがいいらしい。

電子書籍だけなら、普通にkindle for androidとかのソフトを入れて持ちだせばいいのだけど、それだとamazonで売っている電子書籍だけで、自分がネットから集めたPDFファイルなんかを読むことが出来無い。

他のビューワーでいいじゃんてなりそうだが、kindle for androidの英和辞書機能が非常に優秀で、自分で集めた英語の技術文書なんかもkindle for androidで読みたくてcalibreの導入を決めた。

例によって自分のクライアントPC環境は、ubuntuなのでインストール方法は、以下のコマンドで一発

ubuntu公式にもあるが、calibreは積極的に開発が進められている状況とのことなので、最新のものをインストールするようにした。

calibre本体は、/opt以下にインストールされる模様。

パッケージでインストールしないと、アンインストールはどうすんの?と細かいことを気にしてしまうが、明確な方法が見つからなかった。とりあえず暫定的に以下かな。

  • /opt/calibre/を削除
  • /usr/binのシンボリックリンクを削除

  • 後こいつらを削除?

とおもったら、
calibre-uninstall
ってコマンドがあった。rootのみ実行可能になっているから気が付かなかった。

上記コマンドは実行しておりません。

calibreはGUIがあるので特に使い方で難しいことはなさそうなのだが、

何点か躓いたので記載

  • ニュースが取得出来無い。「インターネット未接続」となる。
    network-managerがインストールされて使って無いとなる模様。自分の環境では、仮想環境のBridge設定などの関係で、network-managerは無効にして、/etc/network/interfacesに直書きしていた。この環境だとインターネット接続がな無いものと判断されてしまう。network-managerのアンインストールで回避。
  • nexus7にデータを送るとエラーになる。
    詳細は調べてないのですが、nexus7のUSBデバッグをONにしたことで回避したのかもしれない。自分のnexus7は、android 4.2にアップデートしたのだが、【{ } 開発者向けオプション】を表示するのに躓いた。
    【設定】->【タブレット情報】の【ビルド情報】を7回タップする。うーん。そりゃわからん。

まだ少ししか使って無いが、calibreの良い点としては、

  • 辞書が便利
    kindleの機能ではあるが、calibreから英語のepubとかを渡すととっても便利
  • ニュースが便利
    端末内に保存してくれるので、外出先でも読めて非常に便利
  • フォーマット変換が便利
    PDFをmobiに変換とかがGUIで出来る。ただ、PDFからの変換は、結構見た目が崩れるのでPDFのままの方が無難

逆に悪い点としては、

  • PDFだと辞書が使えない。しおりが使えない。読み込みが遅い。
    またまたkindle側の問題ですが、なんとかしてほしい。
  • フォーマット変換がよく失敗する
    細かいところは、調べてませんが結構頻発します。

いろいろありますが、kindle for androidを使うならほぼ必須のソフトじゃないかなって思います。