优化博客网页内容时,将js和css指定到static.151051.cn域名下,没想到其中css使用的字体文件无法加载,提示错误信息如下:

Font from origin 'http://static.151051.cn' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.151051.cn' is therefore not allowed access.

好吧,字面上的意思是,字体被禁止调用,原因头信息中并不包含Access-Control-Allow-Origin,没有授权给www.151051.cn使用,原谅我蹩脚的英文。随手百度了一下Access-Control-Allow-Origin这货,原来这货是用来定义允许哪个域使用资源,可以有效解决字体远程调用的问题。一不做二不休,开搞。

如果是php文件,可以在php文件中定义<?php header("Access-Control-Allow-Origin: http://www.151051.cn");?> 注意,这里网上有很多文章是用*代替域名,这样做比较"呵呵",所以还是指定域名比较好,安全性高一些。

像我现在这种需求,在static.151051.cn授权给www.151051.cn使用,而且static并不想支持php,那肿么办呢?

呵呵,好办,直接在nginx里加入到头信息中,一劳永逸。如下:
location ~ .*\.(js|css|woff|ttf|svg|eot|oft)?$
{
add_header Access-Control-Allow-Origin http://www.151051.cn;
expires 2h;
}

好了,解决!

nslookup是常用来查询本机域名解析情况的命令,但是一些linux系统下默认无此命令。我们可以通过安装一个包来使该命令生效,这个包中也包括dig命令。

Ubuntu:

# sudo apt-get install dnsutils

Debian:

# apt-get update
# apt-get install dnsutils

Fedora / Centos:

# yum install bind-utils

 

默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢。其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏。

如果碰上不稳定的本地DNS,还可能经常出现无法解析的情况。除了要避免“坏”的DNS的影响,我们还可以利用DNS做些“好”事,例如管理局域网的DNS、给手机App Store加速、纠正错误的DNS解析记录、保证上网更加安全、去掉网页讨厌的广告等等。

这时候搭建一个属于自己的本地DNS服务器就十分必要了,本篇文章就来分享一下Dnsmasq安装与配置方法,利用Dnsmasq来搭建一个属于自己的本地DNS服务器,享受更干净无污染、更智能快速和没有广告干扰的DNS解析服务。

Dnsmasq安装与配置-搭建本地DNS服务器 享受更干净更快无广告DNS解析

一、Dnsmasq安装

1、执行以下命令在VPS上安装Dnsmasq:


yum install dnsmasq -y 
service dnsmasq start 

Dnsmasq安装

二、Dnsmasq配置

1、Dnsmasq的配置文件是放在 /etc/dnsmasq.conf 中。

Dnsmasq配置文件

2、打开编辑,配置:resolv-file=/etc/resolv.dnsmasq.conf,表示dnsmasq 会从这个指定的文件中寻找上游dns服务器。同时取消 strict-order 前面的注册#号。

Dnsmasq去除注释号

3、检查一下no-hosts前面是不是已经有了#号,默认的情况下是有的,dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游dns 服务器寻找。

Dnsmasq检查配置

4、设置:listen-address=127.0.0.1,表示这个 dnsmasq 本机自己使用有效。注意:如果你想让本机所在的局域网的其它电脑也能够使用上Dnsmasq,应该把本机的局域网IP加上去:listen-address=192.168.1.123,127.0.0.1

Dnsmasq局域网IP

5、修改好了dnsmasq.conf 后,就可以将它重新上传覆盖原文件了。

6、另外我们还需要修改/etc/resolv.conf这个文件,执行以下命令:


echo 'nameserver 127.0.0.1' > /etc/resolv.conf
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.dnsmasq.conf
echo 'nameserver 199.91.73.222' > /etc/resolv.dnsmasq.conf
cp /etc/hosts /etc/dnsmasq.hosts
echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf

Dnsmasq添加NS服务器IP

7、resolv.dnsmasq.conf中设置的是真正的Nameserver,可以用谷歌、V2EX等公共的DNS。

三、Dnsmasq启动

1、执行以下命令设置Dnsmasq开机启动并启动Dnsmasq服务:


chkconfig dnsmasq on
/etc/init.d/dnsmasq restart

Dnsmasq启动服务

