“linux”目录存档

Linux压缩文件的读取[转]

2012年12月17日,星期一

Linux压缩文件的读取

  •  *.Z       compress 程序压缩的档案;
  •  *.bz2     bzip2 程序压缩的档案;
  •  *.gz      gzip 程序压缩的档案;
  •  *.tar     tar 程序打包的数据,并没有压缩过;
  •  *.tar.gz  tar 程序打包的档案,其中并且经过 gzip 的压缩!
  •  *.zip     zip 程序压缩文件
  •  *.rar     rar 程序压缩文件

Compress压缩文件

[root@test /root]# cp /etc/man.config /root
[root@test /root]# compress man.config //压缩man.config这个文件

[root@test /root]# compress -d man.config.Z  //-d 解压缩这个文件
[root@test /root]# uncompress man.config.Z  //解压缩这个文件

当你以 compress 压缩之后,如果没有下达其它的参数,那么原本的档案就会被后来的 *.Z 所取代!

Gzip压缩文件和zcat

[root@test /root]# gzip [-d#] filename <==压缩与解压缩
[root@test /root]# zcat filename.gz     <==读取压缩档内容
参数说明:
-d  :解压缩的参数! 

-r  :递归处理,将指定目录下的所有文件及子目录一并处理
-#  :压缩等级, 1 最不好, 9 最好, 6 是默认值!

[root@test /root]# gzip man.config   //会产生 man.config.gz 这个档案 

[root@test /root]# zcat man.config.gz //会读取出 man.config 的内容

[root@test /root]# gzip -d man.config.gz 
[root@test /root]# gunzip man.config.gz
解压缩,产生 man.config 这个档案

[root@test /root]# gzip -9 man.config  //以最大压缩比压缩 testing 这个档案!

[root@test /root]# gzip -r filename.gz file1 file2 file3 /usr/work/school
//file1file2 file3、以及/usr/work/school目录的内容(假设这个目录存在)压缩起来,然后放入filename.bz2文件中

Bzip2压缩文件和bzcat

[root@test /root]# bzip2 [-dz] filename <==压缩解压缩指令
[root@test /root]# bzcat filename.bz2   <==读取压缩文件内容指令
参数说明:
-d  :解压缩的意思!

-z  :压缩的意思!

范例:
同样的,我们以刚刚拷贝过来的 /root/man.config 这个档案为例

[root@test /root]# bzip2 –z man.config
[root@test /root]# bzcat man.config.bz2
[root@test /root]# bzip2 –d man.config.bz2
[root@test /root]# bunzip2 man.config.bz2

[root@test /root]# bzip2 filename.bz2 file1 file2 file3 /usr/work/school  

//file1file2 file3、以及/usr/work/school目录的内容(假设这个目录存在)压缩起来,然后放入filename.bz2文件中

Tar压缩文件

[root@test /root]# tar [-zxcvfpP] filename
[root@test /root]#
tar -N ‘yyyy/mm/dd’ /path -zcvf target.tar.gz source
参数说明:
-z  :是否同时具有 gzip 的属性?

-x  :解开一个压缩档案的参数指令!

-t  :查看 tarfile 里面的档案!

-c  :建立一个压缩档案的参数指令

-v  :压缩的过程中显示档案!

-f  :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

『 tar -zcvPf tfile sfile』才对喔!

-p  :使用原档案的原来属性(属性不会依据使用者而变)

-P  :可以使用绝对路径

-N  :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的档案中!

–exclude FILE:在压缩的过程中,不要将 FILE 打包! 

范例:
[root@test /root]# tar -cvf directory.tar directory 

//只将目录整合打包成一个档案 

[root@test /root]# tar -zcvf directory.tar.gz directory 
除了将目录打包外,同时以 gzip 压缩 

[root@test /root]# tar -zcvf filename.tar.gz  /home/test/* 
将 /home/test/ 这个目录下的档案全部打包并压缩成为一个 filename.tar.gz 的档案

[root@test /root]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

[root@test /root]# tar -xvf  directory.tar 
解 tar 的封包,请注意,由于没有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否则会显示有问题!

