w1100n
This site is best viewed in Google Chrome
wiloon, 3/29/2018 17:00

https://blog.csdn.net/wanglei_storage/article/details/51107648 libvirt、virsh、virt-manager 介绍 kvm 虚拟化中 libvirt 是目前使用最为广泛的对 kvm 虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(virsh、virt-install、virt-manager等)和云计算框架平台都在底层使用libvirt的应用程序接口。 virsh 是用于管理 虚拟化环境中的客户机和 Hypervisor 的命令行工具,与 virt-manager 等工具类似,它也是通过 libvirt API 来实现虚拟化的管理。virsh 是完全在命令行文本模式下运行的用户态工具,它是系统管理员通过脚本程序实现虚拟化自动部署和管理的理想工具之一。 virt-manager 是虚拟机管理器(Virtual Machine Manager) 这个应用程序的缩写,也是管理工具的软件包名称。virt-manager 是用于管理虚拟机的图形化的桌面用户接口。

wiloon, 3/29/2018 16:57

https://www.cnblogs.com/wangle1001986/p/5320752.html https://www.zhihu.com/question/54447067 openstack是云管理平台,其本身并不提供虚拟化功能,真正的虚拟化能力是由底层的hypervisor(如KVM、Qemu、Xen等)提供。所谓管理平台,就是为了方便使用而已。打一个不恰当的比方,订单管理平台之类的产品,其实就是整合了一系列的sql调用而已。类似的,如果没有openstack,一样可以通过virsh、virt-manager来实现创建虚拟机的操作,只不过敲命令行的方式需要一定的学习成本,对于普通用户不是很友好。 作者:Zongrong Zheng 链接:https://www.zhihu.com/question/54447067/answer/292892408 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 OpenStack与KVM的区别与联系 转:https://www.aliyun.com/zixun/content/2_6_280418.html OpenStack与KVM都是目前IT界比较热门的两个词汇。它们都是开源的,都与Linux有着千丝万缕的关系。但这两者还是有很大的差别呢。 OpenStack:开源管理项目 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个软件,而是由几个主要的组件组合起来完成一些具体的工作。OpenStack由以下五个相对独立的组件构成: lOpenStack Compute(Nova)是一套控制器,用于虚拟机计算或使用群组启动虚拟机实例; lOpenStack镜像服务(Glance)是一套虚拟机镜像查找及检索系统,实现虚拟机镜像管理; lOpenStack对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制,以对象为单位的存储系统,类似于Amazon S3; lOpenStack Keystone,用于用户身份服务与资源管理以及 lOpenStack Horizon,基于Django的仪表板接口,是个图形化管理前端。 这个起初由美国国家航空航天局和Rackspace在2010年末合作研发的开源项目,旨在打造易于部署、功能丰富且易于扩展的云计算平台。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性,企图成为数据中心的操作系统,即云操作系统。 KVM:开放虚拟化技术 KVM(Kernel-based Virtual Machine)是一个开源的系统虚拟化模块,它需要硬件支持,如Intel VT技术或者AMD V技术,是基于硬件的完全虚拟化,完全内置于Linux。 2008年,红帽收购Qumranet获得了KVM技术,并将其作为虚拟化战略的一部分大力推广,在2011年发布RHEL6时支持KVM作为唯一的hypervisor。KVM主打的就是高性能、扩展性、高安全,以及低成本。 与Linux的缘分 一个被某些热心支持者成为云时代的Linux,是公有云与私有云的开源操作系统。一个则是Linux内核的一部分,将Linux转换成一个Type-1 hypervisor,无需任何变更就能享受现有的Linux内核进程调度、内存管理和设备支持。 OpenStack炙手可热,它如同Linux一样,旨在构建一个内核,所有的软件厂商都围绕着它进行工作。OpenStack的许多子项目,对云计算平台中的各种资源(如计算能力、存储、网络)提供敏捷管理。此外,OpenStack也提供对虚拟化技术的支持。 KVM集成在Linux的各个主要发行版本中,使用Linux自身的调度器进行管理。KVM专注于成为最好的虚拟机监控器,是使用Linux企业的不二选择,加上它还支持Windows平台,所以也是异构环境的最佳选择。 OpenStack与KVM都发展迅猛 OpenStack是一个拥有众多支持者的大项目。时至今日,已经有超过180家企业和400多位开发人员对这一项目积极地做着贡献,而其生态系统甚至更为庞大,已经超过了5600人和850家机构。在今年9月,OpenStack基会正式成立。白金会员有红帽、IBM与惠普等,黄金会员包括思科、戴尔与英特尔等。 OpenStack基本上是一个软件项目,有近55万行代码。分解成核心项目、孵化项目,以及支持项目和相关项目。除了以上提及的五大组成,与虚拟网络有关的Quantum首次被列为核心项目。 KVM是一个脱颖而出的开放虚拟化技术。它是由一个大型的、活跃的开放社区共同开发的,红帽、IBM、SUSE等都是其成员。2011年,IBM、红帽、英特尔与惠普等建立开放虚拟化联盟(OVA),帮助构建KVM生态系统,提升KVM采用率。如今,OVA已经拥有超过250名成员公司,其中,IBM有60多位程序员专门工作于KVM开源社区。 OpenStack与KVM的解决方案 … Continue reading

