論理ボリュームの削除&容量の拡張
CentOSをデフォルトのままインストールしたところ/home200GBも割り当てられている。。。。
サーバー用途の為/homeでそんなに容量を食う予定はないので削除して/rootに割り当てます。
※結構雑に作業しているので実施する際は調査の上実施することを推奨します。
現状確認
[root@hoge zabbix]# df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/vg_hoge-lv_root 50G 4.9G 44G 10% / tmpfs 1.9G 148K 1.9G 1% /dev/shm /dev/sda1 485M 64M 396M 14% /boot /dev/mapper/vg_hoge-lv_home 222G 200M 211G 1% /home
物理ボリュームの確認
[root@hoge zabbix]# pvdisplay -C PV VG Fmt Attr PSize PFree /dev/sda2 vg_hoge lvm2 a-- 278.88g 0
ボリュームグループの確認
[root@hoge zabbix]# vgdisplay -C VG #PV #LV #SN Attr VSize VFree vg_hoge 1 3 0 wz--n- 278.88g 0
論理ボリュームの確認
[root@hoge zabbix]# lvdisplay -C LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_home vg_hoge -wi-ao-- 225.05g ←こいつを消して lv_root vg_hoge -wi-ao-- 50.00g ←こいつにあまった容量を割り当てます lv_swap vg_hoge -wi-ao-- 3.83g
/home/以下のデータを退避
[root@hoge ~]# cp -a /home /tmp/
※論理ボリュームを削除すると配下のファイルは吹っ飛ぶのでバックアップ。
論理ボリューム/homeの削除
/homeを使用しているプロセスの確認
[root@hoge zabbix]# lsof |grep home ~~~gnome関連&VNC関連など大量に出力~~~ うおっ ***ランレベル切り替え >|sh| [root@hoge zabbix]# init 3 ***VNCを停止 >|sh| [root@hoge zabbix]# /etc/init.d/vncserver stop VNC サーバー を停止中: 2:ochadmin [ OK ]
再確認
[root@hoge zabbix]# lsof |grep home bash 30269 ochadmin cwd DIR 253,2 4096 7602177 /home/ochadmin su 30293 root cwd DIR 253,2 4096 7602177 /home/ochadmin
ぬは、rootでログインして回避しよう。
[root@hoge zabbix]# vim /etc/ssh/sshd_config - PermitRootLogin no + PermitRootLogin yes [root@hoge zabbix]# /etc/init.d/sshd restart sshd を停止中: [ OK ] sshd を起動中: [ OK ]
再々確認
[root@hoge ~]# lsof |grep home [root@hoge ~]#
うし。いなくなった。
/homeをアンマウント
[root@hoge ~]# umount /dev/mapper/vg_hoge-lv_home
論理ボリューム削除
[root@hoge ~]# lvdisplay -C LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_home vg_hoge -wi-a--- 225.05g lv_root vg_hoge -wi-ao-- 50.00g lv_swap vg_hoge -wi-ao-- 3.83g [root@hoge ~]# lvremove /dev/mapper/ control vg_hoge-lv_home vg_hoge-lv_root vg_hoge-lv_swap [root@hoge ~]# lvremove /dev/mapper/vg_hoge-lv_home Do you really want to remove active logical volume lv_home? [y/n]: y Logical volume "lv_home" successfully removed [root@hoge ~]# lvdisplay -C LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_root vg_hoge -wi-ao-- 50.00g lv_swap vg_hoge -wi-ao-- 3.83g
余った容量の再割り当て
[root@hoge ~]# lvextend -l +100%FREE /dev/mapper/vg_hoge-lv_root Extending logical volume lv_root to 275.05 GiB Logical volume lv_root successfully resized [root@hoge ~]# lvdisplay -C LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lv_root vg_hoge -wi-ao-- 275.05g lv_swap vg_hoge -wi-ao-- 3.83g
ファイルシステムの拡張
※本環境はファイルシステムがext4なのでオンラインでのリサイズが可能です。
オンラインリサイズ対応:ext3,4
オンラインリサイズ非対応:ext2
[root@hoge ~]# resize2fs /dev/mapper/vg_hoge-lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/vg_hoge-lv_root is mounted on /; on-line resizing required old desc_blocks = 4, new_desc_blocks = 18 Performing an on-line resize of /dev/mapper/vg_hoge-lv_root to 72101888 (4k) blocks. The filesystem on /dev/mapper/vg_hoge-lv_root is now 72101888 blocks long. [root@hoge ~]# [root@hoge ~]# df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/vg_hoge-lv_root 271G 4.9G 264G 2% / tmpfs 1.9G 112K 1.9G 1% /dev/shm /dev/sda1 485M 64M 396M 14% /boot
/home配下のデータを設置
[root@hoge ~]# cp -a /tmp/home/* /home/
FSTabの編集
[root@hoge home]# vim /etc/fstab - /dev/mapper/vg_hoge-lv_home /home ext4 defaults 1 2
※FSTabを編集し忘れると、再起動時に『/homeねーぞ!』となり、ディスク読み取り専用の状態で起動するか確認されます。
その場合は
mount -o remount,rw /dev/mapper/vg_hoge-lv_root /
でマウントしなおしてfstabを編集後、再起動します。
VMESXiのパフォーマンス値をとってみる
Rubyの勉強がてらVMAPIのRuby用ラッパー『RbVmomi』を利用して『VMware vSphere Client』で閲覧できるパフォーマンスチャートの値を取得するスクリプトを作ってみました。
結構ふわふわな知識で書いてるので間違ってる箇所があるかも
●パフォーマンスチャート
Zabbix連携
id:taishinさんの以下のエントリーでzabbixサーバのローカルに取得した値を
保存するという上手いやり方を紹介されていたので真似てみました。
http://taishin.github.com/blog/2012/11/11/zabbixde/
出力形式は合わせたので、zabbix_agentd.d以下にユーザーパラメーター用のファイルを作成し、zabbix上でテンプレートを用意することで監視が行えます。
調査の流れ
ホストOS&ゲストOS情報の取得や電源ON/OFFメソッドの実行等のサンプルコードはrbvmomiのgithub(https://github.com/rlane/rbvmomi)にありますが、パフォーマンス関連の情報はないのでとりあえずVMAPIのドキュメントを漁ったところ『QueryPerf』メソッドの説明で以下の文面を発見
An array of PerfQuerySpec objects. Each PerfQuerySpec object specifies a managed object reference for an entity, plus optional criteria for filtering results. Only metrics for entities that can be resolved and that are valid performance providers are returned in any result.
Each PerfQuerySpec object in the array submitted in this operation can query for different metrics. Or, select all types of statistics for a single managed entity.
managed Objectなるものとフィルタ条件を渡して実行するっぽいことが書いてあります。
このメソッドを実行している箇所をRbVmomiのソースから探してみます。
その前に。。。Managed Objectとは???
VMAPI上で管理しているものほぼ全てのオブジェクトっぽいです。
http://www.vmware.com/support/developer/vc-sdk/visdk25pubs/ReferenceGuide/vim.ManagedEntity.html
Managed Objectを渡すことで対象のentity(実体)を特定するぜーといった感じ
サンプルコードを見ると以下の様な感じでManaged Objectの配列がとれるみたい。
dc.hostFolder.children.first.host.grep(RbVmomi::VIM::HostSystem) # => [HostSystem("ha-host")]
VMマシンが2台存在すれば以下のような感じ。
dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine) # =>[VirtualMachine("1"), VirtualMachine("2")]
一個ずつループで処理
dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).each |x| 〜ほげほげ end
調査続き
RbVmomiのドキュメントを漁っているとPerfQueryを叩いている箇所を発見!(^ω^)
http://www.rdoc.info/github/vmware/rbvmomi/master/RbVmomi/VIM/PerformanceManager:retrieve_stats
def retrieve_stats objects, metrics, opts = {}
渡す引数は objects,metrics,optsですね。
optsは指定しないでもいいようなのでhostのManagedObjectとmetrics(取得する項目)を渡してみる。
metricsではvSphere Clientでいうチャートの項目を指定します。
※ちなみにチャート設定でチェックが入ってなくてもAPIで値は取得できます。
dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).each |x| vim.serviceContent.perfManager.retrieve_stats(x, "cpu.usage") end
んでこんなのが取れます。
{HostSystem("ha-host")=> {:metrics=>{"cpu.usagemhz"=>[147]}, :sampleInfo=> [PerfSampleInfo( dynamicProperty: [], interval: 20, timestamp: Fri Nov 30 11:03:20 UTC 2012 )]}}
FuelPHP + Gitで幸せになれた。
概要
背景
FuelPHPをはじめるにあたり、ソースコードをGitで管理しようと思い立ち、敢行。
Gitについては、ちょっと調べては『どうせ一人で開発してるし不要かなー』と挫折するというヘタレ具合だったので少しまとめてみました。
環境
- ローカル:mac
- リモート:さくらVPS
※gitのバージョンは両方1.7.1です。
リポジトリ作成〜ローカルへコピー(clone)
リモートでの作業
FuelPHPでプロジェクトを作成
# oil create hogehoge # cd hogehoge
gitの設定&Official-PJで管理したいディレクトリを一旦削除
# rm -rf .git .gitmodules *.md docs fuel/core fuel/packages
リポジトリの作成
# git init
Official-PJで管理したいディレクトリをサブモジュールとして登録
# git submodule add git://github.com/fuel/core.git fuel/core # git submodule add git://github.com/fuel/oil.git fuel/packages/oil # git submodule add git://github.com/fuel/auth.git fuel/packages/auth # git submodule add git://github.com/fuel/parser.git fuel/packages/parser # git submodule add git://github.com/fuel/orm.git fuel/packages/orm # git submodule add git://github.com/fuel/email.git fuel/packages/email # git submodule add git://github.com/fuel/docs.git docs
※これでFuelPHP関連のファイルはOfficial-PJで管理することができる。
アップデートはgit submodule foreach 'git pull'で一撃。幸せ。
チェックアウト
# git submodule foreach 'git checkout 1.4/master'
※foreachでサブモジュール全てに対して''内のコマンドを実行してくれる。
ローカルリポジトリにコミット
# git add . # git commit -m "first commit"
これでリモート上にリポジトリが作られました。
ローカルでの作業
# git clone --recursive root@49.212.164.105:~/hogehoge/
※--recursiveでサブモジュールごと引っ張ってこれました。
これでローカルにクローンが作成されました。
ローカルで編集〜リモートへアップ
参考
以下を参考にさせて頂きました。ありがとうございました!
http://d.hatena.ne.jp/Kenji_s/20111202/1322783183http://transitive.info/