CentOS下SWAP分区建立及释放内存详解

CentOS下SWAP分区建立及释放内存详解,第1张

方法一:

一、查看系统当前的分区情况:

free -m

二、创建用于交换分区的文件:

dd if=/dev/zero of=/whatever/swap bs=block_size (10M)count=number_of_block(3000)

三、设置交换分区文件:

mkswap /export/swap/swapfile

四、立即启用交换分区文件:

swapon /whateever/swap

五、若要想使开机时自启用,则需修改文件/etc/fstab中的swap行:

/whatever/swap swap swap defaults 0 0

方法二

增加交换分区空间的方法:

1查看一下/etc/fstab确定目前的分区

2swapoff /dev/hd

3free 看一下是不是停了

4fdisk 删了停掉的swap分区

5重新用FDISK建一个新的SWAP分区

6mkswap /dev/hd把新的分区做成swap

7swapon /dev/hd打开swap

8修改/etc/fstab

操作实例:

1查看系统Swap空间使用

# free

total used free shared buffers cached

Mem: 513980 493640 20340 0 143808 271780

-/+ buffers/cache: 78052 435928

Swap: 1052248 21256 1030992

2在空间合适处创建swap文件

# mkdir swap

# cd swap

# dd if=/dev/zero of=swapfile bs=1024 count=10000

10000+0 records in

10000+0 records out

# ls -al

total 10024

drwxr-xr-x 2 root root 4096 7月 28 14:58

drwxr-xr-x 19 root root 4096 7月 28 14:57

-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile

# mkswap swapfile

Setting up swapspace version 1, size = 9996 KiB

3激活swap文件

# swapon swapfile

# ls -l

total 10016

-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile

# free

total used free shared buffers cached

Mem: 513980 505052 8928 0 143900 282288

-/+ buffers/cache: 78864 435116

Swap: 1062240 21256 1040984

生成1G的文件

# dd if=/dev/zero of=swapfile bs=10M count=3000

创建为swap文件

#mkswap swapfile

让swap生效

#swapon swapfile

查看一下swap

#swapon -s

[root@cluster /]# swapon -sFilenameTypeSizeUsedPriority/dev/sda3                partition10201161728-1/state/partition1/swap/swapfile     file307199920-2

加到fstab文件中让系统引导时自动启动

#vi /etc/fstab

/state/partition1/swap/swapfil  swap swap defaults 0 0

完毕。

二,LINUX释放内存

细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法那么我来谈谈这个问题

先来说说free命令

[root@cluster /]# free -m

total    used    free   shared  buffers   cached

Mem:     31730   31590    139     0     37   27537

-/+ buffers/cache:    4015   27714

Swap:    30996     1   30994

其中:

total 内存总数

used 已经使用的内存数

free 空闲的内存数

shared 多个进程共享的内存总额

buffers Buffer Cache和cached Page Cache 磁盘缓存的大小

-buffers/cache 的内存数:used - buffers - cached

+buffers/cache 的内存数:free + buffers + cached

可用的memory=free memory+buffers+cached

有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94

那么我们来看看,如果我执行复制文件,内存会发生什么变化

[root@cluster /]# cp -r /etc ~/test/

[root@cluster /]# free -m

total    used    free   shared  buffers   cached

Mem:     31730   31590    139     0     37   27537

-/+ buffers/cache:    4015   27714

Swap:    30996     1   30994

在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐都被cached吃掉了别紧张,这是为了提高文件读取效率的做法

引用[url]http://www2qyoucom/thread-591-1-1html[/url] 为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

那么有人说过段时间,linux会自动释放掉所用的内存,我们使用free再来试试,看看是否有释放

[root@cluster /]# free -m

total    used    free   shared  buffers   cached

Mem:     31730   31590    139     0     37   27537

-/+ buffers/cache:    4015   27714

Swap:    30996     1   30994

MS没有任何变化,那么我能否手动释放掉这些内存呢回答是可以的!

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存操作如下:

[root@cluster /]# cat /proc/sys/vm/drop_caches

0

首先,/proc/sys/vm/drop_caches的值,默认为0

[root@cluster /]# sync

手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

[root@server test]# echo 3 /proc/sys/vm/drop_caches

[root@server test]# cat /proc/sys/vm/drop_caches

3

将/proc/sys/vm/drop_caches值设为3