wiloon, 3/27/2018 17:30

手机的正确英文缩写是Cel.、MB、MOB、MP、Mobile或其它?查了下牛津英汉词典解释 更正如下:telephone 多指电话(系统)mobile phone和cellphone都有手机;移动电话的意思mobile phone 是英国英语正式用语 不正式常用mobilecellphone是美国英语用法 也可称为 cellular phone 或 cell个人认为尽量不要使用缩写 显得正式 使用Mobile (phone) 或 Cell(phone) 如果实在要用就mob吧此外 手机还可以用handphone表示 作者:野梦 链接:https://www.zhihu.com/question/31445948/answer/91042011 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

wiloon, 3/27/2018 10:59

https://blog.csdn.net/painsonline/article/details/7183613 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。 当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系) 在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。(见下图) 请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。 这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。 这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。 到这里,RBAC权限模型的扩展模型的完整设计图如下: 随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如:某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。

wiloon, 3/26/2018 21:48

https://hqidi.com/36.html

wiloon, 3/25/2018 12:55

https://my.oschina.net/costaxu/blog/127394 在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。 其实在网络编程过程中,各种RST错误其实是比较难排查和找到原因的。下面我列出几种会出现RST的情况。 1 端口未打开 服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误。这个和操作系统的实现有关。在某些情况下,操作系统也会完全不理会这些发到未打开端口请求。 比如在下面这种情况下,主机241向主机114发送一个SYN请求,表示想要连接主机114的40000端口,但是主机114上根本没有打开40000这个端口,于是就向主机241发送了一个RST。这种情况很常见。特别是服务器程序core dump之后重启之前连续出现RST的情况会经常发生。 当然在某些操作系统的主机上,未必是这样的表现。比如向一台WINDOWS7的主机发送一个连接不存在的端口的请求,这台主机就不会回应。 2 请求超时 曾经遇到过这样一个情况:一个客户端连接服务器,connect返回-1并且error=EINPROGRESS。 直接telnet发现网络连接没有问题。ping没有出现丢包。用抓包工具查看,客户端是在收到服务器发出的SYN之后就莫名其妙的发送了RST。 比如像下面这样: 有89、27两台主机。主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接。但是主机27却很不友好,莫名其妙的发送了一个RST表示我不想连接你了。 后来经过排查发现,在主机89上的程序在建立了socket之后,用setsockopt的SO_RCVTIMEO选项设置了recv的超时时间为100ms。而我们看上面的抓包结果表示,从主机89发出SYN到接收SYN的时间多达110ms。(从15:01:27.799961到15:01:27.961886, 小数点之后的单位是微秒)。因此主机89上的程序认为接收超时,所以发送了RST拒绝进一步发送数据。 3 提前关闭 关于TCP,我想我们在教科书里都读到过一句话,’TCP是一种可靠的连接’。 而这可靠有这样一种含义,那就是操作系统接收到的来自TCP连接中的每一个字节,我都会让应用程序接收到。如果应用程序不接收怎么办?你猜对了,RST。 看两段程序: //server.c int main(int argc, char** argv) { int listen_fd, real_fd; struct sockaddr_in listen_addr, client_addr; socklen_t len = sizeof(struct … Continue reading