2、执行命令:netstat -tunlp|grep 53 可以查看Dnsmasq是不是已经正常启动:

Dnsmasq检查是否正常启动

3、测试:dig www.freehao123.com,第一次是没有缓存,所以时间是200多。

Dnsmasq查询时间

4、第二次再次测试,因为已经有了缓存,所以查询时间已经变成了0.

Dnsmasq缓存生效

四、Dnsmasq使用

1、本地DNS。将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。

Dnsmasq本地DNS服务器使用

2、应对ISP的DNS劫持。输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。

Dnsmasq检查DNS劫持

3、接着编辑/etc/dnsmasq.conf文件,将:bogus-nxdomain=123.123.123.123 加入进去,后面的IP是刚刚查询到的DNS劫持IP地址。

4、重启dnsmasq,再尝试打开不存在的域名,这时浏览器就会显示正常的无法连接页面了。

Dnsmasq无法显示网页

5、智能DNS加快解析速度。打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。


#国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
#国外指定DNS
server=/google.com/223.5.5.5

6、server=/cn/表示所有的cn域名都使用114这个公共DNS,server=/taobao.com/表示所有的taobao.com域名都用114,223.5.5.5 是阿里云的公共DNS,你可以换成其它的。

7、屏蔽网页广告。将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。


address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1

8、指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。


address=/freehao123.com/123.123.123.123

9、内网DNS。首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。

10、例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”。

五、Dnsmasq小结

1、Dnsmasq作为本地DNS服务器安装方便,操作简单,改动的地方也不是很多,如果用国内的VPS来搭建本地DNS,响应的速度会更快,也更稳定。

2、Dnsmasq的功能强大,反DNS劫持、加快解析速度、屏蔽广告、控制内网DNS、强制域名跳转到特定IP上等这些功能在我们的实际的生活中都是很有用的。

使用方法:
putty左侧分类选择Connection->Data,右侧一目了然。填好账号密码后,可以在Session中保存。现在是明文保存,存在一定风险,请勿保存未做安全措施线上服务器信息。
修改方法:
0. 网上搜索了教程,基本都是针对putty0.6版本的,对于C++水平较弱的人来说,参考教程给的思路,整理了一下方法。大体思路就是利用ssh可以保存用户名的功能扩展成保存密码的功能,基本采用复制username修改为password的方式制作,目前只支持SSH2登录方式,对于大多数linux服务器来讲足够了。

1. 官网下载putty源码 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
2. 使用VS2012以上C++编译项目
3. 修改config.c文件1952行,增加:

ctrl_editbox(s, "Auto-login password", 'w', 50,
HELPCTX(connection_password),
conf_editbox_handler, I(CONF_password), I(1));

4. 修改putty.h文件712行,增加:
X(STR, NONE, password) \
X(INT, NONE, password_from_env) \

5. 修改winhelp.h文件78行,增加:
#define WINHELP_CTX_connection_password "connection.password:config-password"
#define WINHELP_CTX_connection_password_from_env "connection.passwordfromenv:config-password-from-env"

6. 修改ssh.c文件,搜索Send the password packet
在注释下面增加:
oYeah:;

找到ssh2_pkt_addstring(s->pktout, s->password);
替换s->password为ssh->password

搜索Plain old password authentication.
在下面代码
add_prompt(s->cur_prompt, dupprintf("%s@%s's password: ",
ssh->username,
ssh->savedhost),
FALSE);
的后面增加:
ssh->password = conf_get_str(ssh->conf, CONF_password);
s->password = ssh->password;
if (strlen(ssh->password) == 0) {
ret = get_userpass_input(s->cur_prompt, NULL, 0);
while (ret < 0) {
ssh->send_ok = 1;
crWaitUntilV(!pktin);
ret = get_userpass_input(s->cur_prompt, in, inlen);
ssh->send_ok = 0;
}
}
else {
ret = 1;
goto oYeah;
}

dialog.c

增加

