centos isof,centos8.1

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

方法一:

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

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确定目前的分区

2.swapoff/dev/hd**

3.free看一下是不是停了.

4.fdisk删了停掉的swap分区

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

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

7.swapon/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][/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 2.6.16)

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/Cached.sh

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

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

centos怎么查看hostid

天迁移以前的一个装有flexlm的虚拟机,结果发现在迁移后启动时报错

... Wrong hostid on SERVER line for license file

...

... SERVER line says 00e081787ba8, hostid is(Cannot get hostid of type 2 [])

... Invalid hostid on SERVER line1234

解决办法

从问题描述看,好像是取到hostid有问题,用lmhostid检查一下,发现取到的hostid为”“

./lmhostid

lmhostid- Copyright(c) 1989-2004 by Macrovision Corporation. All rights reserved.

The FLEXlm host ID of this machine is""123

由于FLEXlm会使用第一块网卡(eth0)的mac地址做hostid,所以用ifconfig检查网络配置,发现其中没有eth0,如下:

eth1 Link encap:Ethernet HWaddr 00:E0:81:78:7B:A8

inet addr:192.168.0.88 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::2e0:81ff:fe78:7ba8/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2463804 errors:0 dropped:0 overruns:0 frame:0

TX packets:345560 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:924819172(881.9 MiB) TX bytes:34087357(32.5 MiB)

Interrupt:11

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr:::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:2843863 errors:0 dropped:0 overruns:0 frame:0

TX packets:2843863 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:729294023(695.5 MiB) TX bytes:729294023(695.5 MiB)123456789101112131415161718

但是在用linux自带网络配置工具和/etc/sysconfig/network-scripts/下的文件配置看,确实是用的eth0。这说明配置出现了不一致问题。

最后,检查/etc/udev/rules.d/70-persistent-net.rules文件

# PCI device 0x1af4:0x1000(virtio-pci)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*l", ATTR{address}=="00:e0:81:78:7b:a8", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8139(8139cp)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:81:78:7b:a8", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"12345

发现了问题,里面有两个网卡配置项,果断修改为

CentOS7网络设置修复

服务器有两个网卡enp7s0和enp8s0   

服务器需要通过enp8s0和互联网联通,互联网为笔记本转接

通过centos7界面修改ip,失败;

通过centos7的网络配置文件/etc/sysconfig/network-scripts/ifcfg-enp8s0修改ip设置

设置如下:

1.启动 service network start报错,通过journalctl-xe查看如下

-- Defined-By: systemd

-- Support:

--

-- Unit fprintd.service has begun starting up.

12月 29 19:31:12 crrchost dbus-daemon[851]: dbus[851]: [system] Successfully activated service'net.reactivated.Fprint'

12月 29 19:31:12 crrchost dbus[851]: [system] Successfully activated service'net.reactivated.Fprint'

12月 29 19:31:12 crrchost systemd[1]: Started Fingerprint Authentication Daemon.

-- Subject: Unit fprintd.service has finished start-up

-- Defined-By: systemd

-- Support:

--

-- Unit fprintd.service has finished starting up.

--

-- The start-up result is done.

12月 29 19:31:12 crrchost fprintd[6685]: Launching FprintObject

12月 29 19:31:12 crrchost fprintd[6685]:** Message: D-Bus service launched with name: net.reactivated.Fprint

12月 29 19:31:12 crrchost fprintd[6685]:** Message: entering main loop

12月 29 19:31:18 crrchost polkitd[835]: Operator of unix-session:1 successfully authenticated as unix-user:windfarm to gain TEMPORARY authorization for action org.freedesktop.systemd1.manage-units for system-bus

12月 29 19:31:18 crrchost systemd[1]: Starting LSB: Bring up/down networking...

-- Subject: Unit network.service has begun start-up

-- Defined-By: systemd

-- Support:

--

-- Unit network.service has begun starting up.

12月 29 19:31:18 crrchost network[6693]:正在打开环回接口: [ 确定  ]

12月 29 19:31:18 crrchost network[6693]:正在打开接口 enp7s0:

12月 29 19:31:24 crrchost network[6693]:正在确定 enp7s0的 IP信息...失败:不存在链接。检查电缆?

12月 29 19:31:24 crrchost network[6693]: [失败]

12月 29 19:31:24 crrchost network[6693]:正在打开接口 enp8s0: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: [ 确定  ]

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost network[6693]: RTNETLINK answers: File exists