[root@test /root]# tar -zxvf directory.tar.gz 
这个就是有加上 gzip 的压缩的结果!所以需要加上 –z 呦!

[root@test /root]# tar –ztvf directory.tar.gz
这个 t 可以用来查看 tar 里面的档案信息呢!而不需要将他解开!

[root@test /root]# tar -zcvPf home.tar.gz /home 
则建立起来的压缩档内档案为绝对路径
请注意,使用这个 P 的参数时,不要将 P 加在 f 后面,因为

f 之后要立即接档名才行喔!

[root@test /root]# tar -N ’2002/06/25′ -zcvf home.tar.gz /home 
上面是说 在 /home 这个目录中,比 2002/06/25 日还要新的档案才会被打包进入 home.tar.gz 这个档案中! 

[root@test /root]# tar -zcvf host.tar.gz / –exclude /mnt –exclude /proc 
上面是说,将根目录的所有数据都打包进 host.tar.gz 这个档案中,但是 /mnt 及 /proc 则不打包! 

[root@test /root]# tar -cvf – /home | tar -xvf –
上面的意思是『将 /home 打包之后,直接解压缩在 /root 底下!』嘿嘿!不需要再建立一次中间档案!不过,使用上面的语法最好使用『绝对路径』,比较不会有问题!这个方式适合不想要建立中间档案时!

Zip和unzip压缩文件

[root@test /root]# zip -r myfile.zip ./*  //将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.

[root@test /root]# zip -d myfile.zip smart.txt  //删除压缩文件中smart.txt文件

[root@test /root]# zip -m myfile.zip ./rpm_info.txt //向压缩文件中myfile.zip中添加rpm_info.txt文件

 

[root@test /root]# unzip -o -d /home/sunny myfile.zip //把myfile.zip文件解压到 /home/sunny/

Rar压缩文件

现在网上多数压缩包是rar格式的,所以需要一个rar工具。

首先在http://www.rarlab.com/download.htm下载RAR 3.60 beta 6 for Linux

我解压到/opt下,会自动建立rar目录。这个工具无需编译可以直接使用。

在$HOME目录下建立bin目录。

在bin目录中建立一个链接。ln -s /opt/rar/rar rar。

就可以用rar工具压缩和解压.rar文件了。不过此工具是命令方式的,和在DOS下的RAR操作是一样的。

121212完成空间迁移

2012年12月12日,星期三

121212今天是个值得记忆的日子。

学习了VPS,安装lamp,转移了所有站点到了84。遇到最头痛的就是不同php版本的问题,VPN是5.3.14的,虚拟空间原来有5.2.17,也有5.3.1的。有些用了打补丁的办法,有些则无法解决。

感触比较深的是,国外的joomla发展很好,讨论激烈,很多问题只要花时间,都能找到答案。

遗憾的是我没有掌握用VPS里,多PHP版本环境的技术。庆幸的是我能独立完成这些工作,SSH里,对LINUX的时候经历了从生疏到依赖的过程。

FIGHTING~

[转载]用DROPBOX备份VPS

2012年12月5日,星期三

首先要有个DROPBOX账户。

链接,戳

 

一直以来,使用美帝VPS建站,由于网速等多方面原因,面临着备份困难、下载困难的难题,而且还要面临故障啊、商家跑路啊等等数据丢失的风险,前段 时间DS不是数据都木有了么。现在就来讲一下解决这个问题的方法,早些时候有用脚本通过FTP来备份的,例如使用godaddy域名附带的免费空间或者另 外单独购买备份空间,但有时并不好用;也有两台VPS同步备份的,这个花费有点高。而现在使用DropBox来进行同步备份,全自动化,非常好用,去年就 有过类似的介绍,但很多都不详细,搜集了网上的方法,特别整理出来,所有过程都有详细注明。

————————————————————————————————————

DropBoxDropbox是一个提供同步本地文件的网络存储在线应用。支持在多台电脑多种操作中自动同步。(注:要使用https才能访问,至于http不能访问的原因,都懂的)

