muninを引っ越した
ブログを余りにも放置してたので、コンスタントに小ネタを書いていくことにした。
最近muninを動かしているサーバをリプレースしたんですが、OSが32bitから64bitに変わったんですよ。んでrrdってアーキテクチャ変わるとそのままcopyしても使えないんですよね。コンバートしないとだめ。
やり方としては、こんな感じ。一旦旧ホストでdumpしたのを新ホストに持って行ってrestore。
が、しかし今回の環境は旧ホストのdiskがかなり弱っていたというのと、容量的にも余裕が無かったので、ローカルには吐き出したくない。あとそれなりに時間がかかるので、ゴニョゴニョやってる間に値を取得出来ない時間が発生してしまうのもよろしくない。
そんなわけで、試しにrestoreに方に直接標準入力で食わせてみたらいけました。
こんな感じ。
for RRD in $(find /var/lib/munin/ -name '*.rrd') do rrdtool dump $RRD | ssh newhost "rrdtool restore -f - $RRD && chown munin. $RRD" done
らくちんです。
はてぶろ始め
てすてす
ペパボにおける MogileFS
晒すのが流行ったようなので。id:halfrack:20111108
mysql> select fid from file order by fid desc limit 3; +-----------+ | fid | +-----------+ | 530626772 | | 530626770 | | 530626769 | +-----------+ 3 rows in set (0.00 sec) mysql> desc file; +----------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+-------+ | fid | int(10) unsigned | NO | PRI | NULL | | | dmid | smallint(5) unsigned | NO | MUL | NULL | | | dkey | varchar(255) | YES | | NULL | | | length | int(10) unsigned | YES | | NULL | | | classid | tinyint(3) unsigned | NO | | NULL | | | devcount | tinyint(3) unsigned | NO | | NULL | | +----------+----------------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) mysql>
刺身サンが先に書いてた… http://kyanny.hatenablog.jp/entry/2011/11/08/202124
停止中のvm(kvm)のネットワーク設定を書き換える習作
もう一年以上更新してなかったのか…
virt-cloneした後にネットワーク設定を修正するのが面倒くさいので、スクリプト一発でなんとかしたくて書いてみた。
#!/usr/bin/perl use strict; use warnings; use Sys::Guestfs; use Sys::Virt; use Data::Section::Simple qw(get_data_section); die "Usage: $0 domain ip_addr\n" if @ARGV != 2; my ($domain, $ip) = @ARGV; my $vmm_addr = 'qemu:///system'; my $vmm = Sys::Virt->new(address => $vmm_addr); grep { $_->get_name eq $domain } $vmm->list_domains and die "$domain is now actvie.\n"; my ($dom_obj) = grep { $_->get_name eq $domain } $vmm->list_defined_domains or die "No sush domain: $domain\n"; my ($image, $mac) = $dom_obj->get_xml_description =~ qr| <source[ ]file='(.*?)'/> .* <mac[ ]address='(.*?)'/> |sxm; my $content = sprintf get_data_section('ifcfg-eth0'), $mac, $ip; print <<EOT; New network configuration --------------------------- $content --------------------------- EOT my $guestfs = Sys::Guestfs->new; $guestfs->add_drive($image); $guestfs->launch; $guestfs->mount( '/dev/mapper/VolGroup00-LogVol00', '/' ); $guestfs->write_file( '/etc/sysconfig/network-scripts/ifcfg-eth0', $content, 0 ); $guestfs->sync; print "Finish\n"; __DATA__ @@ ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static HWADDR=%s IPADDR=%s NETMASK=255.255.255.0 ONBOOT=yes
CentOS5.5で動きます。他は知らない。
やってることは、
- domain(vm)が停止してるか確認
- domainのxml定義からイメージファイルのパスとMACアドレスと抜き出す。
- libguestfsを使って、停止中のvmの設定ファイルを引数で指定したIPと先程のMACで上書き。
vmのrootデバイスがハードコードなのがいけてないけど、guestfishのinspectみたいなのがSys::Guestfsに見当たらなかった。いい方法ないかな。
これだとNIC一個のvmしか対応してないし、本当にやりたいことはもうちょっと込み入ってるのであくまで習作。けどこれだけでも役に立つかもと思って一応晒しときます。
追記
上のはなんか無駄なことしてることに気づいた。こうしよう。
# rpm -Uvh http://elrepo.org/elrepo-release-0.1-1.el5.elrepo.noarch.rpm # perl -p -i -e 's/(enabled)=0/$1=1/' /etc/yum.repos.d/elrepo.repo # yum install kmod-pata # echo 'alias scsi_hostadapter pata_sch' >> /etc/modprobe.conf # depmod -a # mkinitrd /boot/initrd2.6.18-164.el5.pata.img `uname -r` # tee /etc/grub.conf <<EOT title CentOS (2.6.18-164.el5pata) root (hd0,0) kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ hda=noprobe hda=none initrd /initrd-2.6.18-164.el5.pata.img EOT # reboot
Dell Inspiron Mini 12 で CentOS をまともに動かす
実はeeepcだけでなくmini12も持っているのだ。
こいつも例のごとく、簡単には動いてくれないです。
普通にインストールしただけだと、ディスクがhdaで認識されて、dma onに出来なくて、謎のカーネルエラーを永遠に垂れ流します。
こうすっと、sdaで認識(PATAのSCSIエミュレート?)されて、スピードも30MB/sec位は出ました。*1
# rpm -Uvh http://elrepo.org/elrepo-release-0.1-1.el5.elrepo.noarch.rpm # perl -p -i -e 's/(enabled)=0/$1=1/' /etc/yum.repos.d/elrepo.repo # yum install kmod-pata # mkinitrd --preload pata_sch --preload libata /boot/initrd-2.6.18-164.el5pata.img `uname -r` # tee /etc/grub.conf <<EOT title CentOS (2.6.18-164.el5pata) root (hd0,0) kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ hda=noprobe hda=none initrd /initrd-2.6.18-164.el5pata.img EOT # reboot
関係ないが上記teeの使い方を最近知って感動した。
*1:元は3Mほどだったかな