Linux利用LVM实现分区动态扩容

由于备用服务器出现异常状况未能及时投入生产使用,在分区大小使用率达到99%的高危状态下,进行紧急处理。由于近来数据量剧增,据观察当天下午一小时内分区使用率会增加1%左右,由此导致分区由87%的使用率达到了此高危状态。

1、由于数据时刻增加,必须保证正常工作的照常进行,首先对分区中的垃圾站点数据进行清理,同时编写遍历脚本,删除站点的缓存数据。

2、对分区进行扩容,为了保证数据的安全,首先对VPS数据进行整盘备份,同时将操作时间控制在晚上访问量普遍比较低的时间段进行。

通过观察,此VPS目前主要有一块磁盘,同时对相关目录进行映射,通过如下命令查看磁盘的详细使用情况。

使用fdisk命令,完全没有必要背命令,执行如上命令后只需要按下m就能看到所有的可用操作了。需要注意的是,只要离开fdisk时按下“q”,那么所有的操作都不会生效,相反,按下“w”就是就是保存操作并退出的意思。

Bingo!发现磁盘扩容的空间!

在进行接下来的操作之前,需要理解几个概念:物理卷PV(physical volume),卷组VG(volume group),逻辑卷LV(logical volume),物理区域PE(physical extent),逻辑区域LE(logical extent)。下文有详细的介绍。

接下来把操作过程的主要代码进行记录:

由于时间关系,对于此次操作的主要代码记录下来。其中涉及到的命令包括:fdisk,df,pvcreate,vgextend,lvextend,resize2fs,mkfs

 


 

本文接下来对LVM的概念、创建、修改等操作摘录网络上比较全面的一片介绍文章。

LVM的全称为Logical Volume Manager,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。它的结构如下图所示:

0_1313984827slG2

LVM(逻辑分区管理)中的几个概念:
PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。它只是在物理分区中划出了一个特殊的区域,用于记载与LVM相关的管理参数。
VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。
LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。
PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。由于受内核限制的原因,一个逻辑卷(Logic Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了逻辑卷的最大容量,4 MB(默认) 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的PE。在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。

下面我们通过一个实例来说明如何创建LVM:
1.准备物理分区(Physical Partions)
首先,我们需要选择用于 LVM 的物理存储器。这些通常是标准分区,但也可以是已创建的 Linux Software RAID 卷。这里我利用fdisk命令,将sdb、sdc两块磁盘分了两个区sdb1、sdc1, 通过fdisk的t指令指定分区为8e类型(Linux LVM) 。如图2所示。

0_1313985580RPRK

2.创建物理卷PV(Physical Volumes)

3.创建卷组VG(Volume Groups),命名为vg_test

使用卷组查看命令vgdisplay显示卷组情况:

4.创建逻辑卷LV(Logical Volumes) ,命名为test_lv

创建逻辑卷的命令为lvcreate,-l 参数为定PE数来设定逻辑分区大小,也可以使用-L参数直接指定逻辑分区大小,-n参数指定逻辑分区名称。

也可以使用-L参数

使用lvdisplay命令查看逻辑卷情况:

5.创建文件系统,并挂载

在逻辑卷上创建ext3文件系统:

管理LVM

LVM的最大好处就是可以动态地调整分区大小,而无须重新启动机器,下面让我们来体验一下吧!继续上面的实例,现假设逻辑卷/dev/vg_test/lv_test空间不足,需要增加其大小,我们分两种情况讨论:
1.卷组中有剩余的空间
通过vgdisplay命令可以检查当前卷组空间使用情况:

确定当前卷组剩余空间9.99GB,剩余PE数量为2558个。在这里将所有的剩余空间全部增加给逻辑卷 /dev/vg_test/lv_test。

也可以通过-L直接指定大小,通过 +/- 来 增加/减小 空间。

修改逻辑卷大小后,通过resize2fs来修改文件系统的大小。

再次查看文件系统的大小:

2.卷组中空间不足

当卷组中没有足够的空间用于扩展逻辑卷的大小时,就需要增加卷组的容量,而增加卷组容量的惟一办法就是向卷组中添加新的物理卷。
首先需要对新增加的磁盘进行分区、创建物理卷等工作。),接下来是利用vgextend命令将新的物理卷加入到卷组中, 我们这里使用/dev/sdc1。

完成卷组的扩容后,就可以按照第一种情况的方法完成逻辑卷的扩容,最终实现分区的动态调整。

原文应用地址:http://blog.csdn.net/seteor/article/details/6708025

Problem with the SSL CA cert

中文翻译SSL CA证书出现错误,由于直接通过网络查找到的解决办法,因此并没有太详细的问题排查过程。

此问题发生的原因是由于curl对https请求的证书验证错误导致的。

可以通过两种方法解决此问题:

1、增加判断进行,不对https证书进行验证

为此方法增加判断

 2、对服务器证书的处理

引用地址:http://jqlblue.github.io/2014/05/14/a-trouble-in-request-https-in-curl/

 

移动开发Javascript框架Zepto.js

