作者 主題: Ubuntu8.04 LAMP 實體主機虛擬化-轉換到 vbox 筆記  (閱讀 2591 次)

0 會員 與 1 訪客 正在閱讀本文。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
先說明一下環境

代碼: [選擇]
$ cat /etc/release
             OpenIndiana Development oi_151.1.7 X86 (powered by illumos)
        Copyright 2011 Oracle and/or its affiliates. All rights reserved.
                        Use is subject to license terms.
                           Assembled 03 October 2012

這台是目標主機,使用 zfs raidz2(2T hdd x5),舊系統要打包備份移到這台開 vbox vm 來跑
本來是打算使用 kvm,但是 oi 的 kvm 目前還未支援 amd cpu,因此就改用自己比較熟悉的 vbox

舊系統如下

代碼: [選擇]
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda5
UUID=a8fadcf3-dc98-48f6-bcbb-24a400ae693d /               ext3    relatime,errors=remount-ro 0       1
# /dev/sda1
UUID=0c401de5-24d9-48bb-aa4f-076c8fafa2d1 /boot           ext3    relatime        0       2
# /dev/sda2
UUID=693622d8-5b04-4abf-a2b8-c1856752a8b2 /com            ext3    relatime        0       2
UUID=693622d8-5b04-4abf-a2b8-c1856752a8b2 /var/www        ext3    relatime        0       2
# /dev/sda3
UUID=fd405849-c831-4f42-bb21-f8cb371c2df4 /var/lib/mysql  ext3    relatime        0       2


代碼: [選擇]
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5              44G   31G   11G  75% /
varrun                3.9G  208K  3.9G   1% /var/run
varlock               3.9G     0  3.9G   0% /var/lock
udev                  3.9G   44K  3.9G   1% /dev
devshm                3.9G     0  3.9G   0% /dev/shm
/dev/sda1              99M   24M   71M  26% /boot
/dev/sda2             568G  4.5G  534G   1% /com
/dev/sda2             568G  4.5G  534G   1% /var/www
/dev/sda3              61G  2.8G   55G   5% /var/lib/mysql

代碼: [選擇]
$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0005a1a0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       76503   614405925   83  Linux
/dev/sda3           76504       84444    63786082+  83  Linux
/dev/sda4           84445       91201    54275602+   5  Extended
/dev/sda5           84445       90181    46082421   83  Linux
/dev/sda6           90182       91201     8193118+  82  Linux swap / Solaris

---
舊系統打包的資料直接放 zfs,ssh 登入舊系統掛載分享出來的 zfs,

代碼: [選擇]
$ sudo mount -t nfs -o rsize=32768,nosuid 192.168.x.2xx:/zPool/sHome /home/yamaka/zfs
VBoxManage 有提供由 dd 倒過來的資料直接轉為 vdi 的功能
可以複製整棵硬碟轉換為 vbox vdi 檔

代碼: [選擇]
$ sudo dd if=/dev/sda | VBoxManage convertfromraw stdin Ubuntu804Server.vdi 750156374016
最後面的數字需由 fdisk -l 取得

跑了好久,發現是整個硬碟容量轉換,不會忽略空白部分,也就是說轉換後的 vdi 會有 750GB,放棄!!
改用分割區各別 dd 並壓縮成 gz 檔


先複製 MBR(/dev/sda)
代碼: [選擇]
$ sudo dd if=/dev/sda of=~/zfs/Ubuntu804Server-sda.mbr bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0519335 s, 9.9 kB/s

複製開機區 /boot(/dev/sda1)
代碼: [選擇]
$ sudo dd if=/dev/sda1 | gzip > ~/zfs/Ubuntu804Server-ip213-dd-sda1-boot.gz
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 3.23104 s, 33.1 MB/s

複製主系統 / (/dev/sda5)
代碼: [選擇]
$ sudo dd if=/dev/sda5 | gzip > ~/zfs/Ubuntu804Server-ip213-dd-sda5-sys.gz
92164842+0 records in
92164842+0 records out
47188399104 bytes (47 GB) copied, 2950.33 s, 16.0 MB/s

