Archive for the ‘linux’ Category

    はてなブックマーク - NIFTY Cloudのベンチマークをいろいろ比較
    このエントリーをはてなブックマークに追加

    Fusic 平田です。

    先日のPHP Matsuriで弊社社員がNIFTY Cloud無料利用券を持ち帰ってきました
    というわけで、ベンチマーク取っていろいろ比較。

    各プランの比較

    mini/small(1GB Mem)/medium(2GB Mem)/large(4GB Mem)でそれぞれベンチマークを取ってみました。
    UnixBench 5.1.2を使用して、

    # yum -y install gcc
    # wget http://byte-unixbench.googlecode.com/files/unixbench-5.1.2.tar.gz
    # tar zxf unixbench-5.1.2.tar.gz
    # cd unixbench-5.1.2
    # vim Makefile
    ※ GRAPHIC_TESTSとGL_LIBSをコメントアウト
    # make
    # ./Run

    ってな感じで取ってます。

    で、Index Scoreだけを書くとこんな結果になりました。
    mini 1CPU: 665.4
    small 1CPU: 1875.8
    medium 1CPU: 1844.8
    large 1CPU: 1720.5
    medium 2CPU: 2380.3
    large 2CPU: 3672.6
    グラフにするとこんな感じ(クリックで拡大)。

    1CPUの場合、small以上だとだいたい同じ結果になりました。
    スペック変えた分だけ素直に出てるな、といった印象1 です。

    手元との比較(仮想マシン同士)

    2vCPU/2GBメモリ同士の比較ということで、以前手元で組んだ仮想環境と比較します。
    比較対象は
    1. VMWare ESXi
    2. KVM on Redhat 5.4(qcow2)2
    で設定をいじらずに組んだ結果との比較です。
    Index Scoreがそれぞれ
    VMWare 1CPU: 838.0
    KVM 1CPU: 700.0
    medium 1CPU: 1844.8
    VMWare 2CPU: 1299.6
    KVM 2CPU: 1285.6
    medium 2CPU: 2380.3
    で、グラフだとこんな感じ(クリックで拡大)。


    載せてるマシンの性能差だったり設定差だったりするんでしょうが、スコア差がかなり大きいので驚きました。

    手元との比較(実機と比較)

    検証機(この辺でも使っているPowerEdge T105)が4CPU/4GBメモリだなと思い、これもlargeと比較してみました。
    # とっさに思いついたため、OSがUbuntu 10.04だったりします。


    これまた思った以上に差をつけられました。

    おまけ:さくらVPSと並べてみる

    さくらインターネットの田中社長がさくらVPSのunixbench結果を公開されていたので、これとも比較してみました。
    互いのサービス提供のスタイルから違うので一概に比較できるものでもないんですが、まあ参考程度にってことでとりあえずmini/smallと並べてみることに。
    ちなみにさくらのIndex Scoreは
    1CPU: 1157.7
    4CPU: 1540.6
    となってます。これまた優秀なスコア。

    まとめ

    NIFTY Cloudのスコアはさすがに優秀ですね。
    VPSじゃ足りない、なんて時には選択肢の一つとして十分ありなのかなーと思いました。
    構成もある程度柔軟にできますし。
    コントロールパネルも、特に使いにくい箇所はなかったです。

    miniより下があればもっと手軽に使えるのになーといった個人的な希望もありますが、まあそこは棲み分けみたいなものかなとも思っています。

    CM

    株式会社Fusicでは、エンジニアを積極的に募集中です。
    気が付いたら社員が賞を取ってきたり無料サービス券を獲得してくれたりする(こともある)Fusicで働いてみたい方は、こちらからエントリーをお願いします。

    1. Pipe-based Context Switchingの値がなぜかCPU数に反比例してますが。。。 []
    2. qcow2よりLVM割り当てたほうが良い結果出せていましたね。。。 []
      はてなブックマーク - USBメモリでブートして、CentOS5.5をネットワークインストール
      このエントリーをはてなブックマークに追加

      連発してどうもスミマセン、山本です。

      先日、CentOS5.5をネットワークインストールする際につまづいたので、その際のメモと注意を書かせてもらいます。

      CentOSをインストールするにあたっては、まずはブートしなければいけません。
      その方法としては、
      ・CDからブート
      ・USBメモリブート
      ・ネットワークブート(PXEBoot)

      敷居の高さは、上から順に高くなるかと思います。
      CDからブートは、単にブート用のisoイメージを取得し、CDに焼き、ブート時に選択するだけで簡単ですが、
      USBメモリからブートも、ネットワークからのブートも、ちょっとした設定がいるのでやや面倒です。
      しかし、USBメモリからブートに関しては、楽にできるツールもあるためやや敷居が下がる感じです。
      今回はUSBメモリからブートをすることにします。
      (どうせなら、全てネットワークにすればいいのでは?というツッコミはなしで。。。
      USBメモリならではの問題がありますので)

      USBメモリをブート用のデバイスにするためには、まずはネットワークインストール用のisoイメージを取得します。
      CentOS5.5の64bitであれば、
      CentOS-5.5-x86_64-netinstall.iso
      という名前で配布されてます。

      このisoイメージを基に、USBメモリからブートできるようにするには色々と設定が必要ですが、
      UNetbootinというソフトを使えば、簡単に作成できます。
      UNetbootin – Homepage and Downloads
      ソフトを起動し、USBメモリを挿し、isoイメージを選択してOKを押すだけで必要なファイルが作成されます。

      そして、このUSBメモリをサーバーに挿し、ブートを行ないます。
      ネットワークインストールを行うためには、”Installation Method”という画面で、”FTP” (もしくは”HTTP”)を選択します。
      そして、FTPのサイトの設定です。

      FTP site name : “任意のFTPサイト”
      CentOS directory : xxxxx/linux/centos/5.5/os/x86_64
      ※Directoryはサーバーによって異なりますが、バージョンの次のディレクトリは isos ではなくて、 os であることに注意

      後は、通常のインストールと同様に進めます。
      しかし、無事インストールも終わって、いざ起動と思ったらGRUBが見つからないとのことで起動しませんでした。
      なぜだろうと思い、試しにUSBメモリをもう一回挿して、そこから起動させると無事、ログイン画面が表示されました。
      どうやら、GRUBがUSBメモリへ書き込まれたようです。

      これを回避するためには、GRUBに関するファイルを本体へコピーすればいいでしょうが、インストール時において設定を変えることで回避できます。
      インストール時に「高度なブートローダーオプションの設定」にチェックを入れて設定をすればいいのですが、
      CentOS5.5からでしょうか、その項目が見当たりませんでした。
      試行錯誤の末、以下の順序でその項目に辿りつきました。


      まず、パーティションの設定画面で、「パーティションレイアウトの再確認と変更」にチェックを入れて次に行きます。


      次に表れる画面では、そのまま次に行きます。


      次の画面でようやく、「高度なブートローダーオプションの設定」が表れました。
      これにチェックを入れて次に行きます。


      ここで、ドライブの順序を編集します。
      初期ではUSBメモリが上にきているので、本体のディスクを最上部へ移動させます。

      これで、無事に本体から起動することができるようになります。

        はてなブックマーク - LinuxでUSB外付けHDDを追加 – USBハブ使って倍プッシュ編
        このエントリーをはてなブックマークに追加

        Fusic 平田です。
        とあるお客様のところにLinuxのサーバを納入しているのですが、今回はそのお話を。
        # 倍プッシュ編しかありませんので、そこはご容赦ください。

        このサーバ、普段はファイルサーバとして活用しているものです。
        で、今回別途USBの外付けHDDを2台追加することになりました。
        用途はSambaでアクセスできればいいよーだったのですが、問題がひとつ。
        他にも外付けHDDなどなど挿したりしてて、USBポートに余裕がないと。

        で、USBハブあるよーとのことなので挿してみました。
        さっくり動いてmountできたのでおー動く、と思ったのもつかの間。
        数分たったりUSBハブに他の機器を挿したりした瞬間に動かなくなりました。
        /var/log/messagesを見ると、以下のIO Errorがずらり。

        scsi 9:0:0:0 rejecting I/O to dead device

        これを解消すべく、以下の手順でいろいろやってみました。

        0. 前提

        サーバマシン: Linux(CentOS 5.3)の2Uサーバ
        元からあったUSB外付けHDD: 1台(IO-DATA)
        今回増やすUSB外付けHDD: 2台(IO-DATA)
        問題: USBポートが既にいっぱいいっぱい
        目標: 正常に動かす
        目標2: さらに増やす時に手間がかからないようにする

        1. /dev/***の部分を各HDDで固定する

        現象を見ていると、/dev/sd*の部分がころころ変わるようで。
        と言うか/dev/sd*の部分はudevで勝手に割り当てるので、再起動時なんかに変わってしまう可能性が大。
        これをまずは固定しようということでいろいろ調べたところ、↓を発見。
        fredericiana.com/2006/03/15/writing-udev-rules-short-notes/
        要はudevのruleを作成して、デバイスファイルを固定しようってことです。
        というわけでudevルールの書き方を読んでみると、

        > ユーザ指定のルールは、基本の/devレイアウトを作成するudevの初期設定を、事実上無効にしてしまいます。したがって、ユーザが記述するルールには、実用的である初期設定の名前とユーザ指定の名前両方を得るために、devfs形式の名前やシンボリックリンクも指定することをお勧めします。

        とあったので、/etc/udev/rules.d/98-local.rulesとして以下の内容のファイルを作成。

        BUS=="usb", KERNEL=="sd*", SYSFS{serial}="0010100740AABBCC", NAME="%k", SYMLINK="usbhda\n"
        BUS=="usb", KERNEL=="sd*", SYSFS{serial}="0010100740DDEEFF", NAME="%k", SYMLINK="usbhdb\n"
        BUS=="usb", KERNEL=="sd*", SYSFS{serial}="0010100740ABCDEF", NAME="%k", SYMLINK="usbhdc\n"

        # SYMLINKの値はこちらで決めていいので、”usbhd/****”とかにして別途まとめる形でもいいです。
        serialの調べ方ですが、1つずつ挿して/dev/sdbなりで認識されているのを確認した後に

        udevinfo -a -p $(udevinfo -q path -n /dev/sdb)

        と実行すると

        # udevinfo -a -p $(udevinfo -q path -n /dev/sdb)
         
        Udevinfo starts with the device specified by the devpath and then
        walks up the chain of parent devices. It prints for every device
        found, all possible attributes in the udev rules key format.
        A rule to match, can be composed by the attributes of the device
        and the attributes from one single parent device.
         
          looking at device '/block/sdb':
            KERNEL=="sdb"
            SUBSYSTEM=="block"
        ----- (中略) -----
          looking at parent device '/devices/pci0000:00/0000:00:03.1/usb3/3-1/3-1.4':
            ID=="3-1.4"
            BUS=="usb"
            DRIVER=="usb"
            SYSFS{configuration}==""
            SYSFS{serial}=="0010100740AABBCC"
        ----- (後略) -----

        てな感じでずらずら出てくる中から読み取れます。

        ruleを保存した後に再度挿すと、こんな感じになります。

        # ls -l /dev/usbhd*
        lrwxrwxrwx 1 root root 3  8月 20 17:57 /dev/usbhda -> sdb
        lrwxrwxrwx 1 root root 4  8月 20 17:57 /dev/usbhda1 -> sdb1

        複数台挿して/dev/sd*の順序がずれても、

        # ls -l /dev/usbhd*
        lrwxrwxrwx 1 root root 3  8月 20 17:57 /dev/usbhda -> sdb
        lrwxrwxrwx 1 root root 4  8月 20 17:57 /dev/usbhda1 -> sdb1
        lrwxrwxrwx 1 root root 3  8月 20 18:06 /dev/usbhdb -> sdd
        lrwxrwxrwx 1 root root 4  8月 20 18:06 /dev/usbhdb1 -> sdd1
        lrwxrwxrwx 1 root root 3  8月 20 18:05 /dev/usbhdc -> sdc
        lrwxrwxrwx 1 root root 4  8月 20 18:05 /dev/usbhdc1 -> sdc1

        といった感じできちんとアクセスできます。

        2. USBハブを変える

        使用したハブがそこそこ古いものだったので、外付けHDDを複数台挿すと途端に動かなくなります。
        デバイスファイルの問題は解決しているので、あとは単純にUSBハブの供給電流とかの問題だろうなと。
        # あとusb2.0に対応してなさそうだな、とか。
        # 型番を必死に調べたのですが、外観以外の情報がないので絞り込めませんでした。。。
        というわけで今回使用したのはこちら。
        ELECOM U2H-GM002BK
        PS3用じゃないか!とツッコミをいただいたりもしたのですが。
        > セルフパワー時/7ポート合計3500mA以内
        が非常に強力なので、これにしました。
        # 4ポートのELECOM U2H-TAP3420Sもあったのですが、口に余裕があったほうが困らないので今回は却下。
        # 7ポートのほうはマグネットが付いてたりするので、そういうの困るなって場合は後者がいいと思われます。

        というわけで設置、USBハブ電源スイッチオン、USB外付けHDDをざくざく挿入。
        きっちり稼働して万々歳です。
        以降定期的にちょこちょこ覗いてますが、特に問題も発生していないようです。

        同様の事象で困る例は非常に少ないと思いますが、備忘録がてらということでひとつ。
        何か後日談なんかが出てきた場合は、またこちらで紹介させていただきます。
        まあ後日談=十中八九トラブルなので、なるべく書かなくて済むことを祈りますが。。。