目前流行的Javascript框架是比较臃肿的,只需要看看jQuery就知道了。而当你面对的是移动开发,以及只针对现代浏览器的开发,一个灵活、精简的框架会更加适一些。

今天主要介绍的就是一款这样的框架,那就是Zepto.js

使用混合了支持桌面版和移动版开发的框架目前主要存在以下问题:

处理关于兼容性的问题,保证了接口的显示和使用效果,但却大大的增加了文件的大小,下面是一段jQuery源码中的代码片段:

或者是类似这样的代码:

如果你开发的目标是针对现代浏览器,不管是桌面端或者移动端,这些判断完全是没必要的,如果能够精简掉这些代码,那将大大的节省流量以及页面加载效果。

好吧,这就是推荐使用Zepto.js的最重要的原因,众所周知近两年来发展速度最快的莫属于移动设备的增加了,而作为开发者而言,如果仍然使用那些“古老的”代码框架,将严重影响到移动端的加载速度以及展示效果,因此移动端的开发人员亟需更改开发方式和代码架构。

另外值得称赞的一点是,Zepto.js的API接口与jQuery是兼容的!是的,你没有看错,也就是说如果你以前使用过jQuery框架,那么上手Zepto.js对你来说绝对是小菜一碟!

下面来举几个例子说明一下:

看起来是不是特别的熟悉?对,这些用法和jQuery完全相同,虽然Zepto.js不是支持了所有的jQuery方法,但却集成了jQuery强大的DOM处理能力,并在此基础上增加常用的方法,比如animate,ajax等。

遗憾的是,当你习惯了使用jQuery plugin在页面中去增加展示效果的网站,那基本上是不能用Zepto.js取代jQuery框架的了,这可能是唯一的美中不足了。

另外值得一提的是,Zepto.js增加了一些针对触摸屏幕的事件,解析来简单的介绍一下:

swipe:处理典型的滑动手势,同时有独立的事件处理不同的方向,如swipeLeft

tap:响应一般的触摸动作

doubleTap:很显然,用来触发双击事件

longTap:长点击时间,在点击元素超过750ms后被触发,好像没有明确的接口来改变这个响应时间

以上内容简单的对移动开发Javascript框架Zepto.js进行了介绍,虽然对于插件的支持不是太好,不管怎么样,也真的需要在你的项目中进行尝试,当然,首先考虑情况面对的主要目标用户和设备情况,我相信你会爱上它的。

Linux Apache Vhost文件数量的问题排查总结

服务器配置情况:Centos 6.4,PHP 3.5.3,Mysql 5.1.73,服务器通过加载vhost文件夹所有文件进行站点的建立。

就在那一刻,突然所有的网站都不能正常打开,开始显示空白页。接到通知提示后,紧急进行排查。

1)打开php.ini中display_error为On,页面中正常显示出来错误提示;

出现require不能正常加载controller文件和timezone错误,以为找到了问题的原因,遂根据代码位置进行追踪排查。无奈,使用存在文件存在,timezone设置正常。

2)考虑到可能由于服务器include_path的问题,导致不能正常加载文件;

由于对Linux的包含路径配置不熟悉,参考其他Linxu服务器进行比对,确认此环节没问题。

3)沟通使用熟悉此框架的骚年们,有提出环境配置错误的(范围太大,无法断定),有提出断点调试截图的(无法得出问题原因结论)

4)无奈的对VPS进行还原;

5)逐步个添加新增的网站(已备份),发现当vhosts文件夹中文件数量超过509时,就出现页面打不开变成空白状态。经过再三测试,如转移其中某vhost文件,新增备份的文件,没问题。

最终确定问题原因:Linux默认设置一次性读取的文件数量有限制,当一次性读取的文件数量超过509(根据网上查询存在508)的情况下,就会出现问题。

修改方法如下:

以上配置文件修改,由某非著名Linux管理员贡献。

同时,附上排查过程中使用的批量处理Shell Snippet

以上为处理Apache vhosts加载文件数量509限制的全过程,记录总结以作参考。

关于一个表单form包含多个提交动作submit的解决方法

在开发工作共我们往往会遇到一个表单需要包含多个action不同的提交动作,这时候就不能在使用submit按钮来进行提交了,下面提供通过js来实现这一功能的方法

form表单一定要添加上name属性,以通过document定位访问表单,不要写action属性了

head标签中的title,link,meta等的标签异常错位到body里面去了的解决方法

自己也是偶然遇到这个问题的,页面显示异常,head标签中的title,link,meta等的元素无故错位显示到body里面去了

134303_x4DH_252076

问题展现就像上图所示,head中什么都没有,head中的标签全部错位到body中显示,在页面的直观表现就是无故多处一行空白,很多人觉得这是编码者没有写好闭合标签的问题,嗯,是有可能,但不说现在的浏览器大都能自动补全未闭合标签,未写闭合标签也不至于让head中的内容完全移步到body中去吧….

解决方法:
这个问题其实是由编码格式引起的,没错,就是BOM的问题,选一个比较高级的编辑器,个人推荐Notepad++,打开后选择 格式 选择以无BOM格式编码保存文档,然后就可以了。

135352_G6sP_252076

问题得到完美解决。