其他分割區因為實際資料量遠小於分割區大小,用 tar 打包壓縮就好了

打包 /var/lib/mysql (/dev/sda3)
代碼: [選擇]
$ sudo -i
# tar -zcf /home/xxxxxx/zfs/Ubuntu804Server-ip213-mysql.tar.gz /var/lib/mysql

打包 /var/www (/dev/sda2)
代碼: [選擇]
# tar -zcf /home/xxxxxx/zfs/Ubuntu804Server-ip213-www-com.tar.gz /com
# exit
$ ls /home/xxxxxx/zfs/Ubuntu804* -lh
-rw-r--r-- 1   1000   1000  31M 2013-06-27 02:07 Ubuntu804Server-ip213-dd-sda1-boot.gz
-rw-r--r-- 1   1000   1000  17G 2013-06-27 03:02 Ubuntu804Server-ip213-dd-sda5-sys.gz
-rw-r--r-- 1   1000   1000 689M 2013-06-27 16:35 Ubuntu804Server-ip213-mysql.tar.gz
-rw-r--r-- 1   1000   1000 3.6G 2013-06-27 16:52 Ubuntu804Server-ip213-www-com.tar.gz
-rw-r--r-- 1   1000   1000  512 2013-06-27 12:28 Ubuntu804Server-sda.mbr
$

舊主機就這樣嚕,可以關機了 ^_^


-----
ssh 到 oi 主機建立新的 vbox vm,vbox 之前就已經安裝好的,不過還是貼一下安裝過程..

================
下載與安裝 VBox (以下參考 oi 官網),最新版本可以到 vbox 官網查看

https://www.virtualbox.org/wiki/Downloads

引用
VirtualBox binaries

By downloading, you agree to the terms and conditions of the respective license.

  VirtualBox platform packages. The binaries are released under the terms of the GPL version 2.
    VirtualBox 4.2.16 for Windows hosts  x86/amd64
    VirtualBox 4.2.16 for OS X hosts  x86/amd64
    VirtualBox 4.2.16 for Linux hosts
    VirtualBox 4.2.16 for Solaris hosts  x86/amd64

  VirtualBox 4.2.16 Oracle VM VirtualBox Extension Pack  All supported platforms

開始下載與安裝

代碼: [選擇]
$ export VBVERSION=4.2.14
$ wget http://download.virtualbox.org/virtualbox/${VBVERSION}/VirtualBox-${VBVERSION}-86644-SunOS.tar.gz
$ wget http://download.virtualbox.org/virtualbox/${VBVERSION}/Oracle_VM_VirtualBox_Extension_Pack-${VBVERSION}-86644.vbox-extpack
$ sha256sum VirtualBox-${VBVERSION}-86644-SunOS.tar.gz
$ sha256sum Oracle_VM_VirtualBox_Extension_Pack-${VBVERSION}-86644.vbox-extpack
$
$ tar -zxf VirtualBox-${VBVERSION}-86644-SunOS.tar.gz
$ sudo pkgadd -d VirtualBox-${VBVERSION}-SunOS-r86644.pkg -n -a autoresponse SUNWvbox
Checking package dependencies...
Done.
Checking for older bits...
Installing new ones...
Detected Solaris 11 Version 151
Loading VirtualBox kernel modules...
   - Loaded: Host module
   - Loaded: NetAdapter module
   - Loaded: NetFilter (STREAMS) module
   - Loaded: USBMonitor module
   - Loaded: USB module
Configuring services...
   - Loaded: Zone access service
Installing MIME types and icons...
Installing Python bindings...
   - Installed: Bindings for Python 2.6
Updating the boot archive...

Installation of <SUNWvbox> was successful.
$

如果需要使用遠端桌面連線到 guest,一定要安裝 Extension Pack

代碼: [選擇]
$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-${VBVERSION}-86644.vbox-extpack
$ VBoxManage | head -n 3
Oracle VM VirtualBox Command Line Management Interface Version 4.2.14
(C) 2005-2013 Oracle Corporation
All rights reserved.
$
安裝完畢,可以開始建立 vm 了。
================

以下為建立新 vm 的過程,

