2014年3月22日土曜日

VM作成〜ネットワーク設定まで一連のまとめ








一度KVM上でVMを作成しましたが、
ぶっ壊すことになったので
最初から作り直し。

んで、
この際なのでね。

一連の行程をまとめて書いておきます。


再度壊すようなことがないように
バックアップ(ここではsnapshot)を取るところも含めてまとめます。



最初に

コマンドは文頭に#を置いて表現してます。
# vi /etc/'ファイル名' の様な表記の場合、
viコマンドを使用、' 'で囲まれた部分は適当な文字に置き換える、(その際は ' (←シングルクォーテーション)は省略してよい)という意味になります。

○ vi /etc/hogehoge.txt
× vi /etc/'hogehoge.txt'





環境

ホストOS側
# less /etc/os-release
NAME=Fedora
VERSION="20 (Heisenbug)"
ID=fedora
VERSION_ID=20
PRETTY_NAME="Fedora 20 (Heisenbug)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:20"
HOME_URL="https://fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=20
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=20



ゲストOS
CentOS release 6.4 (Final)
.iso形式でOSイメージを手元に用意します。





VM作成

kvm環境は既に構築されてあるものとします。

イメージの作成

# qemu-img create -f qcow2 /mnt/naka_alti.img 1024G

naka_alti.imgというイメージを作成
最後の引数でsizeを指定してます。
この場合1TBのVMを作成するってことですね。

↓このようなものが出力されるはず。
Formatting '/mnt/naka_alti.img', fmt=qcow2 size=1099511627776 encryption=off cluster_size=65536 lazy_refcounts=off

/mnt以下に作ってますが、特に意味は無いです。
普通は/kvmの下とかに置くのかな?


次。


OSのインストール

# virt-install --connect qemu:///system \
--name naka_alti2 \
--vcpus 1 \
--ram=3072 \
--hvm \
--location /'CentOSのisoイメージのフルパス' \
--os-type=Linux \
--os-variant=virtio26 \
--disk=/mnt/naka_alti.img \
--accelerate \
--extra-args='console=tty0 console=ttyS0,115200n8'

見やすくするために
改行入れてます。

本当ならこんな感じ。
# virt-install --connect qemu:///system --name naka_alti2 --vcpus 1 --ram=3072 --hvm --location /'CentOSのisoイメージのフルパス' --os-type=Linux --os-variant=virtio26 --disk=/mnt/naka_alti.img --accelerate --extra-args='console=tty0 console=ttyS0,115200n8'


--name VMの名前の指定
--vcpus 仮想コア数
--ram  メモリ(単位はMB)
--hvm  完全仮想化
--location インストールするOSのイメージの場所の指定
--os-variant よく分かってない
--disk さっき作ったVMのイメージのパスを指定
--accelerate よく分かってない
--exrtra-args ゲストOSのコンソールを表示するための設定。これ書かないとゲスト側のコンソールが見れなくてかなり困る。







ゲストOS側のコンソールに切り替わる


インストール手順はこんな感じ

1.Disc Found画面が表示されるので、Skipを選択する。
2.Welcome to CentOS! の表示が出るのでOKを選択。
3.Language Selection画面では、jを押してjapaneseを選択してOKを押す。
4.Language Unavailableと出るが、OKを選択する。
5.Warning Error processing drive: と出たら、Re-initialize allを選択する。
6.Time Zone Selectionでは、SpaceでSystem clock uses UTCのチェックを外し、
Asia/Tokyoを選択してからOKを押す。
7.rootユーザーのパスワードを設定する。設定が完了したらOKを押す。
8.Partitioning Type画面が表示されたら、Use entire driveを選択する。
vda 20480 MB (Virtio Block Device)にチェックが入ってることを確認し、OKを押す。
9.Writing storage configuration to disk画面が表示されるので、Write changes to diskを選択する。
10.インストールが開始される
11.インストールが完了したら、Rebootを選択する。
12. localhost.localdomain login: が表示されたら、rootを入力
13. rootのpasswdを入力し、ログインする。




はい、ひとまずゲストOSのインストールは完了です。




ネットワーク設定


ホスト側のブリッジとかの設定は既に終えているものとします。
その辺は前のblogに書いてあったと思うし、省略。

ゲストOS側のネットワーク設定


# vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
DEVICE=eth0
HWADDR='自動入力されてる'
UUID='自動入力されてる'
ONBOOT=yes
NM_CONTROLLED=yes
IPV4_FAILURE_FATAL=no

NETWORK='192.168.xxx.xxx'
BROADCAST=192.168.xxx.255
IPADDR=192.168.xxx.xxx
NETMASK=255.255.255.xxx
GATEWAY=192.168.xxx.254

IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=xxxx:xxx:xx:xxxx::182/64
IPV6_DEFAULTGW=xxxx:xxx:xx:xxxx::1
IPV6_DEFAULTDEV=eth0



静的アドレス(static)を割り当ててます。
アドレスのとこの表記はてきとーです。
適切なアドレスを割り振って下さいな。





DNSサーバーの指定

# vi /etc/resolv.conf
nameserver 192.168.xx.2


これまた
アドレスはてきとーです。

適切な(ry






SELinuxの無効化


# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ←変更後
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted






ネットワークの起動とホスト名の指定


# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=naka_alti.server ←変更
NETWORKING_IPv6=yes  ←追記






ここで一度ネットワーク設定を適用させるために
serviceコマンドでネットワークを再起動させます。

# service network restart


stop してからの startでもいいけど。








userの追加

# useradd naka_alti
# passwd naka_alti
ユーザー naka_alti のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。



追加したuserをwheelグループに登録


# visudo

## Same thing without a password
# %wheel ALL=(ALL) ALL  ←変更



# vi /etc/group
wheel:x:10:root,naka_alti  ←変更






一旦rebootしておきますか。




まさかのエラー

dracut Warning: dracut: FATAL: Initial SELinux policy load failed. Machine in enforcing mode. To disable selinux, add selinux=0 to the kernel command line.
dracut Warning: dracut: Refusing to continue
Kernel panic - not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.32-358.el6.x86_64 #1
Call Trace:
[] ? panic+0xa7/0x16f
[] ? do_exit+0x862/0x870
[] ? fput+0x25/0x30
[] ? do_group_exit+0x58/0xd0
[] ? sys_exit_group+0x17/0x20
[] ? system_call_fastpath+0x16/0x1b


kernel panicだと。

実はSELinuxの設定の際に誤字がありましてこのような結果になったのだと後になって気付きました。
とりあえずこのときに取った対処法もまとめて書いておきます。




エラーの対処


ctl+]で一度抜けてホスト側に行く。
# virsh destroy naka_alti2

# virsh start naka_alti2
から速攻で
# virsh console naka_alti2
をやって、


GNU GRUB version 0.97 (639K lower / 3144696K upper memory)

+-------------------------------------------------------------------------+
| CentOS (2.6.32-358.el6.x86_64) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press enter to boot the selected OS, 'e' to edit the
commands before booting, 'a' to modify the kernel arguments
before booting, or 'c' for a command-line.

この画面で e を押す。




GNU GRUB version 0.97 (639K lower / 3144696K upper memory)

+-------------------------------------------------------------------------+
| root (hd0,0) |
| kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv> |
| initrd /initramfs-2.6.32-358.el6.x86_64.img |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+-------------------------------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted.
Press 'b' to boot, 'e' to edit the selected command in the
boot sequence, 'c' for a command-line, 'o' to open a new line
after ('O' for before) the selected line, 'd' to remove the
selected line, or escape to go back to the main menu.

上から2つ目のkernelのとこで再度 e を。




[ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.  ESC at any time cancels.  ENTER
   at any time accepts your changes.]


<NG=ja_JP.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM enforcing=0  


最後のenforcing=0
ってのが追記した部分。

Enterで編集決定。
b でboot。

ログインできました。

なんだったんだろ。
なんか毎回kernel panicなるので
ならないように設定。
↑先ほど述べた様に、SELinuxの設定の際に(ry



# vi /boot/grub/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
serial --unit=0 --speed=115200
terminal --timeout=5 serial console
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto console=ttyS0,115200n8 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM enforcing=0   ←enforcing=0を追記
        initrd /initramfs-2.6.32-358.el6.x86_64.img



最後から2行目の最後に追記




これでrebootしても大丈夫。
↑先ほど述べた様に、SELinuxの(ry
なのでちゃんと設定ミスってなければrebootしてもこんなエラーは吐かれないでしょう。ね。






セキュリティ設定



# vi /etc/hosts.deny

#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
ALL: ALL



# vi /etc/hosts.allow

#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 192.168.xx.xxx/xx [xxxx:xxx:xx:xxxx::x/xx]


sshログインを許すアドレス帯を明記してくださいな。






バックアップをとる


OSを入れて、ネットワーク設定だけが済んだこの状態を保存しておいて
いつでもこの状態に戻せる様にバックアップを取っておきます。



ホストOSのvirsh状態に入って
まずVMを停める
# destroy naka_alti2

スナップショット(現在の状態のバックアップ)を取る。

# snapshot-create-as naka_alti2 naka2-init
ドメインのスナップショット naka2-init が作成されました

確認

# snapshot-list naka_alti2
名前 作成時間 状態
------------------------------------------------------------
naka2-init 2014-03-17 17:24:27 +0900 shutoff

適用するときは、これもVM停止中に、ホストOSのvirsh状態から
# snapshot-revert naka_alti2 naka2-init
をすると、VMがsnapshotを取った時の状態に戻ります。







snapshot自体はいくつも作れるみたいなので、
自分が残したいときの状態を残せるので便利です。

自分は環境構築のときにミスって要らないのをインストールしてしまったとき等に
これを使って後戻りできるようにする、みたいな使い方をしてます。

その方が楽だもんね。(´・ω・`)w

0 件のコメント:

コメントを投稿