Redhat本地磁盘配置和扩容

今天简单讲一讲如何对Redhat等常见的Linux本地磁盘配置和扩容。

现在我们假设有一块新的磁盘/dev/sde要挂到我们的系统上,我们可以用fdisk -l查看。

开始之前我们要了解Linux的逻辑卷LVM的简单原理,最底层是物理层,也就是PV,然后我们在上面创建磁盘卷VG,再上面是我们的逻辑卷LV。

此处应有图。

 

创建过程:

1、创建物理层PV,使用命令:pvcreate /dev/sde

2、创建磁盘卷层VG,这里我们将VG命名为datavg01,你也可以使用其他名字。使用命令:vgcreate datavg01 /dev/sde

3、创建逻辑卷层LV,LV命名为data01,假设磁盘大小为100G,使用命令:lvcreate datavg01 -n data01 -L 99.99G (创建逻辑卷会占用很少的空间,所以这里不能写成100G,否则会创建失败)

4、上述创建完成后可以分别使用displaypv ,displayvg,displaylv查看创建情况。

5、同时在/dev/mapper/下可以看到我们创建的磁盘配置文件,格式化磁盘分区:mkfs.ext4 /dev/mapper/datavg01-data01

6、创建需要挂载的文件夹:mkdir /data01

7、挂载磁盘:mount /dev/mapper/datavg01-data01 /data01

8、配置开机自动挂载:echo ‘/dev/mapper/datavg01-data01 ext4 defaults 1 2’ >> /etc/fstab

以上就是基本的Redhat本地磁盘配置和扩容。

 

网络磁盘NFS创建和挂载

如果不是本地磁盘,而是来自存储或者其他NFS共享磁盘,开机自动挂载需要做相应改变,否则会因无法挂载而导致系统无法启动。此时需要进入single单用户模式修改etc/fstab配置

附上NFS挂载磁盘的方法:

首先查看可挂载的NFS磁盘,

showmount -e

挂载命令格式如下:

mount -t nfs 192.168.0.1:/data01  /mnt/data01

此时,/etc/fstab应配置为(注意配置不当可能会使系统无法启动):

192.168.0.1:/data01    /mnt/data01   nfs     defaults   0 0

 

存储扩容:

如果/data01空间不足,而硬盘又有足够的空间,这个时候我们会需要进行扩容。请注意备份数据。

PV,VG,LV上有足够空间的情况下,可以按照上述步骤进行逐步操作,最后扩充到/data01。

使用命令:lvresize 或者 lvextend

 

参考链接:http://www.92csz.com/study/linux/

相关文章:SWAP目录创建

WordPress网站内存不够用处理方法

 

ITsupport

最美时刻-探索人生旅途中的美时美刻!

 

 

批量ping服务器IP脚本(Python)

做IT服务的同学都知道,有时候我们有些的小需求,比如测试某个服务器端口是否连通,测试某台服务器是否正常启动。这种需求一个两个还好,人工即可完成。但是当面临几百个上千个的服务器时就有点力不从心了。美时美刻都要变成痛苦每一刻了。。。

 

最近恰好我也遇到这么个差事,正好之前学习了些Python的基础知识,于是花了一个小时写了这个批量ping服务器IP脚本。使用起来可以说是简单,好用,心里美滋滋~

 

我用的服务器是redhat,可以直接使用已有的Python环境。以下所有文件都在同一目录下即可。

1、创建ip.txt文件,将IP或服务器主机名地址保存在文件中。格式如下:

2、创建ip_status.py脚本文件,ping上述ip或服务器主机名地址,将结果显示在屏幕上并且保存到check.txt。

3、使用chmod 777 ip_status.py将脚本改为可执行模式,使用./ip_status.py 运行脚本,效果如下:

脚本代码如下:

#!/usr/bin/python
import os
import commands
import string

#读取IP或服务器主机名列表

f = open(r”./ip.txt”,’r’)
iplist = f.readlines()
#print iplist
f.close()

print ‘===Start to ping===’

f = open(r”./check.txt”,’wb+’)

 

#生成ping命令并开始ping主机

