PlayXenOnUbuntu1604

硬件环境

AMD E-350, 8G内存,320G 硬盘,绝对垃圾配置。

软件环境

Ubuntu16.04, LVM磁盘配置:

$ sudo lvdisplay
.....
.....
......

安装完毕后,安装xen hypervisor:

$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade
-y
$ sudo apt-get install -y xen-hypervisor-amd64
$ sudo apt-get install -y virtinst virt-manager

更改grub配置,默认使用xen hypervisor内核, 并指定dom0最大可用内存:

$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="Xen 4.1-amd64"
GRUB_CMDLINE_XEN="dom0_mem=1024M,max:1024M dom0_max_vcpus=2"
$ sudo update-grub
$ sudo reboot

检查:

$ sudo xl list
Name                                        ID   Mem VCPUs	State
Time(s)
Domain-0                                     0  1024     2     r-----
28.7

配置一个xenbr0的网桥:

$ sudo vim /etc/network/interface
# The primary network interface
auto enp4s0
iface enp4s0 inet manual

auto xenbr0
iface xenbr0 inet static
bridge_ports enp4s0
address 192.168.0.xxx
netmask 255.255.0.0
gateway 192.168.0.xxx
dns-nameservers 223.5.5.5

重启机器,使得网络生效。

创建HVM虚拟机

HVM是全虚拟化,我们可以用libvirt来管理xen hypervisor,进而创建HVM虚拟机,步骤如下:

更改libvirt配置:

# vim /etc/xen/xend-config.sxp 
     xend-unix-server yes
     xend-unix-path /var/lib/xend/xend-socket
# service libvirt-bin restart
libvirt-bin stop/waiting
libvirt-bin start/running, process 5345
# service xen restart
 * Restarting Xen daemons                  [ OK ]
# service xendomains restart

最好直接重启整个dom0.

运行virt-manager,添加xen:

/images/2016_11_23_17_36_00_276x162.jpg

创建虚拟机前,记得先创建出所需的逻辑卷,命令如下:

$ sudo lvcreate -L 5000M -n lvforarchlinux vgonsda
$ ls /dev/vgonsda/lvforarchlinux 
/dev/vgonsda/lvforarchlinux

上述命令在vgonsda上创建一块大小为5G的逻辑卷,名字为lvforarchlinux.

创建虚拟机的时候,选择存储设备到这块逻辑盘上,

/images/2016_11_23_17_39_05_389x282.jpg

接下来的创建方式很common, 安装以后直接用就好。

创建PV虚拟机

PV是半虚拟化,步骤比较繁杂一点,举CentOS6.8的安装为例。

首先下载CentOS-6.8-x86_64-minimal.iso的iso, 提取两个文件用于启动虚拟机安装:

$ sudo mount -t iso9660 -o loop /home/juju/http/CentOS-6.8-x86_64-minimal.iso /mnt
$ cp /mnt/isolinux/vmlinuz /source
$ cp /mnt/isolinux/initrd.img /source

创建一个新的pv:

$ sudo lvcreate -L 15000M -n lvforpv vgonsda

/etc/xen下,创建一个半虚拟机的定义文件:

$ sudo vim xlcentos.pvlinux
name = "centos"
kernel = "/source/vmlinuz"
ramdisk = "/source/initrd.img"
memory = 1024
vcpus = 1
vif = [ 'bridge=xenbr0' ]
disk = [ '/dev/vgonsda/lvforpv,raw,xvda,rw' ]

创建虚拟机:

$ sudo xl create -c /etc/xen/xlcentos.pvlinux

在终端安装系统,在Reboot前,需要修改定义文件如下:

$ sudo vim xlcentos.pvlinux
#kernel = "/source/vmlinuz"
#ramdisk = "/source/initrd.img"
bootloader = "/usr/lib/xen-4.6/bin/pygrub"

注释掉我们用于启动虚拟机的kernel和ramdisk,使用xen自带的pygrub启动系统,即可从安装好的硬盘启动。

启动机器:

$ sudo xl create -c /etc/xen/xlcentos.pvlinux

可以通过sudo xl list -l来查看安装好的虚拟机是否是半虚拟的。

Nov20BaiyunMountain

今天下午的路径, GPS上来看是18公里,路途上大概24公里:

/images/2016_11_20_20_58_50_613x834.jpg

Let the hunt begin:

/images/2016_11_20_21_00_41_779x585.jpg

/images/2016_11_20_21_01_46_779x582.jpg

/images/2016_11_20_21_02_33_777x578.jpg

五雷岭:

/images/2016_11_20_21_03_22_779x581.jpg

