ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/VirtualServerBuilding"の差分

MMA
12と74のリビジョン間の差分 (その間の編集: 62回)
2011-06-07 16:46:21時点のリビジョン12
サイズ: 5987
編集者: alstamber
コメント:
2012-04-18 22:11:53時点のリビジョン74
サイズ: 14691
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
## page was renamed from alstamber/ServerBuilding
## page was renamed from alstamber/VirtualServerBuilding
#acl Known:read,write,revert,delete,admin All:read
行 8: 行 7:
  * と思ってたらカーネルハックしたらネイティブ環境で動作するようになった

= 2011/5/30 =
 * とりあえず家で余っていたMacに仮想マシンを作成した
  * とりあえず慣れているVirtualBoxを使うことにした
   * ServerのOSとして何を使うか迷ったので、とりあえずDebian, Ubuntu Server, FreeBSDを入れた
  * 仮想マシンの設定として、「ブリッジ接続」をするようにした
   * サーバが自宅のLANに対等に参加できるようにするため
 * とりあえずFreeBSDから設定することにする
  * portsnapしてportsを最新にする
  * とりあえずsudoとportmasterを入れる
  * 自分をwheelに追加。
  * portmasterつかっていくつかの健康で文化的な生活を送るためのツールを導入
   * vimとかzshとか
  * nestからscpして.zshrcとか.vimrcをホームディレクトリに用意
  * sshの設定をついでに行った
 * ルータの設定をゴニョゴニョして、サーバに固定ローカルIPが降ってくるようにした
 * sshでサーバのローカルIPに接続できることを確認した

 * とりあえず目に見えた成果がほしいと感じたので、Webサーバを上げることにした
  * portsつかってApache22さんを導入
  * ルータの設定をゴニョゴニョして、80番ポート宛の通信がサーバに流れるようにした
  * rc.confに記述して、apache22さんを起動。
  * とりあえずローカルIP宛に別のLAN内PCから接続、It works!が出ることを確認。
 * DDNSサービスに自分のグローバルIPを登録。alstamber.moe.hmで自分のネットワークに到達できるようにした
  * うちのルータはいわゆるヘアピンNATができないようなので、iPhoneからalstamber.moe.hmにアクセスできることを確認。

 * 並行してDebianさんとUbuntu Serverさんも設定。こちらは外部には開かれていないが内部向けに実験用Webサーバが動いてる状態にした

