GNU/LINUX
刘爱贵
中科院博士,TaoCloud首席科学家,专注软件定义存储,聚焦智能存储、分布式全闪存、信创存储方向。GlusterFS技术专家,长期从事存储领域研发工作,分布式存储资深理论研究与实践者。
展开
-
LINUX Daemon程序设计
liuben liuben 2 49 2006-11-02T07:02:00Z 2006-11-02T07:02:00Z 5 550 3138 cc-ihep 26 6 3853 9.2812 7.8 磅 0 2原创 2008-03-21 23:56:00 · 8847 阅读 · 3 评论 -
动态分配二维数组
C/C++程序中经常需要使用malloc / new 来生成数组。对于一维数组,这非常简单,而二维数组,动态分配要稍微复杂一点。这里给出动态分配二维数组的两种方法。 #include #include #define X 100#define Y 100// 方法一:数组空间不连续,两次调用mallocint ** alloc_2d_array_1(int ro原创 2009-05-09 15:54:00 · 2671 阅读 · 8 评论 -
Linux系统dameon程序的core dump设置
To enable dumps for every daemon: ulimit -c unlimited >/dev/null 2>&1 (-c maximum size of core files)ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1 Dump for system: DAEMON_CO转载 2009-10-28 16:59:00 · 2248 阅读 · 0 评论 -
ZFS十大最佳功能
Source:http://tech.sina.com.cn/b/2009-11-30/09223635032.shtml Sun在2005年推出了开源文件系统ZFS,最初Sun是为OpenSolaris设计的,随着时间的发展,用户逐渐发现其一些良好的功能,下面列举的ZFS十大功能,是ZFS支持者通过这些年应用体会出来的。 以下是ZFS支持者认为ZFS具备的十大最佳功能特性:转载 2009-11-30 09:43:00 · 3820 阅读 · 0 评论 -
匿名无须交互输入用户名和密码的samba配置方法(security = user)
NAS(Network Attached Storage),网络附加存储需要支持NFS(Network File System)和CIFS(Common Internet File Sysem)一种或两种文件共享访问协议。NAS的配置方法相对都比较简单,这方面的资料很多,后面附录了NFS和CIFS的配置参数介绍。这里主要解决一个在配置CIFS的遇到的问题。 CIFS需求:Securit原创 2009-12-25 21:44:00 · 43359 阅读 · 1 评论 -
WSIO - 基于WEB服务的远程文件I/O
WSIO - 基于WEB服务的远程文件I/O团队名称:IHEPer作者:刘爱贵 电子邮箱:liuag@ihep.ac.cn 单位:中科院高能物理研究所 计算中心 PDF下载:http://download.csdn.net/source/2143070摘要WSIO是一个基于Web Service技术实现的、与POSIX标准兼容的文件I/O,实现了存储系统的远程原创 2010-03-19 11:48:00 · 16048 阅读 · 14 评论 -
基于Dedup的数据打包技术
基于Dedup的数据打包技术作者简介 :刘爱贵,研究方向为网络存储、数据挖掘和分布式计算;毕业于中科院,目前从事存储软件研发工作。 Email: Aigui.Liu@gmail.com注: 作者学识和经验水平有限,如有错误或不当之处,敬请批评指正。 0、引言 Tar, winrar, winzip是最为常见的数据打包工具软件,它们把文件集体封装成一个单独的数据包,从而原创 2010-01-09 20:39:00 · 12090 阅读 · 17 评论 -
Linux文件系统性能优化
由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。因此,如果应用对I/O性能要求较高,除了采用性能更高的硬件(如磁盘、HBA卡、CPU、MEM等)外,我们还可以通过对文件系统进行性能调优,来获得更高的I/O性能提升。总的来说,主要可以从三个方面来做工作:1、Disk相关参数调优原创 2010-04-13 17:49:00 · 12184 阅读 · 0 评论 -
Linux文件系统选择
通过综合使用多种标准文件系统Benchmarks对Ext3, Ext4, Reiserfs, XFS, JFS, Reiser4的性能测试对比,对不同应用选择合适的文件系统给出以下方案,供大家参考。文件系统性能测试数据见附表。1、大量小文件(LOSF, Lost of small files)I/O应用(如小图片)Reiserfs(首选), Ext4文件系统适合这类负载特征,IO调度算原创 2010-04-23 16:36:00 · 15440 阅读 · 3 评论 -
inotify文件系统事件驱动机制
Windows系统一直有比较完善的文件系统变化通知机制,并为用户提供了FindFirstChangeNotification 等API来方便监控文件系统事件。Linux kernel从2.6.13版本起引入了inotify文件系统事件通知机制,以改善用户体验,使得用户空间可以非常方便地对文件系统变化事件进行监控。 Inotify 是一个 Linux 内核特性,它监控文件系统事件,并且及时发出相关的事件通知。原创 2010-07-22 10:08:00 · 3253 阅读 · 0 评论 -
SourceForge上发布dedup util
dedup util是一款开源的轻量级文件打包工具,它基于块级的重复数据删除技术,可以有效缩减数据容量,节省用户存储空间。目前已经在Sourceforge上创建项目,并且源码正在不断更新中。https://sourceforge.net/projects/deduputil原创 2010-06-02 12:20:00 · 11809 阅读 · 10 评论 -
文件系统性能测试
简要介绍文件系统性能的衡量指标、性能关键点,给出常用测试基准benchmark和一些非标准的benchmark。原创 2010-07-30 16:38:00 · 8984 阅读 · 8 评论 -
数据相似性检测算法
本文研究了数据相似性的计算方法,对Bloom filter和LCS两种常用相似性检测算法进行剖析、实现和分析比较。原创 2010-09-08 10:57:00 · 9564 阅读 · 17 评论 -
网络数据同步开发库libsync
"数据同步算法研究"一文提出了一种改进的数据同步算法,我在实现的原型系统基础上,将文件切分、差异编码、文件同步等关键算法抽取出来封装成动态开发库libsync,方便自己的开发应用。在本人开发的deduputil,WSIO, wsync等软件中,均使用了libsync动态函数库,现已将libsync发布至google code。原创 2010-10-18 23:30:00 · 7778 阅读 · 12 评论 -
Lustre I/O性能特点与最佳实践
Lustre是面向集群的存储架构,它是基于Linux平台的开源集群(并行)文件系统,提供与POSIX兼容的文件系统接口。Lustre两个最大特征是高扩展性和高性能,能够支持数万客户端系统、PB级存储容量、数百GB的聚合I/O吞吐量。Lustre是Scale-Out存储架构,借助强大的横向扩展能力,通过增加服务器即可方便扩展系统总存储容量和性能。Lustre的集群和并行架构,非常适合众多客户端并发进行大文件读写的场合,但目前对于小文件应用非常不适用,尤其是海量小文件应用LOSF(Lots Of Small F原创 2011-05-30 22:36:00 · 31228 阅读 · 41 评论 -
pNFS实验环境部署
什么是pNFS?pNFS是并行网络文件系统,即NFSv4.1,与NFSv3不同的是,它将元数据与数据进行分离,允许客户端直接与数据服务器进行交互。这种机制解决了传统NFS的性能瓶颈问题,从而使得系统获得高性能和高扩展性的特性。pNFS支持多种协议(Block[FC], Object[OSD], Files[NFS])直接访问数据,需要对客户端功能进行扩展以支持不同的layout(LAYOUT4_F原创 2011-06-19 17:13:00 · 24174 阅读 · 28 评论 -
分布式文件系统测试方法与测试工具
非结构化数据、大数据、云存储已经毫无争议地成为了信息技术发展趋势和热点,分布式文件系统作为核心基础被推到了浪潮之巅,广泛被工业界和学术界热推。现代分布式文件系统普遍具有高性能、高扩展、高可用、高效能、易使用、易管理等特点,架构设计的复杂性使得系统测试也非常复杂。从商业产品ISILON, IBRIX, SONAS, Filestore, NetApp GX, Panasas, StorNext, B原创 2012-02-07 21:55:34 · 23016 阅读 · 41 评论 -
关于Gluster稳定性的一个BUG
这一段时间一直在研究Gluster集群文件系统,其技术架构和大原理请参考前面的一篇文章“Gluster集群文件系统研究”。为了验证其所声称的高扩展、高可用、高性能的特点,我部署了一个较大规模的测试环境,4个I/O节点(即brick servers,DELL R原创 2011-07-06 15:41:55 · 9949 阅读 · 20 评论 -
C语言中函数参数的入栈顺序
对技术执着的人,比如说我,往往对一些问题,不仅想做到“知其然”,还想做到“知其所以然”。C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然。某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答。为什么是从右至左呢?我终究没有给出合理的解释。于是,只好做了个作业,于是有了这篇小博文。#include void foo(int x, int y, int z原创 2009-05-02 15:50:00 · 6798 阅读 · 12 评论 -
GNU C中x++是原子操作吗?
什么是原子操作? 所谓原子操作,就是"不可中断的一个或一系列操作" 。在确认一个操作是原子的情况下,多线程环境里面,我们可以避免仅仅为保护这个操作在外围加上性能开销昂贵的锁,甚至借助于原子操作,我们可以实现互斥锁。 那么,GNU C中x++是原子操作吗?请看下面一段代码:#include #include static int x;void inc(){ x++;原创 2009-05-01 11:20:00 · 4460 阅读 · 3 评论 -
Linux下的C/C++开发与调试工具
Linux开发环境相当完善,且功能完整,它主要由GNU的编译器和库,以及大量的系统例程及库组成,能够支持C++、C和汇编语言程序,重点是针对C++和C语言。因为Linux的源代码主要是用C语言实现的,开发人员可以方便地获取并进行修改和重新编译,因此为Linux操作系统提供了一个强大的C语言开发环境至关重要。Linux开发环境包括GNU编译工具集、调试工具和相关的实用工具。 1.GNU编译工具原创 2008-12-20 11:47:00 · 4275 阅读 · 0 评论 -
集群并行文件系统Lustre部署
liuben Normal liuben 2 180 2006-10-11T09:07:00Z 2006-10-11T09:07:00Z 4 1320 3566 cc-ihep 142 104 9245 9.2812 7.8 磅 0 2原创 2008-03-21 23:57:00 · 6666 阅读 · 0 评论 -
开发人员行走Unix的随身四艺
开发人员行走Unix的随身四艺 作者:江南白衣,原文出处: h转载 2008-03-28 14:58:00 · 2318 阅读 · 0 评论 -
Client免输密码登录SSH Server的一种方法
我们经常要在自己工作的UNIX/LINUX系统间SSH登录,SCP传输数据,总是要输入密码,很烦是吧?SSH支持多种登录验证方式,默认使用的是键盘交互方式(Keyboard-Interactive),也就是手工输入密码的那种。而在实际应用中,有时需要免输密码直接登录SSH SERVER,如MPI作业需要在WNs间使用SCP传输数据(非交互方式)。这就需要使用公钥(Public Key)验证方式,并原创 2008-03-28 15:03:00 · 2296 阅读 · 0 评论 -
KISS-UNIX/LINUX哲学思想
摘录自"UNIX程序设计的艺术"一书KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原则”无处不在。大部分隐式的UNIX哲学不是这些前辈所说的,而是他们所做的和UNIX自身建立的例子原创 2008-03-30 21:55:00 · 3440 阅读 · 1 评论 -
用GNU/LINUX工作 - 常用软件
.Shell : bash, csh, ksh.文本编辑器 : vim, emacs, OpenOffice.程序开发 : gcc, make, ld, perl, tcl/tk/wish, j2sdk, php, Gtk/Qt ....论文、幻灯片 : LaTeX, ConTeXt.绘图 : MetaPost, xfig, dia.图像处理 : ImageMagick, Gimp.图像浏览 :原创 2008-03-30 22:03:00 · 2482 阅读 · 0 评论 -
Linux下C程序命令行参数处理
Linux下开发C程序,甚至是GUI程序,都可能需要处理复杂的命令行参数。健全、可靠的复杂命令行参数处理机制,可使程序方便使用,也更显专业。Linux下几乎所有的命令都提供了参数处理机制,包括短选项和长选项。 POSIX标准中对程序名、参数作了如下相关约定: * 程序名不宜少于2个字符且不多于9个字符; * 程序名应只包含小写字母和阿拉伯数字; * 选项名应该是单原创 2008-04-05 11:34:00 · 9706 阅读 · 2 评论 -
Linux文件系统链接
Linux文件系统链接有两种:硬链接和符号链接,可以使用ln命令建立,默认情况下产生硬链接。ln命令具体使用可以参考man手册。 硬连接直接指向文件的i节点(Index node)。Linux中,任何一个文件可以有多个目录项指向其i节点。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的原创 2008-04-03 13:15:00 · 1875 阅读 · 0 评论 -
C存储类型和类型限定符
C存储类型和类型限定符(刘爱贵 - Aiguille.LIU) C存储类分为两类:自动存储类(automatic)和静态存储类(static)。声明对象时使用的存储类说明符以及声明的上下文共同决定了对象的存储类。 自动存储类对象对于一个程序块来说是局部的,在退出程序块时该对象将消失。 (1) 如果没有使用存储类说明符,或者如果使用了auto限定符,则程序块中的声明生成的都是自动存原创 2008-04-11 20:22:00 · 4911 阅读 · 1 评论 -
C程序中的存储分配
C程序中的存储分配(刘爱贵 - Aiguille.LIU) C程序设计中,经常需要使用malloc/free动态管理内存,在需要的时候向操作系统申请空间,适合的时候释放不再使用的空间。那么,C库中malloc/free是如何实现的呢?参考"The C Programming Language",我们设计了自己的存储分配程序。 由于程序中某些地方可能不通过malloc调用申请空间,因此,ma原创 2008-04-12 17:55:00 · 3161 阅读 · 4 评论 -
C语言复杂声明的解析
C语言复杂声明的解析(刘爱贵 Aiguille.LIU) C语言是一种通用的程序设计语言,它与UNIX系统之间具有非常密切的联系,C语言是在UNIX系统上开发的,并且,无论是UNIX系统本身还是运行其上的大部分程序,都是用C语言编写编写的。C语言很适合用来编写编译器和操作系统以及各种系统底层软件,因此被称为“系统编程语言”,但它同样适合于编写不同领域中的大多数程序。 C语言中,指针的使用非常广原创 2008-04-10 18:13:00 · 3667 阅读 · 3 评论 -
API函数库的构造与编程应用
API函数库的构造与编程应用(刘爱贵 - Aiguille.LIU) 函数库是一组执行特定功能操作的函数集合,可以独立提供给第三方进行程序开发,通常又称为API(Application Programming Interface),即应用程序编程接口。Linux下,函数库一般有两种形式:静态函数库和动态函数库。应用函数库进行编程时,如果使用静态函数库,则需要将其链接进应用程序中;而使用动态共原创 2008-04-27 18:02:00 · 2109 阅读 · 2 评论 -
函数的线程安全与可重入
函数的线程安全与可重入刘爱贵 / Aiguille.LIU线程安全的(Thread-Safe):如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。线程安全函数解决多个线程调用函数时访问共享资源的冲突问题。可重入(Reentrant):函数可以由多于一个线程并发使用,而不必担心数据错误。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入性解决函数运行结果的原创 2008-05-05 14:41:00 · 2993 阅读 · 0 评论 -
hacker & copyleft
自由软件运动的开山鼻祖Richard Stallman认为:1、所有人都对编程着迷,并且在生活的其他方面,我们也愿意展示自己的才华。我们称自己叫“hacker”。2、自由软件使用对称版权copyleft,赋予了用户四个方面的自由度: 0. 运行软件的自由。 1. 学习源代码,修改源代码的自由。 2. 再次分发程序的自由。 3. 分发经自己修改的版本的自由。 发现自己对编程很着迷,也原创 2008-06-01 15:33:00 · 1364 阅读 · 0 评论 -
GNU C中的零长度数组
随手翻阅"linux内核设计与实现"一书,看到一个关于进程的结构体:struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; unsigned long flags; __u32 status; __u32 cp原创 2009-01-01 21:36:00 · 8420 阅读 · 11 评论 -
磁盘碎片
磁盘碎片,更确切地应该称为文件系统碎片。按照引文(1)的linux官方资料,可分为外部碎片(external fragmentation)和内部碎片(internal fragmentation)。 内部碎片是怎么产生的呢? 我们知道,文件系统以簇(cluster)作为基本存储单位来组织数据的。假设簇大小为4KB,一个大小不足1KB的文件也至少要分配一个簇,即4KB的空间,这就浪费了大约3原创 2009-01-11 13:34:00 · 2837 阅读 · 3 评论 -
一种程序界面文字换肤方法
一种程序界面文字换肤方法Aiguille.LIU2008-11-23 对于GUI程序,界面上会呈现许多图片和文字信息。图片一般都是运行时从外部载入的,更换比较容易。然而,文字信息大多情况下都是直接写在程序代码中的。这种情况下,如果想更换文字,就需要重新编译程序,非常不方便。这里介绍一种程序界面文字换肤方法,可以无须重新编译程序而实现方便的文字换肤功能,可用于OEM或多语言情形。1、字典库 所有原创 2008-11-23 20:12:00 · 1581 阅读 · 0 评论 -
存储原创文章精选
一直坚持撰写存储相关的原创博文,蓦然发现已经小有规模,然而总体显得有点杂乱。回顾了一下这些文章,选择了如下这些花了点心思认真思考并能够经得起推敲的文章,组成一个所谓的存储博文精选专辑,后续会不断进行补充。这样,一来是为了自我勉励,二来是为有需要的朋友查阅方便。[36] FASS分布式全闪存储技术白皮书[35] 开源对象存储MinIO技术白皮书[34] MaxIO智能缓存加速技术...原创 2012-02-10 23:27:27 · 19109 阅读 · 14 评论