/images/2016_11_20_21_04_27_780x581.jpg

双髻岭:

/images/2016_11_20_21_05_22_781x582.jpg

/images/2016_11_20_21_07_13_778x582.jpg

山里公路:

/images/2016_11_20_21_08_06_727x686.jpg

碑林:

/images/2016_11_20_21_09_41_524x680.jpg

raining:

/images/2016_11_20_21_10_42_1192x667.jpg

/images/2016_11_20_21_12_03_723x630.jpg

/images/2016_11_20_21_13_18_719x719.jpg

/images/2016_11_20_21_14_11_927x684.jpg

正所谓"一年无日不看花,四面有山皆入画”,哈哈哈哈。

SomeTipsOnAnsible

In this series I will collect some of the tips in using ansible for playing automation deployment.

co-operation with vagrant ssh

Method: In inventory file, add vagrant’s ssh key.
First you should get the ssh indentity file via:

$ vagrant ssh-config | grep IdentityFile
# result should be your private key and not
#   .vagrant/machines/default/virtualbox/private_key

Add these file definition into your inventory file:

[master]
192.168.33.17 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=/var1/Nov14/test/.vagrant/machines/master/virtualbox/private_key

[node1]
192.168.33.18 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=/var1/Nov14/test/.vagrant/machines/node1/virtualbox/private_key

now you will use vagrant and its indentity file for accessing the nodes.

Ignore ssh authenticity

Make a file named ansible.cfg under your deployment folder:

$ vim ansible.cfg
[defaults]
host_key_checking = False

Or use the environment variables for deploying:

$ ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory testall.yml

become method

The usage of sudo is not be encouraged for using, instead we use:

- hosts: all
  become: true
  become_user: root
  gather_facts: no
  remote_user: vagrant

touch method

To make sure the file is touched, before we use touch somefile, now we use:

  tasks:
    - name: touch something in the /tmp
      file: path=/tmp/abc.txt state=touch

Specify the username/password

Edit the inventory file:

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant

Ping all of the nodes

via:

$ ansible all -m ping -i inventory

Change the default gw

Add following scripts into the Vagrantfile:

  # default router
  config.vm.provision "shell",
    run: "always",
    inline: "route add default gw 192.168.0.176"

  # default router ipv6
  #config.vm.provision "shell",
  #  run: "always",
  #  inline: "route -A inet6 add default gw fc00::1 eth1"

  # delete default gw on eth0
  config.vm.provision "shell",
    run: "always",
    inline: "eval `route -n | awk '{ if ($8 ==\"eth0\" && $2 != \"0.0.0.0\") print \"route del default gw \" $2; }'`"

Ignore first time ssh key checking

Edit the following options:

$ vim ansible.cfg
[defaults]
host_key_checking = False

第三种笨鸟

/images/71b3e9acjw1f9sr30k5s9j21kw23u7oh.jpg

配图:章诒和书法

首先说一个段子—-“孩子因成绩不好,被家长骂笨鸟,孩子不服气的说,世上笨鸟有三种, 一种是先飞的,一种是嫌累不飞的,家长问:那第三种呢?孩子说:这种最讨厌,自己飞不起来, 就在窝里下个蛋,要下一代使劲飞。”

有时候生活里的现状比段子里还要夸张,来说说今天下午泳池里见到的一件事吧。

下午泳池中水温尚可,属于那种刚下水还OK,但如果不动体温将快速下降,瞬间就会哆嗦的那种。

一个看上去大概五六岁的小朋友,独自下水开始游起了蛙泳,姿势还挺标准。做娘的 一身横肉,在岸上看着,间或瞅瞅手机。

水温确实凉,小朋友游了30分钟后扛不住,到泳池边央求妈妈上岸。他娘不肯, 赶下去继续游。游过我身边的时候看到他动作显然变形了,换气有点难,一够到泳池边 就得大口喘气的那种。按理说少儿游泳到这个运动量就够了,慢慢练呗来日方长嘛。

然而当娘的太狠心,站在泳池边死活不让孩子上来。小朋友就只能边游水边抽泣,委屈得不行了。 终于在某次游回泳池边后开始大声号哭,声贯全场。一位大哥看不下去,游过去抱住小朋友柔声安慰,说来吧我 带你慢慢游。然后又回过头帮小朋友和家长谈判。
做娘的就是一副今天你不游满全场就不要走的派头,死活不松口。小朋友在岸上跟大哥 调整了一下,又低声抽泣下水,一直游到了终场铃响。

讲真,这事看得旁人也挺心酸的。

