T/O
どうでもいいけど、Macってこんなんなのね。
[bash]
$ ls -la /etc
lrwxr-xr-x@ 1 root wheel 11 4 13 19:58 /etc -> private/etc
[/bash]
実際の変更はこんな感じ
[bash]
$ sudo vim /etc/hosts
$
$ sudo killall -HUP mDNSResponder
[/bash]
こうすればリゾルバキャッシュがフラッシュされるらしいよー。
2012年8月18日土曜日
2012年7月7日土曜日
5分で立てるweb proxy
恒久的に使うのであればきちんとセキュリティを考慮しましょう。。。
とエクスキューズしつつ、5分で立てるsquidによるhttp proxyです。
目的はとりあえずhttpが通らない環境から通したいってだけです。当たり前だけど、ホストAとホストB間はルーティングされているものとします。
/etc/squid/squid.conf を以下の用に
すきっど起動
んで、クライアント側に串を通して、確認。
おしまい。(∩´∀`)∩ワーイ
とエクスキューズしつつ、5分で立てるsquidによるhttp proxyです。
目的はとりあえずhttpが通らない環境から通したいってだけです。当たり前だけど、ホストAとホストB間はルーティングされているものとします。
環境
- OS
- CentOS 6.2
- HOST
- A:インターネットに出れる子:192.168.0.1
- B:インターネッツに出れない子:192.168.100.x
流れ
squid入れる$sudo yum install squid
/etc/squid/squid.conf を以下の用に
#使うポートの設定と、許可するネットワークの設定を環境に合わせる。
http_port 8888
acl hogenet src 192.168.100.0/255.255.255.0
http_access allow hogenet
http_access deny all
(他省略。あとは、環境に応じてキャッシュだったり、セキュリティの設定だったり。)
すきっど起動
/etc/init.d/squid start
んで、クライアント側に串を通して、確認。
$ export http_proxy="http://192.168.1.0:8888"
$ wget www.example.com
おしまい。(∩´∀`)∩ワーイ
2012年6月27日水曜日
python2.6でUnicodeEncodeErrorが発生した
環境
- CentOS 5.4
- python2.6(野良パッケージ)
現象
手元の環境で、tomahawk 0.5.2を使おうと思ったら、下記のようなエラーが
UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-22: ordinal not in range(128)
対応
pythonのディレクトリに、site-packagesというディレクトリがあるかと思うので、その直下に、sitecustomize.py ってのをつくり以下の様な記述をします。
[python]
import sys
sys.setdefaultencoding('utf-8')
[/python]
これでOK。(∩´∀`)∩ワーイ
参考にさせていただきました
おまけ
tomahawk動かすのに、下記のパッケージをぼくの環境では追加導入が必要でした。(直接インターネットに出れない環境だったので大変だった。。。)
- argparse-1.2.1
- pexpect-u-2.5.1
- setuptools-0.6c11
2012年6月19日火曜日
rsyncの備忘録
よく使うところを中心に。
[bash]
rsync -av --progress --partial --append --bwlimit=10240 ${IP_ADDRESS}:/hoge/fuga/ /hoge/fuga >> /tmp/hoge.log 2>&1
[/bash]
素敵なオプションたち
よくある使い方
rsync -avz srcDIR/ dstDIR
- -a
- 元の属性を維持(できる範囲で)
- -v
- 詳細表示
- -z
- 転送を圧縮(CPUを割りと食うので注意)
ちょっと便利な使い方
- --bwlimit
- 帯域制限。例えば、--bwlimit=10240 とかで10Mbps制限
- --progress
- 転送中の情報を表示する。-vと組み合わせて使おう
- --partial
- 通常では転送が中断したら、部分的に転送されたファイルを削除する。--partial オプションを使うと、後の転送時にファイルの残り分を転送して高速化するように、部分的なファイルを保存してくれる。
- -P
- progress + partial
- --append
- 通信が切れた時に途中から再開してくれる。便利。
使用例
[bash]
rsync -av --progress --partial --append --bwlimit=10240 ${IP_ADDRESS}:/hoge/fuga/ /hoge/fuga >> /tmp/hoge.log 2>&1
[/bash]
その他
- 時間がかかるときは、--daemon してもいいですが、個人的にはscreenとかnohupとか使うのが癖になってます。
参考にしました
- man rsync
- rsyncで再開可能なファイル転送
- rsyncのちょっとイイ話
2012年6月13日水曜日
atime備忘録(古い情報)
ふわっとしてたので備忘録です。最近のディストリで検証とかできたらいいなぁ(遠い目)
UNIX/Linuxではファイルに関して3つの時刻を記録しています。
ファイルに関する時刻
UNIX/Linuxではファイルに関して3つの時刻を記録しています。
- atime
- 最終アクセス時刻
- ctime
- 最終変更時刻
- mtime
- 最終更新時刻(i-node管理)
2008年にネットで話題になってた話
- ITProに、2002年の雑誌記事が、2008年に突如公開される。これ
- 検証する人あわらる。atime関連マウントオプション使用時のディスク性能比較
- 革命の日々の人が「relatimeがどこで実装されているのか調べてみた」という記事を公開
- dankogaiが、「unix - atimeはいつ更新される?」という記事を公開
- 革命の日々の人がそれにこたえて、「atimeはいつ更新される? のつづき」を公開
その他参考情報
RAID組むとき考えたこと(1)
autor:boboroshi
LSI MegaRAID SAS 9280-8e というイイRAIDカードを使ったので備忘録がてらのメモです。
ぼくはこれまで、ちゃんとしたRAIDカードを多用する感じで仕事してないので、こちらが参考になりました(やっ太郎ブログ)
さて、今回の構成です。
今回の構成
- 某社の1Uサーバ
- LSI MegaRAID SAS 9280-8e
- 某社のSAS接続ディスクエンクロージャ(SATA 2TB X 16で、RAID6)
- CentOS 5.4
- いわゆるDAS構成
- 用途は巨大なファイルサーバです。NFSマウントして使用します。
考えたこと
HDDの話
- a.(平均)シーク待ち時間
- b.(平均)回転待ち時間(サーチ時間)
- c.転送時間
大雑把に言うと、a + b + c = 応答時間(アクセス時間) となります。
a + b = 待ち時間 ですね。
1 / 応答時間 = IOPS
となります。
下記は、基本情報技術者試験みたいな話ですが...
a.(平均)ヘッドのシーク待ち時間
読み書きのためにヘッドが移動(シーク)するのにかかる時間のことです。通常外周と内周では速度が変わるため、平均値が使われます。
b.(平均)回転待ち時間(サーチ時間)
データが磁気ヘッドの下に来るまでの平均時間なので、最小0、最大1、なので1/2してます。
サーチ時間=1/2 * 1回転の時間
1回転の時間(ミリ秒)=60秒*10^3 / 1分間の回転数
c.転送時間
転送時間=データのバイト数 / 転送速度
転送速度=1トラックのバイト数 / 1回転の時間
つまり
当然ですが、回転数が早いほうが応答時間としては短くなります。
例えば一般的な、SATA HDDの場合、5,400rpmより、7,200rpmのほうが早いということになります。
コントローラの設定の話
write policy
今回のRAIDカードのようにバッテリーバックアップ付ライトキャッシュ(BBWC)が搭載されている場合、ライトキャッシュを有効にしたほうがよいケースが多いと思います。
当然、ライトキャッシュがあっても、書き込みデータはそこからあふれるわけですが、コントローラ側の実装により、隣接領域を連続して書き込んでくれるなど、キャッシュなしの場合に比べパフォーマンスが向上することが期待されます。
キャッシュ有効化し、キャッシュに書き込みを完了した時点で完了通知を出すのをライトバック。キャッシュを使用しない(無効化している)書き込みをライトスルーといいます。
今回はライトバックの設定としました。
read policy
書き込み同様、読み取りのポリシーもいくつかあります。
Adaptive
シーケンシャルリードと想定されれば先読みする。いわゆる混合系。
Read ahead
常に先読み
No .read ahead
先読みしない
とありますが、今回はファイルサーバなので、シーケンシャルリード主体と判断してRead aheadとしました。
DBであれば、ランダムアクセス主体なので、No .read aheadか、Adaptiveのほうがよいかもしれません。
ディスクキャッシュ
ディスクにも通常キャッシュが搭載されていますが、バッテリーバックアップが無い為、マシンのクラッシュ時には消えてしまう可能性があります。そのため、エンタープライズ系のHDDはよくデフォルトでディスクキャッシュが無効化されているのですが、されていない場合は明示的に無効化する必要があります。
Cache Policy
これいまいちよくわからなかったのですが、マニュアルを見る限り、読み取り処理を行ったあと、データをリードキャッシュに格納するかの設定っぽいです。
LSIならでは?なのかな??
Direct
キャッシュされない。ただし、Read aheadで読み込んだブロックはリードキャッシュに残る(っぽい)
Cached
すべての読み取りがキャッシュされる。
とりあえず、chachedにしてみました。が、いろいろ海外のブログとか漁った感じだと、Direct I/Oでいいのかもしれません。このへん参照。
実際の設定
[bash]
#バッテリキャッシュの強制(常時ライトバック)
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -CachedBadBBU -Immediate -LALL -aAll
#ライトバック設定
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -WB -Immediate -LALL -aAll
#read ahead設定
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -RA -Immediate -LALL -aAll
#ディスクキャッシュの無効化
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -DisDskCache -Immediate -LALL -aAll
#I/O Poclicyを設定(cached にしたけど、directのほうがよさげ)
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Immediate -LALL -aAll
[/bash]
結果こんな感じ
[bash]
/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-6, Secondary-0, RAID Level Qualifier-3
Size : xxx TB
State : Optimal
Stripe Size : 512 KB
Number Of Drives : 16
Span Depth : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Access Policy : Read/Write
Disk Cache Policy : Disabled
Encryption Type : None
[/bash]
MegaCli64のコマンド自体は、ネット上にコマンドリファレンスが転がっているので、それを参考にするのがよいかと思います。
- MegaCLI commands
区切りがいいので今回はこのへんで。
書ききれなかった「RAIDレベル」「フルストライプ書き込み」等については、次に触れたいと思います。
なお、当たり前ですが上記の記述は環境によって正しい場合と正しくない場合があります。
参考
これすばらしい本です
2012年6月1日金曜日
非対話型でパーティションを切る話
今どきのLinuxだと、fdiskというより、partedでいいですよね。
partedはいろいろ良い所がありますが、「--script(-s表記も同じ)」をつけると、非対話型モードとしてバッチ処理できるのがとても便利です。
下記の例はCentOS 5系での動作になります。
使用例
[bash]
#sdbのパーティションを表示
/sbin/parted --script /dev/sdb 'print'
#ディスクラベルの設定。2TB以上とかだと「mklabel gpt」とかにすればよいですね。
/sbin/parted --script /dev/sdb 'mklabel msdos'
#パーティションを作成します
/sbin/parted --script /dev/sdb 'mkpart primary 0 -0'
#適当なファイルシステムでフォーマットする
/sbin/mkfs.ext3 /dev/sdb1
[/bash]
実行例
[bash]
# /sbin/parted --script /dev/sdb 'mklabel msdos'
# /sbin/parted --script /dev/sdb 'mkpart primary 0 -0'
# /sbin/mkfs.ext3 /dev/sdb1
# /sbin/parted --script /dev/sdb 'print'
Model: xxx (scsi)
Disk /dev/sdb: 300GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 0.51kB 300GB 300GB primary ext3
[/bash]
partedはいろいろ良い所がありますが、「--script(-s表記も同じ)」をつけると、非対話型モードとしてバッチ処理できるのがとても便利です。
下記の例はCentOS 5系での動作になります。
使用例
[bash]
#sdbのパーティションを表示
/sbin/parted --script /dev/sdb 'print'
#ディスクラベルの設定。2TB以上とかだと「mklabel gpt」とかにすればよいですね。
/sbin/parted --script /dev/sdb 'mklabel msdos'
#パーティションを作成します
/sbin/parted --script /dev/sdb 'mkpart primary 0 -0'
#適当なファイルシステムでフォーマットする
/sbin/mkfs.ext3 /dev/sdb1
[/bash]
実行例
[bash]
# /sbin/parted --script /dev/sdb 'mklabel msdos'
# /sbin/parted --script /dev/sdb 'mkpart primary 0 -0'
# /sbin/mkfs.ext3 /dev/sdb1
# /sbin/parted --script /dev/sdb 'print'
Model: xxx (scsi)
Disk /dev/sdb: 300GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 0.51kB 300GB 300GB primary ext3
[/bash]
登録:
投稿 (Atom)