centos codeblock,codeblock是什么

OpenSSL 功能介绍

1概述

OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

OpenSSL是实现安全套接字层(SSL v2/ v3)和传输层安全(TLS v1)网络协议及其所需的相关加密标准的加密工具包。

OpenSSL:开源项目

三个组件:

openssl:多用途的命令行工具,包openssl

libcrypto:加密算法库,包openssl-libs

libssl:加密模块应用库,实现了ssl及tls,包nss

.openssl命令:

两种运行模式:交互模式和批处理模式

opensslversion:程序版本号

标准命令、消息摘要命令、加密命令

标准命令:enc, ca, req,...

查看帮助:openssl?

可以通过openssl来创建CA和颁发证书,文章

有做介绍,本文仅介绍openssl这个工具包的其他常用功能

2案例介绍

2.1对称加密

工具:openssl enc, gpg,文章 已经介绍

算法:3des, aes, blowfish, twofish

.enc命令:

对称密码命令允许使用基于密码或明确提供的密钥的各种块和流密码来加密或解密数据。 Base64编码或解码也可以通过本身或加密或解密来执行。

The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.

帮助:man enc

例子

加密文件

以下命令运行需要输入一个密码,当解密的时候需要输入相同的密码才能解密,这里新生成的文件后缀名不一定是cipher,可以自己指定

openssl enc -e-des3-a-salt-in testfile -out testfile.cipher

解密文件

openssl enc -d-des3-a-salt–in testfile.cipher-out testfile

2.2公钥加密

公钥加密生成非对称的密钥

算法:RSA, ELGamal

工具:gpg, openssl rsautl(man rsautl)

数字签名:

算法:RSA, DSA, ELGamal

密钥交换:

算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。命名是取其名字首字母组合成RSA

RSA公钥与私钥主要用于数字签名(Digital Signature)与认证(Authentication),我们一般也称之为不对称加密/解密。

2.2.1生成密钥对

帮助:man genrsa

.生成私钥,这个生成密钥的过程要掌握

openssl genrsa -out/PATH/TO/PRIVATEKEY.FILE NUM_BITS

私钥文件生成后,建议把权限改成600,保护,放在被其他人查看密码信息

私钥里的文件,如果被拿到,没有通过des这关键字加密的话,就相当于是明文

这个命令执行的时候,要输入八位数的密码,当要使用这个私钥的时候需要输入密码

(umask 077; openssl genrsa–out test.key –des 2048)

括号表示子进程,结束后,umask就会恢复未默认的值,umask的值使得其他人和组都没有任何权限,是为了保护生成的私钥

2.2.2从私钥中提取出公钥,导出公钥

公钥推不出私钥,私钥可以推出公钥

openssl rsa -in PRIVATEKEYFILE–pubout –out PUBLICKEYFILE

Openssl rsa –in test.key –pubout –out test.key.pub

公钥是公开的,可以不设置权限,以上是生成公钥

2.2.3公钥加密文件

openssl rsautl-encrypt-in input.file-inkey pubkey.pem-pubin-out output.file

-in指定被加密的文件

-inkey指定加密公钥文件

-pubin表面是用纯公钥文件加密

-out指定加密后的文件

例子:

openssl rsautl-encrypt-in ftpback-inkey test.key.pub-pubin-out ftpssl

2.2.4私钥解密文件

openssl rsautl-decrypt-in input.file-inkey key.pem-out output.file

-in指定需要解密的文件

-inkey指定私钥文件

-out指定解密后的文件

例子:

openssl rsautl-decrypt-in ftpssl-inkey test.key-out ftpdec

2.3单向加密

单向加密即获取摘要

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl  dgst

dgst:摘要功能输出所提供文件的消息摘要或十六进制形式的文件。它们也可用于数字签名和验证。

The digest functions output the message digest of a supplied file or files in hexadecimal form. They can also be used for digital signing and verification.

.dgst命令:

帮助:man dgst