指定 vm 名稱,方便後續輸入
代碼: [選擇]
$ export VM=Ubuntu804-Websrv-001
建立新 vdi,未指明類型預設為動態變更大小,這棵是系統用的,128GB
代碼: [選擇]
$ VBoxManage createhd --filename $VM-001.vdi --size 122880
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: 4c8bf1cd-37be-4d18-850c-e3151a7941c6

建立新 vdi,指定為固定大小,存取效能較佳,這棵是放 MySQL DB 用的, 10GB 作 LVM,將來如果滿了再另外加
代碼: [選擇]
$ VBoxManage createhd --filename $VM-002.vdi --size 10240 --variant fixed
代碼: [選擇]
$ ls -lh
total 10G
-rw------- 1 xxxxxxx staff 484K 2013-06-27 18:09 Ubuntu804-Websrv-001-001.vdi
-rw------- 1 xxxxxxx staff  11G 2013-06-27 18:13 Ubuntu804-Websrv-001-002.vdi

查看 vbox 有支援哪些 os 版本
代碼: [選擇]
$ VBoxManage list ostypes
建立新 vm
代碼: [選擇]
$ VBoxManage createvm --name $VM --ostype "Ubuntu_64" --register
Virtual machine 'Ubuntu804-Websrv-001' is created and registered.
UUID: 730f7deb-19bb-46f7-aabc-d4aba9cec40a
Settings file: '/home/yamaka/VirtualBox VMs/Ubuntu804-Websrv-001/Ubuntu804-Websrv-001.vbox'

以下是 gusest 的細項,設定兩棵硬碟,4 cpu, 6GB ram, 16MB 顯示卡, 1GB 網路卡
代碼: [選擇]
$ VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
$ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium $VM-001.vdi
$ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --device 0 --type hdd --medium $VM-002.vdi
$ VBoxManage modifyvm $VM --cpus 4
$ VBoxManage modifyvm $VM --ioapic on
$ VBoxManage modifyvm $VM --boot1 disk --boot2 dvd --boot3 none --boot4 none
$ VBoxManage modifyvm $VM --memory 6144 --vram 16
$ VBoxManage modifyvm $VM --nic1 bridged --nictype1 82545EM --bridgeadapter1 rge1
$ VBoxManage storagectl $VM --name "IDE Controller" --add ide

舊系統轉換過程環境是使用 Ubuntu 8.04 x64 Desktop Live CD,要顯示圖型桌面
所以顯示卡 ram 先設 16MB,等轉換完畢後再改為 1MB


掛載 Ubuntu 8.04 Live CD
代碼: [選擇]
$ VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium /zPool/sHome/isos/Ubuntu/ubuntu-8.04.4-desktop-amd64.iso
指定遠端桌面連線 port
代碼: [選擇]
$ VBoxManage modifyvm $VM --vrde on --vrdeport 4901
檢查一下設定項目有沒有問題
代碼: [選擇]
$ VBoxManage showvminfo $VM
啟動 vm
代碼: [選擇]
$ VBoxHeadless -s $VM &
---


接下來就在自己工作的桌面用 rdesktop 連到 vm

開啟遠端桌面
代碼: [選擇]
$ rdesktop 192.168.x.2xx:4901 &
為了方便操作過程有時會需要貼上或複製,進入 Ubuntu 8.04 live cd 圖型桌面後先安裝 openssh
另外還要掛載 zfs 那邊的資料區,所以 nfs-common 也要裝一下

代碼: [選擇]
$ sudo -i
# apt-get install nfs-common openssh-server
# passwd ubuntu
Enter new UNIX password: 1234567890
Retype new UNIX password: 1234567890
passwd: password updated successfully

看一下系統抓到的 IP
代碼: [選擇]
# ifconfig
遠端桌面操作就先到這,回到自己工作的桌面用 ssh 登入到 ubuntu 8.04