容量大小:初 始的免费容量是2G,完成上手任务后可以多增加250M。用官方提供的邀请链接,每一个成功邀请注册可获赠500M,可以最大扩容到18.25G。邀请那 个了比较麻烦,在淘宝上有专门以扩容为业务的店铺,大概RMB8元左右就可以了。此外,偶尔官方会有些活动,例如今年2月有一个安装beta版客户端导入 图片送5G的活动,不过现在已经失效了。

————————————————————————————————————

一、安装Dropbox linux客户端:(官方简易教程:点击我前往)

ssh登陆,在root目录下输入以下命令,视版本不同而选择:(注:code中已包含cd到root根目录的命令,而且只有在root根目录下后续步骤才能生效)
32-bit:

1
cd ~ && wget -O – “http://www.dropbox.com/download?plat=lnx.x86″ | tar xzf -

64-bit:

1
cd ~ && wget -O – “http://www.dropbox.com/download?plat=lnx.x86_64″ | tar xzf -

下载后已自动解压,不需要再执行解压命令。

二、Dropbox与机器绑定

执行以下命令:

1
~/.dropbox-dist/dropboxd &

第 一次执行会生成“host_id”,这机器与Dropbox进行绑定的唯一字符串,提示的信息是一个链接,而且会重复滚动出现直到绑定完成。复制这个链接 在浏览器里访问,输入Dropbox帐户和密码就可以了,输入后会自动跳转到Dropbox主界面并且会有绑定成功的提示,此时在ssh客户端里也会有提 示并且停止滚动,再按回车键就完成绑定。

(注:官方的运行命令结尾没有“&”这个符号,在centos下运行会出现ssh冻结无反应的情况,据称Debian也会。实际上守护进程已经在运行了。)

三、建立目录软链接

在 root目录下生成的“Dropbox”文件夹(linux文件夹名称区分大小写的),就是Windows里叫做“同步目录”的文件夹,只要把文件放置在 里面就会同步。在未同步之前,里面有一个文件夹“.dropbox.cache”和一个文件“.dropbox”。当然我们不可能把网站放置到这里,因此 我们需要在里面建立软链接就行了,使用ln命令建立软链接(软链接其实就是windows里的快捷方式),格式是:ln –s 源文件 目标文件,我可以先进入“Dropbox”文件夹,免去每次都需要输入目标文件的麻烦。过程如下:

1
2
cd ~/Dropbox
ln -s /home/wwwroot

释义:进入“Dropbox”文件夹,建立/home/wwwroot/ 文件夹的软链接。运行这两个命令后会在“Dropbox”文件夹下生成一个名为“wwwroot”的软链接。如果网站放在不同地方的话,那么就建立多个软链接就好。

四、运行同步守护进程,同步网站数据

输入以下命令,这个命令就是之前绑定“host_id”的那个命令。

1
~/.dropbox-dist/dropboxd &

运 行此命令后,视数据大小和网络环境而定,反正美帝的VPS同步都很快,会在浏览器里的Dropbox文件管理界面里看到同步的文件夹。同时,在 “Events(活动)”里看到同步记录,记录里有文件数量和文件夹数量,机器与Dropbox帐户的绑定日志也会记录在里面,这个其实就是 Dropbox的帐户活动记录。

五、定时同步,节约内存资源

运行守护进程是要占用一定内存的,为了节约这部分内存,可以通过定时运行脚本来控制。过程如下:

在第三步是进入了“Dropbox”文件夹的,我们一般把脚本放在root目录下,因此需要回到root根目录,执行:

1
cd ~

首选需要关掉守护进程,运行:

1
killall dropbox

编写定时同步脚本:

1
vi backup.sh

