allister2007さんのブログ

最新一覧へ

« 前へ5件目 / 全142件次へ »
ブログ

覚書-ディスクレスPC

とりあえず、ストレージは束ねる価値があると思った。
各PCに散らばっているPCのディスク引っ張り出して、ひとつにまとめる。
途中から、新しくディスクを買い足していってしまって、なんかなという感じになったが。

束ねる価値があるのは、
・数多けりゃスペック上がるし
・管理?(一個人でそんなこと考えんが)楽だし
・バックアップも簡単だ(一個人でそんな複雑なバックアップが必要となる人に会って見たいが)
ということだからだ!

で、まとめた。
PCはディスクレスな環境になるためネットブートで対応することにした。

■確認した環境
・クライアント       ubuntu10.04 desktop,server, ubuntu11.10desktop, windowsXP
・サーバ          ubuntu10.04 server, desktop

■行ったこと
・サーバ
 serverもdesktopも一緒
  ・apt-get install iscsitarget dhcp3-server tftp-hpa
  ・gpxeのダウンロード
   ・vi /etc/dhcp3/dhcp.conf
    if gPXEじゃない (
             gPXEを選択
    ) gPXE だ (
             iSCSIブート(iscsi:::0:iqn...........みたいなやつ。iscsitargetの設定を行うときに決定する名前を記入)
       )
  のやつを設定。DHCPの設定だけど、MAC単位で各PCにたいして行った。
  MACの設定は、どっかその辺のやつであるはず。
  
  tftpはDEAMONのところだけconfigいじってたはず。
  gPXEはtftpのルート/var/lib/tftprootにおいた。

 ・iscsitargetの設定
  vi /etc/ietd.confを設定すると、ブート時に自動設定する模様。service ietadm restartでも反映可能
  とりあえず、つけっぱ想定してる。restartはディスクレスPCに影響ありそうなので次で行う
  ietadm --op new --tid=数字 --param Name 名前
                          (なぜか不思議な規定が叫ばれるiqn.うんたら。適当につける)
  ietadm --op new --yid=数字 --lun=0 (以下共通のtidに対して複数のlunを加えていける) --param Path=/ddddd,Type=fileio(またはdiskio)
     この/dddddのパスはこの後のクライアントの設定で行う処理の後得られるディスクイメージとうである。
     fileioはファイルシステムを介して読みかき?とりあえずメモリキャッシュが聞いてるみたい
     diskioは直接書き込み。(hdparm で -tがfileio -Tがdiskioとい認識でよいのだろうか)
    基本的に読み速度はfileioのほうが出た。(iscsiを介す)
    特に、fileioではランダム読み込み(先読み?のやつ)が強い。
      このとき、iscsiで公開したディスクはサーバのファイルシステム上のimgディスク。imgディスクは
        dd if=/dev/zero of=/img/test.img bs=4096 count=50000000とかのやつで作った。
      こゆのは、fileioでしか設定できないみたい?
      diskioで設定したけりゃ、上のPathで/dev/sdaとか/dev/md1とか設定すればよい。
    CrystalDiskMarkでGbE上限付近(100MBps/250,000iops)までは確認。書き込みは遅い。
    (数MBps)
    ただし、iscsiで公開するimgディスクを乗っけてるファイルシステムをマウントするときに、
    writebackのオプションをつけるとランダム書き込みが改善された。mount -t ext3 -o data=writeback
    (以下普通 ※writebackおぷそんはext2以下ではサポートしていないのかな?)
    メモリへの1次キャッシュである。この辺は/etc/sysconfigのvm.XXXXの項目でいじれる。
    iscsi経由で、50MBps程度のランダム書き込みが可能となった。

・クライアント
  各OSによって対応が異なる。詳しくはhttp://etherboot.org/wiki/sanboot
  windows XPのとき
   ・ネットブートを行うPCで、一度ディスク取り付けて、そこに普通にインストール。
   ただし、パーティションは10GB程度に収めて、先頭にあるようにする。(10GB程度に収める理由はなぞ、先頭にするのはイメージディスクとするときにMBRを含めるのが楽なため。むしろ、パーティションが後ろのほうにあったとき、自分はどうやってイメージ化するのかわからない)
   ・インストールしたディスクから起動して、以下をインストール
      ・iscsi initiator (上のページで、MS純正のものではない)
      ・sanboot config (上のページのリンクより。XP 64bitのほうは必要ない感じだった)
       ・(なぜか自分の場合、MACの設定を主導で行う必要があった)
   ・シャットダウン。
   ・UbuntuのライブCDから、PC起動
   ・ターミナルで
     fdisk /dev/sda
           :p
       ユニット単位と、パーティションの終わりを確認する。
    ・dd if=/dev/sda of=/適当/イメージディスク名 bs=ユニット単位 count=パーティションの終わり
    でディスクダンプ。
      自分はこのとき、サーバ側で共有フォルダを設定し(cifs, samba)クライアントでsmbfs取得の
      cifsでまうとの、そこに書き込みを行った。(サーバ側でiscsitargetの公開を行うときに少し楽)