= 2011/5/31 =
 * とりあえずbindさんを投入
  * ローカルネットワークからだとグローバルIPでサーバにアクセス出来ないため、alstamber.moe.hmで内部的に名前を引けるようにしたかった
  * [[http://freebsd.server-manual.com/index.html|このあたり]]を参考に、named.confとかゾーンファイルとか記述
  * rc.confに記述後、named起動
  * いろんなところからdigコマンドを叩いては設定を修正する作業。ゾーンファイルのリビジョンが無駄に増える
 * 正常に引けるようになったのでとりあえず一安心。

= 2011/6/1 =
 * 学内無線からsshでサーバに接続しようとしたら繋がらない
  * どうやら学内から学外へのsshはBANされる模様
 * 他の場所からやってみたら無事につながった。
 * 全く使っていないのでUbuntu ServerさんとDebianさんを殺す
 * このまま何もなければFreeBSDでの運用になりそう……

= 2011/6/2 =
 * VirtualBoxでの運用に不安を覚える
  * サーバ向け仮想環境を作ったほうがいいのではないか……?

= 2011/6/4 =
 * 時計がえらいことになっていたので, ntpdさんの設定をした
 * ntpサーバって何があったかなと思ってGoogle先生に質問→天下の東京大学様のntpサーバを使用させていただくこととする
 * 驚くべきことに時計が1日進んでいたので(!)、dateコマンドである程度修正をかけた上で、ntpdateして東京大学様に時間を聞きに行く
  * 時刻変更系のコマンドはsudoしないと使えないぞ!
  * 最初1日進んだままntpサーバに聞きに行こうとしたところ、怒られてしまった
  * root宛に残念なメールが
 * ntpdを走らせて時間の恒常性を保つ

 * sun経由でsshするとやはり若干不安定である
 * 堅牢性の高い仮想環境での運用がしたい……
  * vsphereがこの手だと一番有名だが、うちの環境ではインストーラが固まった
  * hyper-vかXenだろうか…… KVMというのもあるらしいが(スイッチじゃないよ)
  * 一応サーバそのものは非常に安定している
   * さすがにFreeBSDである

= 2011/6/5 =
 * とりあえず一番安定して動作しそうな気配のHyper-Vにすることにした
  * FreeBSDを投入、普通に動作
  * 仮想NICを作成し、物理NICとブリッジして外部への接続性を確保
  * ホスト名はHarukaにした あまり理由はない

= 2011/6/6 =
 * 部室で偶然見つけたカーネルハックしてFreeBSDをネイティブに動かす方法を試してみた
  * なんか動いた
 * しかしNIC認識せず
  * Bootcampに入ってるWindows用ドライバを持ってきてNDISすることにした
  * FreeBSDにUSBメモリを使ってWindowsドライバを持込、ndisgenでカーネルモジュールを生成
  * カーネルモジュールを読み込ませて、設定したらネットワークに繋がった
  * 安定性は今後監視していきたい
 * Virtualじゃなくなったので、タイトルを変更した
 * とりあえずApacheとBINDを投入、動作を確認

= 2011/6/7 =
 * うまくいったと思ったらカーネルパニックが頻発するようになった
 * 再インスコするも改善せず
 * 仕方ないのでHyper-V環境に戻す
  * --(と思ってたらカーネルハックしたらネイティブ環境で動作するようになった)--

 * 当初の設計に無理が生じてきた→一から設計しなおすことにした
  * 古い内容は[[/Old|こちら]]に移しました

----

= ゴール =
 * blogを自分の管理下にあるサーバで運用する
 * FreeBSDの実験、各種ネットワーク実験を行う
 * →Linuxの実験、各種ネットワーク実験を行う

= 設計 =
== システムを構成するサーバ ==
 * 大きく分けて2つのサーバでシステムを運用することとする
/* === 自宅 === */
/* * 外向きにWebサーバを提供 */
/* * IPv6での到達性を確保 */
/* * IPv6経由でSSH接続可能 */
/* * 自宅ネットワーク向けに、DNS/DHCPサービスを提供 */
=== VPS ===
 * 980円の某VPS
 * blogの運用をこちらに切り離す
  * blogはトラフィックが大きいため、自宅での運用に不安が残ったため
  * バックボーンの面でやはりVPSに分があった
 * blog運用のため、PHP5およびMySQLの導入を行う
 * Twitter botを運用する。
 * ZFS Rootで運用
  * Linuxに移行したので、btrfsでの運用に変更。
 * 6rdでIPv6到達性を確保する
  * 6rdが事情で使えなくなったので、6to4に移行。

== ドメインの割り振り ==
 * VPSには589lab.netのドメインを割り振る

= 実装 =
== 2011年6月17日 ==
 * 980円の某VPSを契約
 * デフォルトでCentOSが入っているので、FreeBSDに差し替える
  * 某VPSはコントロールパネルからOSの再インストールの命令を発行できる
  * VNCで画面が自動的に飛んで来る。インストーラの指示に従ってインストール
   * [[http://fragile-graciousness.net/server_freebsd_zfs_root.html]]を参考に、ZFS Rootになるようにインストール
 * とりあえず再起動
 * minimalインストールなので、rootのパスワードが設定されていない。急いで設定する
{{{
 # passwd
}}}
 * ユーザがrootだけだと残念なので、通常使用するユーザを作成する
{{{
 # adduser ***
}}}
 * sudoをインストール
{{{
 # cd /usr/ports/security/sudo
 # make install clean
}}}
 * visudoを使ってwheelグループをsudoできるようにする

 * rootからログアウトして、通常アカウントでログインしなおす
 * 健康で文化的な最低限度のツールを入れる
  * portmasterとかzshとかvimとか
  * 各種設定ファイルをmoonからコピーしてくる
   * scpを使えば良い
 * MySQLとPHP5を入れる
  * MySQLの設定はここを参考にする[[http://freebsd.server-manual.com/freebsd8_mysql5.html]]
  * 必要のないデータベースを削除し、wordpress用のデータベースを新しく作る
  * MySQLは最初動かなかったが、一旦アンインストールしてもう一度入れ直したらうまくいった
  * PHP5についてはphp5-extensionsを入れるのを忘れない←MySQLにphpからアクセスできなくなる
  * httpd.confに次の記述を行う。
{{{
<IfModule dir_module>
    DirectoryIndex index.html index.php ←追加
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-php .php
</IfModule>
}}}

== 2011年6月20日 ==
 * どうもVPSが不安定である。どうやらZFSがやたらメモリを食ってパニックしている様子。
  * メモリ使用量を減らす作業。
 * phpMyAdminを導入。
  * portsからインストール。php.iniで取り扱えるファイルサイズなどを変更。
   * 巨大データベースファイルをアップロードしたりすることがあるため。
 * DNSの設定を変更。
  * フリーのDNSサーバを借りて、589lab.netのAレコードがVPSを向くようにした。
 * munin-masterとmunin-nodeをインストールした。
 * ntpdを起動するようにした。
  * まず/etc/ntp.confを編集。
{{{
server ntp.nict.jp
}}}
  * /etc/rc.confに追記。
{{{
ntpd_enable="YES"
}}}
  * サービスを起動。
{{{
 # service ntpd start
}}}
 * 余談だが490円VPSは存外スペックが良かった
  * pingの帰ってくるスピードが異常に速かったし
  * 惜しむらくはFreeBSDに対応していないことだろう

== 2011年6月26日 ==
 * やたらDNSサーバへのキューが多いと思ったら、TTLが1分になってた
  * キャッシュ汚染されても困るので1日に変更

== 2011年7月1日 ==
 * Apacheの設定をチューニング。サーバのレスポンスがよくなることに期待。

== 2011年8月23日 ==
 * VPSを再起動。ついでにsshのポート番号を変更しておく。

== 2011年11月4日-5日 ==
 * 長期メンテ。
  * FreeBSD9.0-RC1入れてみる
  * 6rdのパッチが使えなくなったので、v6への対応は6to4にすることにした。
   * Tokyo6to4のお陰で、以前と違いレイテンシも大幅に軽減されている。
  * git入れてみる。
   * 共有リポジトリをVPS上に構築し、開発したものは全部そっちにおこうという計画。
   * git-daemonさんがうまく動かず、苦労したがgit-daemonを直接叩くのではなく、gitコマンドを使ってdaemonを叩くようにするとなぜか動いた。
   * とりあえず意味もなく現在作ってるbotのソースをpush。

== 2011年11月14日 ==
 * せっかくFreeBSD9.0を入れたのでZFSのバージョンを上げてみる。
{{{
# zpool upgrade -a
# zfs upgrade -a
}}}

 * そういえばZFSの機能を何もいかしていなかったなあとおもったので、snapshotをとるようにした。
  * /var以外すべてをとるようにした
  * 以下をcrontabに追記
{{{
zfs snapshot 名前@`date +%Y%m%d`
}}}

== 2011年12月25日 ==
 * 色々思う所があって、OSをLinuxに変えることにした。
  * ゴールもそれに合わせて変更。FreeBSDだけではなくLinuxもいじれるようにしたいというのがあった。
 * ディストリはDebianを選択。
=== btrfs boot ===
 * せっかくなので完全btrfs化というのをやってみた。
==== インストールと準備 ====
 * まずVPSのコントロールパネルからDebianをインストール。ほぼ自動インストールになってて楽。'
  * この時パーティションの切り方を通常とは少し変える。/パーティションとは別に/bootパーティションを用意する。
   * /bootパーティションはext4
   * /パーティションはbtrfsで用意する
 * sshでログインして、/etc/apt/sources.listに次を追記。(testingはいらんかもしれない)
{{{
deb ftp://ftp.jp.debian.org/debian sid main
deb ftp://ftp.jp.debian.org/debian testing main
}}}
 * aptitude updateする。
 * zlib1g-dev zlibc kernel-package btrfs-tools libncurses-dev bzip2をインストール。
==== /bootパーティションの修正 ====
 * /bootパーティションのブロックサイズがなぜか1024なので、4096として改めてファイルシステムを構築しなおす。
{{{
# umount /dev/(/bootの場所)
# mkfs.ext4 -b 4096 /dev/(/bootの場所)
}}}
 * /etc/fstabを編集する。
  * blkidコマンドを実行して新しい/bootパーティションのUUIDを確認。
  * /etc/fstabを開いて、マウントポイントが/bootの行のUUIDを新しいUUIDに書き換える。
 * 改めて/bootをマウントしなおす。
{{{
# mount -t ext4 /dev/(/bootの場所) /boot
}}}
==== カーネルのアップデート ====
 * www.kernel.orgから3.x系のカーネルのソースコードをダウンロードしてきて、コンパイルする。
  * 今回は実験環境でコンパイルしたものをコピーして使用した。
{{{
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub
}}}
 * --(一旦再起動して、カーネルが更新されていることを確認。)--
  * 再起動すると上がってこなくなるようです。

==== /bootのbtrfsへの変換 ====
 * /bootパーティションをbtrfsにコンバートする。
{{{
# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
}}}
 * /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
  * UUIDがまた変わっているのでblkidコマンドで確認する。
{{{
UUID=(新しいUUID) /boot btrfs ......
}}}
  * debianでbtrfsにfsckをしようとすると残念なコトになるらしいので、fsckのフラグを折っておいても良いと思う。

==== grubのアップデート ====
 * grubの1.99をインストールする。
  * 何か選択肢が出てくるが、一番上を選んでおく。
{{{
# aptitude install grub2
}}}
 * grubを更新。
{{{
# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub
}}}

=== その他行ったこと ===
 * sudoのインストール
 * sudoの設定
 * zsh, vimのインストール
 * update-alternativesでvimをエディタのデフォルトに
 * 各種設定ファイルのコピー
 * MySQL, PHPのインストール

== 2011/12/26 ==
 * ただでさえメモリの少ないVPSのリソースをApacheが食べまくってる状況を改善したい。
  * WebServerをnginxというのに変えることにした。

== 2012/01/07 ==
 * VPSが突然落ちた。再起動してもどうにもならない。原因もわからない。
  * どうせなので修復ついでに一度試したかったことを試して見ることにした。
  * バックアップとっといてよかった。
 * btrfsを導入するついでに、homeとsystemという2つのsubvolumeを構築し、かつbtrfs bootを実現する実験。
=== インストーラの起動 ===
 * まずVPSのコントロールパネルからDebianをインストール。この時自動インストールに頼らずコンソールに落ちてインストールを行う。
 * インストーラの操作を進めて、パーティションマネージャが起動したらAlt+F2でコンソールに落ちる。
 * fdiskでパーティションを以前行ったbtrfs bootのときと同じ構成に切る。
  * ただし、swapの予定地もswapではなく通常パーティションとして切る。
 * フォーマットする。
{{{
# mkfs.ext4 -b 4096 /dev/(/bootの場所)
# mkfs.btrfs /dev/(swapの場所)
# mkfs.btrfs /dev/(rootの場所)
}}}
=== 踏み台環境でbtrfsを構築する ===
 * swap予定地に踏み台となる環境を作り、そこで本番のbtrfs環境を作る。
{{{
# mkdir /dist
# mount -t btrfs /dev/(swapの場所) /dist
# debootstrap squeeze /dist
# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# chroot /dist /bin/bash
}}}
 * sources.listを前回と同じように書き換える。
 * btrfs-toolsを入れる。
{{{
# aptitude update
# aptitude install btrfs-tools
}}}
 * マウントしてsubvolumeを切る。
{{{
# mount /dev/(rootの場所) /mnt
# btrfs sub create /mnt/system
# btrfs sub create /mnt/home
# umount /mnt
}}}
 * 踏み台環境を抜けだして破壊。
{{{
# exit
# umount /dist/dev
# umount /dist/proc
# umount /dist
}}}
 * fdiskを使って、踏み台環境だった場所をswapパーティションに変更。
 * swapファイルシステムを作成。
{{{
# mkswap /dev/(swapの場所)
}}}
 * ベースシステムをインストール。
{{{
# mount -t btrfs -o subvol=system /dev/(rootの場所) /dist
# mkdir /dist/boot
# mkdir /dist/home
# mount /dev/(/bootの場所) /dist/boot
# mount -t btrfs -o subvol=home /dev/(rootの場所) /dist/home
# chmod 755 /dist/home
# debootstrap squeeze /dist
}}}

 * chrootする。
{{{
# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# mount -o bind /sys /dist/sys
# chroot /dist /bin/bash
}}}
 * sources.listを前回と同じように編集。
 * 各種ツールを入手。
{{{
# apt-get update
# apt-get install btrfs-tools
# apt-get install linux-image-3.0.1-amd64
# apt-get install console-setup tzdata
# apt-get install ssh
}}}
 * grubを入れる。
{{{
# apt-get install grub2
# grub-install /dev/sda
# update-initramfs -t -u
# update-grub
}}}
 * /etc/fstabを編集。
{{{
proc /proc proc defaults 0 0
/dev/(rootの場所) / btrfs defaults,subvol=system 0 1
/dev/(rootの場所) /home btrfs defaults,subvol=home 0 2
/dev/(/bootの場所) /boot ext4 noatime 0 3
/dev/(swapの場所) none swap sw 0 0
}}}
 * chrootを抜けて、networkの設定。
{{{
# exit
# cp /etc/network/interfaces /dist/etc/network/interfaces
}}}
 * 再起動して、recovery modeで起動。
 * rootパスワードを設定。
{{{
# passwd
}}}
 * 再起動してrootでログイン。ここからはsshで作業可能。
 * zlib1g-dev zlibc kernel-package libncurses-dev bzip2をインストール。
=== カーネルを更新 ===
{{{
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub
}}}
=== /bootをbtrfs化 ===
 * /bootパーティションをbtrfsにコンバートする。
{{{
# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
}}}
 * /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
  * /dev/〜の表記をすべてblkidで調べて、UUID表記にしておく。
{{{
UUID=(UUID) /boot btrfs ......
}}}

=== grubの更新 ===
{{{
# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub
}}}

なにこれ

  • なんかサーバー立ててる人多いし、自分も立ててみたいと思った
  • でもうちにはMacしかない……
  • MacにもServerOSはあるけど、高すぎる
  • なら仮想環境上で動かそう!
    • と思ってたらカーネルハックしたらネイティブ環境で動作するようになった

  • 当初の設計に無理が生じてきた→一から設計しなおすことにした


ゴール

  • blogを自分の管理下にあるサーバで運用する
  • FreeBSDの実験、各種ネットワーク実験を行う
  • →Linuxの実験、各種ネットワーク実験を行う

設計

システムを構成するサーバ

  • 大きく分けて2つのサーバでシステムを運用することとする

VPS

  • 980円の某VPS
  • blogの運用をこちらに切り離す
    • blogはトラフィックが大きいため、自宅での運用に不安が残ったため
    • バックボーンの面でやはりVPSに分があった
  • blog運用のため、PHP5およびMySQLの導入を行う
  • Twitter botを運用する。
  • ZFS Rootで運用
    • Linuxに移行したので、btrfsでの運用に変更。
  • 6rdでIPv6到達性を確保する
    • 6rdが事情で使えなくなったので、6to4に移行。

ドメインの割り振り

  • VPSには589lab.netのドメインを割り振る

実装

2011年6月17日

  • 980円の某VPSを契約
  • デフォルトでCentOSが入っているので、FreeBSDに差し替える
    • 某VPSはコントロールパネルからOSの再インストールの命令を発行できる
    • VNCで画面が自動的に飛んで来る。インストーラの指示に従ってインストール
  • とりあえず再起動
  • minimalインストールなので、rootのパスワードが設定されていない。急いで設定する

 # passwd
  • ユーザがrootだけだと残念なので、通常使用するユーザを作成する

 # adduser ***
  • sudoをインストール

 # cd /usr/ports/security/sudo
 # make install clean
  • visudoを使ってwheelグループをsudoできるようにする
  • rootからログアウトして、通常アカウントでログインしなおす
  • 健康で文化的な最低限度のツールを入れる
    • portmasterとかzshとかvimとか
    • 各種設定ファイルをmoonからコピーしてくる
      • scpを使えば良い
  • MySQLとPHP5を入れる
    • MySQLの設定はここを参考にするhttp://freebsd.server-manual.com/freebsd8_mysql5.html

    • 必要のないデータベースを削除し、wordpress用のデータベースを新しく作る
    • MySQLは最初動かなかったが、一旦アンインストールしてもう一度入れ直したらうまくいった
    • PHP5についてはphp5-extensionsを入れるのを忘れない←MySQLにphpからアクセスできなくなる
    • httpd.confに次の記述を行う。

<IfModule dir_module>
    DirectoryIndex index.html index.php ←追加
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-php .php 
</IfModule>

2011年6月20日

  • どうもVPSが不安定である。どうやらZFSがやたらメモリを食ってパニックしている様子。
    • メモリ使用量を減らす作業。
  • phpMyAdminを導入。
    • portsからインストール。php.iniで取り扱えるファイルサイズなどを変更。
      • 巨大データベースファイルをアップロードしたりすることがあるため。
  • DNSの設定を変更。
    • フリーのDNSサーバを借りて、589lab.netのAレコードがVPSを向くようにした。
  • munin-masterとmunin-nodeをインストールした。
  • ntpdを起動するようにした。
    • まず/etc/ntp.confを編集。

server ntp.nict.jp
  • /etc/rc.confに追記。

ntpd_enable="YES"
  • サービスを起動。

 # service ntpd start
  • 余談だが490円VPSは存外スペックが良かった
    • pingの帰ってくるスピードが異常に速かったし
    • 惜しむらくはFreeBSDに対応していないことだろう

2011年6月26日

  • やたらDNSサーバへのキューが多いと思ったら、TTLが1分になってた
    • キャッシュ汚染されても困るので1日に変更

2011年7月1日

  • Apacheの設定をチューニング。サーバのレスポンスがよくなることに期待。

2011年8月23日

  • VPSを再起動。ついでにsshのポート番号を変更しておく。

2011年11月4日-5日

  • 長期メンテ。
    • FreeBSD9.0-RC1入れてみる
    • 6rdのパッチが使えなくなったので、v6への対応は6to4にすることにした。
      • Tokyo6to4のお陰で、以前と違いレイテンシも大幅に軽減されている。
    • git入れてみる。
      • 共有リポジトリをVPS上に構築し、開発したものは全部そっちにおこうという計画。
      • git-daemonさんがうまく動かず、苦労したがgit-daemonを直接叩くのではなく、gitコマンドを使ってdaemonを叩くようにするとなぜか動いた。
      • とりあえず意味もなく現在作ってるbotのソースをpush。

2011年11月14日

  • せっかくFreeBSD9.0を入れたのでZFSのバージョンを上げてみる。

# zpool upgrade -a
# zfs upgrade -a
  • そういえばZFSの機能を何もいかしていなかったなあとおもったので、snapshotをとるようにした。
    • /var以外すべてをとるようにした
    • 以下をcrontabに追記

zfs snapshot 名前@`date +%Y%m%d`

2011年12月25日

  • 色々思う所があって、OSをLinuxに変えることにした。
    • ゴールもそれに合わせて変更。FreeBSDだけではなくLinuxもいじれるようにしたいというのがあった。
  • ディストリはDebianを選択。

btrfs boot

  • せっかくなので完全btrfs化というのをやってみた。

インストールと準備

  • まずVPSのコントロールパネルからDebianをインストール。ほぼ自動インストールになってて楽。'
    • この時パーティションの切り方を通常とは少し変える。/パーティションとは別に/bootパーティションを用意する。
      • /bootパーティションはext4
      • /パーティションはbtrfsで用意する
  • sshでログインして、/etc/apt/sources.listに次を追記。(testingはいらんかもしれない)

deb ftp://ftp.jp.debian.org/debian sid main
deb ftp://ftp.jp.debian.org/debian testing main
  • aptitude updateする。
  • zlib1g-dev zlibc kernel-package btrfs-tools libncurses-dev bzip2をインストール。

/bootパーティションの修正

  • /bootパーティションのブロックサイズがなぜか1024なので、4096として改めてファイルシステムを構築しなおす。

# umount /dev/(/bootの場所)
# mkfs.ext4 -b 4096 /dev/(/bootの場所)
  • /etc/fstabを編集する。
    • blkidコマンドを実行して新しい/bootパーティションのUUIDを確認。
    • /etc/fstabを開いて、マウントポイントが/bootの行のUUIDを新しいUUIDに書き換える。
  • 改めて/bootをマウントしなおす。

# mount -t ext4 /dev/(/bootの場所) /boot

カーネルのアップデート

  • www.kernel.orgから3.x系のカーネルのソースコードをダウンロードしてきて、コンパイルする。
    • 今回は実験環境でコンパイルしたものをコピーして使用した。

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2 
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub
  • 一旦再起動して、カーネルが更新されていることを確認。

    • 再起動すると上がってこなくなるようです。

/bootのbtrfsへの変換

  • /bootパーティションをbtrfsにコンバートする。

# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
  • /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
    • UUIDがまた変わっているのでblkidコマンドで確認する。

UUID=(新しいUUID)   /boot   btrfs ......
  • debianでbtrfsにfsckをしようとすると残念なコトになるらしいので、fsckのフラグを折っておいても良いと思う。

grubのアップデート

  • grubの1.99をインストールする。
    • 何か選択肢が出てくるが、一番上を選んでおく。

# aptitude install grub2
  • grubを更新。

# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub

その他行ったこと

  • sudoのインストール
  • sudoの設定
  • zsh, vimのインストール
  • update-alternativesでvimをエディタのデフォルトに
  • 各種設定ファイルのコピー
  • MySQL, PHPのインストール

2011/12/26

  • ただでさえメモリの少ないVPSのリソースをApacheが食べまくってる状況を改善したい。
    • WebServerをnginxというのに変えることにした。

2012/01/07

  • VPSが突然落ちた。再起動してもどうにもならない。原因もわからない。
    • どうせなので修復ついでに一度試したかったことを試して見ることにした。
    • バックアップとっといてよかった。
  • btrfsを導入するついでに、homeとsystemという2つのsubvolumeを構築し、かつbtrfs bootを実現する実験。

インストーラの起動

  • まずVPSのコントロールパネルからDebianをインストール。この時自動インストールに頼らずコンソールに落ちてインストールを行う。
  • インストーラの操作を進めて、パーティションマネージャが起動したらAlt+F2でコンソールに落ちる。
  • fdiskでパーティションを以前行ったbtrfs bootのときと同じ構成に切る。
    • ただし、swapの予定地もswapではなく通常パーティションとして切る。
  • フォーマットする。

# mkfs.ext4 -b 4096 /dev/(/bootの場所)
# mkfs.btrfs /dev/(swapの場所)
# mkfs.btrfs /dev/(rootの場所)

踏み台環境でbtrfsを構築する

  • swap予定地に踏み台となる環境を作り、そこで本番のbtrfs環境を作る。

# mkdir /dist
# mount -t btrfs /dev/(swapの場所) /dist
# debootstrap squeeze /dist
# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# chroot /dist /bin/bash
  • sources.listを前回と同じように書き換える。
  • btrfs-toolsを入れる。

# aptitude update
# aptitude install btrfs-tools
  • マウントしてsubvolumeを切る。

# mount /dev/(rootの場所) /mnt
# btrfs sub create /mnt/system
# btrfs sub create /mnt/home
# umount /mnt
  • 踏み台環境を抜けだして破壊。

# exit
# umount /dist/dev
# umount /dist/proc
# umount /dist
  • fdiskを使って、踏み台環境だった場所をswapパーティションに変更。
  • swapファイルシステムを作成。

# mkswap /dev/(swapの場所)
  • ベースシステムをインストール。

# mount -t btrfs -o subvol=system /dev/(rootの場所) /dist
# mkdir /dist/boot
# mkdir /dist/home
# mount /dev/(/bootの場所) /dist/boot
# mount -t btrfs -o subvol=home /dev/(rootの場所) /dist/home
# chmod 755 /dist/home
# debootstrap squeeze /dist
  • chrootする。

# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# mount -o bind /sys /dist/sys
# chroot /dist /bin/bash
  • sources.listを前回と同じように編集。
  • 各種ツールを入手。

# apt-get update
# apt-get install btrfs-tools
# apt-get install linux-image-3.0.1-amd64
# apt-get install console-setup tzdata
# apt-get install ssh
  • grubを入れる。

# apt-get install grub2
# grub-install /dev/sda
# update-initramfs -t -u
# update-grub
  • /etc/fstabを編集。

proc               /proc  proc   defaults  0  0
/dev/(rootの場所)   /      btrfs  defaults,subvol=system  0  1
/dev/(rootの場所)   /home  btrfs  defaults,subvol=home    0  2
/dev/(/bootの場所)  /boot  ext4   noatime                 0  3
/dev/(swapの場所)   none   swap   sw                      0  0
  • chrootを抜けて、networkの設定。

# exit
# cp /etc/network/interfaces /dist/etc/network/interfaces
  • 再起動して、recovery modeで起動。
  • rootパスワードを設定。

# passwd
  • 再起動してrootでログイン。ここからはsshで作業可能。
  • zlib1g-dev zlibc kernel-package libncurses-dev bzip2をインストール。

カーネルを更新

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2 
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub

/bootをbtrfs化

  • /bootパーティションをbtrfsにコンバートする。

# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
  • /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
    • /dev/〜の表記をすべてblkidで調べて、UUID表記にしておく。

UUID=(UUID)   /boot   btrfs ......

grubの更新

# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub

alstamber/VirtualServerBuilding (最終更新日時 2012-04-18 22:11:53 更新者 alstamber)