分类存档: 学习 - 第3页

lvm thinpool是神马

上上文书说道lvm的快照指定空间用满就会直接变成不可用,也没发现什么恢复的方法,觉得这设计不大好看啊。 今天看到了lvm的thin pool、thin volume,看看能不能解决这问题(snapshot也可以是thin volume),不过看完感觉这个貌似更奇葩。 这东西的资料甚少,gentoo.org上看到的说明是说thin volume对块设备来说就相当于稀疏文件(sparse files)对于文件系统一样。 简单说就是thin pool也是一个volume,不过这个volume是放volume的。 而thin volume就是这个放在volume中的volume。 但是thin vol …

继续阅读 »

通过xenstore探索亚马逊EC2

已知xen的各dom之间通过xenstore共享配置信息。 so,先装上xenstore-utils 加载xenfs,并挂载到/proc/xen路径下。 然后就可以读取dom配置信息了。 由于权限问题。这里只能读自己的。

lvm快照有点不一样

lvm的快照与其他普通文件镜像的快照有些不一样。 lvm的快照也是通过COW(copy on write)保存逻辑卷的瞬时状态。 但是实际上lvm的快照是创建一个新的逻辑卷。需要指定size。 快照创建之后源卷和快照卷都是可写的,源卷改变时改变前的内容会通过COW记录到快照卷,快照卷的改变内容也会记录到快照卷这size大的空间内。 需要特别注意的是,size空间一定要给足或及时扩充,不然一旦快照卷空间用尽,即Allocated to snapshot达到100%,快照卷就会立即变为不可用,若已挂载则会自动卸载。这时再去mount系统可就不认喽。

guestfish工作原理

guestfish是在宿主机里编辑虚拟机镜像的工具,guestfish命令只是对libguestfs接口的封装。 guestfish打开和操作vm镜像的过程如下: 首先libguestfs调用febootstrap取宿主机的资源准备vm环境,包括 ①在临时目录中建立到取宿主机内核的链接。 ②取基本内核模块、init、modules列表打包为启动内存盘initrd ③建立稀疏文件准备制作vm启动磁盘镜像 ④取宿主机的基本命令程序、配置文件和libguestfs的集成命令等等在vm镜像中构建rootfs 然后启动kvm,命令如下:

Erasure code

Erasure code(删除码、容删码)即forward error correction(FEC,前向纠错)是FEC的一种实现 Erasure code是与RAID完全不同的新技术,但是在面对自然灾难或技术故障时同样具有很好的恢复能力,而且Erasure code占用更少的磁盘空间,只需要数据块的一个子集就可以恢复原始数据。 Erasure code把数据分割成若干数据块,然后利用vandermonde矩阵的RS(Reed–Solomon codes)的算法原理将额外的编码信息追加到每个数据块中(膜拜数学帝   😉   ),可以判断出整个数据集中任何位置上的一定数量的错误,并且修复这些错误 …

继续阅读 »

没点真本事软考就不用去了,第一关:打印准考证

还在备战软考吗?其实软考已经开始了。 第一关就是打印准考证。 首先,登陆软考准考证打印页面 http://www.bjrbj.gov.cn/kwzkz/login/zg.htm 填好信息登陆发现还需要填写信息采集表单。 考点来了,你会发现无法提交,点提交没反映,换各种浏览器都是这个效果。 这时如果你用的是chrome,你需要按f12调出开发者工具。

KMP算法

KMP算法 在介绍KMP算法之前,先介绍一下BF算法。 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明: S:  ababcababa P:  ababa BF算法匹配的步骤如下 i=0                      i=1                   i=2                 i=3                 i=4 第一趟:ababcab …

继续阅读 »

atoll的陷阱

atoll谁都知道是字符串转long long。 但是日前发现字符串里的数字超过11位竟然就溢出了,好奇怪啊。 看到这应该就有老鸟就笑了。没有#include 《stdlib.h》嘛。 但是为什么呢? 抠嗤了好一会,发现在没有stdlib.h的时候 编译器产生的汇编代码调用atoll的时候是这样的:

getopt系列函数会重新排序argv

getopt这个东西就不多说了,讲这个有点拉低咱水平了。 直接讲重点,GNU在实现getopt等函数的时候做了个个人觉得有点画蛇添足的功能。就是在循环调用时候最后返回-1后会有可能会重新排列argv选项的顺序,他会把“不包含选项的命令行参数”挪到后面去。也就是./a.out -a ima -b host -ckeke -d haha会变成相当于./a.out -a -b host -ckeke -d ima haha的样子 所以如果选项里有一部分需要自己处理的话就没准会变得很恶心。 而optstring最前面加‘+’虽然使得argv不会被重排序,处理方式类同unix,遇到非选项的参数会停止解析 …

继续阅读 »

服务器奇怪丢包

现象为:同样的程序,分别部署在6台刀片上。有且仅有一台出现大量链接持续不断开,导致服务程序打开文件数达上限,拒绝服务。ping提示如下 经过学习研究后发现原来系统中有个IP_conntrack连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip-sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满,导致log中有如下提示 Feb 1 17:02:16 a1-02-a-bce-c-b32 kernel: printk: 366 messages suppr …

继续阅读 »