@maorongrong
2017-04-13T08:27:03.000000Z
字数 8122
阅读 460
for-github
..., 西安交通大学在读研二学生,专业计算机技术下-云计算(虚拟化方向),主要研究虚拟机调度算法,主要成果依托于MBBO算法解决的vm conslidation发表专利2篇;除此之外个人兴趣是docker及其生态系统的使用,能够熟练使用docker/compose/swarm,熟悉linux系统、python以及计算机基础知识。
redhat官方源各种认证限制,centos是redhat的开源社区版,ubuntu基于debian发行版本。
,与centos主要区别在于包管理机制不同,centos主要rpm包,使用yum进行包管理
包格式、包管理工具不同,一个rpm,使用yun管理,一个dpkg,使用apt管理
桌面管理器不一样,centos基于GNOME,ubuntu使用自己开发的unity,窗口管理器使用自己开发的mir
ubunut一般会采用比较新的linux内核
centos为了版本稳定,一般采用比较旧的kernel,
redhat,对硬件设备的支持比较好,会针对硬件进行优化,但是源需要收费。
vmstat
free
top
web服务器apache和web应用服务器tomcat。
tomcat是sun和apache合作, 做出来的jsp server, 支持servlet 和jsp.tomcat本身可以做为 web server, 当处理静态页面时,tomcat不如apache迅速,不象apache一样可配置,强壮. apache做为最流行的web服务器功能强大,高效,但并不支持jsp及servlet,所以通常的做法是把它们整合起来,让apache处理静态页面,而把动态页面的请求交给 tomcat处理,发挥各自的优势. 通过在apache中加载整合模块和进行设置,apache就能够根据url,把不属于自己的请求转给 tomcat.
squid是Internet数据缓存服务器,nginx除了用于web服务器,还用于反向代理服务器和负载均衡服务器。
linux virtual server,用于负载均衡,通过IPVS均衡用户请求到后端服务器。
Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。 对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
高可用性
系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
数据的完整性:
ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,ext3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。
文件系统的速度:
尽管使用ext3文件系统存储数据时可能要多次写数据,但是ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。
数据转换
ext3文件系统提供的小工具tune2fs将ext2转为ext3命令tune2fs -j /dev/hda9(分区路径)
。
注意:将ext2文件系统转换为ext3文件系统时,不必要将分区缷载下来转换。转换完成后,不要忘记将/etc/fstab
文件中所对应分区的文件系统由原来的ext2更改为ext3。
多种日志模式
Ext3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。
Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:
#umount /dev/sdb1
#tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
转换成 ext4 后必须用 fsck 扫描,否则不能 mount,-p 参数表明 “自动修正 ” 文件系统
#fsck -pf /dev/sdb1
挂载 ext4 文件系统
# mount -t ext4 /dev/sdb1 /backup
更大的文件系统和更大的文件。Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。
无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。
Extents数据块映射,效率高。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。而 Ext4 采用流行的 extents 概念,每个 extent 为一组连续的数据块,提高了不少效率。
多块分配。 当写入数据到 Ext3 每次只能分配一个 4KB 的块,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。
快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
日志校验。 Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。
“无日志”(No Journaling)模式。 日志总归有一些开销,Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。
inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。
持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。
默认启用 barrier。 磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的
buffer根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。
buffer是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cpu在执行程序时需要从内存读取,但内存读写慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,但是造价高,一般cache比较
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提高系统性能。
分界符的定义, $NF含义:最后一个域的内容
版本号(Version):长度4比特。标识目前采用的IP协议的版本号。一般的值为0100(IPv4),0110(IPv6)
IP包头长度(Header Length):长度4比特。,因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。
IP包总长(Total Length):长度16比特。 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节。
标识符(Identifier):长度16比特。该字段和Flags和Fragment Offest字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。
标记(Flags):长度3比特。该字段第一位不使用。第二位是DF(Don't Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
片偏移(Fragment Offset):长度13比特。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
生存时间(TTL):长度8比特。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。
协议(Protocol):长度8比特。标识了上层所使用的协议。
以下是比较常用的协议号:
1 ICMP
2 IGMP
6 TCP
17 UDP
88 IGRP
89 OSPF
头部校验(Header Checksum):长度16位。用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。
起源和目标地址(Source and Destination Addresses):这两个地段都是32比特。标识了这个IP包的起源和目标地址。要注意除非使用NAT,否则整个传输的过程中,这两个地址不会改变。
填充(Padding):因为IP包头长度(Header Length)部分的单位为32bit,所以IP包头的长度必须为32bit的整数倍。因此,在可选项后面,IP协议会填充若干个0,以达到32bit的整数倍。
WEB请求处理一:浏览器请求发起处理
通过开源中国
关注此人了,写东西还是很清楚的。
Apache的三种MPM模式比较:prefork,worker,event
Apache的多路处理模块MPM:Prefork Worker Event
Web服务器和动态语言如何交互--CGI&FastCGI&FPM浅谈
HTTP协议报文、工作原理及Java中的HTTP通信技术详解
php中动态调用说明
一个请求到达服务器,无论是http还是https,先经过web server,如apache、nginx,由web server处理与客户端之间基于http/https协议的数据交互,
根据一定规则(如扩展名)确定是否需要调用php来处理这个请求,调用的方式有很多种,比如模块方式、CGI方式、以及基于CGI的fastcgi/fpm方式,取决于web server的配置
调用结束后,php把要返回的数据吐出来给web server,再由web server封装成http/https协议格式,返回给客户端/浏览器
https = http + ssl
对称加密
非对称加密
数字签名(使用非对称加密的私钥加密,公钥解密)
数字证书(由权威整数机构颁发CA整数,包含发证机关信息与要访问server的公钥)
kill -l可以看到所有的信号
[amy@amy-Heizi ~]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM定时器,可捕捉 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
可以用stat
命令,查看某个文件的inode信息。
操作系统一次读取多个扇区组成的块,是文件存取的最小单位,最常见的是4KB,即连续八个 sector组成一个 block。
inode储存文件的元信息,文件又是存储在块中,元数据包括 文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读、写、执行权限、文件的时间戳(有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间)链接数,即有多少文件名指向这个inode、文件数据block的位置
事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。事务的提出主要是为了解决并发情况下保持数据一致性的问题。
● Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
● Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
● Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立,彼此隔离的。
● Durability(持久性):事务结束后,事务处理的结果必须能够得到固化,对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库。
开始事物:BEGIN TRANSACTION
提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION
fork to myself repo
git clone
change
git add -A
git commit -m
git remote add
crontab -l
sudo crontal -e
sudo /etc/init.d/cron restart