Xen在Debian使用LVM
作者:Jason Norwood-Young jason [at] freespeechpub dot co dot za
所以你有一些严重的服务器需求。 你想要一堆服务器,有几个操作系统,运行自己的疯狂网站做正确的事情,为世界服务,使之成为一个更好的地方。 只有一个问题 - 你很穷 太糟糕的是,AWS服务器和Rackspace服务器启动,而不会计算他们上班的时间,每次收到帐单时都会哭泣。
不要担心 - 你可以拥有你想要的东西,比那些云服务器的成本更低,特别是如果你需要24/7/365。 通过虚拟化,您可以使用一个beeeg服务器来承载大量的小型服务器。 几乎就像拥有自己的云!
本教程包括在Debian Wheezy之上安装Xen和您的第一个虚拟机。 如果您正在使用Squeeze,请查看Falko Timme的教程 ,该教程用作我的灵感(即使我们做的事情有所不同)。
选择一个服务器来运行它
所以我使用德国Hetzner 。 为什么? 因为他们血腥便宜 使用虚拟环境,您真正寻找的是很多内存。 内存越多,虚拟系统越多,那么它们就越大。 我有两台32GB的服务器,可以让我运行大约8台服务器,每个服务器在1GB到4GB之间,无需麻烦。 这不是任何形式的建议,除了每个月向我们提供辛苦赚来的现金外,我与赫兹纳没有任何关系。
您正在寻找的是一个提供者,将为您提供一个根服务器,便宜,拥有大量内存,以及远程重启和抢救的能力,以防您真的搞砸。
1.安装Xen
我假设您已经安装了Wheezy,您以root用户身份登录,并且已经完成了您需要做的所有apt-get更新和apt-get升级。 所以让我们开始吧!
apt-get install xen-linux-system xen-tools
这安装了Xen,一些高级内容,以及我们稍后将用于创建虚拟映像的非常有用的xen工具。
接下来我们要告诉Xen如何处理网络。 我有一个小小的坦白说:我不是一个网络的人。 其实我憎恶网络。 这是互联网的管道,我拒绝弯腰,显示水管工的裂缝。 而Xen网络很复杂,路由奇怪,桥梁神秘,还有什么其他的。 所以我只是做最简单,最快捷,最脏的解决方案 - 我坚持NAT模式。 (不,我真的不知道NAT是什么,但它有效,好吗?停止提问)
pico /etc/xen/xend-config.sxp
取消注释以下两行:
(network-script network-nat) (vif-script vif-nat)
即使我们已经安装了Xen,但实际上并没有运行。 Xen在内核级别上运行,这意味着你实际上必须引导进入Xen。
首先,我们需要告诉Debian启动Xen而不是其通常的内核:
dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen update-grub
然后我们需要重新启动:
reboot
我知道你不能等待ssh进入你的新的,令人敬畏的Xen系统,但再给它一次重新启动。
好的,现在试试吧。
现在怎么样?
你呢? 我们好吗 好。 我们继续吧
2.控制Xen
所以现在你想确保Xen实际上正在运行。 在Squeeze上,你可以运行uname -r
,你会看到如下: 2.6.32-5-xen-amd64
。 对于人类未知的一些神秘原因,这在Wheezy上不起作用,反而是这样做的:
xen dmesg你应该看到像:
(XEN) Xen version 4.1.4 (Debian 4.1.4-3+deb7u1) (carnil@debian.org) (gcc version 4.7.2 (Debian 4.7.2-5) ) Sun May 5 14:44:49 UTC 2013 (XEN) Bootloader: GRUB 1.99-27+deb7u2 (XEN) Command line: placeholder (XEN) Video information: (XEN) VGA is text mode 80x25, font 8x16 (XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds (XEN) Disc information: (XEN) Found 2 MBR signatures (XEN) Found 2 EDD information structures ...
如果你没有看到,你做错了事情。 回去再试一次。 对于其他人,成功! 恭喜! 你现在有一个很棒的Dom0实例!
多米诺 你叫谁?
放松吧 Dom0或Domain 0,是您的主机服务器,您现在的东西是的底部。 客户服务器被称为DomU,可能是因为它也听起来有点侮辱。
xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 31089 8 r—— 8.8
该命令列出了我们所有的虚拟服务器,包括Dom0。 目前,这是我们唯一运行的服务器。
我们可以为xm做很多工作,包括xm create
,它带来一个服务器, xm destroy
,它杀死一个服务器, xm reboot
重启服务器,以及xm top
,它监视所有正在运行的服务器。
3.配置LVM
您可以创建Xen服务器作为块设备或LVM实例。 我喜欢LVM,因为它更加manly,它也使得waaay更容易调整分区稍后。
首先,我们需要一个空的,未安装的驱动器来放置LVM。 我没有一个空的,未安装的驱动器,所以我只是要从我的服务器上偷一个。
df -h
Filesystem Size Used Avail Use% Mounted on rootfs 1008G 915M 956G 1% / udev 10M 0 10M 0% /dev tmpfs 3.0G 292K 3.0G 1% /run /dev/disk/by-uuid/5642a4c4-1bcb-49e2-b89c-7d754e6a521a 1008G 915M 956G 1% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 9.2G 0 9.2G 0% /run/shm /dev/md1 496M 34M 437M 8% /boot /dev/md3 1.7T 196M 1.7T 1% /home
1.7TB /家? 你是认真的吗? 这似乎是完全不必要的。
pico /etc/fstab
评论错误的驱动器
#/dev/md/3 /home ext4 defaults 0 0
卸载驱动器
umount /dev/md3
对,现在我们可以创建我们的LVM分区了。
pvcreate /dev/md3
Writing physical volume data to disk "/dev/md3" Physical volume "/dev/md3" successfully created
vgcreate xen-vol /dev/md3
vgdisplay
--- Volume group --- VG Name xen-vol System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 1.71 TiB PE Size 4.00 MiB Total PE 448996 Alloc PE / Size 0 / 0 Free PE / Size 448996 / 1.71 TiB VG UUID wa0QCN-lBc1-545B-zMwf-vIuS-VXXI-GZAfbW
正义!
4.配置Xen工具
Xen Tools使我们的Xen生活变得更加容易,特别是在创建新服务器时。 但首先我们需要配置一下。
pico /etc/xen-tools/xen-tools.conf
lvm = xen-vol size = 20Gb # Disk image size. memory = 4Gb # Memory size swap = 512Mb # Swap size gateway = 192.168.1.2 netmask = 255.255.0.0 broadcast = 192.168.1.255 mirror = http://ftp.de.debian.org/debian/ mirror_precise = http://archive.ubuntu.com/ubuntu # (and any others you want) serial_device = hvc0 disk_device = xvda #default copyhosts = 1
5.创建客服务器
主要事件的时间! 这是您每次要创建新的Xen客户机服务器时重复的过程。
对于我们的第一个测试服务器,我将做一些比我们在xen-tools.conf中设置的默认值更小的东西。 您可以根据需要覆盖命令行上的任何默认值。 由于我们没有使用dhcp服务器,所以每次都需要设置“hostname”和“ip”。 一切都是可选的。
xen-create-image --hostname=test --ip=192.168.1.99 --memory=512Mb --size=5G --swap=256Kb
General Information -------------------- Hostname : test Distribution : wheezy Mirror : http://ftp.de.debian.org/debian/ Partitions : swap 256Kb (swap) / 5G (ext3) Image type : full Memory size : 512Mb Kernel path : /boot/vmlinuz-3.2.0-4-amd64 Initrd path : /boot/initrd.img-3.2.0-4-amd64 Networking Information ---------------------- IP Address 1 : 192.168.1.99 [MAC: 00:16:3E:27:33:2D] Netmask : 255.255.0.0 Broadcast : 192.168.1.255 Gateway : 192.168.1.2 Creating swap on /dev/xen-vol/test-swap Done Creating ext3 filesystem on /dev/xen-vol/test-disk Done Installation method: debootstrap Running hooks Done No role scripts were specified. Skipping Creating Xen configuration file Done No role scripts were specified. Skipping Setting up root password Generating a password for the new guest. All done Logfile produced at: /var/log/xen-tools/test.log Installation Summary --------------------- Hostname : test Distribution : wheezy IP-Address(es) : 192.168.1.99 RSA Fingerprint : de:92:b7:63:55:20:74:46:d3:de:cc:ff:55:22:69:24 Root Password : MlkaIn8
这将为我们创建配置文件和分区,但不为我们启动服务器。 配置文件位于/etc/xen/hostname.cfg。 如果您需要更改内存,可以直接编辑此文件。
让我们开始服务器
xm create /etc/xen/test.cfg
Using config file "/etc/xen/test.cfg". Started domain test (id=1)
什么是很酷的是,“测试”将添加到我们的/ etc / hosts文件中,这意味着我们可以这样做:
ssh test
使用您在xen-create-image输出结尾处收到的密码,然后输入!
确保你可以看到interwebs:
ping google.com
PING google.com (173.194.70.113) 56(84) bytes of data. 64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=1 ttl=48 time=6.05 ms 64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=2 ttl=48 time=6.03 ms ^C --- google.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 6.030/6.044/6.058/0.014 ms
喝啤酒
你应得的!
7.将IP地址指向虚拟服务器
您将需要从ISP(称为子网)一堆IP地址。 我每月支付一个额外的8个IP地址。 但让他们直接进入你的虚拟服务器需要一些工作。
pico /etc/network/interfaces
auto br0 iface br0 inet static address 192.168.1.2 netmask 255.255.0.0 pre-up brctl addbr $IFACE post-down brctl delbr $IFACE
/etc/init.d/networking restart
ifconfig br0
br0 Link encap:Ethernet HWaddr 82:18:d1:b8:37:c9 inet addr:192.168.1.2 Bcast:192.168.255.255 Mask:255.255.0.0 inet6 addr: fe80::9118:d1ff:feb8:37c9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:172 (172.0 B)
ip addr add 80.1.2.41 dev eth0
iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99
在使用xen-create
时使用--bridge = br0
。 对于现有的/etc/xen/*.cfg文件,请编辑此行:
vif = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34' ]
看起来像这样:
vif = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34','bridge=br0' ]
如有必要,销毁并创建虚拟服务器。