Archive for category Linux
Ubuntu上KVM虚拟化的部署
这个KVM跟控制台切换器之类的东西一点关系没有,KVM全称Kernel-based Virtual Machine,是基于Linux核心的虚拟机。之前曾经写过基于XEN的虚拟化,最终linux世界还是没有选择XEN。KVM被正式导入Linux是在2007年的2.6.20核心上,以替代XEN,不过相对XEN来说,KVM要求CPU硬件上支持虚拟化技术,即Intel-vt或者AMD-v的支持。这对于2008年之后的机器来说几乎是标配的。对于这一个时期的CPU都一个劲的堆核心,内存也空前的便宜,硬盘也逐步到了320G起板的水平,可以大胆的玩虚拟机了!
再此之前,还是先确认系统的CPU是否支持虚拟化:
#egrep ‘(vmx|svm)’ /proc/cpuinfo
应该有返回,如果没有返回,且确认您的CPU支持虚拟化的话,建议去看看BIOS设置,大多数的主板都支持关闭此技术的。
从Redis的数据丢失说起
碰到一个悲催的事情:一台Redis服务器,4核,16G内存且没有任何硬件上的问题。持续高压运行了大约3个月,保存了大约14G的数据,设置了比较完备的Save参数。而就是这台主机,在一次重起之后,丢失了大量的数据,14G的数据最终只恢复了几百兆而已。
正常情况下,像Redis这样定期回写磁盘的内存数据库,丢失几个数据也是在情理之中,可超过80%数据丢失率实在太离谱。排除了误操作的可能性之后,开始寻找原因。
‘xterm-256color’: unknown terminal type.
把我的Mac pro升级到Lion之后,照旧通过终端ssh连接到了Ubuntu Server。其他的命令操作均无异常,只是在习惯性的输入了top命令之后,系统没有正常启动top界面,反而出现如下的提示:
root@www:~# top
‘xterm-256color’: unknown terminal type.
然而在Centos的主机下却不会出现问题。
使用linux的/dev/shm
挖掘一个很久之前的设想,06年的,之前的想法是用tmpfs,tmpfs是RAM和磁盘swap的混杂机制,大部分的情况是优先使用内存空间,尽管本质上是非持久存储,但性能上远不是磁盘甚至固态硬盘所能企及的。而且现在是内存空前便宜的时代,类似的方案例如memcache等,变得更有价值了。
默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录。可以通过df 命令查看结果如下:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 146G 14G 125G 10% / varrun 501M 84K 501M 1% /var/run varlock 501M 0 501M 0% /var/lock udev 501M 32K 501M 1% /dev devshm 501M 0 501M 0% /dev/shm
posix的特性——fork
记得之前曾经在一段Python中介绍过python的mulitprocess模块在windows的不兼容。其中提及了linux/Unix特有的fork方式,而windows无法实现导致的死循环。当时只是提到了一下,重点不同的关系,没有深究。
fork,顾名思义就是一把叉子,或者专业一点叫做复制叉。作为sys/type.h的一个函数,系统在每次调用fork()之后,将会以此为分叉,对进程本身进行复制,新的进程和旧进程有近乎完全一致的cpu时间和内存寄存器。
Hadoop的单机部署
要说最近最热的云计算,不得不提Hadoop。这个项目就是为集群运算而生的。依赖于它的项目n多,个人感觉hadoop已经逐渐成为一个“基于Java的分布式运算中间件”。
这里安装的hadoop为ver 0.21.0版本,包含了HDFS分布式文件系统。平台为老一套的Ubuntu 1104 server for amd64。
既然是Java Base的,首先要准备jdk环境。默认1104已经把java从apt中剔除了——跟oracle收购sun不无关系,尽管openjdk还在,我还是建议安装sun-jdk。具体实现如下:
Linux 3
最近Linux更新到了3.x的版本,彻底抛弃了2.x。赶着这波热乎劲,把系统内核升级到了3.0.2。贴个uname -a炫耀下:
Linux www 3.0.13.0.1 #2 SMP Wed Aug 17 16:05:25 CST 2011 x86_64 x86_64 x86_64 GNU/Linux
定制deb安装包
选择一个合适的Linux发行版的重要因素就是是否有足够丰富的软件以及软件的维护是否方便。对于正常情况下的使用,Ubuntu继承自Debian系的deb已经可以满足,部分情况下还是无法摆脱需要编译安装的情况。对于有点洁癖的管理员,或者需要大规模部署的情况,每台机器的编译显然不现实,于是就需要定制deb包。
本文以Ubuntu下的操作为例,同样适用于Debian。
LAMP的常用扩展安装
之前已经弄过许多篇关于LAMP搭建的东西,都是基于最简单包的,这次说说几个比较常用扩展的安装:
- FreeBSD + Apache + PHP + Mysql (恶搞版)
- FreeBSD + Apache + PHP + Mysql + Oracle
- Ubuntu + Apache + PHP + Mysql ,比较简单,正常server版安装结束的最后一步可以选择安装LAMP
- Ubuntu + nginx + php
- Ubuntu + php + Oracle
Ubuntu的AppArmor引发的Mysql问题
这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了,于是想把Mysql的数据目录移到一个相对空闲的分区下,直接修改了my.cnf中的配置,系统提示无法启动Mysql。又自做聪明的使用了链接文件访问,仍然无效。完全排除了所有linux文件系统权限的可能之后,我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档,果然!Ubuntu在710之后,增加了一个类似于Selinux的权限控制服务叫做AppArmor,名字就很有意思:应用铠甲,让我想起了Diablo2中的暗金⋯⋯

近期评论