[root@server test]# free -m

total    used    free   shared  buffers   cached

Mem:      249     66    182     0     0     11

-/+ buffers/cache:     55    194

Swap:     511     0    511

再来运行free命令,发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB那么有效的释放了buffer和cache

有关/proc/sys/vm/drop_caches的用法在下面进行了说明

/proc/sys/vm/drop_caches (since Linux 2616)

Writing to this file causes the kernel to drop clean caches,

dentries and inodes from memory, causing that memory to become free

To free pagecache, use echo 1 /proc/sys/vm/drop_caches;

to free dentries and inodes, use echo 2 /proc/sys/vm/drop_caches;

to free pagecache,  dentries and inodes, use echo 3 /proc/sys/vm/drop_caches

Because this is a non-destructive operation and dirty objects

这几天发现linux系统内存一直涨,即使把apache和mysql关闭了,内存也不释放,可以使用以下脚本来释放内存:

脚本内容:

#!/bin/sh

# cache释放:

# To free pagecache:

/bin/sync

/bin/sync

#echo 1 /proc/sys/vm/drop_caches

# To free dentries and inodes:

#echo 2 /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes:

echo 3 /proc/sys/vm/drop_caches

利用系统crontab实现每天自动运行:

crontab -e

输入以下内容:

00 00 /root/Cachedsh

每天0点释放一次内存,这个时间可以根据自己需要修改设置

在运行/Cachedsh时如果提示错误:Permission denied 权限的问题,可以运行

您可以尝试使用“磁盘(df -hT)”命令来检查一下文件系统容量是否超出了限制;另外,也可以尝试使用“df – i”命令来检查文件系统的inode信息,以确认是否有文件超出了inode限制。此外,还可以使用“lsof”命令来检查挂载点和文件夹内的文件是否正常打开,从而确定了现在该命令是否有响应。

一、应用环境及需求 刀片服务器通过光纤交换机连接HP存储,形成了一个2X2的链路。 操作系统为CentOS 64 64位 挂载的存储容量为25T

基于此应用环境,需要解决两个问题:

为保证链路的稳定性及传输性能等,可以使用多路径技术; 挂载的存储硬盘超过了2T,MBR分区格式不能支持,需要使用到GPT分区格式

因为CentOS 64中已经自带了HP存储的驱动,会自动识别出挂载的存储硬盘,否则的话,需要先安装存储驱动。

二、什么是多路径

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。

多路径的主要功能就是和存储设备一起配合实现如下功能:

1故障的切换和恢复

2IO流量的负载均衡

3磁盘的虚拟化

由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。好在,RedHat和Suse的26的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

比较直观的感受是在Linux系统中执行fdisk -l命令,会出现类似/dev/sda1、/dev/sdb1、/dev/sdc1、/dev/sdd1的硬盘。因为总共有四种组合的路径,Linux系统会将每跳链路都认为是挂载了一块硬盘。

三、Linux下multipath介绍

CentOS 64中,默认已经安装了multipath:

[root@localhost ~]# rpm -qa|grep mapper device-mapper-multipath-049-64el6x86_64 device-mapper-event-libs-10277-9el6x86_64 device-mapper-multipath-libs-049-64el6x86_64 device-mapper-persistent-data-014-1el6x86_64 device-mapper-libs-10277-9el6x86_64 device-mapper-event-10277-9el6x86_64 device-mapper-10277-9el6x86_64

device-mapper-multipath:即multipath-tools。主要提供multipathd和multipath等工具和 multipathconf等配置文件。这些工具通过device mapper的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库,创建的多路径设备会在/dev /mapper中)。

device-mapper:主要包括两大部分:内核部分和用户部分。

其中内核部分主要由device mapper核心(dmko)和一些target driver(md-multipathko)。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些divece的属性等。linux device mapper的用户空间部分主要包括device-mapper这个包。其中包括dmsetup工具和一些帮助创建和配置mappered device的库。这些库主要抽象,封装了与ioctr通信的接口,以便方便创建和配置mappered device。multipath-tool的程序中就需要调用这些库。

dm-multipathko和dmko:dmko是device mapper驱动。它是实现multipath的基础。dm-multipath其实是dm的一个target驱动。