以上でクライアントの設定終わりかな?この情報を持って、サーバ設定してやればネットブート。
 ただし、BIOS設定で、ブート優先度をネットブートから始まるように設定する必要j。

・ubuntuの場合
  ・同じように、ディスレスを構築する環境にディスクをとりあえずくっつけてそこにubuntuインストール。
  ・インストールしたう分津に下記の設定
   ・etc/initramfs-tool/hooks/iscsi
     ・etc/initramfs-tool/script/local-top/iscsi
    を上記のHPからこぴぺして設定
   ・apt-get install open-iscsi
     ・上三つが終わったら
    update-initramfs -u
      ・適当なところで
     vi /etc/network/interface の ethの設定をすべてマニュアルにする。ループバックはそのまま
  ・そのまま、サーバに綱っていれば上と同じようにddでイメージダンプを行う。
   サーバの設定を行いリブートで設定終

・flashcashについて
 facebookが開発したoss
 導入してみて、いまいちスペックがあがってるのかなぞであるのだが、
 とりあえず、キャッシュが行われていることは、hdparmとかのベンチを数回行うことで書くにできる。
 回数をこなすほど、よいベンチ結果が得られる。
   ・インストールについて
      linux-soruceの入手
     ・そのsrcフォルダで ・cp /boot/XXXXconfig  ./.config
                                        ・make oldconfig
                                        ・make prepare
                                        ・make scripts
           ・flashcacheのsrcで ・make KERNEL_TREE=(linux-sourceのフォルダを書く)
                  ・src/utilに実行ファイルがあると思う。

多分、こんなんかいていても、数年後これをみて構築しろっていわれたとき、構築できる自身はない
    
   
   
  