中国有很多家长都摆出来一副"我这是为你好"的派头,对孩子严加要求。然而换个角度看呢?家长自己啥也做不到, 却要求孩子啥都做到、而且要做好。孩子投胎到你家来,真是倒了八辈子血霉了。私下以为 不顾及孩子感受提出的苛刻要求,根本就不是真正的为孩子好,而是一种另类的自私(抑或是残忍)。

说起今天下午那位母亲,倘若她自己肯下水试一试,那身横肉还真未必能扛过30分钟。自己晒着太阳暖暖和和 的呆在岸上,却要孩子游上一小时,这不是"自己飞不起来,下个蛋要下一代使劲飞"的典型吗?

回来以后我在想,如果将来我遇到这种情况,会怎么做?接下来是我的几点思考:

1、自己做不到的事情,不要苛求别人做到。

不出意外的话,今天下午泳池边这种情况估计在我今后的生活 里出现概率会很小。首先本人玩心太重兴趣广泛精力充沛,可能唯一要担心的是下一代会不会被我带到太野。 退一万步说,万一孩子TA娘铁了心要当虎妈,小孩被虎妈逼迫学各种技能什么的,那当爹的也只能跟着去受罪了。交一份钱,两 人一起学,虎妈, 这买卖不亏呀!

国内对子女教育的一个很大的误区就是认为"自己花了很多钱就OK了”—-然而在我看来,这是属于暴发户的玩法。

典型的暴发户的玩法是什么呢?是中国足球。请来金牌教练来教自己不成器的孩子妄想称霸全宇宙实现刁某某的足球 梦。歇歇吧足协, 足球不是这么玩的。

教育也是。

花了钱是远远不够的,最关键是你得自个儿也花点心思上去. 譬如学钢琴,很多琴童家长就自个在那儿玩着手机,对着自己裤裆傻笑。拜托!琴行里那么多琴,你们怎么就不自个儿体验一把呢? 只有你体验到这项技能学习过程里所可能遇到的挑战,你才能感同身受,进而在孩子遇到瓶颈的时候和TA一起越过障碍。

很多少儿技能的学习会步入这样的误区: 当学习已经没有乐趣的时候,投资就等同于打水漂:家长在持续砸钱,钱花出去, 孩子却越来越不愿意去了。当然那帮笨蛋父母从来不会反思自己的不是,他们只会简单的一拍脑袋,马上得出"孩子不争气"或者 “孩子不是这块料"的反馈。这对孩子的成长而言实在不是一件好事。

别问我为啥知道这么多,教书匠的孩子出生时都会附送教书属性这事我会到处乱说?

2、 面对挑战,激励应该是"做加法"而不是"做减法”。

回到今天下午的场景: 如果我家小朋友不想游泳了我怎么办呢?

很简单,那你就不游了吧,自个上岸呆着去。当爹的继续到泳池里玩花样了哈,边游还要边刺激TA““哎呀真的好过瘾啊,来嘛 下来玩嘛”

如果还不下来你就可以逐渐提升筹码了,比如说"下来游两圈,一会散场了带你去吃冰淇淋?““多游两百米今晚多一个小时IPAD 游戏时间?"。诱惑有得是,就看你扛不扛得住。

如果这么诱惑都不下来,那确实是人家不想游了,自由这两个字是用来尊重的。这个时候你应该感激TA肯自个呆在岸上等着你 游完了。

因而在我看来今天下午那位做娘的就是在做减法,最后搞得有点两败俱伤。不过是一两个冰淇淋做诱惑的事情,母子之间相互 做做加法,这事绝逼好过在公众场合搞得孩子哭声满场进而塑造出自己"六亲不认"的"虎妈"残酷形象吧。当然这位母亲应该感谢 这是天朝而不是美帝,在美帝这可能构成了某种程度上的虐待。

做加法优于做减法这事不仅仅适用于家庭教育,譬如说某公司号称在公众区域发现员工杯子要罚款,这得是多傻逼的人 才想得出来这种做减法的招式啊? 最后的结果可能是:既达不到想要的效果,又给自己贴上了"管得太宽"的标签。不出意外,这项一拍脑袋想出来的规定过几天自己都忘了。

3、技能的最高境界是"玩”。

港真,没有比"玩"更能带动个体在某个领域造诣的手段。因为你在玩游泳,所以你不觉得累,不觉得冷。兴趣是学习某 项技能最好的老师,那位虎妈轻而易举的扼杀掉了兴趣这位最好的老师,把原本在"泳池里玩"的活动闹成 了"在泳池里受冻受罪"的活动,这当娘的跟自家孩子到底是有多大仇啊。