wiloon, 3/25/2018 10:09

-c 字符数 指定显示的列宽 -s“ 分隔符 “ 使用-t选项时,指定分隔符(允许指定多个分隔符) -t 判断输入行的列数来创建一个表。分隔符是使用在-s中指定的字符。如果没有指定分隔符,默认是空格 -x 更改排列顺序(左→右)。默认的顺序为(上→下) df -h |column -t Filesystem Size Used Avail Use% Mounted on /dev/vda1 7.9G 3.3G 4.3G 44% / /dev/vdb1 50G 1.9G 45G 4% /data https://blog.csdn.net/bbs11111111/article/details/5975188 http://ask.apelearn.com/question/9933 http://blog.csdn.net/robertsong2004/article/details/38796985

wiloon, 3/25/2018 9:20

https://segmentfault.com/a/1190000000638244 iproute基本介绍 iproute是用于linux下网络配置工具,该工具包包含以下组件 rpm -ql iproute | grep bin /sbin/cbq #流量控制 /sbin/ifcfg #网络地址配置管理 /sbin/ip #网络配置命令 /sbin/rtmon #rtmon listens on netlink socket and monitors routing table changes. /sbin/tc #进行流量控制的命令 /usr/sbin/arpd #收集arp信息保存到本地cache daemon /usr/sbin/lnstat #网络统计信息 /usr/sbin/nstat #显示网络统计信息 /usr/sbin/rtacct #查看数据包流量状态 【nstat and rtacct … Continue reading

wiloon, 3/24/2018 21:35

http://blog.51cto.com/daixuan/1743047 KVM虚拟磁盘扩容 原创13503685592016-02-18 15:43:56评论(0)2360人阅读 KVM虚拟磁盘扩容 1、磁盘扩容分为raw和qcow2两种扩容方式,命令相同,区别是后缀名 [root@daixuan ~]# qemu-img info /data/daixuan1.qcow2 //本身只有9G image: /data/daixuan1.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 10G cluster_size: 65536 [root@daixuan ~]# qemu-img resize /data/daixuan1.qcow2 +5G //加5G Image resized. [root@daixuan ~]# qemu-img info … Continue reading

wiloon, 3/24/2018 10:00

https://wiki.openwrt.org/zh-cn/doc/techref/opkg

wiloon, 3/23/2018 17:57

https://www.jianshu.com/p/ce7c6f5cb5f6 https://www.jianshu.com/p/ed43572052ae

wiloon, 3/23/2018 15:46

failed to allocate 1024 byte(s) of direct memory (used: xxx, max: xxx) https://netty.io/news/2016/06/07/4-0-37-Final.html https://github.com/netty/netty/pull/5314 System.setProperty(“io.netty.maxDirectMemory”, “0”); // Here is how the system property is used: // // * < 0 – Don’t use cleaner, and inherit max direct memory from … Continue reading

wiloon, 3/23/2018 0:08

在ubuntu上安装如下软件包: gcc, g++, binutils, bzip2, flex, python, perl, make,find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc 头文件 sudo apt-get updatesudo apt-get install gcc g++ build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj … Continue reading

wiloon, 3/22/2018 9:26