union control *ctrl_editpasswordbox(struct controlset *s, char *label, char shortcut,
int percentage,
intorptr helpctx, handler_fn handler,
intorptr context, intorptr context2)
{
union control *c = ctrl_new(s, CTRL_EDITBOX, helpctx, handler, context);
c->editbox.label = label ? dupstr(label) : NULL;
c->editbox.shortcut = shortcut;
c->editbox.percentwidth = percentage;
c->editbox.password = 1;
c->editbox.has_list = 0;
c->editbox.context2 = context2;
return c;
}

这里的c->editbox.password = 1;说明该文本框为密码类型

.config 引用的地方也要改为对应的函数

ctrl_editpasswordbox(s, "Auto-login password", 'w', 50,
HELPCTX(connection_password),
conf_editbox_handler, I(CONF_password), I(1));

点击下载:putty.0.64

http://www.centoscn.com/CentosServer/test/2014/1120/4153.html

OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。

使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。

一、服务器端安装及配置

服务器环境:干净的CentOS6.3 64位系统

内网IP:10.143.80.116

外网IP:203.195.xxx.xxx

OpenVPN版本:OpenVPN 2.3.2 x86_64-redhat-linux-gnu

    1、安装前准备

# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel
yum -y install lzo
# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

    2、安装及配置OpenVPN和easy-rsa

# 安装openvpn和easy-rsa
yum -y install openvpn easy-rsa
# 修改vars文件
cd /usr/share/easy-rsa/2.0/
vim vars
# 修改注册信息,比如公司地址、公司名称、部门名称等。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Shandong"
export KEY_CITY="Qingdao"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
# 初始化环境变量
source vars
# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
./clean-all
# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca
# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server
# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh
# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
openvpn --genkey --secret keys/ta.key

查看keys目录下生成的文件:

wKioL1RhllmyOZW9AAKmWJ5x4tg383.jpg

    3、创建服务器端配置文件

# 在openvpn的配置目录下新建一个keys目录
mkdir /etc/openvpn/keys
# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/
# 查看server.conf里的配置参数
grep '^[^#;]' /etc/openvpn/server.conf
# 编辑server.conf
vim /etc/openvpn/server.conf
port 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# 10.0.0.0/8是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log 
log-append openvpn.log
# 改成verb 5可以多查看一些调试信息
verb 5

4、配置内核和防火墙,启动服务

# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
# 启动openvpn并设置为开机启动
service openvpn start
chkconfig openvpn on

    5、创建客户端配置文件

# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn
# 编辑client.ovpn
vim client.ovpn
client
dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key
ns-cert-type server
# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 3

二、Windows客户端安装及配置

客户端系统:Windows7 64位

内网IP:172.16.4.4

OpenVPN版本:OpenVPN 2.3.3 Windows 64位

    1、下载安装OpenVPN

OpenVPN 2.3.3 Windows 32位 安装文件:

http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-i686.exe

OpenVPN 2.3.3 Windows 64位 安装文件:

http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-x86_64.exe

    2、配置client

将OpenVPN服务器上的client.ovpn、ca.crt、client1.crt、client1.key、ta.key上传到Windows客户端安装目录下的config文件夹(C:\Program Files\OpenVPN\config)

    3、启动OpenVPN GUI

在电脑右下角的openvpn图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。

wKiom1RhjGbijB7xAABMoQo3Tnc522.jpg

wKioL1RhjgyxiZ17AAIRIRCqqws094.jpg    

    4、测试

wKiom1RhjfPD8_AYAAGxUvt_PCA503.jpg

ping通服务器的内网IP,说明已经接入到服务器的内部网络。

到OpenVPN服务器上查看客户端的连接情况,查看状态文件/etc/openvpn/openvpn-status.log:

终于知道怎么应对了,每每都是关了窗口再开新的,太麻烦了。在win下习惯了ctrl + s
==============================
putty遇到ctrl+s的问题
问题描述:用putty玩linux的时候由于以前用window
习惯写完东西按一下ctrl+s 保存,但是在putty一按下就不能再输入了。
  www.2cto.com
后来查找到:ctrl+s 是putty的一个命令大概是这样子:
”Long long ago“ 某些旧的”哑终端“会在发送过来的数据太多,
显示速度跟不上时发送一个Ctrl+s让对方等一下,然后再准备好继续显示时发送一个Ctrl+q。
Putty“兼容”了这个特性。也有人说是Ctrl+s是锁定屏幕用的 。
不管是怎样,当你不小心在Putty中按了Ctrl+s后再按一下Ctrl+q就OK了。