代碼: [選擇]
$ ssh ubuntu@192.168.x.xxx
如果 client 連線錯誤,通常是 client 端已有同IP不同主機記錄的問題,清除一下就可以連上新主機了
代碼: [選擇]
$ ssh-keygen -R 192.168.x.xxx
代碼: [選擇]
ubuntu@192.168.x.xxx's password:
Welcome to Ubuntu 8.04.4 LTS

 * Documentation:  https://help.ubuntu.com/

登入成功!

---

以下是 ssh 到 vm 的操作,直接切換到 root,方便操作

代碼: [選擇]
ubuntu@ubuntu:~$ sudo -i
root@ubuntu:~#

掛載 zfs 資料區
代碼: [選擇]
# mkdir /mnt/zfs2 /mnt/boot /mnt/root /mnt/com
# mount -t nfs -o rsize=32768,nosuid 192.168.x.2xx:/zPool/sHome /mnt/zfs2
#
# ls /mnt/zfs2/U* -lh
-rw-r--r-- 1   1000    1000  31M Jun 26 18:07 /mnt/zfs2/Ubuntu804Server-ip213-dd-sda1-boot.gz
-rw-r--r-- 1   1000    1000  17G Jun 26 19:02 /mnt/zfs2/Ubuntu804Server-ip213-dd-sda5-sys.gz
-rw-r--r-- 1   1000    1000 689M Jun 27 08:35 /mnt/zfs2/Ubuntu804Server-ip213-mysql.tar.gz
-rw-r--r-- 1   1000    1000 3.6G Jun 27 08:52 /mnt/zfs2/Ubuntu804Server-ip213-www-com.tar.gz
-rw-r--r-- 1   1000    1000  512 Jun 27 04:28 /mnt/zfs2/Ubuntu804Server-sda.mbr
#

分割硬碟
代碼: [選擇]
# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xd0ba3eed.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders, total 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xab58874b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          62      497983+  83  Linux
/dev/sda2              63       10023    80011732+  83  Linux
/dev/sda3           10024       11518    12008587+  82  Linux swap / Solaris
/dev/sda4           11519       15665    33310777+  83  Linux

將備份的開機區與系統區灌進 /dev/sda1 /dev/sda2
代碼: [選擇]
# gzip -dc /mnt/zfs2/Ubuntu804Server-ip213-dd-sda1-boot.gz | dd of=/dev/sda1
# gzip -dc /mnt/zfs2/Ubuntu804Server-ip213-dd-sda5-sys.gz | dd of=/dev/sda2

資料灌回新分割區後,會發現新硬碟分割區大小顯示會是原來舊系統硬碟分區的大小...

代碼: [選擇]
# mkdir /mnt/boot /mnt/root /mnt/com
# mount /dev/sda1 /mnt/boot
# mount /dev/sda2 /mnt/root
# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/cow                        3.0G   64M  2.9G   3% /
udev                        3.0G  4.0K  3.0G   1% /dev
tmpfs                       1.2G  720K  1.2G   1% /run
/dev/sr0                    699M  699M     0 100% /cdrom
/dev/loop0                  664M  664M     0 100% /rofs
tmpfs                       3.0G   20K  3.0G   1% /tmp
none                        5.0M  4.0K  5.0M   1% /run/lock
none                        3.0G  124K  3.0G   1% /run/shm
192.168.1.242:/zPool/sHome  5.2T  1.2T  4.1T  22% /mnt/zfs2
/dev/sda1                    99M   24M   71M  26% /mnt/boot
/dev/sda2                    44G   31G   11G  75% /mnt/root


/boot 跟 / 我是切了 500MB, 80GB,回到 vm 桌面用 gparted 調整大小
這裡因為一時不知道該用什麼方式來處理,所以就直接先用 gparted

---

代碼: [選擇]
# umount /mnt/root /mnt/boot
# gparted

右鍵分別點 /dev/sda1 /dev/sda2 resize,先減少 10MB, apply 後再調整回原來大小, dev/sda3 再設一次 swap(format to.....)
然後再看一次 df 就是正常大小了(這裡忘了抓圖XD)

---

回到 ssh 連線的 vm

