IDCFのcentos7でディスクリサイズ

自分用のメモ、実行は自己責任で

 

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 15G 0 disk
└─sda1 8:1 0 15G 0 part /
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part /export
sr0 11:0 1 1024M 0 rom

コンソールでデータディスクを200Gから300Gにリサイズ


# lsscsi
[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda
[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb
[1:0:0:0] cd/dvd NECVMWar VMware IDE CDR00 1.00 /dev/sr0

# echo 1 > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan

# fdisk -l /dev/sdb
ディスクサイズが増えていることを確認

# growpart --dry-run /dev/sdb 1
-bash: growpart: コマンドが見つかりません
# yum install cloud-utils-growpart

# growpart --dry-run /dev/sdb 1
no tools available to resize disk with 'gpt'

yum install gdisk

# growpart --dry-run /dev/sdb 1
CHANGE: partition=1 start=2048 old: size=419426304 end=419428352 new: size=629143518 end=629145566

問題なさそうなのを確認して

# growpart /dev/sdb 1
CHANGED: partition=1 start=2048 old: size=419426304 end=419428352 new: size=629143518 end=629145566

# xfs_growfs /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=13107072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=52428288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=25599, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 52428288 to 78642939

# df
増えてることを確認して終わり

 

フレッツ光が夜になるとダメすぎるので


速度が遅いのはまだ許せるけど、パケットロスが酷いのは困る
オンラインゲームがまともに遊べない


プロバイダを変えようかと思ったけど、調べたら結局のところ
PPPoE接続認証の混雑なんで
プロバイダ変えたところ、改善される保証もないということで


某プロバイダのipv6プラスのモニターに申し込んでみた
申し込んで一週間後ぐらいにアンケート来て、
返信後3日ぐらいでモニター当選と、v6プラス接続サービス開通のお知らせが同時に来た


IP電話も契約してたので、特に何もなくそのまま完了
windowsipv6無効にしてたので、有効にして
ルーターのpppoeオフにして、IPv6パススルー機能を有効に


今まで夜になると、今まで

  • ダウンロード 1M未満
  • パケットロス 20%
  • ping 30-50ms

だったのが

  • ダウンロード 90M (VSDLで最大速度100Mだから)
  • パケットロス 0%
  • ping 7-14ms

もっと早く変えればよかった

SSIをESIへ変換

タグを書き換えれば終了だけど、そう出来ない事情があって
htmlはそのままでシステム側で対応を行う場合

構成は
varnish -> nginx(もしくはapache)

普通はnginxでSSIを有効にするところを、
SSIをoffにして、その代わりにSSIタグをESIタグへの書き換えを行う

nginxで標準モジュールのsub_filterでは、単純な文字列置換はできるけど正規表現が使えない
そこで、
https://github.com/yaoweibin/ngx_http_substitutions_filter_module
サードパーティ正規表現が使えるモジュールを追加
コンパイルが必要なのでyumで入れれた場合は、ソースで再インストールする必要があり

nginxの設定に

subs_filter '<!--#include virtual="([^"]+)" -->'
 '<esi:include src="$1" />' gir;

これでnginxが返すhtmlはSSIタグがESIタグになる
あとは、varnish側でESIを有効にして完了

SSIでインクルードされてるファイルへのアクセスが多い場合は
varnishがパーツ単位でキャッシュしてくれるので
状況によってはかなり良くなる場合があるもしれない
あとは、更新頻度が少ないパーツはキャッシュを長くしたりなど、個別で調整も可能に

mysql spiderを実務で使ってみた

とあるプロジェクトで2カ月半程度使ってみた感想


最新版で改善されている問題や、環境依存の問題もあると思うので
参考程度の情報と思ってください。


構成は、IDCFのNOAHセルフタイプのS2(1CPU、メモリ2G)を10台
Webサーバ4台(spiderノード)
DBサーバが6台(データノードが3パーティションのそれぞれ中身2台ずつの6台)


■色々困った問題点


・spiderノードのmysqlが異常終了


spiderノードメモリ使用率が増えていって、100%近くになるとspiderが落ちる
メモリが2Gと少ない影響も考えられますが、my.cnfでかなり余裕のある設定にしても回避できなかった。
それ以外にも、mysqld stopで正常に終了しない、毎回tc.logが出来て
消さないと起動できない等色々


・複数spiderノードから更新を行うとauto_incrementがかぶる

0:通常モード。(リモートサーバにロック付き問い合わせで取得した最新付番を利用して、付番を行う。) 遅い。テーブルパーティショニングを利用しており、auto incrementカラムが indexの第一カラムである場合は、簡易モードで動作する。

必ずデータノードに問い合わせてくれればいいけど、簡易モードで動作する条件が正確に理解できず。。。
結局は、auto_increment_incrementとauto_increment_offsetを調整して
サーバ毎にかぶらないように対応
spiderノード再起動した再度auto_incrementを振り直す必要があった
更新を1ノードにすれば問題はないんだけど、そのサーバが落ちることを考えると。。。


・index mergeが使われるSQL文で結果が引けない


optimizer_switchでOFFにした


・alter文が異常に遅い


データ数が数百件でも、1クエリに付き10〜20秒程度かかっていた、複数連続で流すとHAステータス確認クエリがあふれて接続数オーバーになる


というように、使ってみるのはちょっと早かったと思うのが正直な感想、今後に期待

lsをリダイレクトしたとき

^[[0ma.txt^[[0m
^[[0mb.txt^[[0m

みたいに変な制御文字が入ってて何かと思ったけど
aliasでlsにcolor設定してるとこうなる模様

lsの前にバックスラッシュつけてaliasを無効にすれば解決

\ls > c.txt

cp a/b/c/d/e/f.txt a/b/c/d/e/ff.txt
とかしたい場合


コピー先のディレクトリを入力するのが補完しながらでも面倒すぎる
あらかじめcdすればいいんだけど、それもまた面倒なわけで


フレームワークとか使ってると階層がどうしても深くなるので
楽な方法を探したけど、結局はzshの補完しかない気がする


cp a/b/c/d/e/f.txt !#$[tab]
これで入力中の直前の引数がそのまま展開される
あとは
.zshrcで
WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
として、スラッシュを単語区切りから外して
Ctrl+w
だいぶ楽になった気がする


cpやmvになぜ、コピー元と同じディレクトリに保存するというオプションがあってもいいと思うのは私だけ?
なんか他に良い方法ないのかな

Zend_OAuthを使うと、「Could not authenticate with OAuth」
ただ画像によってアップ出来るものもあったり

tmhOAuthを使うと普通に成功
たぶん、media[]を作る時の
return str_ireplace(array('+', '%7E'),array(' ', '~'),rawurlencode($data));
この辺の処理なんだろうな

php5.2系だとrawurlencode()でチルダエンコードするから