Ext2、Ext3、Ext4、XFS、JFS、ReiserFS 和 Btrfs 的全面性能测试,对比结果如下:

完整表,请看: filesystem.html

reclen write rewrite read reread random read random write bkwd read record rewrite stride read fwrite frewrite fread freread
Ext2real 27m23.545s
user 0m9.184s
sys 4m40.925s
4 218,554 218,662 668,245 245,208 85,235 175,284 101,864 1,911,579 74,368 215,014 217,680 583,169 244,831
8 216,064 220,489 618,661 243,444 146,695 215,002 176,908 2,314,305 129,333 215,772 218,571 605,436 241,144
16 218,874 219,173 609,563 242,592 246,442 220,306 292,114 2,438,520 218,357 216,497 219,774 596,211 244,652
32 219,584 217,859 611,712 244,445 372,023 224,151 442,629 2,423,574 334,999 218,829 219,553 606,186 244,346
64 216,320 219,400 622,218 243,761 478,747 227,018 580,960 2,633,117 439,129 215,956 220,166 608,210 243,950
128 219,286 218,318 614,559 243,862 579,724 224,346 690,945 2,467,787 537,440 219,420 218,330 607,326 244,337
256 216,027 220,509 635,633 245,385 614,120 227,099 842,220 2,567,169 614,753 217,744 219,897 617,728 243,780
Ext3real 27m26.675s
user 0m9.323s
sys 6m43.199s
4 215,478 218,294 604,858 246,148 86,758 151,858 102,113 1,618,769 74,979 214,446 218,569 568,659 242,772
8 217,695 218,777 609,377 244,520 148,608 190,313 171,903 1,830,365 128,957 218,752 217,501 603,465 246,861
16 215,683 219,822 643,396 248,815 252,255 202,374 290,681 1,915,488 219,805 216,519 219,033 568,086 243,985
32 219,341 217,364 603,462 245,273 379,512 208,740 435,756 2,069,791 335,303 218,578 219,086 604,572 245,578
64 216,192 220,186 665,646 244,234 481,101 212,185 567,750 2,106,710 442,926 217,075 220,042 618,134 244,870
128 218,503 219,151 616,479 244,711 589,927 212,355 683,943 2,080,136 541,597 219,271 218,514 600,308 244,782
256 217,255 219,213 637,417 248,555 636,309 211,793 839,907 2,125,314 618,958 218,424 218,954 600,894 245,523
Ext4real 26m15.771s
user 0m9.609s
sys 5m36.096s
4 225,586 224,616 532,721 270,174 82,398 180,231 102,935 1,683,476 74,990 224,893 224,186 277,025 584,868
8 226,896 221,965 274,314 629,603 239,913 219,223 156,964 2,026,184 127,553 226,382 227,019 292,566 593,154
16 222,929 229,392 272,022 599,360 390,533 223,951 256,831 2,114,002 212,773 227,728 225,332 602,317 269,289
32 223,703 221,025 566,981 262,980 380,787 227,198 435,774 2,157,610 338,629 226,208 225,816 591,102 268,725
64 222,236 223,813 593,481 268,002 522,365 227,268 582,830 2,216,225 457,252 228,294 223,269 614,376 269,657
128 221,681 222,859 285,304 623,990 915,430 231,380 663,383 2,276,039 573,624 226,616 224,477 583,965 271,159
256 220,129 221,608 279,101 657,815 889,963 232,256 770,220 2,212,083 610,074 225,877 224,642 288,852 603,933
XFSreal 28m43.957s
user 0m9.899s
sys 6m4.268s
4 217,459 214,348 244,600 239,647 78,424 161,673 107,643 1,711,976 74,828 218,638 216,903 227,675 240,492
8 220,514 219,994 241,854 951,125 248,623 207,750 161,175 2,214,681 127,363 218,892 211,613 219,749 240,286
16 220,776 220,740 226,186 242,746 224,486 219,963 318,503 2,480,826 223,664 221,106 221,694 669,693 262,346
32 218,481 216,919 255,232 799,715 593,083 225,213 408,816 2,278,034 337,026 222,153 213,330 226,093 241,351
64 216,921 210,031 228,877 244,161 430,479 225,432 612,872 2,568,460 448,155 224,650 209,745 221,768 239,888
128 216,341 218,284 232,550 242,283 559,400 227,915 768,251 2,545,859 568,945 222,605 216,060 714,911 258,397
256 221,444 220,462 469,309 321,275 757,895 225,641 806,251 2,689,152 609,077 219,703 219,815 226,021 240,108
JFSreal 26m53.990s
user 0m9.096s
sys 4m39.691s
4 196,819 218,121 455,194 258,062 85,910 169,163 142,814 1,949,282 92,246 212,270 217,272 450,996 258,928
8 211,794 215,030 445,452 258,082 147,556 208,623 236,197 2,214,516 159,402 213,076 218,146 451,013 258,767
16 209,028 214,714 455,795 257,989 248,145 218,747 399,935 2,587,176 269,527 214,271 215,626 439,736 258,830
32 210,454 218,204 448,067 258,568 380,325 220,682 591,781 2,379,845 409,061 213,292 217,683 439,114 259,160
64 214,862 215,636 450,430 258,413 487,982 222,660 750,139 2,613,574 522,050 216,365 217,830 444,546 259,553
128 213,152 218,084 449,185 258,775 592,912 148,064 933,583 2,728,229 667,878 219,155 213,461 466,396 262,608
256 213,119 213,514 477,804 258,508 631,376 129,060 1,055,205 2,727,762 717,814 213,771 217,569 463,931 258,291
ReiserFSreal 28m16.075s
user 0m10.134s
sys 7m38.726s
4 208,422 217,932 190,459 223,684 72,142 175,210 99,820 1,726,654 74,081 211,433 216,255 540,847 239,091
8 214,840 218,917 610,592 240,376 146,908 210,703 176,295 2,180,046 128,114 215,368 218,950 580,334 240,261
16 216,886 217,827 651,240 243,800 249,478 219,967 288,457 2,444,958 213,780 217,438 219,510 592,932 239,510
32 214,217 219,178 645,366 240,227 369,030 224,795 434,556 2,372,823 329,006 217,055 217,110 554,072 240,046
64 217,160 219,013 623,512 239,875 470,435 224,619 560,790 2,429,552 421,615 218,043 218,734 587,074 239,802
128 215,163 219,348 624,117 240,364 572,926 226,463 683,686 2,530,721 530,024 215,932 218,157 577,617 240,975
256 217,058 218,839 643,857 240,141 615,875 224,530 825,364 2,631,201 590,909 217,256 218,942 567,422 240,061
Btrfsreal 59m41.974s
user 0m10.382s
sys 18m40.804s
4 214,203 215,879 265,389 280,244 65,367 10,520 16,032 773,644 34,260 94,105 194,357 269,380 268,254
8 218,318 215,978 270,100 275,160 109,687 26,015 40,447 1,366,911 89,489 141,760 214,990 273,446 271,531
16 219,477 215,738 284,876 282,111 178,662 47,881 72,623 1,864,106 150,255 177,508 219,348 264,935 273,140
32 218,835 220,886 281,550 277,054 246,933 130,288 181,774 2,573,279 250,936 204,491 219,736 281,894 268,989
64 216,758 218,890 282,026 275,127 312,803 195,963 299,685 3,270,521 354,200 202,362 220,928 281,331 271,676
128 216,509 220,235 279,353 274,813 368,053 215,445 343,696 3,739,759 414,950 216,029 219,711 276,973 272,569
256 220,333 216,113 277,920 273,271 405,215 215,495 393,731 4,015,851 474,052 213,849 220,372 283,035 277,594
Kbytes/sec

