ESXi上で仮想マシンテンプレートの構築 (その2 カーネルのコンパイルとGrubのインストール)

Image

本記事の以下の作業は、chroot環境で実行する。chroot環境で無い場合は、

sudo /mnt/lfs/chroot.sh

を実行する。

Linuxカーネルのコンパイル

まずは、コンパイルの準備。

cd /sources &&
tar Jxf linux-3.5.2.tar.xz &&
cd linux-3.5.2 &&
make mrproper &&
make defconfig

make defconfig で一般的なカーネルの設定を呼び出す。

次に、設定を編集する。

make LANG=C LC_ALL= menuconfig

ALFSの時と同様に、文字列が入力できない場合で、文字列の入力が必要な場合は、コンソールから実行するか、設定ファイルをテキストエディタで編集する。

Enable loadable module support
を無効に

Processor type and features -> Processor family
は、環境に合わせて、設定する。
Core 2/Newer Xeon

VMwareでは、SCSIは、
LSI Logic /Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
として認識されている。
Device Drivers -> Fusion MPT device support を有効にする。
展開して、
Fusion MPT ScsiHost drivers for SPI
Fusion MPT ScsiHost drivers for FC
Fusion MPT ScsiHost drivers for SAS
Fusion MPT misc device (ioctl) driver
の4つを有効にする。

VMwareでは、NICは、
AMD PCnet32 PCI
として認識されている。
Device Drivers -> Network device support -> Ethernet driver support ->
AMD PCnet32 PCI support
有効にする。
ついでに、
Device Drivers -> Network device support -> VMware VMXNET3 ethernet driver
も有効にした。

Device Drivers —>
Generic Driver Options —>
Maintain a devtmpfs filesystem to mount at /dev
を有効に

File system —> Second extended fs support
を有効にする。さらに出てくる子要素を全て有効にする。

File systems —>
Network File Systems:
NFS Client support 
とその子要素の適当なものが選択されていることを確認する。
NFS server support —>
NFS server support for NFS version 3 —>
NFS server support for the NFSv3 ACL protocol extension
NFS server support for NFS version 4 (EXPERIMENTAL)
を有効にする。

File systems —>
Kernel automounter version 4 support
が選択されていることを確認する
Network File Systems —>
CIFS support
を有効にする。子要素はチェックしない。

コンパイルの実行。