for ip in iplist:
         command = ‘ping -c 1 ‘ + ip.strip(‘\n’)
         ping_status = commands.getoutput(command + r” |awk ‘/transmitted/ {print $4}'”)  #获取ping输出的最后一行,获取received状态

if(ping_status != ‘0’):
     str1 = ip.strip(‘\n’) + ‘ is ok!\n’
else:
     str1 = ip.strip(‘\n’) + ‘ is unreachable!\n’

print str1
f.write(str1)  #保存

f.close()

以上。

Linux VCS集群配置常用命令

VCS软件是Linux常用的软件,全称是Veritas Cluster Server,配置过程较为复杂,集群配置难度较高。我基本上是听到要配置这个东西就头大,因此Linux VCS集群敢都不敢碰啊~

最近需要将公司的VCS系统升级到6.0,写好文档,硬着头皮试了一把,果然各种坑。有句话说得好,计划赶不上变化。

顺便把Linux VCS常用的基础命令和问题定位方法做个总结。没有用过GUI图形界面,都是用命令完成的。

1、VCS日志和版本查看。

VCS引擎日志通常位于/var/VRTSvcs/log/下面,engine_A.log。

VCS代理日志通常位于/var/VRTSvcs/log下面,日志文件用节点名字来命名,如Ipaddress_A.log。

VCS版本和License查看:vxlicrep

2、VCS集群通信问题查看。

hastatus -sum

正常情况下会显示各个节点的通信状况,显示为online/offline状态。

如果输出类似如下结果,表明集群之间通信问题:

VCS:11307:Node has not received cluster menbership yet, cannot process HA command

如果输出类似如下结果,表明VCS的启动引擎有问题:

haserver STALE ADMIN WAIT: all system stale

这时候要检查LLT模块是否有问题,查看/etc/llthost/etc/llttab是否与预期配置的一致,检查心跳是否有问题。

3、GAB模块问题。

gabconfig -a

如果输出类似如下结果,表明GAB模块正常,否则需要检查/etc/gabtab文件。另外如果没有h端口输出,表明HAD有问题,见后文。

我升级的时候正好遇到了GAB故障,在engine_A.log中显示为启动失败,errno = 2,查阅官方Symentec的指导说是安装过程中安装包有问题,建议重装,心都碎了。

4、HAD模块问题。

hacf -verify /etcVRTvcs/conf/config

使用上述命令可以检查VCS配置是否正确,如果没有输出则表明正确。

5、集群的启动和停止。

hastart

hastop -local/-all   #停止本地或停止集群

6、节点切换。

使用hastatus -sum查看service group,可以将系统从online和offline中来回切换。

hagrp -switch service_group -to system

目前主要用到的就是这些命令,其他可以参考这里。

 

使用Python爬百度贴吧里面的美女图

大学时学过几年编程,毕业后虽然从事IT行业,却一直没有机会写代码。几年工作下来,看到我们公司的码农状态,竟然再也不想编程。算起来一个项目都没有完成过,日后想做码农也做不成了。

最近因为工作需要,跑去做段时间运维。Python作为脚本神器,自然要了解。初学Python,觉得还是找几个小项目练练手比较好。GitHub上“Python 练习册,每天一个小程序”便是我找的一些不错的题目。

于是第 0013 题自然而然的引起我的注意: 用 Python 写一个爬图片的程序,爬这个链接里的日本妹子杉本有美的图片。有了荷尔蒙的刺激,学习动力也提高不少。

先上一下效果图:

Python小程序效果图

程序简单解析如下:

1、使用urllib2打开网页链接,获取网页内容。

request = urllib2.Request(url)
response = urllib2.urlopen(request)
content = response.read()

2、使用正则表达式匹配需要获取的图片。

rule_str = r'src="(.+?\.jpg)"'
rule = re.compile(rule_str)
img_list = rule.findall(content)

3、筛选。

我这里默认需要下载的图片是链接中最多的,因此先计算寻找最多的图片链接的长度。然后将不是此长度的链接排除掉。这里使用了Counter这个函数,对每个链接的长度进行自动排序。

for img in img_list:
    len_temp.append(len(img))  # 计算每个图片链接的长度
most_length = tuple(Counter(len_temp).most_common(1))[0][0]  # 默认需要下载的图片是链接中最多的,寻找最多的图片链接的长度

4、下载图片。

for img in img_list:
    if len(img) != most_length:
        continue  # 不是目标图片,跳出继续
    else:
        pic = urllib2.urlopen(img).read()
        f = open(r"%s\%s%s.jpg" % (file_path, x, random.choice(string.ascii_letters)), "wb+")
        f.write(pic)
        f.close()
        x += 1

5、完整程序如下。

# -*- coding:UTF-8 -*-
import urllib
import urllib2
import re
from collections import Counter
import random
import string


def pic_download(url, file_path):
    # 打开网页
    # url = r'http://tieba.baidu.com/p/2166231880'
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    content = response.read()
    # print content

    # 正则表达式
    rule_str = r'src="(.+?\.jpg)"'
    rule = re.compile(rule_str)
    img_list = rule.findall(content)

    print u"正在下载图片..."
    x = 0
    len_temp = []
    for img in img_list:
        len_temp.append(len(img))  # 计算每个图片链接的长度
    most_length = tuple(Counter(len_temp).most_common(1))[0][0]  # 默认需要下载的图片是链接中最多的,寻找最多的图片链接的长度

    for img in img_list:
        if len(img) != most_length:
            continue  # 不是目标图片,跳出继续
        else:
            pic = urllib2.urlopen(img).read()
            f = open(r"%s\%s%s.jpg" % (file_path, x, random.choice(string.ascii_letters)), "wb+")
            f.write(pic)
            f.close()
            x += 1

    print u"%s 张图片已被下载至指定位置" % x

# 主函数
if __name__ == "__main__":
    url = raw_input(r"Please input the BAIDU tieba link:")  # 请输入百度贴吧链接的帖子
    file_path = raw_input(r"Please input the file path(default: C:\Users\Wind\Pictures): ")  # 请输入想要保存图片的位置
    pic_download(url=r'http://tieba.baidu.com/p/1165861759', file_path=r"C:\Users\Wind\Pictures")

 

综上,只要输入百度任意帖子的链接,其中的图片无论是美女还是美景,就全部是你的囊中之物啦。Anyway,Python大法好!最后送上一张美图供大家欣赏~~

杉本有美

原创不易,转载请注明出处。

WordPress网站内存不够用处理方法

博客上线:2017年4月13日

 

在域名备案通过后,上线第二天,博客挂了。

1、内存不够用,导致MYSQL挂掉

经过分析,是mysql挂掉,查看/alidata/log/mysql,发现如下报错:

130728 6:50:14 [Note] Plugin ‘FEDERATED’ is disabled.
130728 6:50:14 InnoDB: The InnoDB memory heap is disabled
130728 6:50:14 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130728 6:50:14 InnoDB: Compressed tables use zlib 1.2.3.4
130728 6:50:14 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
130728 6:50:14 InnoDB: Completed initialization of buffer pool
130728 6:50:14 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130728 6:50:14 [ERROR] Plugin ‘InnoDB’ init function returned error.
130728 6:50:14 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
130728 6:50:14 [ERROR] Unknown/unsupported storage engine: InnoDB
130728 6:50:14 [ERROR] Aborting
130728 6:50:14 [Note] /usr/sbin/mysqld: Shutdown complete

创建这个博客本来就是想玩一下,配置比较低。没想到刚上线内存就不够用,这WordPress也太耗资源了吧。

2、解决办法:

采用添加/swap目录的方法,内存超出时使用硬盘替代。

1) 在 /etc/mysql/my.cnf 的 mysqld 下增加下面一句:

innodb_buffer_pool_size = 64M

还要设置一下swap分区,因为我的阿里云默认是没有swap分区的,通过fdisk -l 和 1mount 看不到swap的信息,需要手动添加一下。

2) 添加swap分区的步骤:

2.1) dd if=/dev/zero of=/swapfile bs=1M count=1024

2.2) mkswap /swapfile

2.3) swapon /swapfile

2.4) 添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab

目前网站运行良好,但是总得来说Apache还是比较吃内存,如果经济容许还是建议换个大点的内存,嘿嘿

#转载请注明出处