openssl dgst -md5 [-hex默认] /PATH/SOMEFILE

openssl dgst -md5 testfile

以上命令将文件生成一个固定长度的摘要值,算法是md5,大小占128bite

md5sum/PATH/TO/SOMEFILE

以上这两个md5得到的结果是一样的

.MAC: Message Authentication Code,单向加密(hash)的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制

MAC消息认证码,构造方法可以基于hash,也可以基于对称加密算法,HMAC是基于hash的消息认证码。数据和密钥作为输入,摘要信息作为输出,常用于认证。

源文档

2.4生成用户密码

passwd命令:

帮助:man sslpasswd

openssl passwd -1-salt SALT

-1对应的就是hash的md5算法

SALT:这里是盐值,人为指定,使得同一密码生成的加密值不一样,最多8位,超过8位没有意义,比如前面8位一样,后面还有几位数不一样,这样生成的密码值是一样的

openssl passwd -1–salt centos

grub-md5-crypt同样生成md5加密的口令,centos为盐值

比如这里的密码我都是输入123,但是盐值不一样,一个是centos,一个是centos6,生成的加密值不一样

2.5生成随机数

帮助:man sslrand

rand命令在播放随机数生成器一次后输出num伪随机字节。与其他openssl命令行工具一样,除了-rand选项中给出的文件外,PRNG种子使用文件$ HOME/.rnd或.rnd。如果从这些来源获得足够的播种,将会写回新的$ HOME/.rnd或.rnd文件。

The rand command outputs num pseudo-random bytes after seeding the random number generator once. As in other openssl command line tools, PRNG seeding uses the file$HOME/.rnd or.rnd in addition to the files given in the -rand option. A new$HOME/.rnd or.rnd file will be written back if enough seeding was obtained from these  sources.

openssl rand-base64|-hex NUM

指定数字生成随机数,如果是-hex后面的数值比如6,那么生成的长度是12位,因为hex生成的随机数是16进制组合的数,hex后面的num是字节数,一个16进制数占用4位,半个字节

base后面可以生成随机密码

base64生成随机的数,可以用任何字符,也可以把图片保存成base64的格式,通过base64生成的图片,可以

用base64来还原出图片

NUM:表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2

3总结

openssl还有很多用法,本文仅单纯介绍了其中一部分,更多用法请使用帮助 man openssl进行查看

CentOS服务程序性能评估文档详解

1概述

1.1影响Linux服务程序性能的因素

CPU、内存、磁盘I/O带宽、网络I/O带宽

1.2性能评判

CPU:user%+ sys% 70%;程序在用户态和内核态的执行时间百分比。

内存:Swap In(si)=0; Swap Out(so)=0;以不使用交换分区为准,如果频繁用到交换分区,内存可能不够了。

硬盘:iowait% 20%;

网络:只要有足够带宽尽情的使用吧,达到网卡带宽linux系统表示毫无压力

其中:%user:表示CPU处在用户模式下的时间百分比。

%sys:表示CPU处在内核模式下的时间百分比。

%iowait:表示CPU等待输入输出完成时间的百分比。

swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。

1.3性能分析工具

常用系统命令:top、free、ps、uptime、iotop、vmstat、iostat、dstat、sar。

使用方法:top命令把握全局,使用特定命令深入分析

常用组合方式:

(1)CPU瓶颈:top、vmstat、iostat、sar–u、sar-q

(2)内存瓶颈:free、vmstat、sar-B、sar–r、sar-W

(3)磁盘I/O瓶颈:iotop、iostat、sar-b、sar–u、sar-d

(4)网络瓶颈: dstat

2 top

2.1功能

提供了实时的对系统处理器、内存、任务等状态监视;该命令可以按CPU使用、内存使用对任务进行排序;TOP是一个动态显示过程,可以通过用户按键来不断刷新当前状态,也可以在启动时指定刷新间隔。

2.2命令输出示意图