make &&
cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.5.2 &&
cp -v System.map /boot/System.map-3.5.2 &&
cp -v .config /boot/config-3.5.2 &&
install -d /usr/share/doc/linux-3.5.2 &&
cp -r Documentation/* /usr/share/doc/linux-3.5.2 &&
cd ../ &&
rm -rf linux-3.5.2

コンパイルしたカーネルや設定ファイルのバックアップを作成する。

mkdir /boot/backup-3.5.2-`date +%Y%m%d` &&
cp /boot/{vmlinuz-3.5.2,System.map-3.5.2,config-3.5.2} /boot/backup-3.5.2-`date +%Y%m%d`

GRUBのセットアップ

8.4. Using GRUB to Set Up the Boot Process に従って、GRUBをセットアップする。

grub-install /dev/sdb &&
cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,1)

menuentry "GNU/Linux, Linux 3.5.2" {
        linux /boot/vmlinuz-3.5.2 root=/dev/sda1 ro
}
EOF

後始末

9.1. The End に従って、LFSのバージョンをメモしておく。

echo "SVN-20120821 jhalfs" > /etc/lfs-release

rootパスワードを作成

passwd

ALFS構築用のソースファイルをバックアップする。ソースファイルは、ファイルサーバーのどこかに置いてあればよく、個別のVMに保存する必要は無い。chroot環境の外から

cp -R /mnt/lfs/sources ~/src-lfs-svn20120814 &&
cd ~ && tar Jcf src-lfs-svn20120814.tar.xz src-lfs-svn20120821 &&
scp src-lfs-svn20120821.tar.xz 192.168.0.11:~

最後にLFS環境構築用の一時ファイルを削除する。chroot環境で

rm -rf /jhalfs /sources /src-lfs /tools

ESXi上で仮想マシンテンプレートの構築 (その1 ALFSの実行)

作業日 2012/09/02

ESXi上で動かす仮想マシンのテンプレートを作成する。
手順としては、ALFSを利用してLFSシステムをセットアップした後、どのような用途の仮想マシンでも必要と思われるパッケージをインストールする。
今回の記事では、ALFSを実行し、設定ファイルの一部を編集するまで。

ホストとなるLinuxディストリビューションのインストール

LFSのセットアップには、ホストとなるLinuxシステムが必要である。
今回は、Ubuntu 12.04 Server 32bitを使用する。

まず、ESXi上にホストとなる仮想マシンを作成する。
仮想ディスクを2つ割り当て、片方はホストUbuntuのインストールに使用し、もう片方にLFSをセットアップする。
仮想デバイスノードに関しては、Utuntu用仮想ディスクは”SCSI (0:0)”を、LFS用仮想ディスクは”SCSI (0:1)”を設定。
今回、LFS用のディスクはデフォルト16GBを割り当てた。
実際に仮想マシンとして動作させる時には、ファイルをコピーして使用するので、ここでのディスクサイズは何でも良い。
ただ、あまり小さいとLFSのセットアップ中にいっぱいになる。2GBだとだめだった

Ubuntuのインストールは、”OpenSSH Server”を選択する。
言語やタイムゾーンは日本を選択した方が無難。

セットアップ後、IPアドレスを確認し、SSHで接続する。
以後は、SSH越しに操作。

ALFSの実行準備

まず、ALFSの実行に必要なパッケージをインストールする。

sudo apt-get -y install build-essential bison gawk texinfo subversion libncurses-dev libxml2-dev xsltproc

次に、LFSをセットアップする仮想ディスクを準備する。

sudo fdisk -l

でLFS用仮想ディスクが割り当てられたデバイスファイル名を確認する。
今回は、/dev/sdbだった。

sudo fdisk /dev/sdb

全域を使ってプライマリパーティションを作成する。
そして、フォーマットとマウント。

sudo mkfs.ext3 /dev/sdb1 &&
sudo mkdir /mnt/lfs &&
sudo mount /dev/sdb1 /mnt/lfs &&
sudo chmod 777 /mnt/lfs

マウントは、ホスト仮想マシンを再起動すると解除されるので、その都度

sudo mount /dev/sdb1 /mnt/lfs &&

を実行する必要がある。

JHALFSをダウンロード。リリース版は古すぎて最新のLFSには対応していないので、SVNを使用して開発版をダウンロードする。

cd ~ &&
svn co svn://svn.linuxfromscratch.org/ALFS/jhalfs/trunk jhalfs

ALFSの実行

mkdir /tmp/src-lfs &&
cd ~/jhalfs &&
make

makeを実行すると、カーネルのコンパイル時のような設定エディタが出てくる。内容を下記のように編集する。Poderosa等、一部のターミナルからだとキーボードから文字列が入力できない場合がある。その場合、コンソールからログインして操作するか、configファイルを後でテキストエディタで編集する。

BOOK Settings —> Release を Branch or stable book に
BOOK Settings —> Book Version を 7.2 に
General Settings —> Build Directory を /mnt/lfs に
General Settings —> Retrieve source files をオンに
General Settings —> Package Archive Directoryを /tmp/src-lfs に設定
General Settings —> Retry on ‘connection refused’ failure をオンに

Build Settings —> Tests level を All final system testsuites に
Build Settings —> Create a log of installed files for each package をオンに
Build Settings —> DO NOT use/display progress_bar をオンに(screenではうまく表示されないので)
Build Settings —> TimeZone を Asia/Tokyo に
Build Settings —> Language を ja_JP.UTF-8 に
Build Settings —> Groff page size を A4 に

設定をセーブし、確認画面でyを押すと、LFS Bookのダウンロードと、ソースのダウンロードを開始する。ここで、ダウンロードされないパッケージがあった場合は、ダウンロード先のサーバーが落ちている場合等なので、時間をおいてやり直すか、手動で別のサーバーからダウンロードして/tmp/src-lfsにコピーする。

もし、上記で BOOK Settings —> Book Version を SVN にした場合は、記録を残しておくために、実行したLFS Book自体もダウンロードしておく。

svn co svn://svn.linuxfromscratch.org/LFS/trunk/BOOK/ ~/LFS-SVN

そして、ALFSを実行する。screen上でやった方が無難。

cd /mnt/lfs/jhalfs &&
make

実行中は、何回かsudo用のパスワードを入力する必要がある。

ALFSの後始末と基本的な設定

chroot環境に入るためのスクリプトを作成する。

sudo sh -c "
cat > /mnt/lfs/root/chroot.sh << "EOF"
#!/bin/bash
mount -v --bind /dev /mnt/lfs/dev
mount -vt devpts devpts /mnt/lfs/dev/pts
mount -vt tmpfs shm /mnt/lfs/dev/shm
mount -vt proc proc /mnt/lfs/proc
mount -vt sysfs sysfs /mnt/lfs/sys
chroot /mnt/lfs /usr/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login +h
umount /mnt/lfs/sys
umount /mnt/lfs/proc
umount /mnt/lfs/dev/shm
umount /mnt/lfs/dev/pts
umount /mnt/lfs/dev
EOF" &&
sudo chmod +x /mnt/lfs/root/chroot.sh

以後、chroot環境に入るときは、

sudo /mnt/lfs/root/chroot.sh

を実行する。本記事の以後の操作は、全てchroot環境で実行する。

基本的な環境設定

これらの設定は、新しいLFS仮想マシンを起動した後、使用したい環境に合わせて再設定する。ここでは、とりあえず問題なく起動できる状態にすることを目指している。

7.2.2. Creating Network Interface Configuration Files は、IPアドレス等のNICの設定だが、これは後ほどDHCPクライアントをインストールする際に設定するので今回はスキップ。

7.2.3. Creating the /etc/resolv.conf Fileも、DHCPクライアントが自動的に作成するので本来は不要だが、chroot環境でwgetを実行するために当面必要なので作成する。

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

nameserver 192.168.0.1

# End /etc/resolv.conf
EOF

7.3. Customizing the /etc/hosts File に従って、/etc/hostsを作成する。

cat > /etc/hosts << "EOF"
# Begin /etc/hosts

127.0.0.1 localhost newvm.example.net newvm

# End /etc/hosts
EOF

IPアドレスはDHCPで取得するので/etc/hostsにはIPアドレスは書かない。

7.8. Configuring the system hostnameに従って、ホスト名を設定。

echo "HOSTNAME=newvm" > /etc/sysconfig/network

8.2. Creating the /etc/fstab Fileに従って、/etc/fstabを作成。

cat > /etc/fstab << "EOF"
# Begin /etc/fstab

# file system  mount-point  type     options             dump  fsck
#                                                              order

/dev/sda1      /            ext3     defaults            1     1
#/dev/sda2     swap         swap     pri=1               0     0
proc           /proc        proc     nosuid,noexec,nodev 0     0
sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
devpts         /dev/pts     devpts   gid=5,mode=620      0     0
tmpfs          /run         tmpfs    defaults            0     0
devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0

# End /etc/fstab
EOF

LFS用のディスクが/dev/sda1に割り当てられていることを仮定している。ESXiの設定で、仮想デバイスノードをSCSI (0:0)に設定すると、/dev/sdaになるはずである。

iSCSIサーバーのインストール (その3)

新たに2TBのディスクを3台追加して、RAID5を設定する。

500GBをマザーボードのSATAポートに、2TBx3を追加したSATAカードに接続する。
PCを起動すると、500GBが/dev/sda、2TBx3が/dev/sdb~c、USB stickが/dev/sdeで認識される。

RAID5の作成

sudo fdisk /dev/sdb
sudo fdisk /dev/sdc
sudo fdisk /dev/sdd

基本パーティションを1つずつ作成し、ディスクIDを0xfd (Linux raid auto detect) に設定する。

sudo mdadm --create /dev/md/datastore --level=5 --raid-devices=3 \
           /dev/sdb1 /dev/sdc1 /dev/sdd1

RAID5の構築には時間がかかる。

cat /proc/mdstat

で進捗が見られる。なお、この表示だとRAIDのデバイスファイル名が指定(/dev/md/datastore)と違うが、別に関係なく/dev/md/datastoreでもアクセスできるので大丈夫。

sudo cp /etc/mdadm/mdadm.conf{,.bak.20120313} &&
sudo sh -c "mdadm --detail --scan > /etc/mdadm/mdadm.conf"

適当に編集して

ARRAY /dev/md/vmstore metadata=1.2 UUID=493e9bab:bf4f4d93:13ae5ef2:1f277881
ARRAY /dev/md/datastore metadata=1.2 UUID=ae189551:89069074:6d0d79a4:e0c921a6

みたいにした。

initramを作り直す。

sudo update-initramfs -u

iSCSIターゲットの設定

sudo sh -c "
cat >> /etc/tgt/targets.conf << EOF
<target iqn.2012-03.net.example.domino:datastore>
    backing-store /dev/md/datastore
</target>
EOF"
sudo service tgt restart
sudo tgtadm --lld iscsi --op show --mode target

で状態を確認。

targets.confファイルに追記した場合、tidが逆になる(元々はvmstoreが1だったのが、今回vmstoreが2でdatastoreが1になる)ため、ESXiでターゲットを自動認識しなかった。改めてデータストアの追加をやり直したら問題は解決した。

WordPressにプラグインを追加

WordPressの管理Webインタフェースからプラグインを自動追加する機能があるみたいだが、FTPサーバーが必要みたいで微妙。Zipファイルから一旦ローカルにダウンロードして、 管理インタフェースからアップロードしてインストールする。 

まず、インストールしたいプラグインのZipファイルをダウンロードする。Dashboardのプラグイン検索画面からはZipファイルへのリンクはなさそうなので、適当にググって探してくる。

Dashboardの左のメニューからPluginsを選択し、Add newをクリック。上のメニューにUploadという項目があるので、そこからダウンロードしたZipファイルをアップロードしてインストール。

WordPressのインストール

作業日: 12 Mar. 2012

作業メモをblogで残すために、WordPressをインストール。
参考:

環境: Linodeサーバー上のLFS6.7ベースシステム

WordPressは、PHPとMySQLが必要だが、MySQLはまだインストールしていないのでインストールする。その場合PHPも再インストールが必要。依存関係をいろいろ考え、

  1. expat-2.0.1
  2. libxml2-2.7.8
  3. libarchive-2.8.5
  4. cURL-7.24.0
  5. CMake-2.8.6
  6. MySQL-5.5.21
  7. PHP-5.3.8
  8. WordPress-3.3.1

の順にインストール。

1. expat-2.0.1

patch -Np1 -i ../expat-2.0.1-fixes-3.patch &&
./configure --prefix=/usr &&
make
sudo make install &&
sudo install -v -m755 -d /usr/share/doc/expat-2.0.1 &&
sudo install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.0.1

2. libxml2-2.7.8

./configure --prefix=/usr &&
make &&
sudo make install

テストはしない。

3. libarchive-2.8.5

wget http://libarchive.googlecode.com/files/libarchive-2.8.5.tar.gz &&
tar zxf libarchive-2.8.5.tar.gz &&
cd libarchive-2.8.5 &&
./configure --prefix=/usr &&
make &&
make check
sudo make install &&
cd ../ &&
rm -rf libarchive-2.8.5

4. cURL-7.24.0

wget http://curl.haxx.se/download/curl-7.24.0.tar.bz2 &&
tar jxf curl-7.24.0.tar.bz2 &&
cd curl-7.24.0 &&
./configure --prefix=/usr --disable-static \
            --with-ca-path=/etc/ssl/certs &&
make &&
make check
sudo make install &&
sudo find docs \( -name "Makefile*" -o -name "*.1" -o -name "*.3" \) \
          -exec rm {} \; &&
sudo install -v -d -m755 /usr/share/doc/curl-7.24.0 &&
sudo cp -v -R docs/* /usr/share/doc/curl-7.24.0 &&
cd ../ &&
rm -rf curl-7.24.0

5. CMake-2.8.6

wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz &&
tar zxf cmake-2.8.6.tar.gz &&
cd cmake-2.8.6 &&
./bootstrap --prefix=/usr \
            --system-libs \
            --mandir=/share/man \
            --docdir=/share/doc/cmake-2.8.6 &&
make &&
make test
sudo make install &&
cd ../ &&
rm -rf cmake-2.8.6

6. MySQL-5.5.21

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.21.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/ &&
tar zxf mysql-5.5.21.tar.gz &&
cd mysql-5.5.21 &&
sudo /usr/sbin/groupadd -g 40 mysql &&
sudo /usr/sbin/useradd -c "MySQL Server" -d /dev/null -g mysql \
                       -s /bin/false -u 40 mysql &&
cmake . \
      -DSYSCONFDIR=/etc \
      -DMYSQL_DATADIR=/srv/mysql \
      -DINSTALL_MYSQLDATADIR=/srv/mysql \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DINSTALL_BINDIR=bin \
      -DINSTALL_SBINDIR=sbin \
      -DINSTALL_DOCDIR=share/doc/mysql \
      -DINSTALL_DOCREADMEDIR=share/doc/mysql \
      -DINSTALL_INCLUDEDIR=include/mysql \
      -DINSTALL_INFODIR=share/info \
      -DINSTALL_LIBDIR=lib \
      -DINSTALL_MANDIR=share/man \
      -DINSTALL_MYSQLSHAREDIR=share/mysql \
      -DINSTALL_MYSQLTESTDIR=share/mysql-test \
      -DINSTALL_PLUGINDIR=lib/plugin \
      -DINSTALL_SCRIPTDIR=bin \
      -DINSTALL_SHAREDIR=share/mysql \
      -DINSTALL_SQLBENCHDIR=share/mysql-bench \
      -DINSTALL_SUPPORTFILESDIR=share/mysql/support-files \
      -DWITH_ZLIB=system \
      -DWITH_SSL=system \
      -DWITH_READLINE=system \
      -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
      -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
      -DWITH_FEDERATED_STORAGE_ENGINE=1 \
      -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
      -DMYSQL_MAINTAINER_MODE=OFF \
      -DWITH_DEBUG=OFF &&
make
SEGMENTS="Client Server IniFiles ManPages"
SEGMENTS="$SEGMENTS Development Documentation Info Readme"
for segment in $SEGMENTS; do
    sudo cmake -DCMAKE_INSTALL_COMPONENT=$segment -P cmake_install.cmake
done
unset SEGMENTS
sudo install -v -m644 /usr/share/mysql/support-files/my-medium.cnf \
             /etc/my.cnf &&
sudo mysql_install_db --basedir=/usr --datadir=/srv/mysql \
                      --user=mysql &&
sudo chgrp -v mysql /srv/mysql{,/test,/mysql} &&
sudo install -v -m755 -o mysql -g mysql -d /var/run/mysql &&
sudo mysqld_safe --user=mysql 2>&1 > /dev/null &

パスワードを設定。****を置き換える。

sudo mysqladmin -u root password ****
sudo mysqladmin -p shutdown &&
cd ../ &&
rm -rf mysql-5.5.21

MySQLのブートスクリプト

wget http://www.linuxfromscratch.org/blfs/downloads/svn/blfs-bootscripts-20120305.tar.bz2 &&
tar jxf blfs-bootscripts-20120305.tar.bz2 &&
cd blfs-bootscripts-20120305 &&
sudo make install-mysql &&
cd ../ &&
rm -rf blfs-bootscripts-20120305

ブートスクリプトは、paranoiaのLFS6.7に対応していないので、適宜修正する。

#!/bin/sh
########################################################################
# Begin /etc/init.d/mysql
#
# Description : Start MysSQL Server
#
# Author      : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version     : LFS 7.0
#
########################################################################

### BEGIN INIT INFO
# Provides:            mysql
# Required-Start:      $network
# Should-Start:        $remote_fs
# Required-Stop:       $network
# Should-Stop:         $remote_fs
# Default-Start:       3 4 5
# Default-Stop:        0 1 2 6
# Short-Description:   Starts MySQL server.
# Description:         Starts MySQL server.
# X-LFS-Provided-By:   BLFS / LFS 7.0
### END INIT INFO

. /etc/sysconfig/rc
. $rc_functions

#$LastChangedBy: dj $
#$Date: 2011-12-05 07:38:40 +0000 (Mon, 05 Dec 2011) $

PIDFILE=/srv/mysql/`/bin/hostname`.pid

case "$1" in
   start)
      boot_mesg "Starting MySQL daemon..."

      # Make sure the mysql user can create a socket
      mkdir -p /run/mysql
      chown mysql.mysql /run/mysql

      if [ -f "$PIDFILE" ]; then
         if /bin/ps --pid `cat $PIDFILE` | grep mysqld >/dev/null; then
           boot_mesg "\n   mysqld already running!"  #warning
            exit 0
         else
            rm -f "$PIDFILE"
            if [ -f "$PIDFILE" ]; then
               #log_failure_msg2
               boot_mesg "\n failure"
               exit 1
            fi
         fi
      fi

      /usr/bin/mysqld_safe --user=mysql 2>&1 >/dev/null &
      evaluate_retval
      ;;

   stop)
      boot_mesg "Stopping MySQL daemon..."
      killproc -p ${PIDFILE} /usr/sbin/mysqld
      evaluate_retval
      ;;

   reload)
      bootmesg "Reloading MySQL ..."
      killproc -p ${PIDFILE} /usr/sbin/mysqld -HUP
      evaluate_retval
      ;;

   restart)
      $0 stop
      sleep 1
      $0 start
      ;;

   status)
      statusproc /usr/sbin/mysqld
      ;;

   *)
      echo "Usage: $0 {start|stop|reload|restart|status}"
      exit 1
      ;;
esac

# End /etc/init.d/mysql

のようにした。

7. PHP-5.3.8 の再インストール

wget http://us2.php.net/distributions/php-5.3.8.tar.bz2 &&
tar jxf php-5.3.8.tar.bz2 &&
cd php-5.3.8 &&
./configure --prefix=/usr \
            --sysconfdir=/etc \
            --with-apxs2 \
            --with-config-file-path=/etc \
            --with-zlib \
            --enable-bcmath \
            --with-bz2 \
            --enable-calendar \
            --enable-dba=shared \
            --with-gdbm \
            --with-gmp \
            --enable-ftp \
            --with-gettext \
            --enable-mbstring \
            --with-readline \
            --with-openssl \
            --with-mysql \
            --with-mcrypt \
            --with-pgsql \
            --with-pdo-pgsql &&
make
sudo make install &&
sudo install -v -m644 php.ini-production /etc/php.ini &&
sudo install -v -m755 -d /usr/share/doc/php-5.3.8 &&
sudo install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS \
                      README* TODO* UPGRADING php.gif \
             /usr/share/doc/php-5.3.8 &&
sudo ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
        /usr/share/doc/php-5.3.8 &&
sudo ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \
        /usr/share/doc/php-5.3.8

Apacheを再起動

sudo /etc/rc.d/init.d/apache stop &&
sudo /etc/rc.d/init.d/apache start

restartだとうまくいかなかった。

8. WordPress-3.3.1のインストール

http://wpdocs.sourceforge.jp/WordPress_のインストールを参考にした。

wget http://wordpress.org/latest.tar.gz &&
tar zxf latest.tar.gz &&
sudo mv -R wordpress /srv/www/htdocs/blog &&
sudo chown -R apache:apache /srv/www/htdocs/blog

作業日時点での最新版は、3.3.1だった。

WordPress専用ユーザーを追加する。

mysql -u root -p
mysql> CREATE DATABASE databasename;
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "username"@"localhost"
-> IDENTIFIED BY "password";
mysql> FLUSH PRIVILEGES;
mysql> EXIT

databasename、username、passwordは適宜変更。

ブラウザからhttp://www.songanatomy.info/blog/にアクセスし、指示に従って進んで行くと、mysqlのユーザー名等を入力させられる。そして出てきた画面を、
/srv/www/htdocs/blog/wp-config.php
にコピペする。そして、進んで行き、ブログタイトル、ユーザー名等の情報を入れるとブログが完成。

iSCSIサーバーのインストール (その2)

今回は、ハードディスクを接続し、iSCSIターゲットとして設定するまで。

将来的には、ESXiのデータストアとして500GBx2程度のRAID1と、ファイルサーバー用のディスク領域として(iSCSI越しに)直接マウントして使用する2TBx3のRAID5を構成する。まずは、500MBx1でDegraded RAID1として設定し、iSCSIで問題なく使えるかを確認する。

電源が停止した状態で、500GBのハードディスクを接続した。電源を投入すると、OSは無事に起動。ただ、ここでUSBメモリが/dev/sdbになり、ハードディスクが/dev/sdaになった。
/etc/fstabはUUIDで設定されているので、大きな問題ではない。とは言っても、ハードディスクの順番はSATAのポートの位置によって変化するので、ディスクのデバイスファイル名に依存しない構成にすべき。

必要なパッケージのインストール

まず、iSCSIターゲットとRAIDの管理ツールをインストールする。

sudo apt-get install mdadm &&
sudo apt-get install tgt &&
sudo service tgt start

mdadmのインストールの際に、postfixもついでにインストールされ、設定が画面が出てくる。メールサーバーとしては使わないので、構成としてLocal onlyを選択する。System mail nameは、domino.example.netとする。

RAID1の設定

/dev/sdaに認識されているディスクを使用して、degraded RAID1を設定する。まず、/dev/sdaをfdiskする。

sudo fdisk /dev/sda

基本パーティションを1つ作成し、ディスクIDを0xfd (Linux raid auto detect) に設定する。
次に、degraded RAID1を設定する。

sudo mdadm --create /dev/md/vmstore --level=1 --raid-devices=2 \
           /dev/sda1 missing

これで、片方のディスクが欠損しているRAID1として運用される。現在のRAIDの状態は、

cat /proc/mdstat

で見ることができる。

RAIDドライブがどのデバイスファイルに割り当てられるかは起動時に勝手に決まってしまうので、設定ファイル/etc/mdadm/mdadm.confを書くことでそれを固定化する。ただし、設定ファイルが存在すると、設定ファイルの書かれているRAIDしか認識しなくなるので注意が必要。

まず、現在の構成を/etc/mdadm/mdadm.confに書き出す。

sudo sh -c "mdadm --detail --scan >> /etc/mdadm/mdadm.conf"

適当に編集して、

ARRAY /dev/md/vmstore metadata=1.2 UUID=493e9bab:bf4f4d93:13ae5ef2:1f277881

のようにする(ただし、UUIDは環境依存)。

/etc/mdadm/mdadm.confを編集した後は、initramを作り直す必要がある。

sudo update-initramfs -u

これで再起動すると、このRAIDはdegradedの状態なので、ブートスクリプトの途中でエラーが出て、そこで手動でyを入力しないと起動しない。当面は暫定処置としてこのままで運用する。早くちゃんとしたRAIDにしなければ。

iSCSI設定のテスト

iSCSIターゲットをコマンドライン上で設定し、ESXiから認識できるかを確認する。

sudo tgtadm --lld iscsi --op new --mode target --tid 1 \
     --targetname iqn.2012-03.net.example.domino:vmstore
sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 \
     --backing-store /dev/md/vmstore
sudo tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

tidは0ではうまくいかなかった。lunは0はコントローラなので、1から順に指定する。

下記コマンドで状態を確認できるので、適宜確認する。

sudo tgtadm --lld iscsi --op show --mode target

vSphere Clientで 構成->ハードウェア->ストレージアダプタ から、iSCSI Software Adapterを追加し、Propertyから動的検出で192.168.0.3を指定する。今回設定したターゲットが見えることを確認。

iSCSI設定の固定化

コマンドラインから設定した内容は、iSCSIターゲットを再起動するとすべて忘れてしまう。そのため、設定ファイルに書いて、起動時に自動で設定するようにする。

sudo sh -c "
cat > /etc/tgt/targets.conf << EOF
<target iqn.2012-03.net.example.domino:vmstore>
    backing-store /dev/md/vmstore
</target>
EOF"
sudo service tgt restart

でiSCSIターゲットを再起動しても、PC自体を再起動しても、無事にESXiから見えることを確認。

iSCSIサーバーのセットアップ (その1)

iSCSIサーバーをインストールして、VMWare ESXiのターゲットとして使用する。
今回は、とりあえずOSをインストールして起動するところまで。

計算機の仕様

  • メインボード: Intel D2500HN
  • CPU: Intel Atom D2500 (on-board)
  • Memory: 4GB x 1
  • NIC: Intel 1Gbps
  • 起動ディスク: 4GB USB stick

CentOS 6.2のインストール(失敗)

CentOS 6.4をUSBメモリにインストールして再起動する。Grubコンソールが出てきて、USBメモリをディスクとして認識していない模様。原因は不明だがGrubのバージョンの問題か?

Ubuntu Server 11.10 64bitをインストール

  • IPアドレス: 192.168.0.3
  • Hostname: domino

追加機能としてはSSH Serverのみをインストール。起動後、SSH越しにログインできることを確認。今回は成功。

まず最初に、

sudo apt-get update
sudo apt-get upgrade

でソフトウェアを更新。

ESXiサーバーのセットアップ

VMware vSphere Hypervisor 5 (ESXi 5) をインストールする。

計算機の仕様

  • メインボード: Intel S1200KP (Server board)
  • CPU: Intel Xeon E3-1225
  • Memory: 4GB x 2 (ECC, unbuffered)
  • NIC: Intel 1Gbps x 2
  • 起動ディスク: 4GB USB stick

インストール

4GBのUSBメモリにインストール。インストール後、コンソールからルートパスワード、IPアドレス等変更、SSH、ESXi ShellをEnableに設定する。

  • IPアドレス: 192.168.0.2
  • Hostname: grenade

vSphere Clientからのアクセス

LAN内からだと、https://192.168.0.2/から、vSphere Clientをダウンロードできる。

インストール後、vSphere ClientからIPアドレス: 192.168.0.2、ユーザー名: rootでログイン可能なことを確認する。