minflt/s #每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数 majflt/s #每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生 VSZ Virtual Size: The virtual memory usage of entire task in kilobytes. RSS Resident Set Size: The non-swapped physical memory used by the task in kilobytes. pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 执行pidstat,将输出系统启动后所有活动进程的cpu统计信息: … Continue reading

wiloon, 3/21/2018 16:17

https://caorong.github.io/2017/01/16/head-first-netty-3/ https://segmentfault.com/a/1190000007560884 根据 Wiki 对 Zero-copy 的定义: “Zero-copy” describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth … Continue reading

wiloon, 3/21/2018 10:48

https://www.zhihu.com/question/60892134/answer/182225677 https://zhuanlan.zhihu.com/p/27625923 http://www.importnew.com/19191.html 而本文要说的一个重点就是HeapByteBuffer与DirectByteBuffer,以及如何合理使用DirectByteBuffer。 1、HeapByteBuffer与DirectByteBuffer,在原理上,前者可以看出分配的buffer是在heap区域的,其实真正flush到远程的时候会先拷贝得到直接内存,再做下一步操作(考虑细节还会到OS级别的内核区直接内存),其实发送静态文件最快速的方法是通过OS级别的send_file,只会经过OS一个内核拷贝,而不会来回拷贝;在NIO的框架下,很多框架会采用DirectByteBuffer来操作,这样分配的内存不再是在java heap上,而是在C heap上,经过性能测试,可以得到非常快速的网络交互,在大量的网络交互下,一般速度会比HeapByteBuffer要快速好几倍。 最基本的情况下 分配HeapByteBuffer的方法是: 1 ByteBuffer.allocate(int capacity);参数大小为字节的数量 分配DirectByteBuffer的方法是: 1 ByteBuffer.allocateDirect(int capacity);//可以看到分配内存是通过unsafe.allocateMemory()来实现的,这个unsafe默认情况下java代码是没有能力可以调用到的,不过你可以通过反射的手段得到实例进而做操作,当然你需要保证的是程序的稳定性,既然叫unsafe的,就是告诉你这不是安全的,其实并不是不安全,而是交给程序员来操作,它可能会因为程序员的能力而导致不安全,而并非它本身不安全。 http://blog.csdn.net/u011262847/article/details/76861974 HeapByteBuffer 堆上的ByteBuffer对象,是调用ByteBuffer.allocate(n)所分配出来的,底层是通过new出来的新对象,所以一定在堆上分配的存储空间,属于jvm所能够控制的范围。 public static ByteBuffer allocate(int capacity) { if (capacity < 0) throw new IllegalArgumentException(); return new HeapByteBuffer(capacity, capacity); } DirectByteBuffer 对于这种Bytebuffer的创建,我们可以看一下底层源码: public … Continue reading

wiloon, 3/18/2018 19:23

https://www.jianshu.com/p/5c8678cef499 神器Termux的使用日常 写在前面: 现代桌面操作系统都自带终端程序,其强大的功能性和图形化的易用性相辅相成,使得系统操作更加高效。特别是Linux系列衍生系统的终端,得益于系统自带的丰富的功能指令,熟悉之后更是如鱼得水。随着手持智能设备的普及和性能的不断提升,如今的手持终端,如手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,甚至有过之而无不及,如果能在这些设备上使用Linux下类似的终端程序无疑是对运维作业的一大补充。 Android作为现代智能设备操作系统,在市场占有率上有压倒性的优势,况其与Linux系统有着不言自明的亲缘关系,在Android上使用终端也算是返璞归真了。另外,低门槛、低成本、受众广的实践特性也是本文选择Android的主要原因。 Termux 终端 Android是一个单用户图形化系统,功能主要以应用的形式呈现给用户,因此在系统上我们无法直接获取终端,更是无法直接调用系统自带的丰富指令。使用ADB是一个曲线救国的方法,打开USB调试后开发者可以在桌面系统的终端中触发Android系统自带指令,使用方法大概如下: adb shell env # 查看Android的环境变量 这种方法需要一台电脑的配合,为了实现全天候、无差别的终端体验,你首先需要一个终端模拟器来保证随时随地地使用终端。Android平台我们推荐Termux终端模拟器。 Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically … Continue reading

