2010年9月7日火曜日

ストレージサーバ - その3 - OSインストール

ストレージサーバを構築するに当たりOSをインストールします。
私の大好きなGentoo Linuxを使いますが、
情報が古いので気をつけてください。
また、IPアドレス等は適宜読み替えてください。

install-amd64-minimal-2007.0.iso でCDブートすると、
途中キーボードの種類をたずねられるので接続しているキーボードに合わせて選択ます。
一般的な日本語(106)キーボードなら"22"(jp)を選択する。
立ち上がったら以下を実行します。
# ifconfig eth0 192.168.0.100 broadcast 192.168.0.255 netmask 255.255.255.0 up
# route add default gw 192.168.1.1
# echo 'nameserver 192.168.1.1' >> /etc/resolv.conf
# passwd
# /etc/init.d/sshd start
これ以降はssh経由でのリモートログインが可能なので
そちらで操作することをお勧めします。
ちなみにアクセスするときは
$ ssh root@192.168.0.100
とする必要があります。

さて、パーティションを切ります。
# cfdisk /dev/sda
を実行し以下のように設定することにします。
   Name        Flags      Part Type  FS Type          [Label]        Size (MB)
------------------------------------------------------------------------------
   sda1        Boot        Primary   Linux                              131.61
   sda2                    Primary   Linux swap / Solaris              2048.10
   sda3                    Primary   Linux                            31445.25
   sda5                    Logical   Linux                            32769.52
   sda6                    Logical   Linux                            32769.52
   sda7                    Logical   Linux                            32769.52
   sda8                    Logical   Linux                            32761.30
以下を実行ます。
# mke2fs /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mke2fs -j /dev/sda3
# mke2fs -j /dev/sda5
# mke2fs -j /dev/sda6
# mke2fs -j /dev/sda7
# mke2fs -j /dev/sda8
# tune2fs -c 0 -i 0 /dev/sda1
# tune2fs -c 0 -i 0 /dev/sda3
# tune2fs -c 0 -i 0 /dev/sda5
# tune2fs -c 0 -i 0 /dev/sda6
# tune2fs -c 0 -i 0 /dev/sda7
# tune2fs -c 0 -i 0 /dev/sda8
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
# mkdir /mnt/gentoo/usr
# mount /dev/sda5 /mnt/gentoo/usr
# mkdir /mnt/gentoo/home
# mount /dev/sda6 /mnt/gentoo/home
# mkdir /mnt/gentoo/var
# mount /dev/sda7 /mnt/gentoo/var
# mkdir /mnt/gentoo/opt
# mount /dev/sda8 /mnt/gentoo/opt
以下のコマンドで時刻を確かめておきます。
# date
時計があっていなければ date コマンドで時刻を合わせます。
以下を実行ます。
# cd /mnt/gentoo
# wget ftp://rsync4.jp.gentoo.org/GENTOO/releases/amd64/2007.0/stages/stage3-amd64-2007.0.tar.bz2
# wget ftp://rsync4.jp.gentoo.org/GENTOO/releases/amd64/2007.0/stages/stage3-amd64-2007.0.tar.bz2.DIGESTS
# md5sum -c stage3-amd64-2007.0.tar.bz2.DIGESTS
# tar jxfp stage3-amd64-2007.0.tar.bz2
# wget http://gentoo.gg3.net/snapshots/portage-latest.tar.bz2
# wget http://gentoo.gg3.net/snapshots/portage-latest.tar.bz2.md5sum
# md5sum -c portage-latest.tar.bz2.md5sum
# tar jxf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
/mnt/gentoo/etc/make.conf を
# nano -w /mnt/gentoo/etc/make.conf
で開き、
CFLAGS="-O2 -pipe"
CFLAGS="-march=nocona -O2 -pipe"
へ変更。
MAKEOPTS="-j3"
を追加。
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
を実行するとサーバリストが表示されるので、Japanなものをとりあえずすべて選択。
以下を実行します。
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"
# emerge --sync --quiet
# echo 'en_US ISO-8859-1' >> /etc/locale.gen
# echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
# echo 'ja_JP.EUC-JP EUC-JP' >> /etc/locale.gen
# echo 'ja_JP.UTF-8 UTF-8' >> /etc/locale.gen
# echo 'ja_JP EUC-JP' >> /etc/locale.gen
# locale-gen
# cp /usr/share/zoneinfo/Japan /etc/localtime
# USE="-doc symlink" emerge gentoo-sources
# cd /usr/src/linux
# make menuconfig
でカーネルのカスタマイズができるので
Processor type and features  --->
Processor family (Intel Core2 / newer Xeon)  --->
/dev/cpu/microcode - Intel CPU microcode support
Device Drivers  --->
Multi-device support (RAID and LVM)  --->
  RAID support
    RAID-0 (striping) mode
    RAID-1 (mirroring) mode