top- 10:16:29 up 38 days, 15:48, 5 users, load average: 0.04, 0.10, 0.05

Tasks: 569 total, 2 running, 562 sleeping, 0 stopped, 5 zombie

Cpu(s): 2.6%us, 1.3%sy, 0.4%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3839112k total, 3151560k used, 687552k free, 302944k buffers

Swap: 6078456k total, 631852k used, 5446604k free, 348548k cached

PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+ COMMAND

10603 zhixiang 20 0 1225m 284m 30m S 4.6 7.6 271:48.24 vs_exe

2473 xulun 20 0 118m 43m 6932 S 3.0 1.2 964:14.99 Xvnc

1412 xulun 30 10 232m 12m 5216 S 2.3 0.3 0:04.59 floaters

14823 chujie 20 0 1112m 247m 17m S 2.0 6.6 363:51.38 vs_exe

17772 sihao 20 0 1101m 202m 10m S 1.7 5.4 631:21.17 vs_exe

11054 sihao 20 0 906m 65m 9412 S 1.0 1.7 410:06.55 vs_exe

20782 yongtao 20 0 1049m 173m 9996 S 1.0 4.6 196:05.10 vs_exe

14637 chujie 20 0 1274m 132m 2388 S 0.7 3.5 63:20.18 KugooPopMsgServ

1439 yanyun 20 0 15428 1600 940 R 0.3 0.0 0:00.01 top

3491 zhixiang 20 0 129m 55m 17m S 0.3 1.5 10:57.25 Xvnc

1 root 20 0 19344 1200 984 S 0.0 0.0 0:00.89 init

2.3命令输出解析

Top输出的信息很多基本囊括了所有的性能指标,前五行是统计信息区,表示的是系统整体的统计信息,包括:系统负载、任务、CPU、内存等;后面的是每个进程相关信息。

第一行是任务队列信息,同uptime命令的执行结果是一样的

[yanyun@~/test]$ uptime

10:20:17 up 38 days, 15:52, 5 users, load average: 0.00, 0.04, 0.03

其内容如下:10:20:17:当前时间

38 days, 15:52:系统运行时间

5 users:当前登录用户数

load average: 0.00, 0.04, 0.03:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行为进程的信息

内容如下:569 total:进程总数

2 running,:正在运行的进程数

562 sleeping:睡眠的进程数

0 stopped:停止的进程数

5 zombie:僵尸进程数

第三行为CPU的信息

内容如下:2.6%us:用户空间占用CPU百分比

1.3%sy:内核空间占用CPU百分比

0.4%ni:用户进程空间内改变过优先级的进程占用CPU百分比

95.7%id:空闲CPU百分比

0.0%wa:等待输入输出的CPU时间百分比

第四、五行为内存信息;命令输出跟free相同

[yanyun@~]$ free

total used free shared buffers cached

Mem: 3839112 3256976 582136 0 143664 444992

-/+ buffers/cache: 2668320 1170792

Swap: 6078456 574772 5503684

内容如下:Mem:3839112k total:物理内存总量

3151560k used:使用的物理内存总量

687552k free:空闲内存总量

302944k buffers:用作缓冲的内存量

Swap: 6078456k total:交换区总量

631852k used:使用的交换区总量

5446604k free:空闲交换区总量

348548k cached:缓存总量。

注:buffer:可以认为是写出磁盘的缓冲区;

Cache:读出磁盘的缓存。

Linux系统使用内存的原则是:不用白不用,用了也白用;尽可能的缓存东西,所以往往看空闲内存很小,但是cache很大;Linux系统会定时启动内核线程kswapd进行缓存回收。

后面的是显示每个进程相关信息

%CPU:上次更新到现在的CPU时间占用百分比

TIME+:进程使用的CPU时间总计

%MEM:进程使用的物理内存百分比

VIRT:进程使用的虚拟内存总量,单位kb

RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:共享内存大小,单位kb

S:进程状态。(D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程)

2.4常用选项