PXE
wiloon, 3/18/2018 15:37

http://blog.csdn.net/nirendao/article/details/76012939 PXE启动原理以及与普通Linux启动的对比 原创 2017年07月24日 11:28:36 标签:PXE /boot /Linux 1011 关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。 一、PXE启动原理: 原理图如下: DHCP的用途是:提供client network参数和TFTP服务器的地址,最初的bootstrap程序(即DHCP或BootP等)和所需的程序。 首先,PXE client端(BIOS里面的PXE固件)广播一个DHCPDISCOVER的包,它询问所需的网络配置以及网络启动的参数。标准DHCP服务器(非PXE enabled)将回复一个普通的DHCPOFFER包,其中包含网络信息(如IP地址),但并不能提供PXE相关参数,因此PXE Client并不能启动。而PXE enabled的DHCP服务器所回复的DHCPOFFER包里则包含PXE相关信息。 在解析一个PXE enabled的DHCP服务器返回的DHCPOFFER包后,PXE client就能够设置自己的IP地址、IP Mask等等,并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。 然后PXE client就通过TFTP下载这些启动资源到自己的内存中;如果是UEFI Secure Boot(而不是Legacy的BIOS)则还会检验一下这些启动资源。下载完成后就会用这些资源来启动了。 这些启动资源其实就是最小的操作系统(比如WindowsPE,又比如一个basic Linux kernel+initrd)。这个最小操作系统在装载了网络驱动和TCP/IP协议栈之后,就会开始boot或者install完整的操作系统了。而这个boot或install的过程,就不再通过TFTP来做,而是通过更加健壮的网络传输协议(如HTTP、CIFS、iSCSI或NFS)来做。而boot或者install所用到的实体,比如磁盘或者CD-ROM,是位于远端的,因此需要通过网络传输协议来做。 二、PXE启动过程和普通的Linux系统启动过程的对比: 内核引导之前的不同: 普通的从硬盘启动Linux系统最初是BIOS将MBR加载入内存,然后将控制权交给MBR中的bootloader程序(如GRUB),bootloader程序经过几个stage的加载后,最后将vmlinuz加载入内存,开始内核引导; 而PXE的启动过程在内核引导之前,是由BIOS中的PXE固件开启NBP程序(比如DHCP的网络通信),然后下载vmlinuz和initrd,之后再进入内核启动过程。 内核引导之后的不同: vmlinuz和initrd运行得差不多了之后,普通的硬盘Linux启动就从本地硬盘加载/sbin/init并运行为1号进程,以及启动系统服务等等,而PXE的启动在内核引导完成之后,仍然会通过网络的方式(但不是TFTP协议,而是其他更加健壮的协议如NFS、iSCSI等),加载真正的完整操作系统,如/sbin/init应该就是位于网络远端的硬盘上。 以iSCSI为例,网络远端的硬盘以iSCSI协议挂载到了当前机器,就好像是本地磁盘一样。这就是PXE+iSCSI的启动方式了。 参考文献: 1. https://en.wikipedia.org/wiki/Preboot_Execution_Environment … Continue reading

wiloon, 3/16/2018 13:57

https://www.jianshu.com/p/626acb9549b1 cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 Go 实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。(如果使用过 Java 中的 Quartz,对 cron 表达式应该比较了解,而且它和这里我们将要讨论的 Go 版 cron 很像,也都精确到秒) cron(计划任务),顾名思义,按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。 字段名 是否必须 允许的值 允许的特定字符 … Continue reading

next page
辽ICP备14012896