虚拟机学习平台的搭建
在这个“并行计算、分布式计算、云计算、虚拟化、大数据……“等等的爆炸时代,手里的那么一两台机器确实越来越难以满足需要了。一般个人,也不大可能拥有自己的数据中心,超算环境。怎么办?很自然的,就想到了用虚拟机来模拟。
今日的虚拟化技术已用于生产环境,搭个学习平台就更不在话下了,本文讲述该平台的硬件准备过程。
硬件
要让一台家用计算机能较为顺畅的运行多个虚拟机,硬件上的考虑大概如下几点:
- 多CPU架构,不大容易,用个多核的家用CPU代替;
- 大内存,这个可以有;
- I/O(主要是存储),用几块硬盘组个阵列;
- 网络,至少一块千兆网卡吧。
综上,我的硬件平台选型如下:
- CPU,AMD FX 6100六核;
- 内存,4GX4=16G DDR3 1600;
- 硬盘,一块旧硬盘装系统,另购四块新2T硬盘组阵列,用于数据备份和存储虚拟机文件;
- 网络,主板集成千兆网卡一块。
软阵列
这里使用软阵列(Soft RAID)来组阵列,而不是使用主板提供的硬阵列实现。组建RAID5至少需要三块硬盘,可能的话自然多多益善。
阵列共两组,一组存放虚拟机映像,一组存放原始安装数据和备份数据。由于这是个学习环境,所以第一组大胆的使用RAID0模式,放弃可靠性,追求最大的吞吐率,第二组使用RAID5模式。
下面的具体操作基于CentOS 6,不同系统下可能略有差别,但不大。
分区
这里使用parted工具来分区。由于这几块新2T硬盘都是4K扇区格式,涉及分区对齐问题,CentOS下有关parted与4k扇区硬盘的说明,可参考 Red Hat Enterprise Linux 5 and 4 kilobyte sector disks。
个人采用参考链接的方法,以1MB(2048个扇区)为单位划分,分区的起始扇区是2048的整数倍,结束扇区是2048的整数倍减1。硬盘的最后留100M左右的空闲空间,以应对将来更换硬盘时,新硬盘和旧硬盘在容量上可能存在的细微差别。
此外,传统的msdos分区表格式只能支持最大2T的硬盘,为了后续可能的扩容做准备,这次的新硬盘统一采用gpt分区表格式。
下面是parted的操作步骤(以/dev/sde为例,四块硬盘的分区表都是一样的):
(parted) mklabel gpt (parted) mkpart 1 2048s 858994687s (parted) mkpart 2 858994688s 3906822143s (parted) toggle 1 raid (parted) toggle 2 raid (parted) unit s (parted) p Model: ATA ST2000DM001-1CH1 (scsi) Disk /dev/sde: 3907029168s Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name 标志 1 2048s 858994687s 858992640s 1 raid 2 858994688s 3906822143s 3047827456s 2 raid
如果使用fdisk对硬盘进行分区,需要使用如下参数(新版本的fdisk已解决了这个问题):
fdisk -H 224 -S 56 /dev/sde
创建阵列
mdadm --create /dev/md0 --level 0 --raid-devices 4 /dev/sd[bcde]1 mdadm --create /dev/md1 --level 5 --raid-devices 4 /dev/sd[bcde]2
初始化raid5的时间比较长(本机花了四个半小时),需要耐心等候,进度可查看/proc/mdstat获得:
cat /proc/mdstat
建立文件系统
这里使用EXT4文件系统:
mkfs.ext4 /dev/md0 mkfs.ext4 /dev/md1
挂载文件系统
建立挂载目录:
mkdir /raid0 mkdir /raid5
编辑/etc/fstab,使用uuid的方式挂载(文件系统的uuid可以在/dev/disk/by-uuid/下查到):
UUID=b9fac28f-b218-4a29-b582-b680e09abedc /raid0 ext4 defaults 1 2 UUID=252a485e-211e-4ac8-87b1-827239f60006 /raid5 ext4 defaults 1 3
如果想进一步提高灵活性,可以在阵列基础上使用逻辑卷LVM。