用vi编辑器新建backup.sh目录,运行后会进入vi编辑器,此时按“I”键进入编辑模式,复制以下代码粘贴进去,按ESC键退出编辑模式,开启大写锁定状态(按“Caps Lock”键),再按两次“Z”键即自动保存并退出vi编辑器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
start() {
echo starting dropbox
/root/.dropbox-dist/dropboxd &
}
stop() {
echo stoping dropbox
pkill dropbox
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac

继续运行以下命令,用“chmod”命令为“backup.sh”添加可执行权限:

1
chmod +x backup.sh

编写周期性执行指令:

1
crontab -e

“crontab”命令运行后会自动调用内置的vi编辑器进行编辑,按“I”键进入编辑模式,复制以下两行指令代码并粘贴。

1
2
0 4 * * * sh /root/backup.sh restart
0 5 * * * sh /root/backup.sh stop

上 面的意思是在每天4点开始同步,5点关闭同步,一个小时一般都够用,除非网站特别大。完成后按“ESC”退出编辑模式,开启大写锁定状态,再按两次“Z” 键即自动保存并退出vi编辑器。附:“crontab -l” 列出目前的时程表,“crontab -r” 删除目前的时程表,“crontab”指令的详细介绍可以参考这里>>点我传送,可自行调整同步时间。查看系统当前时间的命令是“date”。

六、同步mysql数据库的脚本

创建数据库备份脚本:

1
vi bakmysql.sh

按“I”键进入编辑模式,复制以下代码并粘贴(文字部分填写需填写完好才行),按“ESC”退出编辑模式,开启大写锁定状态,再按两次“Z”键即自动保存并退出vi编辑器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
DBName=修改为数据库名
DBUser=修改为数据库用户名
DBPasswd=修改为数据库密码
BackupPath=/root/Dropbox/
LogFile=/root/db.log
DBPath=/usr/local/mysql/var/ #备份的数据库目录
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
NewFile=”$BackupPath”db$(date +%y%m%d).tgz
DumpFile=”$BackupPath”db$(date +%y%m%d)
OldFile=”$BackupPath”db$(date +%y%m%d –date=’5 days ago’).tgz  #自动删除5天前的备份
echo “——————————————-” >> $LogFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile
echo “————————–” >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
        rm -f $OldFile >> $LogFile 2>&1
        echo “[$OldFile]Delete Old File Success!” >> $LogFile
else
        echo “[$OldFile]No Old Backup File!” >> $LogFile
fi
if [ -f $NewFile ]
then
        echo “[$NewFile]The Backup File is exists,Can’t Backup!” >> $LogFile
else
        case $BackupMethod in
        mysqldump)
                if [ -z $DBPasswd ]
                then
                        mysqldump -u $DBUser –opt $DBName > $DumpFile
                else
                        mysqldump -u $DBUser -p$DBPasswd –opt $DBName > $DumpFile
                fi
                tar czvf $NewFile $DumpFile >> $LogFile 2>&1
                echo “[$NewFile]Backup Success!” >> $LogFile
                rm -rf $DumpFile
                ;;
        mysqlhotcopy)
                rm -rf $DumpFile
                mkdir $DumpFile
                if [ -z $DBPasswd ]
                then
                        mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
                else
                        mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
                fi
                tar czvf $NewFile $DumpFile >> $LogFile 2>&1
                echo “[$NewFile]Backup Success!” >> $LogFile
                rm -rf $DumpFile
                ;;
        *)
                service mysql stop >/dev/null 2>&1
                tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
                service mysql start >/dev/null 2>&1
                echo “[$NewFile]Backup Success!” >> $LogFile
                ;;
        esac
fi
echo “——————————————-” >> $LogFile

保存好脚本后别忘了加上可执行权限,你也可以定时运行哦,执行后自动在同步目录里生成备份,守护进程运行后则自动同步了。

七、卸载dropbox方法

停止守护进程,删除目录就好了。分别执行以下命令:

1
2
killall dropbox
rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py

八、重装系统或者转移后如何使用Dropbox恢复VPS数据

1、进行上面第一步和第二步后,就会自动在同步目录“Dropbox”里出现原先备份的文件夹,注意,这不是软链接,这是同步过来的文件。

2、稍等片刻,等同步完成后手工移动到你想要放置数据的目录,然后重新在同步目录建立一下软链接就好了。

