2012-01-01から1年間の記事一覧

mysql リストア時のチューニング

巨大なデータをimportで少しでもリストア時間を短縮したいとき。 my.cnf restore時は堅牢性は必要ないので、binlogやinnodbの二重書き込み等を無効にする。 # log-bin の項目をコメントして起動 # bin_logを無効にできない場合は、せめてsync_binlog = 0 ski…

mysql の複合インデックス復習

mysqlは1つのSQLで、1つのテーブルには1つのインデックスしか利用されない。 なので、whereで2つのカラムを条件に指定する場合それぞれのカラムにインデックスを張っていたとしても、(where id = 0 and name = 'hoge' のような) どちらか1つしか利用されない…

シェルスクリプトで空白をクォートしている引数とコマンドを変数に入れて実行する場合はevalを使う必要がある

何かタイトルが長くてわかりにくいですね。 普通に変数に入れているだけだと、クォートしていても空白区切りで別々の引数として認識される。 foo.sh 【grep "foo bar"】を変数に入れて、それをそのまま実行する。 $ cat foo.sh #!/bin/bash grep='grep "foo …

fio でdisk のパフォーマンス測定

http://freecode.com/projects/fio http://sourceforge.jp/magazine/08/05/22/0127246 install libaio-devel がいる。 # yum install libaio-devel # wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz # tar zxvf fio-2.0.7.tar.gz # cd fio-2.0.7 # mak…

Kyoto.pm Tech Talks 02 でSys::VirtとSys::Guestfsについて発表してきた

http://kyoto.pm.org/entry/2012/07/29/195512 主催者のid:shiba_yu36 さん、また会場を提供して頂いたはてな/はてなスタッフの皆さんありがとうございました&お疲れさまでした。 perlでkvm (libvirt) を操作する話をしてきました。ちょっと緊張してしまっ…

innodbのinnodb_log_file_size を大きくする

mysql停止後ib_logfile* を削除した後、innodb_log_file_size を変更しmysqlを起動する。が、停止する際にログの内容をデータに確実に反映させるために mysql> set global innodb_fast_shutdown = 0;を実行してから停止したほうが良いとのこと。出典忘れた。…

mysqltunerでmysqlの設定値を診断してチューニングする

https://github.com/rackerhacker/MySQLTuner-perl/ mysqltuner.pl を実行するだけ。 $ git clone git://github.com/rackerhacker/MySQLTuner-perl.git $ cd MySQLTuner-perl $ perl mysqltuner.pl"!!"の項目が改善すべき項目。 $ perl mysqltuner.pl >> MyS…

LVM パーティション をrescue モードから操作する

LVMを使っていない場合はrescueモードで起動したあとに # mount /dev/sda1 /mnt/sysimageなどとするだけで良いけど、lvmを使っているとそのままではパーティションが見えないのでmount出来ない。 rescue モード起動時にはlvmパーティション領域が有効になっ…

sysv-rc-conf - debian/ubuntu での起動時のdaemon一覧確認コマンド

RHEL/CentOS/SL 系のchkconfigのdebian/ubuntu版?久々にdebian触ったら完全に忘れてしまっていた。なぜかdefaultで入ってないのでaptで入れておく。 # apt-get install sysv-rc-conf # sysv-rc-conf --list # sysv-rc-conf exim4 off # sysv-rc-conf exim4 …

libguestfsのperl binding Sys::Guestfs で仮想マシン image のデータにアクセスする

http://libguestfs.org/ http://libguestfs.org/guestfs-perl.3.html Sys::Guestfs はcpanにはないので、libguestfsのとこからとってくる or package からinstallする。ちなみに↑のURLのsynopsys は間違っている(古い内容?) なのでinstallした後のperldoc S…

virt-clone を使ってcliでkvmの仮想マシンをcloneする

virt-manager からcloneするのはやったことあるけど、cliはなかったのでやってみた。 といってもコマンド1発で終わるのでやってみたというほどのことではなかった。 man virt-clone # virt-clone --original original_vm \ --name new_vm \ --file /path/to…

vnstat を使ってlinuxサーバのtrafficをお手軽に確認する

http://humdi.net/vnstat/ vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s). サーバのtrafficを真面目に確認/監視したい場合はcacti, mrtg等を使うのが通常だと思…

noVNCでブラウザからvnc接続

お名前ドットコムのvpsで使ってるらしいので使ってみた。HTML5対応のブラウザが必要。 http://kanaka.github.com/noVNC/ VNC client using HTML5 (WebSockets, Canvas) with encryption (wss://) support. 動かす localhost:5901 のvnc portにプロキシさせる…

ip addr addで追加されたaliasアドレスはip addr show で表示されるけどifconfig では表示されない

確か昔keepalivedでvrrpするときにも内部でipコマンド使われてて同じことになった記憶がある。ip コマンドで設定されたものはifconfig では表示されないので、サーバのIP見る時はip addr show で見たほうが確実なのでは、と今更思った。なんで今さら言ってい…

CentOS 6 perl 5.10.1 でPersistentPerl がmake できない

ナズェ? # cpan > look PersistentPerl # make make[1]: ディレクトリ `/root/.cpan/build/PersistentPerl-2.22-FqO72S/src' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/root/.cpan/build/PersistentPerl-2.22-FqO7…