top [-] [d][p][M][P]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔。(top–d 1:每秒刷新一次)

p:指定进程ID来仅监控某个进程。(top–d 1234:只查看pid为1234的进程信息)

k:终止一个进程。Top运行时参数,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。使用信号9强制结束该进程。

M:根据驻留内存大小进行排序。

P:根据CPU使用百分比大小进行排序。

注:在命令行执行过程中按下数字键‘1’,可以查看到CPU每个核的相关信息。

Tasks: 564 total, 3 running, 556 sleeping, 0 stopped, 5 zombie

Cpu0: 2.9%us, 2.9%sy, 0.0%ni, 94.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu1: 2.0%us, 2.0%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu2: 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu3: 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3839112k total, 3445296k used, 393816k free, 48180k buffers

Swap: 6078456k total, 553876k used, 5524580k free, 976128k cached

PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+ COMMAND

14823 chujie 20 0 1112m 245m 16m R 3.0 6.5 373:07.82 vs_exe

5589 sihao 20 0 1019m 267m 29m R 2.0 7.1 2:24.80 vs_exe

5674 zhixiang 20 0 1103m 253m 37m S 2.0 6.8 4:17.89 vs_exe

3 iotop:

3.1功能

是一个用来监视每个线程的磁盘 I/O使用状况的类top工具,

注:此命令需要自行安装(yum install iotop)

3.2命令输出示意图

Total DISK READ: 50.23 M/s| Total DISK WRITE: 34.25 K/s

TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND

61524 be/4 root 47.65 M/s 0.00 B/s 0.00% 37.83%./relay_server

61539 be/4 root 121.77 K/s 0.00 B/s 0.00% 26.73%./relay_server

61544 be/4 root 700.15 K/s 0.00 B/s 0.00% 24.89%./relay_server

61543 be/4 root 528.92 K/s 0.00 B/s 0.00% 21.29%./relay_server

61541 be/4 root 494.67 K/s 0.00 B/s 0.00% 21.22%./relay_server

61540 be/4 root 323.44 K/s 0.00 B/s 0.00% 8.62%./relay_server

61542 be/4 root 468.04 K/s 0.00 B/s 0.00% 8.13%./relay_server

480 be/3 root 0.00 B/s 0.00 B/s 0.00% 0.02% [jbd2/sda2-8]

1 be/4 root 0.00 B/s 0.00 B/s 0.00% 0.00% init

2 be/4 root 0.00 B/s 0.00 B/s 0.00% 0.00% [kthreadd]

3 rt/4 root 0.00 B/s 0.00 B/s 0.00% 0.00% [migration/0]

3.3命令输出解析

第一行:

Total DISK READ: 50.23 M/s:磁盘每秒读出数据量

Total DISK WRITE: 34.25 K/s:磁盘每秒写入数据量

下面的是每个线程的的IO情况:

比较简单;只解释一下IO:跟top的wa意义相同,只是此处表示的一个线程的wa。

3.4常用选项

iotop [-] [d] [p]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔。(iotop–d 1:每秒刷新一次)

p:指定线程ID来仅监控某个线程。(iotop–d 1234:只查看pid为1234的进程信息)

注:在命令行执行过程中按下字母‘o’,可以只查看有IO的线程。

pstree-p:查看进程树,可以输出进程之间的关系。

ps–eLf:查看线程。ps–ef的高级版

4 vmstat:

4.1功能

查看虚拟内存(Virtual Memory)使用状况的工具

4.2命令输出示意图

[yanyun@~/test]$ vmstat

procs-----------memory-------------swap-------io------system-------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 631376 834896 15108 452024 0 0 4 4 1 2 2 1 97 0 0

4.3命令输出解析

Memory:同top的第四、五行信息。

swap:内存到swap分区换入换出速率。

io:读写磁盘速率

system in:每秒的中断数,包括时钟中断

system cs:每秒的环境(上下文)切换数;频繁切换对系统性能有影响,linux提供了线程对cpu的亲和,可以将某个线程绑定到一个核运行。