注: 过程实际上是先同步数据到同步目录里,转移文件夹时在Dropbox服务器上自动执行了删除操作,当建立软链接后,又开始同步Dropbox到服务器上。 如果想节约流量,那么可以先结束掉守护进程,再建立软链接,在Dropbox的网页操作界面上点击“回收站”那个图标,显示出已经删除的数据,右键选择 “恢复”即可恢复回来,那么同步时只是对比,不会再上传。

xampp绑定多域名

2012年12月3日,星期一

首先在“ D:\xampp\apache\conf ”文件夹找到“ httpd.conf ”文件,用记事本打开后加入下面一段许可代码,
至于位置应该那里都可以,我是放在文件最后的,想说改起来也容易找

<directory “D:\xampp\htdocs\minren8”>
order allow,deny
allow from all
</directory>
<directory “D:\xampp\htdocs\tuangoso″>
order allow,deny
allow from all
</directory>

然后到“ D:\xampp\apache\conf\extra ”文件夹找到“ httpd-vhosts.conf ”文件,用记事本打开后在最后面找到“
#namevirtualhost *:80 ”将其改成“ namevirtualhost *:80 ”,再找到“ ##<virtualhost *:80> ”,将其及其后面内容改成下面的代码,或者直接把下面内容增加到文件里面也可以

</virtualhost><virtualhost *:80>
serveradmin webmaster@dummy-host2.example.com
documentroot /xampp/htdocs/minren8
servername ‘www.minren8.com’
##   errorlog @rel_logfiledir@/dummy-host2.example.com-error_log
##   customlog @rel_logfiledir@/dummy-host2.example.com-access_log common
</virtualhost>

<virtualhost *:80>
serveradmin webmaster@dummy-host2.example.com
documentroot /xampp/htdocs/tuangoso
servername ‘www.tuangoso.com’
##   errorlog @rel_logfiledir@/dummy-host2.example.com-error_log
##   customlog @rel_logfiledir@/dummy-host2.example.com-access_log common
</virtualhost>

最后到“ c:\windows\system32\drivers\etc ”文件夹下找到“ hosts ”文件,用记事本打开以后在“ 127.0.0.1   localhost ”后面加入下面两条记录
127.0.0.1   ‘www.minren8.com’
127.0.0.1   ‘www.tuangoso.com’

本文出自 “蜗牛技术__Light” 博客,请务必保留此出处http://minren8.blog.51cto.com/2305589/408424

 

注意LINUX VPS XAMPP下不是以上的路径。应该是下面的:

/opt/lampp/etc/extra/httpd-xampp.conf

/opt/lampp/etc/extra/httpd-vhosts.conf

 

改完后 lammp restart

vncserver服务的配置和使用

2012年12月3日,星期一

1、vncserver服务的启动
redhat 及fedora 一般都自动安装了vncserver了 只要在服务列表中选中启动一下就可以了

2、vncserver的配置
通过编辑文件$HOME/.vnc/xstartup来启动你喜欢的窗口管理器。使用startkde &来启动KDE,使用gnome-session &来启动GNOME,fvwm2 &来启动FVWM2 。下面是一个例子

#################

#!/bin/sh

# Uncomment the following two lines for normal desktop:

# unset SESSION_MANAGER

# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

#xterm -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &

gnome-session

#startkde

#twm &

##################

3、开始使用
在启动前还是要运行一个东西的,可以使用telnet用自己的用户登录远程系统运行vncserver ,若要定义界面大小,颜色看 vncserver –help,若是第一次运行会提示输入口令,远程登录的口令,跟用户口令没关系的。口令修改可以使用vncpasswd程序。运行成功后会有桌面号的提示 类似:1 :2 的。记住桌面号。退出telnet。每次服务器重器后都需要运行一次。

4、登录
在windows下载一个winvnc,安装完成后,不用启动服务,使用它的查看器就可以了。输入vnc服务器地址:桌面号 ,再输入口令就可以使用了。注意,每次使用完,请千万不要注销掉系统,直接关闭winvnc查看器就可以了,只要服务器没问题,可以再次使使用 winvnc继续连接。