scsi_id: 包含在udev程序包中,可以在multipathconf中配置该程序来获取scsi设备的序号。通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。scsi_id是通过sg驱动,向设备发送EVPD page80或page83 的inquery命令来查询scsi设备的标识。但一些设备并不支持EVPD 的inquery命令,所以他们无法被用来生成multipath设备。但可以改写scsi_id,为不能提供scsi设备标识的设备虚拟一个标识符,并输出到标准输出。multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。在改写时,需要修改scsi_id程序的返回值为0。因为在multipath程序中,会检查该直来确定scsi id是否已经成功得到。

四、配置multipath

基本配置脚本如下:

[root@localhost ~]# cat /etc/multipathconf defaults { polling_interval 30 failback immediate no_path_retry queue rr_min_io 100 path_checker tur user_friendly_names yes } # SVC device { vendor IBM product 2145 path_grouping_policy group_by_prio prio_callout /sbin/mpath_prio_alua /dev/%n }

multipath基本操作命令

# /etc/initd/multipathd start #开启mulitipath服务 # multipath -F #删除现有路径 # multipath -v2 #格式化路径 # multipath -ll #查看多路径

如果配置正确的话就会在/dev/mapper/目录下多出mpathbp1等之类的设备,用fdisk -l命令可以看到多路径软件创建的磁盘,如:/dev/mapper/mpathbp1

五、格式化硬盘

执行fdisk -l,可以看到存储已经识别成功,并且多路径配置也正确。信息如下:

[root@localhost ~]# fdisk -l Disk /dev/mapper/mpathb: 26844 GB, 2684354560000 bytes 255 heads, 63 sectors/track, 326354 cylinders Units = cylinders of 16065 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/mapper/mpathbp1 1 267350 2147483647+ ee GPT

通过上面的信息可以发现已经是GPT的分区格式了,接下来就是需要对硬盘进行格式化。如果不是,需要先执行如下步骤:

1 新建分区

[root@localhost ~]# pvcreate /dev/mapper/mpathb [root@localhost ~]# parted /dev/mapper/mpathb GNU Parted 21 Using /dev/mapper/mpathbp1 Welcome to GNU Parted! Type 'help' to view a list of commands (parted) mklabel gpt #设置分区类型为gpt (parted) mkpart extended 0% 100% #扩展分区,并使用整个硬盘 (parted) quit #退出 Information: You may need to update /etc/fstab

2 格式化挂载硬盘

[root@localhost ~]# mkfsext4 /dev/mapper/mpathbp1 [root@localhost ~]# mount /dev/mapper/mpathbp1 /test

挂载成功后,即可使用了。

3 动挂载分区

当在系统里创建了一个新的分区后,因为mount挂载在重启系统后会失效,所以需要将分区信息写到/etc/fstab文件中让其永久挂载。

[root@localhost ~]# vi /etc/fstab /dev/mapper/mpathbp1 /test ext4 defaults 1 2

保存退出,重启后/dev/mapper/mpathbp1 就会自动挂载到/test 目录下

ownCloud是一个文件共享服务器,允许您将您的个人内容,如文档和,存储在一个集中的位置,很像Dropbox。与ownCloud的区别在于它是免费和开源的,允许任何人使用和检查它。它还将敏感数据的控制和安全性返回给您,从而消除了第三方云托管服务的利用率。

我们在CentOS 7服务器上安装和配置ownCloud实例。

先决条件

需要以下内容:

服务器上的sudo用户:您可以按照CentOS 7初始服务器设置指南创建具有sudo权限的用户。

一个LAMP堆栈:ownCloud需要一个Web服务器,一个数据库和PHP才能正常工作。设置LAMP堆栈(Linux,Apache,MySQL和PHP)服务器满足所有这些要求。按照本指南安装和配置此软件。

要充分利用ownCloud提供的所有功能,请确保安装以下PHP模块:php-gd,php-intl,php-mbstring,php-process和php-xml。

SSL证书:如何设置SSL证书取决于您是否具有解析到您的服务器的域名。

如果您有域名安全您的网站的最简单的方法是使用Let's Encrypt,它提供免费的,受信任的证书。按照Apache的Let's Encrypt指南进行设置。

如果您没有域并且您正在使用此配置进行测试或个人使用,则可以改为使用自签名证书。这提供了相同类型的加密,但没有域验证。按照Apache的自签名SSL指南进行设置。