cpu:同top输出的第三行

注:swap项不为零,都用到交换分区了,内存可能已经用完已经成为系统瓶颈的一项。

4.4常用选项

vmstat 1 10:每秒刷新一次,总共刷新十次退出。

注:下面的选项都是专业的查看某一特定项的信息,有几个输出一大堆信息,用到时google吧!

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量

-m:显示slabinfo

-s:显示内存相关统计信息及多种系统活动数量。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息

5 iostat

5.1功能

用于输出CPU和磁盘I/O相关的统计信息

5.2输出结果示意图

[root@ShanWei_119_134_255_208~]# iostat-x

Linux 2.6.32-279.el6.x86_64(ShanWei_119_134_255_208) 07/30/2013 _x86_64_(16 CPU)

avg-cpu:%user%nice%system%iowait%steal%idle

2.63 0.00 2.25 5.98 0.00 89.14

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm%util

sda 195.42 163.72 194.33 126.28 28464.35 2319.94 96.02 1.16 3.63 1.41 45.30

sdb 0.33 48.97 122.71 2.70 29603.37 413.38 239.34 0.27 2.15 1.00 12.52

5.3命令输出解释

avg-cpu段:

%user:在用户级别运行所使用的CPU的百分比.

%nice: nice操作所使用的CPU的百分比.

%sys:在系统级别(kernel)运行所使用CPU的百分比.

%iowait: CPU等待硬件I/O时,所占用CPU百分比.

%idle: CPU空闲时间的百分比.

Device段:

tps:每秒钟发送到的I/O请求数

Blk_read/s:每秒读取的block数

Blk_wrtn/s:每秒写入的block数

Blk_read:读入的block总数

Blk_wrtn:写入的block总数

-x选项可以查看到如下更多信息

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了

rsec/s:每秒读取的扇区数

wsec/:每秒写入的扇区数

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)

avgqu-sz:平均I/O队列长度

await:平均每次设备I/O操作的等待时间(单位是毫秒)

svctm:平均每次设备I/O操作的服务时间(单位是毫秒)

%util:在统计时间内所有处理IO时间,所以该参数暗示了设备的繁忙程度

5.4常用选项

iostat-d 2 6:每隔2秒,显示一次设备统计信息.总共输出6次.

-x:查看设备的使用率、响应时间

6 dstat

6.1功能

是一个全能系统信息统计工具,只能对整个系统进行监控而不能对某一个进程或某一个程序进行深入分析;监控项包括:cpu、磁盘、内存、网卡、进程、系统(彩色界面linux下面不多见啊!)

注:此命令需要自行安装(yum install dstat)

6.2命令输出示意图

[root@ShanWei_119_134_255_208~]# dstat-cdlmnpy

----total-cpu-usage-----dsk/total----load-avg---------memory-usage------net/total----procs------system--

usr sys idl wai hiq siq| read writ| 1m 5m 15m| used buff cach free| recv send|run blk new| int csw

3 2 89 6 0 0| 28M 1367k|5.41 5.07 4.87|4019M 172M 58.5G 267M| 0 0| 0 0.0 1.3|8608 35k

2 1 85 12 0 0| 21M 828k|5.41 5.07 4.87|4020M 172M 58.6G 243M| 191k 15M| 0 6.0 0|5711 18k

1 1 80 18 0 0|5828k 4804k|5.41 5.07 4.87|4018M 172M 58.6G 260M| 190k 17M|2.0 3.0 0|5802 12k

6.3命令输出解释

前面基本都解释过了......

6.4常用选项

dstat–cdlmnpsy:cdlmnpsy这几个选项基本囊括了常用的,当然还有很多dstat–-help一下吧。

7 sar

7.1功能

System Activity Reporter系统活动情况报告,是目前 Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

7.2命令输出示意图

[root@localhost~]# sar-r 1 100