本次测试所使用的 Linux kernel 版本为 2.6.29-rc3,文件系统性能测试工具为 IOzone 3.318。

从 测试结果可以看出,Ext4 的综合性能位居现有文件系统之首,JFS、ReiserFS 在读性能方面亦有不俗表现。Btrfs 的小块数据读写性能与平均水平相差甚远,是导致其本次测试总时间超出平均时间两倍的主要原因。较之其它成熟的文件系统,Btrfs 投入生产系统运作可能尚需时日。

 

 

摘自:http://www.kuqin.com/linux/20090204/34063.html

转:http://www.chenxiaolee.com/post/21/

前段时间,服务器发生问题,看tomcat的报错日志提示:No space left on device

然后df看下磁盘空间,并没有满,还有富余,那是怎么回事呢?

用 df -i 查看,原来是磁盘的inode空间已满。
首先想到的是要删除临时或没用的文件,以释放些inode,可是由于项目小文件太多,不断的以成千上万的速度在增长,马上inode又会满。

我的解决方法:将此分区的文件系统由ext4格式改为Reiserfs文件系统。

过程:
1、要将原来的分区umount下来,umount /dev/sda3

要使用新的文件系统,首先以下创建一个Reiserfs文件系统:
# mkreiserfs -f /dev/sda3

