Linux環境上で特定のユーザで動いているプロセスが暴走したりしてLoadAverageが上がったりしたとき、まとめて殺す方法。
sudo -u ユーザ名 kill -SIGKILL -1
killコマンドの対象を-1にすると、実行ユーザの全てのプロセスになる。
で、sudo -uで対象ユーザ権限で実行すれば、そのユーザの全てのプロセスに送れる。
SIGHUPとかでも良いけど、やばいときはSIGKILLかな?
(2348)
Linux環境上で特定のユーザで動いているプロセスが暴走したりしてLoadAverageが上がったりしたとき、まとめて殺す方法。
sudo -u ユーザ名 kill -SIGKILL -1
killコマンドの対象を-1にすると、実行ユーザの全てのプロセスになる。
で、sudo -uで対象ユーザ権限で実行すれば、そのユーザの全てのプロセスに送れる。
SIGHUPとかでも良いけど、やばいときはSIGKILLかな?
(2348)
CentOSの1次配布サイトとか、だいぶ以前からネットワーク負荷低減としてtorrentを使って配布していますね。
分散ダウンロードで配布する側も受け取る側も割と高速で便利なんですが、スマホ端末でダウンロードするにはちょいと不便、そこで私はVPSを活用してダウンロードしています。
DropboxとuTorrentをWindowsサーバ化したお名前.com VPS上で動かすことで、スマホ上で簡単にtorrentダウンロード出来ます。
まず、VPSをWindowsサーバ化します。 面倒なら、お名前.com デスクトップクラウド for Windowsアプリ
を利用すれば、簡単にホスティングされたWindowsデスクトップ環境が利用できます。
1,Dropboxを導入
VPS上に、dropboxをインストールします。
Dropboxはいわゆるクラウドストレージですが、複数のPCのフォルダをクラウド経由で同期してくれる優れもので、作業フォルダをDropboxで共有しておけば、自宅でも会社でも、スマホでも同じファイルが見られます。 基本の3GBは無料で、いくつかの簡単な操作で無料の追加容量がもらえて、月10ドルほどで100GBに拡張も出来ます。
今回はDropboxアプリを全て基本設定のまま導入します。
2,uTorrentを導入
torrentのクライアントのuTorrentをVPS上に導入します。
基本設定で導入してuTorrentを立ち上げたら、メニューの設定を開いて、左のナビゲーションにあるディレクトリを選択して、↓みたいな感じの設定をします。
※既定の保存先は適当に広いディスクにディレクトリ作成、それ以外はDropbox共有ディレクトリ以下にautoTorrentやfinishedTorrentディレクトリを作成して選択します。
3,スマホにdropboxクライアントを導入
iPhoneならAppStoreから導入、AndroidならGooglePlayから導入。
1で取得したDropboxアカウントの設定を行います。
アプリへの直リンクを置いておきます
あとは、普通にスマホでSafariとかのブラウザでブラウジングして、torrentファイルをタップしたときに出るダウンロード方法の選択画面で、Dropboxを選んでautoTorrentディレクトリにダウンロードします。
しばらく待っていると、finishedTorrentディレクトリの中に完了したファイルが出来上がります。
uTorrentはtorrentファイル自動ロード元に指定したディレクトリを監視して、新しいtorrentファイルが保存されると自動でダウンロードしてくれるため、スマホでtorerntファイルをdropboxの監視ディレクトリにダウンロード指定すると、勝手にダウンロード処理を行ってくれます。
そして、ダウンロードが完了すると、ダウンロード完了後の移動先に指定した場所に移動されるため、ダウンロードがすんだ物がdropboxアプリで開けるようになります。
スマホのDropboxアプリ以外に、自宅や職場のPCにもDropboxクライアントを入れておけば、出先でダウンロード処理すると、PCにもダウンロード完了した物が勝手に保存されるので、とても便利です。
torrentは接続処理などで単純なデータ転送以外の通信も発生するため、この辺を外部ホスト(VPS)に任せてしまえば、最終的なファイルだけDropboxから落ちてくるのでローカルの通信帯域も節約できます。
この特徴は、単純にスマホからダウンロードする場合だけでなく、通信量制限のあるモバイル回線をPCで利用している場合にも、VPS経由でダウンロードすることでtorrentのオーバーヘッドを減らしてくれる効果もあります。
VPSを新規に契約すると月額1000円ほどかかりますが、NASのバックアップやミュージックサービス等、色々な機能を詰め込んでしまえば、最終的には1サービス単価は安く収まってお得になります。
この辺は、VPSの自由度の高さ故の利点ですね。 サービスを上手く使い倒して、お得で快適な環境を手に入れたいですね。
(1608)
各VPSのレビュー時にUnixBenchを利用しているので、比較用に物理サーバのベンチ値を乗せておく。
Proliant DL320e G8
Intel Xeon E3-1290v2 / DDR3 8GBx2 / 300GB 2.5″ SAS 15krpm x 2 mirror @ SmartArray P420i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
------------------------------------------------------------------------ Benchmark Run: 月 11月 11 2013 20:41:40 - 21:10:59 8 CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 45826765.7 lps (10.0 s, 7 samples) Double-Precision Whetstone 4326.3 MWIPS (9.6 s, 7 samples) Execl Throughput 2857.6 lps (29.3 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 1325294.8 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 350270.4 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 3081942.9 KBps (30.0 s, 2 samples) Pipe Throughput 2412648.2 lps (10.0 s, 7 samples) Pipe-based Context Switching 249420.6 lps (10.0 s, 7 samples) Process Creation 11557.7 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 5665.9 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 1847.4 lpm (60.0 s, 2 samples) System Call Overhead 3196617.0 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 45826765.7 3926.9 Double-Precision Whetstone 55.0 4326.3 786.6 Execl Throughput 43.0 2857.6 664.6 File Copy 1024 bufsize 2000 maxblocks 3960.0 1325294.8 3346.7 File Copy 256 bufsize 500 maxblocks 1655.0 350270.4 2116.4 File Copy 4096 bufsize 8000 maxblocks 5800.0 3081942.9 5313.7 Pipe Throughput 12440.0 2412648.2 1939.4 Pipe-based Context Switching 4000.0 249420.6 623.6 Process Creation 126.0 11557.7 917.3 Shell Scripts (1 concurrent) 42.4 5665.9 1336.3 Shell Scripts (8 concurrent) 6.0 1847.4 3079.0 System Call Overhead 15000.0 3196617.0 2131.1 ======== System Benchmarks Index Score 1736.4 ------------------------------------------------------------------------ Benchmark Run: 月 11月 11 2013 21:10:59 - 21:41:12 8 CPUs in system; running 8 parallel copies of tests Dhrystone 2 using register variables 178710032.4 lps (10.0 s, 7 samples) Double-Precision Whetstone 30672.2 MWIPS (10.0 s, 7 samples) Execl Throughput 38624.1 lps (29.4 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 1442191.3 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 378361.4 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 4020232.5 KBps (30.0 s, 2 samples) Pipe Throughput 10173234.9 lps (10.0 s, 7 samples) Pipe-based Context Switching 2168475.2 lps (10.0 s, 7 samples) Process Creation 101030.4 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 40442.9 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 5337.0 lpm (60.0 s, 2 samples) System Call Overhead 11369724.7 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 178710032.4 15313.6 Double-Precision Whetstone 55.0 30672.2 5576.8 Execl Throughput 43.0 38624.1 8982.4 File Copy 1024 bufsize 2000 maxblocks 3960.0 1442191.3 3641.9 File Copy 256 bufsize 500 maxblocks 1655.0 378361.4 2286.2 File Copy 4096 bufsize 8000 maxblocks 5800.0 4020232.5 6931.4 Pipe Throughput 12440.0 10173234.9 8177.8 Pipe-based Context Switching 4000.0 2168475.2 5421.2 Process Creation 126.0 101030.4 8018.3 Shell Scripts (1 concurrent) 42.4 40442.9 9538.4 Shell Scripts (8 concurrent) 6.0 5337.0 8895.0 System Call Overhead 15000.0 11369724.7 7579.8 ======== System Benchmarks Index Score 6819.7 |
先月契約したお名前.com VPSの4GBプランの結果は
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 96113260.1 8235.9 Double-Precision Whetstone 55.0 11429.0 2078.0 Execl Throughput 43.0 10977.3 2552.9 File Copy 1024 bufsize 2000 maxblocks 3960.0 664230.1 1677.3 File Copy 256 bufsize 500 maxblocks 1655.0 177786.6 1074.2 File Copy 4096 bufsize 8000 maxblocks 5800.0 1657796.4 2858.3 Pipe Throughput 12440.0 7257654.3 5834.1 Pipe-based Context Switching 4000.0 995557.4 2488.9 Process Creation 126.0 24327.3 1930.7 Shell Scripts (1 concurrent) 42.4 12387.1 2921.5 Shell Scripts (8 concurrent) 6.0 1829.8 3049.7 System Call Overhead 15000.0 6640918.0 4427.3 ======== System Benchmarks Index Score 2816.2 |
CPU周りについては1/2~1/3は出ている感じで、相変わらずコストパフォーマンスが高い印象。 ディスク周りも参考値のサーバの高性能ディスク比でこれだけ出れば健闘している。
絶対性能ではやはり敵わないが、コストパフォーマンスは相変わらず非常に高い(Proliantを購入する価格は、VPSの60ヶ月分位なので、それだけでVPS2台を2年半契約できる。 運用費用も考えると、VPSよりも物理サーバが安くなることはほぼあり得ない感じだ)
(462)
先日の記事でBeagleBone Black(BBB)を自宅の制御サーバにする件、徐々に環境移行をしていて、今回はそれ関係でmuninのプラグインを開発してみた。
従来は制御ボードのAPIを叩くCで組んだWindowsプログラムだったのだけど、サーバを組み込みLinux(Ubuntu on BBB)に移した関係で諸々の書き換え・作り替えを実施している。
特に大きいのがセンサーを長々と配線して直接繋ぐ形から、センサーの側にマイコンを置いてデータ化して中央のBBBに集約する形にしている。
昨今は、ワンチップマイコン(それも8ビット機)を割と簡単にネットワーク接続することが出来る(ネットワークコントローラにTCP/IPまで組み込まれている)ので、大きめのUSBメモリ位のサイズのユニットが普通にイーサネットに繋がって、HTTP等でデータ交換出来てしまうのだ。
今回は試作として、Arduinoに大気圧センサーモジュールとイーサネットシールドを組み合わせた簡易HTTPサーバとそのmuninプラグインを制作した(温度センサーだけでかまわなかったのだが、単機能センサーよりもBMP085気圧センサーの方が安かった・・・)
HTTPについては、このブログを見ている人なら基本部分はおわかりかと思う。
GET /sensor.dat HTTP/1.1 とか送って、200 OKとか返すわけだけど、muninは結構利用していてもプロトコル自体はあまり知らないと思う。
私も知らなかったので、軽く調査してみたところ、簡単な仕組みだったのでプラグインを作ってみた。
muninプラグインを作る場合のポイント
・muninプラグインはmuninサーバ側(munin-cron)は基本的に何も作る必要なく、munin-node側さえ書けば動く
・muninプラグインはどんな言語でも作ることが出来る(特別なライブラリを必要としない)
・munin-nodeはポート4949で普通に平文テキスト形式で通信するので、munin-nodeプログラムを使わず直接ノードを構築することも簡単(Arduino上にも簡単に実装出来る)
munin-nodeを叩くとある程度対話的に操作可能なインタフェイスがある。
ローカルホストのデフォルト設定のmunin-nodeに接続するなら、
1 |
telnet localhost 4949 |
でOK。
繋ぐと・・・
1 2 3 4 |
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. # munin node at bbblog |
とか、帰ってくる。
とりあえず、Enterキーとか押してみると・・・
1 |
# Unknown command. Try cap, list, nodes, config, fetch, version or quit |
とか、普通にコマンドリストが帰ってきた。
それぞれ実行してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
cap cap multigraph dirtyconfig list cpu df if_err_eth0 if_eth0 load memory uptime nodes bbblog . config # Unknown service config cpu graph_title CPU usage graph_order system user nice idle iowait irq softirq graph_args --base 1000 -r --lower-limit 0 --upper-limit 100 graph_vlabel % graph_scale no graph_info This graph shows how CPU time is spent. graph_category system graph_period second system.label system system.draw AREA system.min 0 system.type DERIVE system.info CPU time spent by the kernel in system activities user.label user user.draw STACK user.min 0 user.type DERIVE user.info CPU time spent by normal programs and daemons nice.label nice nice.draw STACK nice.min 0 nice.type DERIVE nice.info CPU time spent by nice(1)d programs idle.label idle idle.draw STACK idle.min 0 idle.type DERIVE idle.info Idle CPU time iowait.label iowait iowait.draw STACK iowait.min 0 iowait.type DERIVE iowait.info CPU time spent waiting for I/O operations to finish when there is nothing else to do. irq.label irq irq.draw STACK irq.min 0 irq.type DERIVE irq.info CPU time spent handling interrupts softirq.label softirq softirq.draw STACK softirq.min 0 softirq.type DERIVE softirq.info CPU time spent handling "batched" interrupts steal.label steal steal.draw STACK steal.min 0 steal.type DERIVE steal.info The time that a virtual CPU had runnable tasks, but the virtual CPU itself was not running . fetch # Unknown service fetch cpu user.value 2157842 nice.value 5056908 system.value 1135668 idle.value 68884854 iowait.value 1282979 irq.value 81 softirq.value 11064 steal.value 0 . version munins node on bbblog version: 1.4.6 quit Connection closed by foreign host. |
capはmunin-nodeの機能の話?
versionとquitはそのまんまだね。
listは動作しているプラグインのリスト表示。
nodesは取得出来るノード名のリスト表示。
configはプラグインの設定を得られる(config プラグイン名)
fetchはプラグインの値を得られる(fetch プラグイン名)
最低限の動作は、listにプラグイン名が出て、configでプラグインの情報を得て、fetchでプラグインの値を取得する。
1,プラグイン名は、/etc/munin/plugins/以下のファイル名で自明。
今回試作するプラグインは、気圧センサーの値を取得するので
/etc/munin/plugins/env.barometic
と言うプラグインファイルを作成した。 このファイルは、実行可能である必要がある(chmod +x env.barometic)
munin的にはperlが基本だろうけど、今回は簡単にshellで作成、と言うことで
1 |
#!/bin/bash |
で書き始め。
1 2 |
#!/usr/bin/php <?php |
でPHPプログラムでもOKだね。
2,config情報はプラグインの第1引数にconfigと与えた場合の戻り値そのまま
なので、第1引数をifして、先のconfigの戻り値みたいなテキストを戻す。
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash if [ "$1" = "config" ]; then echo 'graph_title Arduino BP Sendor'#グラフ名として描画される文字列 echo 'graph_vlabel Pressure'#グラフの縦軸ラベル echo 'graph_category Environment'#グラフのカテゴリ(disk:df disk:iostatみたいに複数のグラフがグループ化される場合のdiskの括り) echo 'graph_scale no'#補助単位系を使うか使わないか(yes/no) echo 'graph_args --lower-limit 900 --upper-limit 1100 --rigid'#グラフのその他の設定。 この場合、最低値900、最高値1100、最低値と最高値を固定描画 echo 'pres.label sensor1[hPa]'#presは、自分で定義するデータ系列の名前AでもBでもかまわない。 labelはデータ系列名 echo 'pres.max 1100'#pres系列の最高値で、fetchしたときにこれを超えると取得失敗と判断される echo 'pres.min 900'#名前の通り、maxに対する最低値の定義 exit 0 fi |
これで、実行権限を付けてmunin-nodeを再起動すれば、次回のmunin-cronが回ってきたときにはグラフ一覧ページに追加される。
データ系列を追加するなら、
1 2 3 |
echo 'pres2.label sensor2[hPa]' echo 'pres2.max 1100' echo 'pres2.min 900' |
みたいに、.前の名前を変えて列挙していく。
3,fetchの戻り値は引数無しで実行した場合の戻り値
なので、引数チェックが引っかからなかった場合に
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash if [ "$1" = "config" ]; then echo 'graph_title Arduino BP Sendor'#グラフ名として描画される文字列 echo 'graph_vlabel Pressure'#グラフの縦軸ラベル echo 'graph_category Environment'#グラフのカテゴリ(disk:df disk:iostatみたいに複数のグラフがグループ化される場合のdiskの括り) echo 'graph_scale no'#補助単位系を使うか使わないか(yes/no) echo 'graph_args --lower-limit 900 --upper-limit 1100'#グラフのその他の設定。 この場合、最低値900、最高値1100 echo 'pres.label sensor1[hPa]'#presは、自分で定義するデータ系列の名前AでもBでもかまわない。 labelはデータ系列名 echo 'pres.max 1100'#pres系列の最高値で、fetchしたときにこれを超えると取得失敗と判断される echo 'pres.min 900'#名前の通り、maxに対する最低値の定義 exit 0 fi pres=`wget -q http://192.168.0.123/getP -O -` pres=`expr $pres / 100` echo "pres.value $pres"#pres系列の値 |
今回はネットワーク上の192.168.0.123にArduinoで作ったセンサーユニットがあって、/getPをHTTPで取得するとパスカル単位の気圧がただ出力されるようにしてあるので、それをhPaに変換(100で割るだけ)して出力している。
センサーユニットが192.168.0.124, 192.168.0.125にもある場合、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/bin/bash if [ "$1" = "config" ]; then echo 'graph_title Arduino BP Sendor' echo 'graph_vlabel Pressure' echo 'graph_category Environment' echo 'graph_scale no' echo 'graph_args --lower-limit 900 --upper-limit 1100 --rigid' echo 'sensor1.label sensor1[hPa]' echo 'sensor1.max 1100' echo 'sensor1.min 900' echo 'sensor2.label sensor2[hPa]' echo 'sensor2.max 1100' echo 'sensor2.min 900' echo 'sensor3.label sensor3[hPa]' echo 'sensor3.max 1100' echo 'sensor3.min 900' exit 0 fi pres=`wget -q http://192.168.0.123/getP -O -` pres=`expr $pres / 100` echo "sensor1.value $pres" pres=`wget -q http://192.168.0.124/getP -O -` pres=`expr $pres / 100` echo "sensor2.value $pres" pres=`wget -q http://192.168.0.125/getP -O -` pres=`expr $pres / 100` echo "sensor3.value $pres" |
これで、123~125の3個のセンサーを読んできて1枚のグラフにまとめてプロットするプラグインが完成。
BBBのADCを利用する場合・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash if [ "$1" = "config" ]; then echo 'graph_title BBB.Analog' echo 'graph_vlabel Voltage' echo 'graph_category ADC' echo 'graph_scale no' echo 'graph_args --lower-limit 0 --upper-limit 1800' for (( i=0; i<=7; i++ )) do echo "ADC$i.label ADC$i[milli Volt]" echo "ADC$i.max 1800" echo "ADC$i.min 0" done exit 0 fi for (( i=0; i<=7; i++ )) do value=`cat /sys/module/bone_iio_helper/drivers/platform:bone-iio-helper/helper.14/AIN$i` sleep 0.1 echo "ADC$i.value $value" done |
これで、BBBのADCの0~7の生電圧を記録してグラフ化出来る。
組み込みマイコンで1からグラフ描画とかを作るのは非常に面倒だが、Linuxの利点である既存のOSS(今回はmunin)利用によって、簡単にグラフ化してWebインタフェイスで見られる訳だ。
ADCにLM35温度センサーをぶら下げているならば、LM35の特性は10mV/degCなので、そのままでも気温の10倍の値が表示されるし、value=expr $value / 10
を挟めばぴったりセ氏温度になる。
AC712電流センサーをつければ、殆どプログラムらしいプログラムを書くこと無くWebインタフェイスでグラフ表示可能な電力計ができあがってしまう。
↓PC置き場に設置したArduinoセンサーノードをBBB上のmuninで監視してみる。
温度
気圧計
ネットワーク接続センサー・ロガー等の設計・試作、量産対応可能です(デバイスからインターネット連動システムまで全般対応可能)
お問い合わせください。 > inquiry at studioes.net
(812)
昨日書いたとおり、自宅の制御系マスターとしてBeagleBone Blackを購入したわけだけど、どのくらいの能力があるのか試したくて1台のBBBにWordpressを導入してみた。
環境セットアップの手順をメモっておく。
1,Ubuntu導入
BBBのデフォルトOSはAngstromLinuxだけど、マイコン最適化で色々削られているし、ユーザ情報が少ないので、最近いじり始めたUbuntuを導入してみることに。
組み込み系の物でOSを入れると言えば、ソースコードかき集めてきてビルドしてライターで焼いてとなるわけだけど、BBBについては、事前にパッケージングされたイメージが結構出回っていて、これをSDカードに書き込んでやるだけでいい。
今回は、こちらから、Ubuntu12.04LTSのイメージを取得してきた。
xz形式なので、いったんVPS上にダウンロードして展開して(新しい圧縮形式で、xzプログラムが必要なので。 apt-get install xz とか、 yum install xz とかする)、gz圧縮し直してPCにダウンロードした。
展開したファイルは約2GBで、ディスクのローイメージ(パーティション情報なんかも含むイメージ)なので、Win32DiskImagerでmicroSDHCカードに書き込む。
2,Ubuntu起動
BBBの基板上にあるmicroSDHCカードを挿入して電源を投入すると、BBBのローダーがmicroSDHCにブート処理を回して起動してくれる。
EoUは動作しないので、HDMI(uHDMI)にディスプレイ、USBにキーボードを接続しておいた方が便利だが、とりあえずなら、DHCPサービスが動いているネットワークにLAN接続しておけばDHCPクライアントが動作してsshがデフォルトで使える。 Angstromほど起動は速くないから、コンソールを繋いでいない場合は2分くらい?待つ。
起動が完了したら、sshで接続する。 ポートは通常の22で、ユーザとパスワードはubuntu/ubuntuがデフォルトである。 ubuntuユーザはsudo出来る。
3,普通にUbuntuとして使う
まぁ、ここまで来れば、殆ど普通のUbuntuが入ったサーバと変わらない。 KDEとか設定すればHDMIでXも出来るけどもっさりだし、おとなしくルータの横に並べて設置(ルータのUSBポートから電源取れるし)して、リモート操作だ。
まずは、パスワード設定
#passwd
ネットワークのアドレスを固定する場合は
#vi /etc/network/interfaces
で設定を書く。
我が家ではDHCPサーバの方にこちらのMACアドレスを書いて固定払い出しにした(別のネットワークに繋ぐのにDHCPのが楽だから)
SDカードの空き領域を何とかする(パーティションを切っているから、2GBより大きいSDカードに入れている場合、空き領域がもったいない) rootファイルシステムを拡張しちゃうのもありだけど、今回は、新しいパーティションを切って/varにポイントした。
#fdisk /dev/mmcblk0
#mkfs.ext3 /dev/mmcblk0p3
※通常の/dev/sdとかじゃなく、/dev/mmcblkになる。 ここにはmicroSDスロットとeMMCがぶら下がっていて、起動に使ったデバイスがmmcblk0で使わなかった方が1になる。 この状態でmmcblk1に下手に手を出すとROM焼きしないといけなくなる可能性もアルので注意。
今回はプライマリの3番パーティションにすべての残り領域を設定した。
#mv /var /var.tmp
#mkdir /var
#mount /dev/mmcblk0p3 /var
#mv /var.tmp/* /var/
#vi /etc/fstab
/dev/mmcblk0p3 /var auto defaults 0 1
色々導入する。
普通にaptでパッケージ管理出来るので、とりあえずリストを更新。
#apt-get update
aptで普通に入れたい物を入れていく。
今回入れた物
vim 定番エディタ
libtime-format-perl, make, gcc UnixBenchに必要
telnet, inetutils-tools, inetutils-traceroute, dnsutils, dstat, sysv-rc-conf 管理系のコマンド類
php5, php-apc, php5-mysql, mysql, nginx WordPressに必要(Apache2でも一応動くけどそれなりに重い。 lightを使うほどひどくも無いのでnginxを入れた)
postfix, munin 何となく入れてみた
SDカードのフラッシュの耐久性でsqlとかおそらく即死するとは思うんだけど、更新とかtmp_to_diskを押さえれば大丈夫かな・・・ 本格的にやるなら、高耐久性のデバイスをUSBにぶら下げる(SLCのSSDとか)か、データファイルを一定期間ごとに移して、アドレスをずらしていくとかしないと厳しいとは思う。
後は普通にWordpress導入手順
#mysql -p
で、wordpressユーザとDBを作成。
#cd /usr/share/nginx/www
#wget http://ja.wordpress.org/wordpress-3.6.1-ja.tar.gz
#tar xzf wordpress-3.6.1-ja.tar.gz
nginxの設定は、/etc/nginx/sites-available/defaultsとかを修正。
自動起動設定とかは、sysv-rc-configで設定。 今回は、mysql, nginx, postfix, munin-nodeを自動起動化。
後は、普通にブラウザで繋いでセットアップ完了。
iptablesのルールも無いから、ちゃんと使うなら入れた方が良いかもしれない? まぁ、うちはNetscreen管理のDMZ配置でポリシー管理されているから、こっちに入れる必要も無いだろうな。
そんなわけで、こちらで公開してみます。
案外、いけるでしょ?
(526)
ハイパフォーマンス・常時稼働を要求する処理は基本的にGMOクラウドVPS等のVPSで行っているわけだけど、どうしても家に装置が無いと困る事もある。
テレビレコーダ等の専用ハードウェアが必要なもの、高速・大容量性が必要なファイルサーバ等が代表であるけど、我が家では制御系の物も必要である(環境モニタ、扉開閉確認、電源操作等)
基本的に、末端の装置はAVRとかの8ビットマイコンで開発・構築して、親機はPCIバス接続のロジックインタフェイスカードを入れたマシンだったのだけど、インタフェイスカードが不調になってきた。
インタフェイスカード買い換えかなと思うものの、PCIのインタフェイスは将来性が微妙、ならば親機ごとPCIeかなとも思うのだけど、一式で50万くらいでちょっとためらい。
よくよく考えると、必要な機能・性能を考えると、最近の組み込み用のハードならいける感じがする。
パワフルなマイコンと言えばRaspberryPi(パワーレスなPCとも)が手元に何台か有るんだけど、入出力ポート数が足りない。
何か無いかなと検索してみると、最近はPi的なボードが色々あるらしい。
その中で目を付けたのはBeagleBoard系のボードであるBeagleBone Black(BBB)
入出力が大量に引き出されているから、ピンヘッダでPIOもI2CもSPIもいけるけど49ドルとお安い。
BBBは、A8アーキテクチャの1GHzプロセッサを中心に、512MBの主記憶(DDR3L)と2GB不揮発(eMMC)がオンボード搭載、microSDスロット、USBのホスト・デバイス、FE、HDMI等揃っている。
パッケージを開けると、ボードとUSBケーブルとCD-ROMだけの超シンプルさ。
USBケーブルをPCに入れて電源投入すると複合デバイスが検出されて、ストレージデバイスの中にはドキュメント等が収まっている。 EoU(Ethernet over USB)のネットワークも出てきて、192.168.7.1がPCに割り振られて、192.168.7.2にBBBが稼働していて、HTTPやSSHで覗くことが出来る。
とりあえず、デフォルトのOSはAngstromLinuxなんだけど、扱い慣れていないのでUbuntu12.04をインストールした。
まぁ、細かい話は別にするとして、とりあえず、このブログ的にはサーバ能力はどうなのよ?ってところで、UnixBenchを実行してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
1 CPU in system; running 1 parallel copy of tests Dhrystone 2 using register variables 3530108.5 lps (10.0 s, 7 samples) Double-Precision Whetstone 203.1 MWIPS (10.0 s, 7 samples) Execl Throughput 436.6 lps (29.6 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 69281.2 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 21950.9 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 149755.0 KBps (30.0 s, 2 samples) Pipe Throughput 162534.6 lps (10.0 s, 7 samples) Pipe-based Context Switching 25898.7 lps (10.0 s, 7 samples) Process Creation 1517.5 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 765.5 lpm (60.1 s, 2 samples) Shell Scripts (8 concurrent) 96.1 lpm (60.3 s, 2 samples) System Call Overhead 408807.7 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 3530108.5 302.5 Double-Precision Whetstone 55.0 203.1 36.9 Execl Throughput 43.0 436.6 101.5 File Copy 1024 bufsize 2000 maxblocks 3960.0 69281.2 175.0 File Copy 256 bufsize 500 maxblocks 1655.0 21950.9 132.6 File Copy 4096 bufsize 8000 maxblocks 5800.0 149755.0 258.2 Pipe Throughput 12440.0 162534.6 130.7 Pipe-based Context Switching 4000.0 25898.7 64.7 Process Creation 126.0 1517.5 120.4 Shell Scripts (1 concurrent) 42.4 765.5 180.6 Shell Scripts (8 concurrent) 6.0 96.1 160.2 System Call Overhead 15000.0 408807.7 272.5 ======== System Benchmarks Index Score 139.6 |
システム140位というわけで、マイクロプランのVPSの1/10にも満たない。
まぁ、高度な分析処理はVPSまかせにするので、センサーノードの情報を集めてVPSに定期送信できれば問題ないので、必要十分な性能ではある。
(562)
低価格高性能VPSの定番だったさくらVPSだけど、ついに個人契約の最後の1本を解約した。
一時期は個人で国内に5本契約していたんだけど、演算性能や価格で優位なお名前.com VPSが出て、当初はディスクI/O性能ではさくらだったけど、最近は大差なく、トータルではお名前を契約することが多くなってきた。 そんなわけで、徐々にさくらを減らしお名前に移行して、直近ではお名前2本、さくら1本、GMOクラウド1本だったのだけど、今回、さくらを解約してGMOクラウドVPSを追加して、お名前2本、GMOクラウド2本の態勢になった。
GMOクラウドVPSを選定した理由は、性能とコストでベストだったから。
マイクロプランは年間契約で月額980円と、他社の1GBプランの価格設定(1ヶ月契約の価格だけど)ながら、ディスク容量が100GBな以外は2GBプラントほぼ同等のスペックで、ベンチマーク的にも実際のアプリケーション的にも同等な感じ。
ディスク容量がほしい音楽サーバ(SubSonic)とか、NASのバックアップなんかはお名前の2台で対応して、ディスク容量がそれほどいらないアプリケーションサーバとか開発テストサーバなんかはGMOクラウドVPSで運用。
まぁ、GMOクラウドVPSは1度大きなシステム障害やっているけど、あれ以来特に問題なく動いていて、その辺はさくらもお名前もなんだけど、とりあえずさくらの2GBプランから年契約で4520円安くなるので良い感じかなと(お名前2GBの年契約と比べても2086円お安い)
最近のNASバックアップはAmazonS3を利用し始めているので、最終的に、音楽サービス以外は全部GMOクラウドVPSに集約しちゃうかもしれないな。
まぁ、仕事のサーバは移すのが面倒なので、さくら・お名前・GMOクラウド・Amazon同時運用だな。
(663)