Linux 2.6.32-220.el6.x86_64(localhost.localdomain) 07/30/2013 _x86_64_(8 CPU)

03:17:59 PM kbmemfree kbmemused%memused kbbuffers kbcached kbcommit%commit

03:18:00 PM 4988488 3062224 38.04 639136 2115404 72404 0.44

03:18:01 PM 4984464 3066248 38.09 639136 2115404 98060 0.60

03:18:02 PM 4985152 3065560 38.08 639136 2115420 97972 0.60

03:18:03 PM 4985400 3065312 38.08 639136 2115420 97972 0.60

[root@localhost~]# sar-B 1 100

Linux 2.6.32-220.el6.x86_64(localhost.localdomain) 07/30/2013 _x86_64_(8 CPU)

03:19:09 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s%vmeff

03:19:10 PM 0.00 157.14 45415.48 0.00 15541.67 0.00 0.00 0.00 0.00

03:19:11 PM 0.00 0.00 40.40 0.00 75.76 0.00 0.00 0.00 0.00

03:19:12 PM 0.00 0.00 5542.34 0.00 1584.68 0.00 0.00 0.00 0.00

[root@localhost~]# sar-b 1 100

Linux 2.6.32-220.el6.x86_64(localhost.localdomain) 07/30/2013 _x86_64_(8 CPU)

03:19:38 PM tps rtps wtps bread/s bwrtn/s

03:19:39 PM 12.50 0.00 12.50 0.00 181.82

03:19:40 PM 0.00 0.00 0.00 0.00 0.00

03:19:41 PM 7.14 0.00 7.14 0.00 128.57

[root@localhost~]# sar-W 1 100

Linux 2.6.32-220.el6.x86_64(localhost.localdomain) 07/30/2013 _x86_64_(8 CPU)

03:20:10 PM pswpin/s pswpout/s

03:20:11 PM 0.00 0.00

03:20:12 PM 0.00 0.00

03:20:13 PM 0.00 0.00

[root@localhost~]# sar-d 1 100

Linux 2.6.32-220.el6.x86_64(localhost.localdomain) 07/30/2013 _x86_64_(8 CPU)

03:20:48 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm%util

03:20:49 PM dev8-0 7.69 0.00 79.12 10.29 0.00 0.14 0.14 0.11

03:20:49 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

03:20:49 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm%util

03:20:50 PM dev8-0 10.47 0.00 148.84 14.22 0.08 7.22 7.11 7.44

03:20:50 PM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

7.3命令输出解释

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major+ minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

tps:每秒钟物理设备的 I/O传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

7.4常用选项

sar–[u][r][B][b][q][W][d]

参数说明:

-u:CPU资源监控

-r:内存和交换空间监控

-B:内存分页监控

-b:IO和传输速率监控

-q:进程队列系统负载监控

-W:系统交换分区活动监控

-d:设备使用状况监控

8 tmpfs

8.1定义

tmpfs文件系统是一种基于内存的文件系统,挂载在/dev/shm下面。

8.2特点

动态改变大小;访问快、完全驻留在RAM中;当然系统重启就没了。

8.3使用方法

1、 linux下面POSIX标准的共享内存是基于此文件系统实现的(还有一套System V标准的共享内存实现方式);

2、将文件创建在/dev/shm下面都将直接使用tmpfs;所以如果不需要考虑机器重启后数据的丢失,把数据放在这下面吧,释放你的磁盘压力!

3、 tmpfs的默认大小是物理内存的一半。将最大容量调到40G,并且文件节点数量调到1000000,可以通过下面的命令:

mount-o size=40G-o nr_inodes=1000000-o noatime,nodiratime-o remount/dev/shm

4、如果需要永久修改tmpfs文件系统的大小,需要修改/etc/fstab

9 crontab:

9.1功能

定时调度一些命令的执行,相当于系统级别的定时器。在/var/spool/cron/有一些以用户名命名的文件,表示的是这个用户的定时执行任务。

9.2配置方法

格式说明:

