手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

笔记:为虚拟机再挂载一块虚拟硬盘

原来的虚拟机只分配了8G空间,用啊用啊的就满了。怎么办?
于是想过挂载硬盘,但是不太会弄,今天在hover(http://www.hoverlees.com/blog/)的帮助下,搞定了。

1、fdisk -l,看看挂载进来的硬件是什么?

XML/HTML代码
  1. Disk /dev/sda: 8589 MB, 8589935104 bytes  
  2. 255 heads, 63 sectors/track, 1044 cylinders, total 16777217 sectors  
  3. Units = sectors of 1 * 512512 = 512 bytes  
  4. Sector size (logical/physical): 512 bytes / 512 bytes  
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  6. Disk identifier: 0x0006642a  
  7.   
  8.    Device Boot      Start         End      Blocks   Id  System  
  9. /dev/sda1   *        2048      499711      248832   83  Linux  
  10. /dev/sda2          501758    16775167     8136705    5  Extended  
  11. /dev/sda5          501760    16775167     8136704   8e  Linux LVM  
  12.   
  13. Disk /dev/sdb: 25.8 GB, 25769803776 bytes  
  14. 255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors  
  15. Units = sectors of 1 * 512512 = 512 bytes  
  16. Sector size (logical/physical): 512 bytes / 512 bytes  
  17. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  18. Disk identifier: 0x00000000  
  19.   
  20. Disk /dev/sdb doesn't contain a valid partition table  
  21.   
  22. Disk /dev/mapper/webserver-root: 7763 MB, 7763656704 bytes  
  23. 255 heads, 63 sectors/track, 943 cylinders, total 15163392 sectors  
  24. Units = sectors of 1 * 512512 = 512 bytes  
  25. Sector size (logical/physical): 512 bytes / 512 bytes  
  26. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  27. Disk identifier: 0x00000000  
  28.   
  29. Disk /dev/mapper/webserver-root doesn't contain a valid partition table  
  30.   
  31. Disk /dev/mapper/webserver-swap_1: 532 MB, 532676608 bytes  
  32. 255 heads, 63 sectors/track, 64 cylinders, total 1040384 sectors  
  33. Units = sectors of 1 * 512512 = 512 bytes  
  34. Sector size (logical/physical): 512 bytes / 512 bytes  
  35. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  36. Disk identifier: 0x00000000  
  37.   
  38. 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代码
  1. mke2fs 1.41.14 (22-Dec-2010)  
  2. Filesystem label=  
  3. OS type: Linux  
  4. Block size=4096 (log=2)  
  5. Fragment size=4096 (log=2)  
  6. Stride=0 blocks, Stripe width=0 blocks  
  7. 1572864 inodes, 6291200 blocks  
  8. 314560 blocks (5.00%) reserved for the super user  
  9. First data block=0  
  10. Maximum filesystem blocks=0  
  11. 192 block groups  
  12. 32768 blocks per group, 32768 fragments per group  
  13. 8192 inodes per group  
  14. Superblock backups stored on blocks:  
  15.     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,  
  16.     4096000  
  17.   
  18. Writing inode tables: done                             
  19. Creating journal (32768 blocks): done  
  20. Writing superblocks and filesystem accounting information: done  
  21.   
  22. This filesystem will be automatically checked every 32 mounts or  
  23. 180 days, whichever comes first.  Use tune2fs -c or -i to override.  

3、mount到一个目录下,

XML/HTML代码
  1. root@webserver:/mnt# mount /dev/sdb1 /mnt  

4、然后df看一下结果:

XML/HTML代码
  1. root@webserver:/mnt# df   
  2. Filesystem           1K-blocks      Used Available Use% Mounted on  
  3. /dev/mapper/webserver-root  
  4.                        7462608   4930416   2153108  70% /  
  5. udev                    246512         4    246508   1% /dev  
  6. tmpfs                   101524       576    100948   1% /run  
  7. none                      5120         0      5120   0% /run/lock  
  8. none                    253808         0    253808   0% /run/shm  
  9. /dev/sda1               233191    154710     66040  71% /boot  
  10. /dev/sdb1             24769916    176196  23335480   1% /mnt  

一切就这样的完成了。
做个笔记。。。

成功利用apache对内容进行替换[更新]

说是成功了,但其实最终我还是通过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代码
  1. function gzdecode2($data) {  
  2.     $flags = ord(substr($data, 3, 1));  
  3.     $headerlen = 10;  
  4.     $extralen = 0;  
  5.     $filenamelen = 0;  
  6.     if ($flags & 4) {  
  7.         $extralen = unpack('v'substr($data, 10, 2));  
  8.         $extralen = $extralen[1];  
  9.         $headerlen += 2 + $extralen;  
  10.     }  
  11.     if ($flags & 8) // Filename  
  12.     {  
  13.         $headerlen = strpos($datachr(0), $headerlen) + 1;  
  14.     }  
  15.     if ($flags & 16) // Comment  
  16.     {  
  17.         $headerlen = strpos($datachr(0), $headerlen) + 1;  
  18.     }  
  19.     if ($flags & 2) // CRC at end of file  
  20.     {  
  21.         $headerlen += 2;  
  22.     }  
  23.     $unpacked = @gzinflate(substr($data$headerlen));  
  24.     if ($unpacked === FALSE) {  
  25.         $unpacked = $data;  
  26.     }  
  27.     return $unpacked;  
  28. }  
这回就可以了。。。

 

安装VPN。。。debian / centos

说实话,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文件里看一下,理论上是可能有一个所谓的默认帐户存在的。注意删除一下。

Tags: vps, vpn, openvz, debian, centos

测试VPS的磁盘I/O功能

一般来说测试磁盘的IO功能时都是用的:dd if=/dev/zero of=/root/zerofile bs=1M count=256

这样生成出来的文件大约是268M
为什么是/dev/zero,那是因为:/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。

当然dd还有另外一个参数:oflag=dsync
但是有人和我说:

XML/HTML代码
  1. Why are you using the flag dsync? This does not test the disks correctly and often reports bad speeds on SSD systems.  
  2.   
  3. 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).  