のように変更します。
以下を実行します。
# make && make modules_install
# cp arch/x86_64/boot/bzImage /boot/kernel-2.6.22-gentoo-r5
# find /lib/modules/2.6.22-gentoo-r5/ -type f -iname '*.o' -or -iname '*.ko'
# echo 'raid0' >> /etc/modules.autoload.d/kernel-2.6
# echo 'raid1' >> /etc/modules.autoload.d/kernel-2.6
/etc/fstab の内容を
# nano -w /etc/fstab
を実行して以下のように変更します。
/dev/sda1               /boot           ext2            noauto,noatime  1 2
/dev/sda3               /               ext3            noatime         0 1
/dev/sda2               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      audo            noauto,ro       0 0
/dev/sda5               /usr            ext3            noatime         0 2
/dev/sda6               /home           ext3            noatime         0 2
/dev/sda7               /var            ext3            noatime         0 2
/dev/sda8               /opt            ext3            noatime         0 0
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec    0 0
none                    /proc           proc            defaults        0 0
/etc/conf.d/hostname の内容を
# nano -w /etc/conf.d/hostname
を実行して
HOSTNAME="localhost"
HOSTNAME="hoge"に変更します。
/etc/conf.d/domainname の内容を
# nano -w /etc/conf.d/domainname
を実行して
DNSDOMAIN="hoge.com"
を追加する。/etc/conf.d/net の内容を
# nano -w /etc/conf.d/net
を実行して
config_eth0=( "192.168.1.100 netmask 255.255.255.0 brd 192.168.1.255")
routes_eth0=( "default gw 192.168.1.1" )
を追加します。
# nano -w /etc/hosts
を実行して
127.0.0.1       localhost
の行を
127.0.0.1       hoge.hoge.com   hoge     localhost
に変更します。/etc/conf.d/keymaps の内容を
# nano -w /etc/conf.d/keymaps
を実行して
KEYMAP="us"
の行を
KEYMAP="jp106"
に変更します。/etc/conf.d/clock の内容を
# nano -w /etc/conf.d/clock
を実行して
CLOCK="UTC"
の行を
CLOCK="local"
に変更します。
以下を実行します。
# rc-update add net.eth0 default
# echo "tts/0" >> /etc/securetty
# passwd
# emerge syslog-ng
# rc-update add syslog-ng default
# emerge vixie-cron
# rc-update add vixie-cron default
# rc-update add sshd default
# emerge grub
/boot/grub/grub.conf の内容を
# nano -w /boot/grub/grub.conf
を実行して以下のように変更します。
default 0
timeout 10
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title=gentoo
root (hd0,0)
kernel /boot/kernel-2.6.22-gentoo-r5 root=/dev/sda3
/etc/inittab の内容を
# nano -w /etc/inittab
を実行して
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
を追加(コメントアウト)し、
ca:12345:ctrlaltdel:/sbin/shutdown -r now
ca:12345:ctrlaltdel:/sbin/shutdown -h now
に直します。
以下を実行します。
# grep -v rootfs /proc/mounts > /etc/mtab
# grub-install /dev/sda
# exit
# cd
# umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/boot
# umount /mnt/gentoo/usr /mnt/gentoo/home /mnt/gentoo/var /mnt/gentoo/opt
# umonnt /mnt/gentoo
# reboot
ブート時にCDは取り出してHDDからブートさせます。
以下を実行ます。
# useradd -m -G users,wheel -s /bin/bash ttanimu
# passwd ttanimu
# emerge app-editors/vim
# emerge app-arch/dump
# emerge sys-fs/mdadm
# rc-update add mdadm default
# cfdisk /dev/sdb
を実行し以下のように設定します。
ただし、FS Type の Linux raid autodetect の値は fd です。
   Name        Flags      Part Type  FS Type          [Label]        Size (MB)
------------------------------------------------------------------------------
   sdb1                    Primary   Linux raid autodetect           209999.63
   sdb2                    Primary   Linux raid autodetect           110070.70
# cfdisk /dev/sdc
を実行し以下のように設定します。
   Name        Flags      Part Type  FS Type          [Label]        Size (MB)
------------------------------------------------------------------------------
   sdc1                    Primary   Linux raid autodetect           209999.63
   sdc2                    Primary   Linux raid autodetect           110070.70
以下を実行します。
# mknod /dev/md1 b 9 1
# mknod /dev/md2 b 9 2
# mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# mdadm --create --verbose /dev/md2 --level=0 --raid-devices=2 /dev/sdb2 /dev/sdc2
# mke2fs -j /dev/md1
# mke2fs /dev/md2
# tune2fs -c 0 -i 0 /dev/md1
# tune2fs -c 0 -i 0 /dev/md2
# cd /mnt
# mkdir storage
# mkdir backup
# emerge mail-mta/ssmtp
# echo 'MAILADDR admin@hoge.com' >> /etc/mdadm.conf
/etc/ssmtp/ssmtp.conf の内容を
# vi /etc/ssmtp/ssmtp.conf
を実行して
mailhub=mail
の行を
mailhub=192.168.0.1
に変更します。/etc/fstab の内容を
# vi /etc/fstab
を実行して
/dev/md1                /mnt/storage    ext3            noatime         0 2
/dev/md2                /mnt/backup     ext2            noatime         0 2
の2行を追加します。以下を実行します。
# reboot
RAIDのフェールセーフの動作を確認しておきたければ、
# cat /proc/mdstat
でmd1(raid1)のresyncが100%になるまで待ち、
# mdadm /dev/md1 --fail /dev/sdb1
を実行してRAID1にわざと障害を起こして
"admin@hoge.com"宛てに通知メールが届くことを確認します。
その後
# mdadm /dev/md1 --remove /dev/sdb1
# mdadm /dev/md1 --add /dev/sdb1
を実行し回復させ、
# cat /proc/mdstat
でmd1(raid1)のrecoveryが100%になるまで一応待ち、完了です。

0 件のコメント:

コメントを投稿