12月 29 19:31:25 crrchost systemd[1]: network.service: control process exited, code=exited status=1

12月 29 19:31:25 crrchost systemd[1]: Failed to start LSB: Bring up/down networking.

-- Subject: Unit network.service has failed

-- Defined-By: systemd

-- Support:

--

-- Unit network.service has failed.

--

-- The result is failed.

12月 29 19:31:25 crrchost systemd[1]: Unit network.service entered failed state.

12月 29 19:31:25 crrchost systemd[1]: network.service failed.

12月 29 19:31:25 crrchost polkitd[835]: Unregistered Authentication Agent for unix-process:6669:319312(system bus name:1.263, object path/org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)(d

3.systemctl status network.service查看如下:

● network.service- LSB: Bring up/down networking

  Loaded: loaded(/etc/rc.d/init.d/network; bad; vendor preset: disabled)

  Active: failed(Result: exit-code) since六 2018-12-29 18:38:17 CST; 1min 24s ago

   Docs: man:systemd-sysv-generator(8)

  Process: 909 ExecStart=/etc/rc.d/init.d/network start(code=exited, status=1/FAILURE)

12月 29 18:38:06 crrchost systemd[1]: Starting LSB: Bring up/down networking...

12月 29 18:38:06 crrchost network[909]:正在打开环回接口: [ 确定  ]

12月 29 18:38:06 crrchost network[909]:正在打开接口 enp7s0:

12月 29 18:38:12 crrchost network[909]:正在确定 enp7s0的 IP信息...失败:…?

12月 29 18:38:12 crrchost network[909]: [失败]

12月 29 18:38:17 crrchost network[909]:正在打开接口 enp8s0: [ 确定  ]

12月 29 18:38:17 crrchost systemd[1]: network.service: control process exi...=1

12月 29 18:38:17 crrchost systemd[1]: Failed to start LSB: Bring up/down n...g.

12月 29 18:38:17 crrchost systemd[1]: Unit network.service entered failed...e.

12月 29 18:38:17 crrchost systemd[1]: network.service failed.

Hint: Some lines were ellipsized, use-l to show in full.

1.参考网络方法停用NetworkManager,依旧报错

   systemctl stop NetworkManager

    systemctl disable NetworkManager

2.比对两个网卡的MAC地址和配置文件的MAC地址

   a.查看mac地址配置,ipconfig

   b.查看配置文件中的macd地址是否匹配,ifcfg-enp8s0和ifcfg-enp7s0,

    按照网络方法增加一行HWADDR=ipconfig查询到的对应网卡MAC地址;

   c.重启network服务依旧报错;

3.通过GUI界面查看网络,提示“系统的网络服务与此版本的网络管理器不兼容”

  这与之前停掉NetworkManager有关,此处不表;

4.因为ifcfg-enp7s0实际上没有插网线,修正其配置文件如下:

   ONBOOT=no

  重新启动服务后网络正常;

5.检查网络

1.network和NetworkManager不同,通过界面和通过配置文件,可能会导致配置混乱,且NetworkManager有些程序不支持,需要停用;

2.BOOTPROTO=none虽然可以表示静态ip,但是如果要启用,必须设置其为

BOOTPROTO=static或BOOTPROTO=dhcp

3.一个网卡没哟被启用,也就是没有设置动态ip或静态ip,是无法被初始化的,不能设置ONBOOT=yes

In Centos7.0 disabling NetworkManager will leave a dhcp client running configured for NetworkManager. This causes the error message RTNETLINK answers: File exists when the network service is started.

The stale dhclient process has the additional"benefit" that when the lease expires your dhclientwill choke, since it cannot reach NetWorkManager, thus removing your IP address.

If you grep for it, you will see that it points to a NetWorkManager configuration file.

[root@host~]# ps-ef| grep dhc

root    1865  792  0 Apr28?     00:00:00/sbin/dhclient-d-sf\

/usr/libexec/nm-dhcp-helper-pf/var/run/dhclient-eno1.pid-lf\

/var/lib/NetworkManager/dhclient-c96e56d3-a4c9-4a87-85ca-93dc0ca268f2-eno1.lease\

-cf/var/lib/NetworkManager/dhclient-eno1.conf eno1

So what you can do is kill the dhclient and only then start your network service.

阅读剩余
THE END