*****/command path

前五个字段可以取整数值,指定何时开始工作(分钟小时日期月份星期),第六个域是字符串,到期执行的脚本、程序等

43 21***每天21:43执行

0 17** 1每周一的 17:00执行

0,10 17** 0,2,3每周日,周二,周三的 17:00和 17:10执行

0-10 17 1**毎月1日从 17:00到7:10毎隔1分钟执行

0 0 1,15* 1毎月1日和 15日和一日的 0:00执行

42 4 1**毎月1日的 4:42分执行

0 21** 1-6周一到周六 21:00执行

0,10,20,30,40,50****每隔10分执行

*/10****每隔10分执行

* 1***从1:0到1:59每隔1分钟执行

0 1*** 1:00执行

0*/1***毎时0分每隔1小时执行

0****毎时0分每隔1小时执行

2 8-20/3*** 8:02,11:02,14:02,17:02,20:02执行

30 5 1,15** 1日和 15日的 5:30执行

如下配置表示:每天3:00执行这个脚本/opt/ clear_old_file.sh;

这个脚本功能是:删除/data1/data2这两个目录下的五天之内没有访问过的文件

0 3***(cd/opt/./clear_old_file.sh/dev/null)

[root@ShanWei_119_134_255_208~]# cat/opt/clear_old_file.sh

#!/bin/sh

