conferenceWithDevelopers( #confwd )のLT資料とソースコード

年始から(また)Objective-Cを書いてるのですが、昨日(2013/2/23)、六本木ヒルズのGREEさんで行われたiOS開発者向けのカンファレンスに行ってきました。

conferenceWithDevelopers公式サイト Togetter

じつは10:00~20:00という時間の長さに少しビビりながらの参加だったのですが、セッションがどれも素晴らしくて本当に行ってよかったです! 私もLTをさせていただきましたので資料を公開します。

さくらVPSにEthernet BridgingなOpenVPNをインストールしてみました

出先から自宅のPCへ接続したいという動機からさくらVPS上のGentoo LinuxをOpenVPNサーバーとして構築しました。Ethernet Bridgeモードを使用して、BonjourやAvahiで名前解決できるようにしています。

Fluentd meetup #3 LT資料

IIJさんにホストいただいたFluentd meetup #3に参加し、LTさせていただきました。

仕事でもFluentdにお世話になりまくっているので、LTの資料を公開します。

ローカル関数便利♪

Scalaのローカル関数(ネストされた関数)を試してみました。

def func1(s1:String):String={
  def func2(s2:String):String={
    def func3(s3:String):String={
      return s3+"3"
    }
    return func3(s2+"2")
  }
  return func2(s1+"1")
}

実行結果:

scala> def func1(s1:String):String={
     |   def func2(s2:String):String={
     |     def func3(s3:String):String={
     |       return s3+"3"
     |     }
     |     return func3(s2+"2")
     |   }
     |   return func2(s1+"1")
     | }
func1: (String)String

scala> println(func1("hoge"))
hoge123

GentooとOSXでiSCSI♪

iscsitargetとglobalSAN iSCSIでベンチマーク取ってみました。

iMac5,1 / Mac OS 10.4.11 / 4096MB RAM / Xbench 1.3 で計測。

ターゲットのHDDはUDMA5で、100MbpsのHUBを経由しているのでそこがボトルネックになっています。

LVM設定 -LV作成-

全部ReiserFSで。 オンラインで拡張できるから2GBでいいや。

# for p in Home Var Portage Tmp Opt; do lvcreate -n$p -L2G VG0; done
# for p in /dev/VG0/*; do mkreiserfs $p; done

結果はこんな感じ

# lvdisplay
--- Logical volume ---
LV Name                /dev/VG0/Home
VG Name                VG0
LV UUID                PSpzkE-AmSp-EweF-f8lt-haH4-nZyK-L6mj9c
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:0

--- Logical volume ---
LV Name                /dev/VG0/Var
VG Name                VG0
LV UUID                YqA1cx-B72h-K71V-Cor4-h6AX-qBO6-Q3I20K
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:1

--- Logical volume ---
LV Name                /dev/VG0/Portage
VG Name                VG0
LV UUID                CICmO3-3Hnm-1K9e-gAfQ-aGRT-6F1f-XRw0aB
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:2

--- Logical volume ---
LV Name                /dev/VG0/Tmp
VG Name                VG0
LV UUID                nH0nGd-523t-Hr3u-eOod-3swt-KXeD-ALH4lH
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:3

--- Logical volume ---
LV Name                /dev/VG0/Opt
VG Name                VG0
LV UUID                msJKKf-2ISi-AkQ6-y4Ix-oZkb-4vG6-TnZ5UW
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:4

LVM設定 -LVの最大サイズ-

初期セットアップ

# pvcreate /dev/md0
# vgcreate VG0 /dev/md0

vgdisplayの結果:

  • VG Size: 298.09 GB
  • PE Size: 4.00 MB
  • Total PE: 76311

最初の試行

デフォルトのPEサイズで298GBの論理ボリュームを作成:

# lvcreate -nLV0 -L298G VG0

76288 PEが割り当てられて作成できました。

ソフトウェアRAID構築

RAID1を構築しました。

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

同期の進捗状況(01:09:02):

Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
      312571136 blocks [2/2] [UU]
      [=>...................]  resync =  6.8% (21260160/312571136) finish=60.1min speed=80701K/sec

完了(02:44:38):

Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
      312571136 blocks [2/2] [UU]

できた♪

LVMでMirrorして片方外してみる

LVMミラーの片方のディスクを外したらどうなるか実験してみました。

ReiserFSでフォーマットしてマウント:

# mkreiserfs /dev/vg/lvol0
# mkdir /mnt/disk1
# mount /dev/vg/lvol0 /mnt/disk1/
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             115G  2.7G  107G   3% /
udev                   10M  216K  9.8M   3% /dev
none                  251M     0  251M   0% /dev/shm
/dev/mapper/vg-lvol0   10G   33M   10G   1% /mnt/disk1

テストデータとチェックサムを作成:

LVMでMirror

ソフトウェアRAIDもメンドイな。と思ったので、LVMのMirrorに挑戦。

# lvcreate -m1 -L10G vg はできない。

Not enough PVs with free space available for parallel allocation.
Consider --alloc anywhere if desperate.

とかいわれる。

でも、# lvcreate -m1 -L10G --alloc anywhere vg とやったらやったで、