將網站資料灌回到 /dev/sda4
代碼: [選擇]
# mkfs.ext3 /dev/sda4
mke2fs 1.40.8 (13-Mar-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2088960 inodes, 8327694 blocks
416384 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
255 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#
# mount /dev/sda4 /mnt/com
# cd /mnt/com
# tar zxf /mnt/zfs2/Ubuntu804Server-ip213-www-com.tar.gz
# mv com/* .


代碼: [選擇]
# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/cow                        3.0G   64M  2.9G   3% /
udev                        3.0G  4.0K  3.0G   1% /dev
tmpfs                       1.2G  720K  1.2G   1% /run
/dev/sr0                    699M  699M     0 100% /cdrom
/dev/loop0                  664M  664M     0 100% /rofs
tmpfs                       3.0G   20K  3.0G   1% /tmp
none                        5.0M  4.0K  5.0M   1% /run/lock
none                        3.0G  124K  3.0G   1% /run/shm
192.168.1.242:/zPool/sHome  5.2T  1.2T  4.1T  22% /mnt/zfs2
/dev/sda1                   464M   25M  415M   6% /mnt/boot
/dev/sda2                    76G   31G   42G  43% /mnt/root


改兩個跟網路有關的設定

代碼: [選擇]
# nano /mnt/root/etc/network/interfaces
auto lo
iface lo inet loopback

保留最上面兩行,其他註解起來或是刪除


代碼: [選擇]
# nano /mnt/root/etc/udev/rules.d/70-persistent-net.rules
刪除所有網卡設定


最後要修改 fstab 還有開機區設定,先查看分割區的 uuid

代碼: [選擇]
# blkid
/dev/sda1: UUID="0c401de5-24d9-48bb-aa4f-076c8fafa2d1" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda2: UUID="a8fadcf3-dc98-48f6-bcbb-24a400ae693d" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda3: TYPE="swap" UUID="5d2fd2a9-d407-4e36-bae7-a0b6a68c029d"
/dev/sda4: UUID="df0e7428-8582-451e-bd51-ee1449b2b7fe" SEC_TYPE="ext2" TYPE="ext3"

在這裡發現用 dd 寫回分割區時,會連 uuid 也一起寫進去,所以新分割區的 uuid 跟舊硬碟分割區一樣
/dev/sda4 因為不是用 dd 灌回資料,uuid 就會保留新的。

代碼: [選擇]
# nano /mnt/root/etc/fstab改成如下

代碼: [選擇]
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda2
UUID=a8fadcf3-dc98-48f6-bcbb-24a400ae693d /               ext3    relatime,errors=remount-ro 0       1
# /dev/sda1
UUID=0c401de5-24d9-48bb-aa4f-076c8fafa2d1 /boot           ext3    relatime        0       2
# /dev/sda4
UUID=df0e7428-8582-451e-bd51-ee1449b2b7fe /com            ext3    relatime        0       2
UUID=df0e7428-8582-451e-bd51-ee1449b2b7fe /var/www        ext3    relatime        0       2
# /dev/sda3
UUID=5d2fd2a9-d407-4e36-bae7-a0b6a68c029d none            swap    sw              0       0

修改開機表,兩個 root=UUID= 改為新的分割區,其實不用修改,不過還是檢查一下

代碼: [選擇]
# nano /mnt/boot/grub/menu.lst

剩下 mbr ...

代碼: [選擇]
# dd if=/mnt/zfs/Ubuntu804Server-sda.mbr of=/dev/sda
ok!!重新開機看看

結果開機失敗,畫面上只出現一閃一閃的文字小游標...

回到 vbox host command line VM 關機
代碼: [選擇]
$ VBoxManage controlvm $VM poweroff
重新用 live cd 開機到桌面,結果整個 /dev/sda 都無法讀取 @@
估計是寫入 mbr 造成的,好吧,重來一次,再建立一棵 vdi
或是如果前面建立的有另外備份檔的話,改一下 vdi 的 uuid
刪除原來的 $VM-001.vdi,再設定一次 $VM-001.vdi

變更 vdi 的 uuid
代碼: [選擇]
$ VBoxManage internalcommands sethduuid Ubuntu804-Websrv-001-001.vdi
$ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium $VM-001.vdi

然後再用 dd 灌回資料.....

代碼: [選擇]
# gzip -dc /mnt/zfs2/Ubuntu804Server-ip213-dd-sda1-boot.gz | dd of=/dev/sda1
# gzip -dc /mnt/zfs2/Ubuntu804Server-ip213-dd-sda5-sys.gz | dd of=/dev/sda2

這次手動重新設定開機

代碼: [選擇]
# grub
> root (hd0,0)
> setup (hd0)
> quit

開機看看~~成功了!!


登入原系統後關機

代碼: [選擇]
$ sudo poweroff

回到 vbox host,

顯示卡 ram 改為 1MB
代碼: [選擇]
$ VBoxManage modifyvm $VM --memory 6144 --vram 1
卸載 live cd
代碼: [選擇]
$ VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium none
啟動 vm
代碼: [選擇]
$ VBoxHeadless -s $VM &
登入後設定網卡

代碼: [選擇]
$ sudo vim /etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:68:8e:0f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

看一下抓到的虛擬網卡最後面 NAME 設定是不是 eth0,如果不是就改一下

設定 IP
代碼: [選擇]
$ sudo vim /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth9 inet static
address 192.168.x.2xx
netmask 255.255.255.0
gateway 192.168.x.x
dns-nameserver 8.8.8.8


設定 IP, 舊系統本來有兩張網卡,1張對外1張區網,現在只需要1張連區網就夠了
原來對外連線的部分改成用 nginx 反向代理導過來
(參考這篇 http://phorum.study-area.org/index.php/topic,68787.0.html)

如果有另外設定防火牆也要檢查一下設定,然後重新啟動網路
如果無法啟新啟動網卡就 reboot 吧

代碼: [選擇]
$ sudo /etc/init.d/networking restart

---

MySQL 設定(以下操作為 ssh 登入 LAMP 系統)

代碼: [選擇]
$ sudo fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000dc85

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          62      497983+  83  Linux
/dev/sda2              63       10023    80011732+  83  Linux
/dev/sda3           10024       11518    12008587+  82  Linux swap / Solaris
/dev/sda4           11519       15665    33310777+  83  Linux

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

前面建立了一棵固定大小 10G 的 vdi 還沒用到,就是上面的 /dev/sdb,要作 LVM,整顆切成一個分割區

代碼: [選擇]
$ sudo pvdisplay
sudo: pvdisplay: command not found

lvm2 套件未安裝

代碼: [選擇]
$ sudo apt-get update
$ sudo apt-get install lvm2
$ sudo pvdisplay

沒顯示任何東西表示系統裡還沒有設定 lvm

代碼: [選擇]
$ sudo fdisk /dev/sdb

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):
Using default value 1305

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

代碼: [選擇]
$ sudo fdisk /dev/sdb -l

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x9cf46d28

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1305    10482381   8e  Linux LVM

接下來要建立 LVM 掛到 /var/lib/mysql,並將舊主機備分的 DB 資料倒進來...

代碼: [選擇]
$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
$ sudo vgcreate vgpool /dev/sdb1
  Volume group "vgpool" successfully created
$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vgpool
  PV Size               10.00 GB / not usable 717.00 KB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               W4g707-ybeo-41Wu-2Xde-EvBd-iziF-62iFkb


可配置容量是 (PE size) x (Free PE) = (4MB x 2559) = 10236MB

代碼: [選擇]
$ sudo lvcreate -L 10236M -n lvmMySQL vgpool
  /proc/misc: No entry for device-mapper found
  Is device-mapper driver missing from kernel?
  Failure to communicate with kernel device-mapper driver.
  /proc/misc: No entry for device-mapper found
  Is device-mapper driver missing from kernel?
  Failure to communicate with kernel device-mapper driver.
  Incompatible libdevmapper 1.02.20 (2007-06-15)(compat) and kernel driver
  striped: Required device-mapper target(s) not detected in your kernel
  lvcreate: Create a logical volume


出現一堆錯誤訊息,大概是說 kernel 未支援 device-mapper,因此無法建立 lv
之前在 ubuntu 12.04 建立 lv 並未遇到這問題,不過沒關係,把 dm-mod 掛上就好了

代碼: [選擇]
$ sudo modprobe dm-mod
$ sudo lvcreate -L 10236M -n lvmMySQL vgpool
  Logical volume "lvmMySQL" created
$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/vgpool/lvmMySQL
  VG Name                vgpool
  LV UUID                GOMCav-cUYQ-U2m5-EZRL-FyNl-D1fC-3fL1JY
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                10.00 GB
  Current LE             2559
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:0


這樣就順利建立出大小 10GB 的 lvmMySQL,再來要先格式化才能使用這個 LV

代碼: [選擇]
$ sudo mkfs.ext3 /dev/vgpool/lvmMySQL
mke2fs 1.40.8 (13-Mar-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
655360 inodes, 2620416 blocks
131020 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

代碼: [選擇]
$ ls -l /var/lib/mysql
total 0
$ sudo mount -t ext4 /dev/vgpool/lvmMySQL /var/lib/mysql
$ df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda2     ext3     76G   31G   44G  42% /
varrun       tmpfs    3.0G  200K  3.0G   1% /var/run
varlock      tmpfs    3.0G     0  3.0G   0% /var/lock
udev         tmpfs    3.0G   60K  3.0G   1% /dev
devshm       tmpfs    3.0G     0  3.0G   0% /dev/shm
/dev/sda1     ext3    472M   25M  432M   6% /boot
/dev/sda4     ext3     32G  4.5G   26G  15% /var/www
/dev/mapper/vgpool-lvmMySQL
              ext3     10G  151M  9.3G   2% /var/lib/mysql

掛載 zfs
代碼: [選擇]
$ sudo mkdir /mnt/zfs2
$ sudo mount -t nfs -o rsize=32768,nosuid 192.168.x.2xx:/zPool/sHome /mnt/zfs2
$ sudo tar zxf /mnt/zfs2/Ubuntu804Server-ip213-mysql.tar.gz -C /var/lib/mysql
$ ls -l /var/lib/mysql
total 20
drwx------ 2 root root 16384 2013-06-28 10:36 lost+found
drwxr-xr-x 3 root root  4096 2013-06-28 10:49 var

當初打包時包含了原始路徑,因此會在 /var/lib/mysql 建立原來完整的路徑
用 mv 把資料移到正確位置再刪掉 var 就好了

代碼: [選擇]
$ sudo mv /var/lib/mysql/var/lib/mysql/* /var/lib/mysql/.
$ ls -l /var/lib/mysql/var/lib/mysql
total 0
$ sudo rm -rf /var/lib/mysql/var
$ sudo /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld          [ OK ]
 * Starting MySQL database server mysqld          [fail]

無法啟動,查 syslog 記錄的訊息...

代碼: [選擇]
Jun 28 11:00:17 xxxx /etc/init.d/mysql[15038]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jun 28 11:00:17 xxxx /etc/init.d/mysql[15038]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

估狗爬了好久,試了好多方式還是同樣結果,最後只好使出殺手鐧

代碼: [選擇]
$ sudo mysql_install_db
Installing MySQL system tables...
........(跑出一大堆訊息.....)
$
$ sudo /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld                [ OK ]
 * Starting MySQL database server mysqld                [ OK ]
 * Checking for corrupt, not cleanly closed and upgrade needing tables.

啟動了  ;D

用瀏覧器開 phpMyAdmin 也可以跟以前一樣操作資料庫


-----

有個東西差點忘了,這個 LAMP 本來也還有跑 bind9,現在既然放在後端跑
原來的 bind9 就不需要了,所以要停止 bind9 服務,開機時也不要再啟動

代碼: [選擇]
$ sudo /etc/init.d/bind9 stop
$ sudo update-rc.d -f bind9 remove

-----

以上,LAMP 實體主機虛擬化完成! ^_^


ps:
  MySQL 雖然可以啟動,但是好像每次重開機都會出現同樣的問題
  最好還是重新安裝過,這個 LAMP 實際上 DB 是放在其他 VM 裡跑
  所以自己的 MySQL 有問題也不會影響網站XD