19件のコメントがあります
  • イメージ
    allister2007さん
    2012/1/29 22:10
    追記

    上記で作成したubuntuのディスクレスPCでは、
    iscsidの実行権限がすべてにおいて与えられなくなるので
    iscsiadm -m discovery -...
    等のコマンドが使えなくなる。

    解決として、次の手順を踏む
    1. /etc/initramfs-tools/hooks/iscsiの内容にて、iscsidのdiscoveryはさせないよとコメントしてあるif ... fiブロックをコメントアウト
     
    #if [ -x /sbin/iscsid ]; then
    #   chmod -x /sbin/iscsid                           # iscsid will interfere by re-discovering
    #fi

    2. sudo chmod a+x /sbin/iscsid

    3. 起動時に、re-discoveringが実行される可能性をなくすため、/etc/iscsi/iscsid.confで、

     # To request that the iscsi initd scripts startup a session set to "automatic".
     # node.startup = automatic
     #
     # To manually startup the session set to "manual". The default is manual.
     node.startup = manual
    としておいた。

    起動確認後
    sudo iscsiadm -m discovery -t st -p xxxxx
    を実行してみたが、特に問題なかった。
    もし、OSが乗っているiscsi-targetが見つからなかった場合は、
    動かなくなるのだろう。
    しかし、どはまりしたー
  • イメージ
    allister2007さん
    2012/2/1 05:07
    ついき

    sudo iscsiadm -m discovery -t st -p xxxxx
    はもんだいだった。しゅうりょうがうまくいかない
    iscsistart -i [initiatorName] -t [targetIqn] -g [Lun] -a [Address]
    として、じっこう
    then i can find target i want to mount without discovery.
    maybe its problem that mounted target what is mounted at first boot
    is remounted at discovery. os cant umount remounted target at shutdown
  • イメージ
    allister2007さん
    2012/2/12 17:12
    追記

    sudo apt-get install build-essential libssl-dev
    tar xzvf iscsitarget-1.4.20.2.tar.gz
    cd iscsitarget-1.4.20.2/
    make
    sudo make instal
    build-essentialってなんだ。。。。
  • イメージ
    allister2007さん
    2012/2/12 17:14
    libcが含まれている。
    gccコンパルが可能になるということかな?とりあえず放置
  • イメージ
    allister2007さん
    2012/2/13 02:14
    # gPXE-specific encapsulated options
    #
    option space gpxe;
    option gpxe-encap-opts code 175 = encapsulate gpxe;
    option gpxe.priority code 1 = signed integer 8;
    option gpxe.keep-san code 8 = unsigned integer 8;
    option gpxe.no-pxedhcp code 176 = unsigned integer 8;
    option gpxe.bus-id code 177 = string;
    option gpxe.bios-drive code 189 = unsigned integer 8;
    option gpxe.username code 190 = string;
    option gpxe.password code 191 = string;
    option gpxe.reverse-username code 192 = string;
    option gpxe.reverse-password code 193 = string;
    option gpxe.version code 235 = string;

    # Other options that may be useful
    #
    option iscsi-initiator-iqn code 203 = string;
  • イメージ
    allister2007さん
    2012/2/16 07:32
    tftpd-hpa
    the case 2 or more NIC on server
    vi /etc/default/tftpd-hpa.conf
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/var/lib/tftpboot"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure -l"


    TFTP_ADDRESS=":69" がひつよう
  • イメージ
    allister2007さん
    2012/3/6 19:37
    なお次回の iscsid起動時に自動的にターゲットへログインするには、
    iscsiadm -m node -T iSCSI名 -p iSCSIホストのIPアドレス --op=update --name=node.startup --value=automatic
  • イメージ
    allister2007さん
    2012/3/6 19:40
    Open-iSCSIがOS起動時に起動されるようにしておきます。
    chkconfig open-iscsi on
  • イメージ
    allister2007さん
    2012/3/6 19:47
    root@localhost:/etc/snmp# sysv-rc-conf -h
    Usage:
    sysv-rc-conf [ *options* ]

    sysv-rc-conf --list [ *service* ]

    sysv-rc-conf [ --level *levels* ] *service* <*on|off*>
  • イメージ
    allister2007さん
    2012/3/10 11:37
    iptablesの自動起動
    /etc/network/if-pre-up.d/iptableconf
    iptables -A ..とかのシェルを置く
  • イメージ
    allister2007さん
    2012/3/11 09:23
    # become root
    sudo su -

    # check out the source from source forge (do an "apt-get install subversion" if you don't have the svn command)
    ubuntu11.10にiscsitargetをいれる。
    svnとかないよといわれれば逐次いんすと
    svn co https://iscsitarget.svn.sourceforge.net/svnroot/iscsitarget/

    # cd into the iscsitarget/trunk
    cd iscsitarget/trunk

    # build the package
    make

    # now install it
    make install


    And you're done. You will want to reboot the box to bring your iSCSI module online.
  • イメージ
    allister2007さん
    2012/3/12 20:06
    mdadm.confとinitramfsの設定

    Linux2.6以降では、mdadm --create /dev/md* で指定したのと同じデバイス番号で認識するとは限りません。また標準では /dev/md/* にエイリアスが作られここから参照することを推奨されます。

    RAIDデバイスを/dev/md*として扱いたい場合これでは面倒なので、mdadm.confに情報を記録します。既に示した

    # mdadm --detail --scan>>/etc/mdadm/mdadm.conf

    が、そのための措置それです。mdadm.confは必ず手動で確認し、現在の構成と一致しているか確認してください。


    mdadm.confにARRAYの設定が1つでもある場合、記述されたARRAYに構成情報と一致しないデバイスやそもそも記述されないデバイスはカーネル起動時にRAIDデバイスとして認識しません。ARRAYの設定が1つもない場合は、パーティションタイプfdになっているデバイスはすべて認識されます。

    mdadm.conf はinitramfsに含まれますので、mdadm.confを書き換えたら initrd.img を更新します。Ubuntu/Debianでは次のコマンドです。

    # update-initramfs -u

    RAIDの構成情報を変更した場合(mdadm --detail -sで表示されるUUIDが変更された場合)は、必ずmdadm.confを適切に書き換えinitrdを再生成することを忘れないでください。initramfs内のmdadm.confには既にARRAYの記述があるので、構成情報が異なる新たなRAIDデバイスを認識しなくなります。


    また、この種のややこしい問題を避けたければmdadmにはARRAYの情報を書かないことです。mdデバイス名の変わることもありますが、すべてをUUIDやLABELで処理すれば問題はありませんし、それで済むならその方が良いかもしれません。


    ※initramfsで認識したRAIDデバイスは「Begin: Mounting root file
    system...」よりも前に、通常のファイルシステムの/etc/mdadm/mdadm.confを参照して認識したデバイスはこの表示より後に出
    力されます。initramfs等の詳細はLinux起動シーケンスについての記事を参考にしてください。

  • イメージ
    allister2007さん
    2012/3/17 07:12

    Sometimes it's usefull to create sparse files on Linux. For example,
    when you're creating Xen hard disk images, creating a sparse file will
    take up much less space then creating a fully allocated file, and will
    only start taking up space as it fills up






    1dd if=/dev/zero of=filename.img bs=1k seek=128M count=1

    This will create a sparse file of 128GB. Adjust the seek parameter to get the file size that you want.

    If you need to find out the real space that the file is taking up, use du -lah






    1# du -lah
    220K ./filename.img
    328K .

    Using ls will only show you how big the file is supposed to beview p






    1#ls -lah
    2total 36K
    3drwxr-xr-x 2 root root 4.0K Jun 5 13:59 .
    4drwxr-xr-x 3 root root 4.0K Jun 5 13:59 ..
    5-rw-r--r-- 1 root root 129G Jun 5 13:59 filename.img
  • イメージ
    allister2007さん
    2012/3/17 16:16
    nic ethの固定
    sudo vi /etc/udev/rules.d/70-persistent-net.rules
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1f:93:3e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    で固定

    MAXアドレスは
    dmesg | grep eth1
    とかで引っ掛けて適当に見つける

  • イメージ
    allister2007さん
    2012/3/20 09:35
    ①イメージディスクファイルの拡張
     dd if=/dev/zero seek=xx count=xx bs=xx >>

    ②パーティションを広げる。
     sfdisk -d > diskDump
       vi diskDump
        パーティションを広げる。
     sfdusk -f < diskDump

    ③ファイルシステムを広げる。
    ループデバイスにマッピング
     losetup /dev/loop[0-9]
    これで、/dev/loop0とかがブロックデバイスとして振舞う。

    パーティションごとにマッピング
     kpartx -a /dev/loop0
    これで /dev/mapper/loop0p1 とかにイメージファイルの中にあった
    パーティションが個別に扱える。つまり
    parted で見えた、p1が/dev/mapper/loop0p1と同じ。

    ファイルシステムの拡張
     e2sfck -f /dev/mapper/loop0p1
      謎。調べてない。やれっていわれた。
     resize2fs /dev/mapper/loop0p1


  • イメージ
    allister2007さん
    2012/4/1 19:05
    nobody cared (try booting with the “irqpoll” option
    sudo vi /etc/default/grub
     configure irqpoll
     GRUB_CMDLINE_LINUX_DEFAULT="irqpoll"
    sudo grub-install

    https://wiki.ubuntulinux.jp/UbuntuTips/Others/BootOptions
  • イメージ
    allister2007さん
    2012/4/1 19:50
    spice on ubuntu11.10

    http://docs.cslabs.clarkson.edu/wiki/SPICE

    sudo apt-get install build-essential autoconf git-core

    sudo apt-get install libtool liblog4cpp5-dev libavcodec-dev libssl-dev xlibmesa-glu-dev libasound2-dev libpng12-dev libfreetype6-dev \
    libfontconfig1-dev libogg-dev libxrandr-dev kvm libgcrypt-dev libsdl-dev libnss3-dev libpixman-1-dev libxfixes-dev libjpeg8-dev \
    libsasl2-dev python-pyparsing

    get tar.gz and compile
    spice-protocol
    spice
    celt
    qemu-kvm

  • イメージ
    allister2007さん
    2012/4/2 22:34
    nfs dhcp tftpによるネットワークCDブート ( ubuntu-11.10 server )

    sudo apt-get install dhcp3-server tftpd-hpa nfs-common syslinux


    vi /etc/dhcp/dhcp.conf
     filename "/boot/pxelinux.0"

    /usr/lib/syslinux/menu.32c
    /usr/lib/syslinux/pxelinux.0
    を使って次のように構築
    /var/lib/tftpboot/ pxelinux.0
                               syslinux/menu.32c
                               pxelinux.conf/default
                               Fedora16x86_64-DVD/
    vi pxelinux.conf/default
    default syslinux/menu
    label Fedora16x86_64-DVD
    kernel Fedora16x86_64-DVD/vmlinz
    append initrd=Fedora16x86_64-DVD/initrd.img netboot=nfs
    nfsroot=192.168.3.20:/....

    vmlinuzとinitrd.imgはFedora16x86_64-DVDのisoファイルから取り出す。
    nfsrootにはisoファイル中のデータを丸々コピーしたものが含まれている。






  • イメージ
    allister2007さん
    2012/4/20 05:25
    always forget

    /usr/lib/postgresql/8.3/bin/initdb -D /var/lib/postgresql/8.3/main --encoding=UTF8 --no-locale
    touch main/server.crt
    usudo openssl genrsa -out server.key 1024
    sudo openssl req -new -key server.key -x509 -days 1096 -out server.crt
    cp -p /etc/postgresql/8.3/main/server.crt /var/lib/postgresql/8.3/main
    cp -p /etc/postgresql/8.3/main/server.key /var/lib/postgresql/8.3/main
    chmod 400 /var/lib/postgresql/8.3/main/server.crt
    chmod 400 /var/lib/postgresql/8.3/main/server.key
    chown postgres: server.*

    su postgres
    psql
    psql> create user name with password 'password';
    > create database name;

    vi /etc/postgres/9.1/main/pg_hpa.conf
    host all IP/24 md5

コメントを書く
コメントを投稿するには、ログイン(無料会員登録)が必要です。