find/data1/*-type f-atime+5-exec rm{} \;

find/data2/*-type f-atime+5-exec rm{} \;

exit 0

10 proc:待续…

/proc文件系统是 GNU/Linux特有的。它是一个虚拟的文件系统,此文件系统完全驻留在RAM中,因此在该目录中的所有文件都不会消耗磁盘空间。通过它能够非常简便地了解系统中的内核信息、硬件信息等;还可以通过它进行系统内核的参数的配置。许多命令实际上只是从/proc的文件中收集信息,然后按照它们自己的格式组织后显示出来;像前面介绍的命令基本就是这么干的。

如何在Fedora / CentOS上面升级Docker 1.6

Docker,一个流行的将软件打包的开源容器平台,已经有了新的1.6版,增加了许多新的特性。该版本主要更新了Docker Registry、Engine、 Swarm、 Compose和 Machine等方面。这次发布旨在提升性能、改善开发者和系统管理员的体验。让我们来快速看看有哪些新特性吧。

Docker Registry(2.0)是一项推送Docker镜像用于存储和分享的服务,因为面临加载下的体验问题而经历了架构的改变。它仍然向后兼容。Docker Registry的编写语言现在从Python改为Google的Go语言了,以提升性能。与Docker Engine 1.6结合后,拉取镜像的能力更快了。早先的镜像是队列式输送的,而现在是并行的啦。

Docker Engine(1.6)相比之前的版本有很大的提高。目前支持容器与镜像的标签。通过标签,你可以附加用户自定义的元数据到镜像和容器上,而镜像和容器反过来可以被其他工具使用。标签对正在运行的应用是不可见的,可以用来加速搜索容器和镜像。

Windows版本的Docker客户端可以连接到远程的运行在linux上的Docker Engine。

Docker目前支持日志驱动API,这允许我们发送容器日志给系统如Syslog,或者第三方。这将会使得系统管理员受益。

Swarm(0.2)是一个Docker集群工具,可以将一个Docker主机池转换为一个虚拟主机。在新特性里,容器甚至被放在了可用的节点上。通过添加更多的Docker命令,努力支持完整的Docker API。将来,使用第三方驱动来集群会成为可能。

Compose(1.2)是一个Docker里定义和运行复杂应用的工具,也得到了升级。在新版本里,可以创建多个子文件,而不是用一个没有结构的文件描述一个多容器应用。

通过Machine(0.2),我们可以很容易地在本地计算机、云和数据中心上搭建Docker主机。新的发布版本为开发者提供了一个相对干净地驱动界面来编写驱动。Machine集中控制供给,而不是每个独立的驱动。增加了新的命令,可以用来生成主机的TLS证书,以提高安全性。

在Fedora/ CentOS上的升级指导

在这一部分里,我们将会学习如何在Fedora和CentOS上升级已有的docker到最新版本。请注意,目前的Docker仅运行在64位的架构上,Fedora和CentOS都源于RedHat,命令的使用是差不多相同的,除了在Fedora20和CentOS6.5里Docker包被叫做“docker-io”。

如果你系统之前没有安装Docker,使用下面命令安装:

"yum install docker-io"– on Fedora20/ CentOS6.5"yum install docker"- on Fedora21/ CentOS7

在升级之前,备份一下docker镜像和容器卷是个不错的主意。

参考“将文件系统打成 tar包”与“卷备份、恢复或迁移”,获取更多信息。

目前,测试系统安装了Docker1.5。样例输出显示是来自一个Fedora20的系统。

验证当前系统安装的Docker版本

[root@TestNode1~]#sudo docker-vDocker version 1.5.0, build a8a31ef/1.5.0

如果Docker正在运行,先停掉。

[root@TestNode1~]# sudo systemctl stop docker

使用yum update升级到最新版,但是写这篇文章的时候,仓库并不是最新版本(1.6),因此你需要使用二进制的升级方法。

[root@TestNode1~]#sudo yum-y update docker-ioNo packages marked for update[root@TestNode1~]#sudo wget 13:40:48-- get.docker.com(get.docker.com)... 162.242.195.82Connecting to get.docker.com(get.docker.com)|162.242.195.82|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 15443598(15M) [binary/octet-stream]Saving to:/usr/bin/docker100%[======================================>] 15,443,598 8.72MB/s in 1.7s2015-04-19 13:40:50(8.72 MB/s)-/usr/bin/docker saved

检查更新后的版本

[root@TestNode1~]#sudo docker-vDocker version 1.6.0, build 4749651

重启docker服务

[root@TestNode1~]# sudo systemctl start docker

确认Docker在运行

[root@TestNode1~]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEfedora latest 834629358fe2 3 months ago 241.3 MB[root@TestNode1~]# docker run fedora/bin/echo Hello WorldHello World

CentOS安装时需要注意,在CentOS上安装完Docker后,当你试图启动Docker服务的时候,你可能会得到错误的信息,如下所示:

docker.service- Docker Application Container EngineLoaded: loaded(/usr/lib/systemd/system/docker.service; disabled)Active: failed(Result: exit-code) since Mon 2015-04-20 03:24:24 EDT; 6h agoDocs: : 21069 ExecStart=/usr/bin/docker-d$OPTIONS$DOCKER_STORAGE_OPTIONS$DOCKER_NETWORK_OPTIONS$ADD_REGISTRY$BLOCK_REGISTRY$INSECURE_REGISTRY(code=exited, status=127)Main PID: 21069(code=exited, status=127)Apr 20 03:24:24 centos7 systemd[1]: Starting Docker Application Container E.....Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"Apr 20 03:24:24 centos7 docker[21069]:/usr/bin/docker: relocation error:/...ceApr 20 03:24:24 centos7 systemd[1]: docker.service: main process exited, co.../aApr 20 03:24:24 centos7 systemd[1]: Failed to start Docker Application Cont...e.Apr 20 03:24:24 centos7 systemd[1]: Unit docker.service entered failed state.

这是一个已知的bug(),需要将设备映射升级到最新。

[root@centos7~]# rpm-qa device-mapperdevice-mapper-1.02.84-14.el7.x86_64[root@centos7~]# yum update device-mapper[root@centos7~]# rpm-qa device-mapperdevice-mapper-1.02.93-3.el7.x86_64[root@centos7~]# systemctl start docker

总结

尽管docker技术出现时间不长,但很快就变得非常流行了。它使得开发者的生活变得轻松,运维团队可以快速独立地创建和部署应用。通过该公司的发布,D

阅读剩余
THE END