或者,根本就没有什么技能一说。常人眼中的技能,在该领域的高手眼中,只是手头的玩物罢了。因为他们玩得炫,所以 旁人信以为真,却不知自古都有知音一说,到最终到达该领域的终极状态的一定会是彼此之间有着诸多默契的大玩家们。

后记

只是在池边发现的一只"第三种笨鸟”,引发了上面的一段文字。事实上生活里充满了太多这样的笨鸟,从对待子女教育 的方式,很容易衍生到工作、生活的方方面面里。我们可以想象—-如果这位母亲是单位里的某个小头目,对下属会不会也 时常采用"做减法"的策略呢?讲到这里你能体会为什么职场上那么多人说难难难了吧,为什么那么多人说生活难难难了吧, 那么多人说做人难了吧?因为生活里永远有那么多自己不会飞却指望你飞给它看的笨鸟们啊。但其实如同 章诒和老师所说: “天下断无易处之境遇, 人间那有空闲的光阴”。难了就对了,因为:

你在做人,TA在做鸟啊.

白云半日

余寓之南粤已逾两年,此地风景秀美,而余外出游乐之心不减。值周日,城中大霾,入山清肺,是为记。

下午三点,准备进山。

/images/2016_11_12_22_29_06_611x809.jpg

西偏门进去,可见大片翠竹,不蔓不枝,犹为赏目:

/images/2016_11_12_22_35_56_611x806.jpg

水库堤坝上远眺主峰:

/images/2016_11_12_22_37_08_1084x806.jpg

山水:

/images/2016_11_12_22_38_10_1088x713.jpg

循梅花谷一路而上,新修的登山道宽敞、平整、人也不多,个人将之评为白云山里No.2登山道:

/images/2016_11_12_22_41_31_1081x813.jpg

新登山道远眺主峰:

/images/2016_11_12_22_42_13_765x780.jpg

沿着新登山道,抵达本人从未行至的白云山北线,此处游人不多,然植被茂盛,清幽异常:

/images/2016_11_12_22_44_43_612x780.jpg

/images/2016_11_12_22_45_53_575x764.jpg

从北峰杀回主峰的路,这段路是我特别喜欢的感觉,在半山腰循环迂回,而两旁鸟鸣不断,有脱尘 之感:

/images/2016_11_12_22_48_25_610x807.jpg

南国11月,植被依然是纯绿色:

/images/2016_11_12_22_49_03_1074x800.jpg

林间休憩的老爷们和少爷们:

/images/2016_11_12_22_50_35_1078x732.jpg

转战北峰途中拍的白云山全景图片之一:

/images/2016_11_12_22_52_12_1567x688.jpg

下山途中,天色渐晚,游人归而禽鸟乐也:

/images/2016_11_12_22_54_16_1083x695.jpg

远方被雾霾笼罩的城市:

/images/2016_11_12_22_54_58_1082x538.jpg

夜夜夜夜:

/images/2016_11_12_22_56_01_629x710.jpg

下到山底,夜幕降临时的美食之都,吃货们已然开始出巢(不用担心,窝吃得也不赖):

/images/2016_11_12_22_58_03_1089x587.jpg

我时常感觉,爬山即是一种修行。其实走上坡路的时候,辛苦异常,尤其对如我这种背包里塞满各种 装备外加充足补给的家伙、爬升速度又快,心率提升及滴汗速度更是快于常人不少。而这又如何? 艰难的爬升意味着在到达的顶点上足以俯瞰到在山脚下很难想象到的风景。登高至高点之时,把酒(水)迎风, 两腋生津,人生至乐,总共有多少次能做到这样呢?

有时候爬山爬到晚上,沿山路下山,看到山下的城市里灯光一盏一盏亮起来的时候,会有一种感慨: 山下的灯光里,可能会有很多的觥筹交错、也会有很多的温馨、拥抱、争吵乃至是狗血;山下的城市里 会有人欢笑有人哭泣…………而此时自己确是在高处里,眼往着这一摊蕴含着各种情绪的灯光,多奇妙,不是吗?

所以有语曰"近山者智 近水者仁”,近山者得来的智慧,我想有可能是因为个体在高处,因而能高于或是超脱于世俗来看到尘世 里的纷争吧?其实很多纷争,把自己抬高一下,很容易就明白把自己摆在什么位置了。为了避免装B嫌疑,这事 我就不能说太细。

晚上听到一个让我很担心的消息,一位兄弟正在远方独自经历一场他不能输的搏斗。祈祷他能赢得这场战役, 譬如南粤之地,几多秀美风光,若能共赏,当是几多幸矣。fight, brother!!!我只是做好了90岁依然能和 你在白云山早茶的准备。心香三炷,千里之外,祝君安康。