所以,仅作参考即可,不要太当一回事吧

参考:如何在 Debian / Ubuntu 服务器上架设PPTP / L2TP / IPSec VPN

之前有在自己博客上介绍怎么样安装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的方法:

  1. 如何在 Windows XP 中配置虚拟专用网络 (VPN) 连接 http://support.microsoft.com/kb/314076/zh-cn
  2. How to configure a connection to a virtual private network (VPN) in Windows XP http://support.microsoft.com/kb/314076/en
  3. iOS:设置 VPN http://support.apple.com/kb/HT1424?viewlocale=zh_CN
  4. iOS: Setting up VPN http://support.apple.com/kb/HT1424?viewlocale=en_US
  5. Mac OS X 10.6 Help 建立一个到虚拟专用网络的连接http://docs.info.apple.com/article.html?path=Mac/10.6/zh/9010.html
  6. 设定高级 VPN 选项 http://docs.info.apple.com/article.html?path=Mac/10.6/zh/11941.html
  7. Ubuntu下使用VPN http://wiki.ubuntu.org.cn/如何使用UbuntuVPN
  8. 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 文件里可能已经有了其他用户的列表,如上面那个密码为gfwfuck用户,就既可登录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的使用方法:

  1. 苹果电脑上使用l2tp VPN http://support.apple.com/kb/HT1288?viewlocale=zh_CN

我参考了以下文献,综合了一下,写出以上修正版,由于 Apple4.us 保留一切权利,所以我等他们通知我删除这篇派生的文章吧,因为他们仍然保留让我派生的权利,也保留不让我基于他们的文章派生作品的权利。

  1. 在Linode VPS上安装pptp VPN
    http://blog.cuoluo.net/2009/12/install-pptp-vpn-in-linode-vps/
  2. 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
    https://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html
  3. L2TP Over IPSec On Ubuntu(Debian,CentOS) With OpenSwan
    http://ihipop.info/2010/12/1906.html