分类 "技术及概念" 的存档.

含泪喷血更正自己的大小端概念

话说曾经自己的认知是正确的。
也就是大小端和字节序是一个概念,各平台实现不一样但通过网路传输数据时要统一转换成大端。
但是!但是!
在上家公司,在写C代码与同事java用自己的协议通信时数据异常,我说是大小端不对,要调换一下4个字节的顺序。
然后被领导指出,这不是大小端问题,是网络字节序和本地字节序的问题,他给讲解的意思大小端大概齐是那么个我听起来好像是汇编中寄存器的高地址和低地址的那种样子。 :?:
由于领导是十几年的老开发,我就这么相信他了,从此改变了自己对大小端的认识。
直到前两天这让我栽了个大跟头。 :sad:
唉。都是眼泪啊,为毛大牛总讲要勇于质疑,不怀疑不能见真理。子也曰:疑是思之始,学之端。
血与泪的教训啊,突然感觉这个世界真是没有什么是永远值得相信的了。 :cry:

文件系统的overlay概念

一个overlay分为上下两层,就跟手机贴膜差不多,不管表面被用成什么样,换层膜就恢复如初。
比如:
微软的EWF,重启还原。
openwrt的overlayfs或mini_fo,底层用压缩的、只读的squashfs文件系统,上面用可写的jffs2,用于恢复路由器的出厂设置。
qcow2文件带有backing_file属性的增量镜像等等等。
但是linux的liveCD镜像或WinPE却不是overlay,它们只是把需要写的目录挂成ramfs或tmpfs之类的内存盘而已。
阅读更多…

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 volume的size要比thin pool的size大,这个是虚的不是实际从vg里分的size。
而thin pool是实际从vg里分得的空间。
也就是像稀疏文件似的,thin volume实际占用的空间没有他的size那么大(如果文件系统支持discard,则删除文件后空间可以释放,不会像qcow2镜像似的只扩不缩)。
但是奇葩的地方就在于 阅读更多…

Erasure code

Erasure code(删除码、容删码)即forward error correction(FEC,前向纠错)是FEC的一种实现

Erasure code是与RAID完全不同的新技术,但是在面对自然灾难或技术故障时同样具有很好的恢复能力,而且Erasure code占用更少的磁盘空间,只需要数据块的一个子集就可以恢复原始数据。

Erasure code把数据分割成若干数据块,然后利用vandermonde矩阵的RS(Reed–Solomon codes)的算法原理将额外的编码信息追加到每个数据块中(膜拜数学帝   ;-)   ),可以判断出整个数据集中任何位置上的一定数量的错误,并且修复这些错误,也就是前面说的从一些数据块的子集就可以复原完整的数据集。(这里错误地把不同实现方法揉到一起了,详见后面更正)

而数据块中附加的额外信息的多少,即code rate编码率决定着这个子集的所需的数据块量,附加的额外信息越多则恢复整个数据集需要的数据块越少。

Erasure code常见于单项通讯连接,如网络多播、广播等重传代价很大或不可能重传的场景,和大数据存储设备,用以实现恢复被破坏的数据。

总的来说跟我们常用的winrar软件打包时候的恢复记录选项很像。应该是相似的技术。应该是RSCode像才对。

—————-更正—————–
阅读更多…