tcp関連の/proc パラメータ復習

/proc/sys/net/ipv4/ 以下のアレ。高負荷時にはチューニングすると良いらしいけど、これを設定して効果が出るような状況にはまだ出くわしたことない。 tcp_fin_timeout default: 60 (秒) tcpのシーケンスでFIN-WAIT2からTIME_WAIT に移行するまでの待ち時間…

bigpipe でbigipのstatusをCLIで確認/設定する

設定する、と書いておきながらなんだけど、ミスったら嫌なので設定はGUIでしかやったことない。help はbigpipe だけで叩いたのを見たらだいたいわかる。 persist tableを確認 bigpipe persist show all pool のstatus カレント/最大 接続数とか bigpipe pool…

Big-IP iRule使ってUser-Agent でpersistenceする

なんか書いてみた。下の例は携帯電話の時にpersistenceするiRuleなので、PCも含めて全部対象にする場合はswitch -regexp の条件分をまるごとけずって、persist uie [HTTP::header User-Agent] 600 などとしたら良い。 when HTTP_REQUEST { switch -regexp [s…

シェルスクリプトのdebug tips

シェルスクリプト中でset -x と記述するか、(ba)sh -x の引数をつけて実行すれば、実行されている内容が表示されるので、いちいちecho hogehoge などと書いてまわっていかなくてよい。 hoge.sh #!/bin/sh date $ ./hoge.sh 2012年 7月 31日 月曜日 23:10:14 …

linuxでcpuのマルチコア/HT対応を確認する

最近書くことないので、初歩的なこと書いていくモードにしよう。 cpuのコア数、hyper threading 対応を確認するには/proc/cpuinfo を見たらいい。 processor CPUの論理ID: 同一サーバ上ではuniqueな数字 physical id CPUの物理ID: マルチコア/HTの場合、異な…

libvirt graphicsをvncからspiceに変更する

defaultはVNC。 libvirt host server virt-manager のディスプレイを削除する ハードウェアの追加からgraphics を選んでSPICEサーバを選択 interfaceとport、passwordは適当に設定 client install # yum install spice-client # apt-get install spice-clien…

btrfs のsubvolume のmount

# mkfs.btrfs /dev/sda5 # mount /dev/sda5 /home # btrfs sub create /home/hoge # btrfs sub create /home/fuga # mount /dev/sda5 /mnt -o subvol=hoge(/mntと/home/hogeが同じ内容) extのbindでも似たようなことできると思うけど、今のところ使い道が特…

btrfsでsnapshot作成

btrfsはまだtechnical preview だけど、lvmのsnapshotを使うとI/Oが遅いので代替案としてやってみた。OS: CentOS 6.3 64bit # yum install -y btrfs-progs # mkfs.btrfs /dev/mapper/vg_hoge-lv_home WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL WARNING!…

linux LVM でextパーティションのサイズ変更(拡大/縮小)

man lvm man lvextend man lvreduce man resize2fs あんましlvm使わないので勉強。実験した環境 VG Name vg_hoge LV Name lv_home LV Size 400.00 GiB device /dev/vg_hoge/lv_home ext4(ext3も?)拡大はオンライン(マウントしたまま)で変更可能。縮小はアン…

サーバのSSL CA(認証局)証明書が古くてcurl がエラーになる件

古いサーバにrvmをgithub から取ってこようとしたらエラーになったよ。 新しいサーバ https://raw.github.com へのRedirectも問題なくアクセスできてる。 $ curl -L -I get.rvm.io HTTP/1.1 301 Moved Permanently Server: nginx/1.0.14 Date: Thu, 21 Jun 2…

Sys::Virt で仮想マシンに割り当てられているVNC port を取得する

http://search.cpan.org/dist/Sys-Virt/lib/Sys/Virt/Domain.pm perldoc Sys::Virt::Domain を見ても"vnc" という記述が見当たらないので直接取ってくることはできなさそうだけど、get_xml_description で仮想マシンの情報をxmlで取ってきて、そこのgraphics…

perlのpackを使ってascii/binary 変換

https://gist.github.com/2716377 $ perl -ne 'print unpack("H*", $_)' < ascii > binary $ perl -ne 'print pack("H*", $_)' < binary > ascii perl便利ですね。別にB-CASをクラックしようとかそういうこと考えてるわけではないです。

ohai で linux OSの情報をjsonで出力

http://wiki.opscode.com/display/chef/Ohai http://d.hatena.ne.jp/mikeda/20110918/1316337100 chefを構成するブツの一つらしいけど、単体で使うとkernelのバージョン, cpu, memorylanguages(ruby,perl,python等) のバージョンdevice, ip, mac address/etc…

perlbrew install

defaultでは $HOME/perl5/perlbrew 以下にinstallされる。変更したい場合は環境変数 PERLBREW_ROOT を設定。 $ export PERLBREW_ROOT=/path/to/perlbrew_root/ install perlbrew $ curl -kL http://install.perlbrew.pl | bash $ source ~/perl5/perlbrew/et…

Test::System::Config で サーバの設定をtest

perldoc Test::Config::System use Test::Config::System tests => 4; check_package('less', 'package less'); check_package('emacs21', 'emacs uninstalled', 1, 'rpm'); check_link('/etc/alternatives/www-browser', '/usr/bin/w3m'); check_file_conte…