2、键入“y”后回车,开始创建新的文件系统,格式化的过程比较慢,视分区的大小而定,但是,对其它的文件系统的格式化比较,其明显要慢很多。格式化完成后,显示如下信息:

(y/n) ALL DATA WILL BE LOST ON '/dev/sda3'! y

Initializingjournal- 0%....20%....
40%....60%....80%....100% left 0,
182 /sec 

Syncing...

ReiserFS core development sponsored
by SuSE Labs (suse.com)

Journaling sponsored by MP3.com.

To learn about the programmers and
ReiserFS, please go to

http://www.devlinux.com/namesys

Have fun.

至此创建完成Reiserfs分区的创建。(我创建过1.8T的硬盘大概用半分钟)

3.使用reiserfs文件系统

为了使用新的分区,需要将其mount上来:

4、# mount -t reiserfs /dev/sda3 /dir

这样新的文件系统就被mount到/dir目录下了。现在就可以开始使用新的文件系统存放文件了。

5、最后,为了让系统每次启动时都自动加载Reiserfs文件系统,应该手工更改/etc/fstab内容,将相应的分区加入其中。

#LABEL=/dev/sda3           /dir                 reiserfs    defaults        1 2

6、查看是否使用了reiserfs文件系统
# df -T -h
查看inode的使用情况
# df -i

这样再无需担心inode用尽的问题了。

过程中我遇到的问题:

1、没有mkreiserfs命令怎么办?
解决:安装reiserfsprogs
我的是ubuntu系统,直接便捷安装 #apt-get install reiserfsprogs

2、对已有的分区文件重新格式化后,再重新启动机器会出现重新格式化的分区无法加载,由于我只改了分区文件系统,所以肯定问题是出在这个上面,想到查看/etc/fstab,看到对这个分区没有自动更新
解决:
vi /etc/fstab 将其中刚进行改动的分区的文件类型更新为正确的。
有些系统已开始使用UUID来对应分区,使用blkid /dev/sda3命令可以查看分区的UUID 或 blkid查看各个分区的UUID。

http://www.webkaka.com/blog/archives/how-to-set-gzip-for-js-in-Nginx.html

Nginx启用gzip很简单,只需要设置一下配置文件即可完成,可以参考文章Nginx如何配置Gzip压缩功能。不过,在群里常有人提到,他们的网站Gzip压缩虽然成功了,但检测到JS仍然没有压缩成功,这是为什么呢?经过我的检查发现,原来是他们的gzip_types设置不对造成的,本文就为遇到同样情况的人解决这一问题。

Nginx启用Gzip压缩js无效

某群友在群里提到,他启用了网站的Gzip压缩,通过站长工具Gzip压缩检测检测到启用成功了,想着其他文件如CSS、JS等也都压缩成功了,但是通过进一步检测各种类型的压缩情况,发现JS文件并没有启用Gzip压缩,这令他非常纳闷,不知何故。

Nginx启用Gzip压缩js无效

图1:Nginx启用Gzip压缩js无效

 

#!/usr/bin/expect
set ssh_user "ubnt"
set password "ubnt"
spawn ssh -l $ssh_user 192.168.1.20
expect_before "no)?" {
send "yes\r" }
sleep 0.5
expect "Enter passphrase for key*"
send "$password\r"
expect "*#"
send "reboot\r"
expect "*#"
send "echo\r"
exit