步骤1 - 安装ownCloud

ownCloud服务器软件包不存在于CentOS的默认存储库中。然而,ownCloud为发行版维护了一个专用的存储库。

首先,使用rpm命令导入其发行密钥。该密钥授权程序包管理器yum信任存储库。

sudo rpm --import https://downloadowncloudorg/download/repositories/stable/CentOS_7/repodata/repomdxmlkey

接下来,使用curl命令下载ownCloud存储库文件:

sudo curl -L https://downloadowncloudorg/download/repositories/stable/CentOS_7/ce:stablerepo -o /etc/yumreposd/ownCloudrepo

添加新文件后,使用clean命令使yum知道更改:

sudo yum clean expire-cache

输出

加载插件:fastestmirror

清除回复:基本ce_stable其他更新

6元数据文件已删除

最后,使用yum实用程序和install命令执行ownCloud的安装:

sudo yum安装owncloud

当出现提示时,此为ok [y / d / N]:消息,键入Y,然后按ENTER键授权安装。

输出

。 。 。

安装:

owncloudnoarch 0:911-12

已安装依赖关系:

libX11x86_64 0:163-2el7 libX11-commonnoarch 0:163-2el7 libXaux86_64 0:108-21el7

libXpmx86_64 0:3511-3el7 libpngx86_64 2:1513-7el7_2 libxcbx86_64 0:111-4el7

libxsltx86_64 0:1128-5el7 owncloud-deps-php5noarch 0:911-12 owncloud-filesnoarch 0:911-12

php-gdx86_64 0:5416-363el7_2 php-ldapx86_64 0:5416-363el7_2 php-mbstringx86_64 0:5416-363el7_2

php-processx86_64 0:5416-363el7_2 php-xmlx86_64 0:5416-363el7_2 t1libx86_64 0:512-14el7

完成!

安装ownCloud服务器后,我们将继续设置数据库供其使用。

步骤2 - 创建MySQL数据库

要开始,请使用管理帐户登录MySQL:

mysql -u root -p

输入在安装数据库服务器时为MySQL root用户设置的密码。

ownCloud需要一个单独的数据库来存储管理数据。虽然你可以调用这个数据库任何你喜欢,我们决定了owncloud的名字保持简单。

CREATE DATABASE owncloud;

注意:每个MySQL语句必须以分号(;)结尾。如果您遇到问题,请务必检查这是否存在。

接下来,创建一个单独的MySQL用户帐户,与新创建的数据库进行交互。从管理和安全的角度来看,创建单功能数据库和帐户是一个好主意。与数据库的命名一样,选择您喜欢的用户名。我们选择在本指南中使用owncloud名称。

GRANT ALL ON owncloud。 to'owncloud'@'localhost'IDENTIFIED BY'set_database_password';

警告:确保将实际密码放在命令所在的位置:set_database_password

通过用户分配对数据库的访问权限,执行flush-privileges操作以确保MySQL的正在运行的实例知道最近的权限分配:

FLUSH特权;

MySQL的配置到此结束,因此我们将通过键入以退出会话:

出口

在ownCloud服务器安装和数据库设置完成后,我们准备将注意力转移到配置ownCloud应用程序。

步骤3 - 配置ownCloud

要访问ownCloud Web界面,请打开Web浏览器并导航到以下地址:

https:// server_domain_or_IP / owncloud

如果正在使用自签名证书,您可能会收到警告,因为证书未由您的浏览器的可信授权机构签名。 这是预期和正常的。 我们只对证书的加密方面感兴趣,而不是对我们主机的真实性的第三方验证。 点击相应的按钮或链接,进入ownCloud设置页面。

你应该看到这样的:

通过选择用户名和密码创建管理员帐户。 出于安全目的,不建议对用户名使用“admin”。

在单击完成设置按钮之前,单击存储和数据库链接:

保留Data文件夹设置,并单击配置数据库部分中的MySQL / MariaDB按钮。

输入在上一步中配置的数据库信息。 下面是一个示例,它匹配我们在本指南中使用的数据库凭据:

单击完成设置按钮登录到ownCloud。 一个安全的家,所有的数据闪屏应该会出现:

单击启动屏幕右上角的x以访问主界面:

在这里,您可以创建或上传文件到您的个人云。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » CentOS下SWAP分区建立及释放内存详解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情