原来的虚拟机只分配了8G空间,用啊用啊的就满了。怎么办?
于是想过挂载硬盘,但是不太会弄,今天在hover(http://www.hoverlees.com/blog/)的帮助下,搞定了。
1、fdisk -l,看看挂载进来的硬件是什么?
XML/HTML代码
- Disk /dev/sda: 8589 MB, 8589935104 bytes
- 255 heads, 63 sectors/track, 1044 cylinders, total 16777217 sectors
- Units = sectors of 1 * 512512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x0006642a
-
- Device Boot Start End Blocks Id System
- /dev/sda1 * 2048 499711 248832 83 Linux
- /dev/sda2 501758 16775167 8136705 5 Extended
- /dev/sda5 501760 16775167 8136704 8e Linux LVM
-
- Disk /dev/sdb: 25.8 GB, 25769803776 bytes
- 255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors
- Units = sectors of 1 * 512512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
-
- Disk /dev/sdb doesn't contain a valid partition table
-
- Disk /dev/mapper/webserver-root: 7763 MB, 7763656704 bytes
- 255 heads, 63 sectors/track, 943 cylinders, total 15163392 sectors
- Units = sectors of 1 * 512512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
-
- Disk /dev/mapper/webserver-root doesn't contain a valid partition table
-
- Disk /dev/mapper/webserver-swap_1: 532 MB, 532676608 bytes
- 255 heads, 63 sectors/track, 64 cylinders, total 1040384 sectors
- Units = sectors of 1 * 512512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
-
- Disk /dev/mapper/webserver-swap_1 doesn't contain a valid partition table
2、将上面的红色部分的设备先格式化成某一类型的盘,输入:“mkfs.” 然后按TAB,出现:
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev
为了更通用一点,我还是用了Ext3,所以我后来输入:mkfs.ext3 /dev/sdb1,返回:
XML/HTML代码
- mke2fs 1.41.14 (22-Dec-2010)
- Filesystem label=
- OS type: Linux
- Block size=4096 (log=2)
- Fragment size=4096 (log=2)
- Stride=0 blocks, Stripe width=0 blocks
- 1572864 inodes, 6291200 blocks
- 314560 blocks (5.00%) reserved for the super user
- First data block=0
- Maximum filesystem blocks=0
- 192 block groups
- 32768 blocks per group, 32768 fragments per group
- 8192 inodes per group
- Superblock backups stored on blocks:
- 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
- 4096000
-
- Writing inode tables: done
- Creating journal (32768 blocks): done
- Writing superblocks and filesystem accounting information: done
-
- This filesystem will be automatically checked every 32 mounts or
- 180 days, whichever comes first. Use tune2fs -c or -i to override.
3、mount到一个目录下,
XML/HTML代码
- root@webserver:/mnt# mount /dev/sdb1 /mnt
4、然后df看一下结果:
XML/HTML代码
- root@webserver:/mnt# df
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/mapper/webserver-root
- 7462608 4930416 2153108 70% /
- udev 246512 4 246508 1% /dev
- tmpfs 101524 576 100948 1% /run
- none 5120 0 5120 0% /run/lock
- none 253808 0 253808 0% /run/shm
- /dev/sda1 233191 154710 66040 71% /boot
- /dev/sdb1 24769916 176196 23335480 1% /mnt
一切就这样的完成了。
做个笔记。。。
说是成功了,但其实最终我还是通过PHP来实现的,因为遇到的问题是对方是gzip后的数据,无法直接替换,只能用php先将gzip的内容解压开,替换完后再gzip输出。
头疼。
参考:apache的mod_ext_filter,这个是功能比较强悍的替换模块了
nginx下当然也有更好的。不过因为我的服务器目前用的是apache。而且我习惯了用apache的一些配置,一下子要换到nginx不太习惯。
以后慢慢考虑吧。
---------
如果用PHP做,有些网站的gzip无法用:gzuncompress,gzinflate,gzdecode解压的。
可以用这个函数:http://www.jb51.net/article/15262.htm,原网站没有格式化,所以我格式化了一下:
PHP代码
- function gzdecode2($data) {
- $flags = ord(substr($data, 3, 1));
- $headerlen = 10;
- $extralen = 0;
- $filenamelen = 0;
- if ($flags & 4) {
- $extralen = unpack('v', substr($data, 10, 2));
- $extralen = $extralen[1];
- $headerlen += 2 + $extralen;
- }
- if ($flags & 8)
- {
- $headerlen = strpos($data, chr(0), $headerlen) + 1;
- }
- if ($flags & 16)
- {
- $headerlen = strpos($data, chr(0), $headerlen) + 1;
- }
- if ($flags & 2)
- {
- $headerlen += 2;
- }
- $unpacked = @gzinflate(substr($data, $headerlen));
- if ($unpacked === FALSE) {
- $unpacked = $data;
- }
- return $unpacked;
- }
这回就可以了。。。
说实话,xen和openVZ安装VPN我真的不是特别了解 ,以前只知道openVZ默认不能装,因为没有ppp和tun设备,但即使有了ppp和tun设备 后,其实,iptables的NAT转发也不是每台机器 都支持。
我在cloud3k上的VPS后台里可以安装ppp和tun设备 ,但安装后无效,发了一个TK给客服,客服说是开通了NAT转发。然后就OK了。
但网上的一些教程中的iptables其实都不能用。因为那句: /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE,其实是针对xen的VPS的。openVZ根本 就没有MASQUERADE这类的用法,而且。。。eth0,在openVZ上都没有。只有venet0。所以,我又找了一些资料,比如 :
1、http://qiaodahai.com/personal/article/2012/centos-6-pptpd-one-key-installation.htm
2、服务器架设:PPTPD VPN一键安装包 For CentOS 5
3、BuyVM OpenVZ VPS Debian安装PPTP VPN
其实现在网上有openVZ的一键安装包,我这里就不多介绍了,google一下或者百度一下,N多。
安装完后就三个功能
1、安装pptpd服务
2、修复pptpd服务
3、设置帐号
非常方便。但设置帐号后一定要去chep-secrets文件里看一下,理论上是可能有一个所谓的默认帐户存在的。注意删除一下。
一般来说测试磁盘的IO功能时都是用的:dd if=/dev/zero of=/root/zerofile bs=1M count=256
这样生成出来的文件大约是268M
为什么是/dev/zero,那是因为:/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。
当然dd还有另外一个参数:oflag=dsync
但是有人和我说:
XML/HTML代码
- Why are you using the flag dsync? This does not test the disks correctly and often reports bad speeds on SSD systems.
-
- dd also will not test the read/write, it only tests sequential writes. Using ioping you can test the various types of disk speeds including random (the most important) or sequential (the least important).
所以,仅作参考即可,不要太当一回事吧
之前有在自己博客上介绍怎么样安装PPTP的VPN,但很多人说l2tp其实更安全,所以在想办法升级到l2tp...
随便google了一下,结果文章倒是很多,但几乎都打不开,难道这已经是一个关键字了??
还好google 有cache,所以,打开cache看了一下,并且复制回来,等会我就试试:
第一部分:如何用 Debian / Ubuntu 服务器上架设 PPTP VPN服务器
如果你有一台linux主机,通过putty.exe 或苹果电脑的teminal用SSH登录到主机后要用文本编辑器,若是上传下载编辑好的配置文件就太麻烦了。 我先简单介绍一下VI编辑器的用法,学会VI了就不且上传下载编辑好的配置文件了:
vi /etc/ilovezola.conf 这是进入编辑ilovezola.conf的模式,然后hjkl四个键是方向键,分别是左下上右,按字母x可删除一个字符。按a进入插入模式,hjkl就 不能当方向键用了。退出插入模式按ESC键,保存文件输入命令冒号加字母:w 退出输入命令:q 退出并保存就是 :wq
有了这些基础就可以安装PPTP VPN服务器了。下面绿色的字就是可以复制到命令行里执行的,蓝色的字是需要你对比或复制到文件中的,懒人办事效率高,复制吧,不会错的。
先登录你的主机:
ssh root@114.114.114.114
vi /etc/apt/sources.list
然后删除所有deb前面的#号 ,你按照这里操作就行,我直接引用,这不算抄袭:
接着用下面的命令更新你的软件包数据库
apt-get update
现在我们可以正式安装VPN server了。这里我们选择pptp(vpn 协议的一种),因为简单,一条命令搞定。剩下的无非是一些配置。
apt-get install pptpd
pptpd安装完成后,编辑这个文件,
vi /etc/pptpd.conf
去掉下面两行的注释或者直接添加这两行(在文件的最后).这一步是配置ip地址的范围。
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
然后在编辑这个文件,
vi /etc/ppp/chap-secrets
在这个文件中添加vpn用户,按照下面的格式,每个用户一行。
username pptpd password *
为了让你的用户连上VPN后能够正常地解析域名,我们需要手动设置DNS. vi /etc/ppp/options,找到ms-dns这一项,设置你的DNS.这里我推荐的是Google 最近发布的Public DNS,原因是因为好记。
ms-dns 8.8.8.8
ms-dns 8.8.4.4
vi /etc/sysctl.conf文件,找到"net.ipv4.ip_forward=1"这一行,去掉前面的注释。
net.ipv4.ip_forward=1
运行下面的命令让配置生效。
sysctl -p
重启pptpd服务
/etc/init.d/pptpd restart
最后开启iptables转发
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
ok,安装完毕。
附:使用PPTP VPN的方法:
- 如何在 Windows XP 中配置虚拟专用网络 (VPN) 连接 http://support.microsoft.com/kb/314076/zh-cn
- How to configure a connection to a virtual private network (VPN) in Windows XP http://support.microsoft.com/kb/314076/en
- iOS:设置 VPN http://support.apple.com/kb/HT1424?viewlocale=zh_CN
- iOS: Setting up VPN http://support.apple.com/kb/HT1424?viewlocale=en_US
- Mac OS X 10.6 Help 建立一个到虚拟专用网络的连接http://docs.info.apple.com/article.html?path=Mac/10.6/zh/9010.html
- 设定高级 VPN 选项 http://docs.info.apple.com/article.html?path=Mac/10.6/zh/11941.html
- Ubuntu下使用VPN http://wiki.ubuntu.org.cn/如何使用UbuntuVPN
- Installing personalVPN-PPTP on Android Mobile Phone http://wiki.witopia.net/wiki/Installing_personalVPN-PPTP_on_Android_Mobile_Phone
第二部分:如何用 Debian / Ubuntu 服务器安装成L2TP / IPSec VPN 服务器
Ubuntu 10.04 LTS(Lucid)自带的OpenSwan有NAT的BUG。10.10 openswan无此问题(但是10.10的xl2tpd有问题,不分配IP,需要手动指定,解决方案见下文,本文都是指使用Ubuntu 10.04 LTS)可以从OpenSWAN下载最新版本(2.6.24+)才可以。也可以使用非官方PPA源
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openswan/ppa
sudo apt-get update
然后查查看是否是已经跟更新到最新
apt-cache policy openswan
openswan:
Installed: 1:2.6.23+dfsg-1ubuntu1
Candidate: 1:2.6.31-1xelerance1
Version table:
1:2.6.31-1xelerance1 0
500 http://ppa.launchpad.net/openswan/ppa/ubuntu/ lucid/main Packages
*** 1:2.6.23+dfsg-1ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ lucid/universe Packages
100 /var/lib/dpkg/status
可见源里面已经获得2.6.31+的版本
apt-get install openswan就可以可以开始配置了
安装的时候一律回车即可
vi /etc/ipsec.conf,改成这样:
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
vi /etc/ipsec.secrets,改成这样:
YOUR.SERVER.IP.ADDRESS %any: PSK "zhimakaimen"
(别忘了把红色的「YOUR.SERVER.IP.ADDRESS」这部分换成你的服务器的 IP 地址,把「zhimakaimen」部分换成随便一个字串,例如你喜欢的一句话如 ilovemoney,等等。)
运行以下命令,这下有点复杂了,前面的知识不够用了,继续补课,先
vi run.sh
然后复制下面的内容到run.sh并保存
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
然后
./run.sh 这样就执行上面的循环命令了。
检查一下 IPSec 能否正常工作:
sudo ipsec verify
如果在结果中看到「Opportunistic Encryption Support」被禁用(disable)了,没关系,其他项 OK 即可。
重启 openswan:
sudo /etc/init.d/ipsec restart
安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。
运行以下命令:
sudo aptitude install xl2tpd
vi /etc/xl2tpd/xl2tpd.conf,改成下面这样,或复制进去就好了
[global]
ipsec saref = yes
[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。你照抄就不会错了。
安装 ppp。这是用来管理 VPN 用户的。
sudo aptitude install ppp
检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个
vi /etc/ppp/options.xl2tpd
文件内容如下,把下面的内容复制进来 :
require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
注意 ms-dns 两行我填的是 OpenDNS。如果你想用其他的 DNS 服务器(例如谷歌的公共 DNS 8.8.8.8 8.8.4.4 ),请自行更换。
现在可以添加一个 VPN 用户了。用文字编辑器打开chap-secrets 文件
vi /etc/ppp/chap-secrets
# user server password ip
test l2tpd testpassword *
如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表,如上面那个密码为gfw的fuck用户,就既可登录PPTP VPN,也可以登录l2tp的VPN,因为他的server没有指定为l2tp,而是用星号代替了。你只要把 test l2tpd testpassword * 这样加到后面即可。记得要有空格。
重启 xl2tpd
sudo /etc/init.d/xl2tpd restart
设置 iptables 的数据包转发,下面是两行命令哦:
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在 /etc/rc.local 文件里写入如下语句:
vi /etc/rc.local
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart
到这里,设置工作已经基本完成。你可以用 iPhone 或 iPad 试着连一下。记得在「Secret」中填入你在上述第三步里填的 zhimakaimen。
如果连接成功,上网也没问题的话,恭喜你,大功告成。我就是这么在linode的Ubuntu 10.04 LTS上搞定VPN的,我之前走了些弯路是因为openswan没安装到最新版,Apple4.us的文章提供的安装方法失败,还好有另一篇文章提供了安装openswan到最新版的方法。所以合并经验,让其他人少走弯路,可以节约学习的时间哦。
L2TP的VPN的使用方法:
- 苹果电脑上使用l2tp VPN http://support.apple.com/kb/HT1288?viewlocale=zh_CN
我参考了以下文献,综合了一下,写出以上修正版,由于 Apple4.us 保留一切权利,所以我等他们通知我删除这篇派生的文章吧,因为他们仍然保留让我派生的权利,也保留不让我基于他们的文章派生作品的权利。
- 在Linode VPS上安装pptp VPN
http://blog.cuoluo.net/2009/12/install-pptp-vpn-in-linode-vps/
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
https://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html
- L2TP Over IPSec On Ubuntu(Debian,CentOS) With OpenSwan
http://ihipop.info/2010/12/1906.html