Git
学些Git命令:
自己现在本地电脑找个合适的地方创建一个仓库,即一个空目录,比方说我在d盘创建一个名为gittest的空目录:
$ cd d:
$ mkdir gittest
$ cd gittest
$ pwd
pwd命令显示当前目录,第二步:
$ git init
通过这个命令把gittest这个目录变成Git可以管理的仓库。在gittest目录下编写一个readme.txt文件
$ git add readme.txt
$ git commit -m "wrote a readme file"
-m 后面输入的是本次提交的说明,最好加入的说明能让你知道文件改动的地方。
理解这个图很重要!!!!!
$ git add :只是把文件放到了暂存区,git commit才把文件放到了分支??
git diff #是工作区(work dict)和暂存区(stage)的比较
git diff --cached #是暂存区(stage)和分支(master)的比较
git status
查看当前仓库的状态,通过这个命令可以观察文件是否被修改过,再通过git diff查看修改的内容。
git clone
即将远程仓库的内容克隆到本地,这里要注意的是如果你想把克隆下来的内容克隆下来放到d盘,那就先
$ cd d:
先切换到这个目录下,然后再执行
git clone git@github.com:michaelliao/gitskills.git
git log
这个命令显示从最近到最远的提交日志
HEAD 指向的是当前的版本,$ git reset –hard HEAD^,把它作为一个指针,可以往回退。
关于host文件
感觉自己不是一名真正的程序员,连host文件都不知道干什么的。(羞愧~~)
host文件的位置:C:\Windows\System32\Drivers\Etc目录中。 它是个纯文本文件,用记事本可以打开:
host文件开头用#号对这个文件加以说明:
- 这个文件是根据TCP/IPforWindows的标准来工作的
- 它的作用是包含IP地址和Host name(主机名)的映射关系
- 是一个映射IP地址和Hostname(主机名)的规定,规定要求每段只能包括一个映射关系
- IP地址要放在每段的最前面,空格后再写上映射的Host name(主机名)。
- 对于这段的映射说明用“#”分割后用文字说明。
Hosts文件在Windows中是怎么工作的呢?
当我们在地址栏中输入一个域名后(www.baidu.com)时,DNS服务器会把这个域名解析成XXX.XXX.XXX.XXX的IP地址,我们的计算机才能访问,但如果每个请求都要等待DNS服务器把域名解析后返回IP信息,这样访问效率会很低,而Hosts文件就能提高解析效率。
根据WindowS系统规定,在进行DNS请求之前,Windows系统会先检查自己的Hosts文件中是否有这个地址的映射关系,如果有就调用这个IP地址映射,没有的话才向DNS服务器提出域名解析。
Hosts文件的作用:
- 加快域名解析 对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,这样当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
- 方便局域网用户 在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务要输入难记的IP地址,对不少人来说相当麻烦。现在可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候我们输入这个服务器的名字就行了
- 屏蔽网站 现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或自己计算机的IP,这样就不用访问了。 我们在Hosts写上以下内容: 127.0.0.1#屏蔽的网站 0.0.0.0#屏蔽的网站 这样计算机解析域名就解析到本机或错误的IP,达到了屏蔽的目的。
- 顺利连接系统 对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。 最后要指出的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
《大话存储》7、8两章FC协议学习总结
FC产生背景
SAN(Storage Area Network)存储区域网络:由于磁盘放到了主机外部,主机与存储设备之间需要通信,就形成了存储区域网络。这个网络专门用来给主机连接存储设备用的。
由于SCSI总线有16个节点的限制,不可能接入很多的磁盘,因此想要扩大SAN的规模,就得找到一种可寻址容量大,稳定性强、速度快、传输距离远的网络结构,由此FC网络就诞生了。
使用OSI模型对FC协议进行断层分析。
物理层
速度较高:1Gb/s,2Gb/s,4Gb/s,8Gb/s到16Gb/s
为了实现远距离传输,传输介质起码是光纤
链路层
FC协议的帧头有24节,但这24字节的帧头包含了寻址功能,还包含了传输功能保障。而以太网的开销为:
14字节(以太网帧头)+20字节(IP头)+20字节(TCP头)=54字节
所以相比之下,FC协议的24字节开销相比TCP/IP是小的
网络层
FC网络中的节点通信,遵循连、找、发三大要素。
- 连:通过FC交换机打通通路,主要的拓扑结构有FC-AL和Fabric两种。
- 找:FC协议有一套不同于以太网的编码方式,每个设备自身有一个WWNN,是网络中设备自身的名字,设备上的每个端口有个WWPN。WWPN被映射到Fabric ID(24b),类似于MAC地址和IP地址映射一样,又可以分为:Domain ID,Area ID,Port ID三个亚寻址单元。
- 发:指的就是与目标进行通信了。
传输层
与TCP作用一样:
- 对上层数据流进行Segment
- 区分上层程序。TCP是通过端口号,而FC协议是通过Exchange ID来区分
FC的优势
1、提高了扩展性(这个满足了最初扩大SAN规模的目的)。
2、增加了传输距离:使得主机可以和几百米甚至上千米外的盘阵相连并读写数据。
3、解决了安全性问题。LUN Masking和ZONE都是为了提高FC网络的安全性。
《大话存储》第十四章虚拟化的学习
虚拟化的好处: 下层复杂逻辑转变为上层的简单逻辑。
操作系统对硬件的虚拟化
- 操作系统本身就是一段程序
- 操作系统是可以提供给其他应用程序方便编写并运行的程序,由程序来运行程序,而不是程序自己来运行,则是操作系统提供虚拟化的表现。
操作系统的多任务模式:
操作系统利用中断服务程序,当时钟中断到来的时候,cpu根据中断向量表的内容,指向调度程序所在的内存地址入口,执行调度程序的代码,调度程序所做的就是将cpu的执行跳转到各个应用程序所在的内存地址入口,比方说让每个应用程序执行10ms,然后保存其状态,然后等下次轮到它的时候继续执行。因为间隔时间特别小,所以给人的错觉会认为这些程序在同时执行。
计算机存储子系统的虚拟化
存储子系统的元素包括磁盘、磁盘控制器、存储网络、磁盘阵列、卷管理层、目录虚拟层、文件系统虚拟层。
磁盘控制器
磁盘控制器的工作是根据驱动程序发来的磁盘读写信息,向磁盘发送SCSI指令和数据。它的虚拟化表现在磁盘控制器可以对其驱动程序隐藏其下挂的物理磁盘,虚拟出一个或多个虚拟磁盘。由控制器来完成虚拟磁盘和物理磁盘的映射和抽象虚拟。RAID就是典型代表。
存储网络的虚拟化
在交换式SAN上,即任何节点都是通过交换设备来进行通信的,通过在交换节点上做些手脚,就可以达到虚拟化的效果。
case1:在交换机上嵌入SCSI协议感知模块(暂时还不太懂这是个什么东东),SCSI发起设备向目标设备传输的数据,经过交换机,会主动复制对应的帧到另一个节点lun上,形成镜像。若一个节点故障,则会将数据重定向到镜像的LUN上。
case2:或者将某些节点的N个lun合并成一个池,然后动态的从这个池中再划分出虚拟LUN,向发起者报告。
磁盘阵列的虚拟化
磁盘阵列本来就是一个小计算机系统(JBOD除外),是对存储子系统的抽象虚拟化最佳表现。
何为磁盘阵列,指的是将大量磁盘进行组织管理,抽象虚拟成逻辑磁盘。通过和主机适配器通信,呈现给主机。
这个虚拟设备,面对后端存储,它充当主机,可以从后端掌管LUN,然后将这些LUN合并再按照需求灵活分割,从而呈交给前端的多台主机使用;而面对前端主机的时候,它就是存储。
《大话存储》16章数据保护与备份技术学习总结
数据保护,就是对当前位置的数据进行备份,以防止突发情况的发生造成数据的丢失带来的损失。
数据保护
文件级备份
文件级的备份是通过调用文件系统的接口将数据一文件的形式读出,然后将读出的文件存到另一个介质上,由于原来的介质上有文件系统管理数据,文件的存放可以不连续,而在新介质上很可能是连续的。
块级备份
这里的“块”,相对于磁盘来说就是扇区(Sector),块级备份不考虑文件系统的逻辑,直接通过磁盘控制器驱动接口对磁盘扇区进行读取,并将读取到的扇区写入到新的磁盘对应的扇区。 所以速度快 ,
缺点:其一、因为它不管你扇区上有没有数据,都会备份,所以就会备份很多僵尸扇区,我的理解就是无用功,浪费时间资源;其二 ,原来不连续的文件,备份之后还是不连续。
典型应用就是磁盘镜像,而磁盘镜像最简单的实现方式就是RAID1,这里一定要理解“镜”这个字,假想你站在镜子前,肯定是你做什么动作,镜子里就会出现什么动作。RAID1将对一块磁盘的写入,完全复制到另一块磁盘,两块磁盘内容完全相同。
开始更新博客
先来说下“LUN”
- LUN的概念
之前一见到这个单词就蒙圈,这是源于总想着它是啥,指的是什么。先来看下它的概念。
LUN:全称是logical unit number,即逻辑单元号。由于SCSI总线上连接设备最多有15个,用Target ID来描述这些设备,一个号对应一个设备。然而,实际中需要描述的设备是远远超过这些数字的,于是就有了lun,每个target下都可以有多个lun device,我们通常简称lun device为lun,这样就可以说每个设备的描述就有原来的target x变成target x lun y了,那么显而易见的,我们描述设备的能力增强了。(可以理解成原来只有一级分支的树形图,现在又多了二级分支)。 - LUN masking
为了保证并不是所有的磁盘资源都能够被主机所使用,就要采取管制措施,是的主机只能使用某一部分资源。 lun masking保证服务器只能访问给它分配的存储资源,没给它分配的资源,就不要想了。通过LUN映射表对特定的主机报告特定的LUN. - LUN mapping
lun mapping是一样的道理,类似于绿色通道,保证服务器只能看到某部分资源。 LUN 的 multi-path
现在,存储网络越来越发达了,一个lun有多条通路可以访问也不是新鲜事了。服务器使用多个HBA连接到存储网络,存储网络又可能是由多个交换设备组成,而存储系统又可能有多个控制器和链路,lun到服务器的存储网络链路又可能存在着多条不同的逻辑链路。那么,必然的,同一个physical lun在服务器上必然被识别为多个设备。因为os区别设备无非用的是总线,target id,lun id来,只要号码不同,就认为是不同的设备。
由于上面的情况,多路径管理软件应运而生了,比如emc的powerpath,这个软件的作用就是让操作系统知道那些操作系统识别到lun实际上是一个真正的physical lun,具体的做法,就是生成一个特别的设备文件,操作系统操作这个特殊的设备文件。而我们知道,设备文件+driver+firmware的一个作用,就是告诉操作系统该怎么使用这个设备。那么就是说,多路径管理软件从driver和设备文件着手,告诉了操作系统怎么来处理这些身份复杂的lun。
-