5、关闭服务器上自己的vnc连接
vncserver -kill :桌面号

6、如何使服务器开机自动运行vncserver 不需要自己telnet
使用linuxconf来设置vncserver启动脚本(/etc/init.d/vncserver)实现系统自启动时启动vncserver。但是默认的启动脚本灵活性不够,因此编辑/etc/init.d/vncserver,修改:

“su – ${display##*:} -c “cd && [ -f .vnc/passwd ]

&& vncserver :${display%%:*}””

为:

“su – ${display##*:} -c “cd && [ -f .vnc/passwd ]

&& vncserver ${ARGS} :${display%%:*}””

然后编辑/etc/sysconfig/vncservers:

# The VNCSERVERS variable is a list of

# display:user pairs.

#

# Uncomment the line below to start a VNC server on

# display :1 as my ‘myusername’ (adjust this to your

# own). You will also need to set a VNC password;

# run ‘man vncpasswd’ to see how to do that.

#

# DO NOT RUN THIS SERVICE if your local area network

# is untrusted! For a secure way of using VNC, see

# .

VNCSERVERS=”1:jdimpson”

ARGS=”-geometry 1024×768 -alwaysshared “

在ARGS中修改”1024×768″来适应自己的X桌面实际参数配置。可以在这里添加任何其他VNC服务器参数配置。在VNCSERVERS中修 改jdimpson为你希望运行VNC桌面的用户。VNCSERVERS中的1表示VNC以桌面1运行,如果希望添加其他的桌面,可以修改配置如下:

VNCSERVERS=”1:jdimpson 2:phred 3:sysadmin”

在RedHat系统上,使用以下命令启动VNC:

/etc/init.d/vncserver start

现在你就可以使用VNC任何客户端来使用VNC桌面。

转:如何挑选VPS:Xen与OpenVZ技术性能测试

2012年10月4日,星期四

准备购买一台VPS,对比了多家VPS提供商,国外的、国内的,注意纠结于究竟是Openvz好还是Xen好的问题,于是查阅了一些资料,得到一些心得,分享一下。

下面的这篇翻译自hostingfu.com,Observer进行了翻译,本人进一步加了注释。

一、Openvz和Xen的技术规格分析

1.Xen与Openvz的区别

Xen和Openvz同样是虚拟化主机技术,区别在于Xen是半虚拟化技术,它并不是一个真正的虚拟机,而是相当于自己运行了一个内核的实例,可以 自由的加载内核模块,虚拟的内存和IO,稳定而且可预测。Openvz则是操作系统级别的虚拟化技术,是底层操作系统上的一层应用,这意味着易于理解和低 权重开销,一般来说也意味着更优的性能。

这里有一个问题,可以看到实际上openvz因为免去了大量的公共开销,理论上来说性能会比xen更好。为什么大家都会认为openvz过分压榨性能呢?我认为是因为openvz配置起来比较灵活,给黑心 openvz服务商改低限制的机会。

比如mediatemple,号称512M内存的dv方案,kmemsize才12M,不了解的人看了512M觉得很哈皮啊,可是使用的时候一般这512M能分到你手里一半就不错了。此消彼长,所以才会有xen 能更好地利用机器性能的错觉。

2.Openvz的内核模型

首先当OpenVZ的主机说“256MB的保证”,它实际上意味着约232MB的“privvmpages”,14M的“kmemsize”和其他杂项资源。当应用程序调用 malloc()分配的内存将被添加到“privvmpages”。

当“privvmpages”超过限制,malloc()将失败并返回一个NULL。当主机服务器内存用光了,然后虚拟环境下的进程超过 “oomguarpages”的将被终止。

OpenVZ的内存管理方法既有问题也有优势。最大的问题之一是内存容量的应用程序使用的内存和应用程序实际上分配到的内存是不同的,不同的应用程 序他们的差别可能会很大。以Java为例,它通常分配一大块的内存,但是,它可能只使用一小部分分配的内存。如果privvmpages受限,java会 立即停止运行。调整参数可以解决一部分问题,但它处理得绝对没有Xen来得干净利落。事实上,几乎所有使用内存分配的应用程序都会受OpenVZ这个问题 的影响。

/proc/meminfo 本身也有问题。虽然OpenVZ的已经为内存进行了虚拟,但是用”free”命令依然会返回主机的内存。这样就会使小内存的openvz的vps无法运行诸如java或者gcc编译这样的程序。

OpenVZ的内存模型的优点是, 它容易理解: 你几乎就只有privvmpages受限。与专用的服务器或Xen的服务器不一样的是,你的磁盘高速缓存和页面缓存并不计入您的总内存使用情况。因此,在 一个没有过度销售的openvz主机上,由于拥有较大冗余的公共资源,它实际上可能会比同类规格的Xen的VPS表现更佳。

3.Xen的内存模型

Xen的系统模型更容易解释。256MB的Xen的VPS是就像一个256MB的专用服务器-该内存段是预留作VPS专用,没有其他VPS能够使用这部分内存,这就像一个真正的专用服务器。

此外,当内存不足时,VPS会使用Swap。一般每个VPS带有两倍大小的交换分区,当您的应用需要更多的内存,不常使用的页面从内存中被换出到交 换分区,从而腾出使更多的房间。因此,256MB的Xen的VPS系统实际上共有768MB内存(256MB内存+ 512MB的交换空间),请相信我,交换空间是非常有用的,特别是处理突发的需求高峰时。

这么说来,Xen是永远远优于OpenVZ?不然,你的256MB的VPS理论可以使用高达768MB内存,而实际上内核,高速缓存,缓冲,他们都占用内存。这部分系统开销也是可观的。另外,Swap会严重降低性能。

4.稳定性和可预测性

当内存耗尽时,xen和openvz表现大相径庭。xen会把不常用的内存页面换入Swap,这将大大降低性能,当Swap也用尽,那么xen的系统会响应得越来越慢,就像一台真实的服务器一样。

而openvz一旦内存用尽,则会突然死亡:开不出新的程序,只能等待系统资源可用。更有甚者,本来运行的好好的程序也可能因为不断增长而超过限制,然后突然死亡。这就像开车开到70码,然后突然撞墙上了,一般会死得很惨。

毫无疑问这点上我倾向于xen技术,可预测,稳定。

5.结论

如果xen和openvz一样贵,我肯定选xen,因为可预测性,即使openvz打8折,我还是追求稳定。

上面的话总结一下,得出几个结论:

1、XEN比openvz主机对买家更有利,比如分配给你512M内存后,这一部分内存就从服务器上专门划给你了,别人将无法使用,而openvz 则是共用内存,比如分配给你512M内存是指最大你能使用512M内存,比如你占用了200M内存,那么就只从物体内存中分配200M给你,所以卖家非常 容易在服务器上面超卖!

2、openvz更高效,xen是硬件底层虚拟,更接近真实服务器,而openvz是操作系统虚拟,虚拟服务自身占用内存少,同样的程序执行效率更高!

3、如果购买openvz应看卖家是否会超卖,应选择良好声誉明确申明不会超卖的

4、如果购买xen主机,应同时关注swap大小

5、测试VPS主机性能使用Unixbench(很多人不知道),国外非常流行这个东西!

这是它的一些参数说明

 

  • dhry2reg 内存的register性能
  • whetstone-double 双精度浮点性能
  • execl execl call性能
  • fstime 文件系统性能
  • fsbuffer 文件系统性能
  • fsdisk 文件系统性能
  • pipe 管道(pipe)的性能
  • context1 管道上下文切换的性能
  • spawn 创建进程的性能
  • shell shell并发性能
  • syscall 系统调用性能

6、VPS用途:服务器、软交换、代理和反向代理、离线BT下载等等

7.通常一般的使用条件下,两者性能应该相差不大。

转:linux各版本的特点

2010年11月5日,星期五

Linux最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。

Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:

Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的 Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有 Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。

下面给为选择一个Linux发行版本犯愁的朋友一些建议:
如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!
如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。
如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。