1、元数据
什么是元数据?
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
元数据管理方式
元数据管理有两种方式。集中式管理和分布式管理。集中式管理是指在系统中有一个节点专门司职元数据管理,所有元数据都存储在该节点的存储设备上。所有客户端对文件的请求前,都要先对该元数据管理器请求元数据。分布式管理是指将元数据存放在系统的任意节点并且能动态的迁移。对元数据管理的职责也分布到各个不同的节点上。大多数集群文件系统都采用集中式的元数据管理。因为集中式管理实现简单,一致性维护容易,在一定的操作频繁度内可以提供较满意的性能。缺点是单一失效点问题,若该服务器失效,整个系统将无法正常工作。而且,当对元数据的操作过于频繁时,集中的元数据管理成为整个系统的性能瓶颈。
分布式元数据管理的好处是解决了集中式管理的单一失效点问题, 而且性能不会随着操作频繁而出现瓶颈。其缺点是,实现复杂,一致性维护复杂,对性能有一定影响。
1.1、inode
索引节点
理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么,我们还必须找到一个地方储存文件的元数据,比如文件的创建者、文件的创建日期、文件的大小等信息。这种储存文件元数据的区域就叫做inode,中文译名为"索引节点"。
1.2、inode的内容
inode包含文件的元数据,具体来说有以下内容:
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime指inode上一次变动的时间;mtime指文件内容上一次变动的时间;atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置
#查看文件的inode里面存储的元数据
stat FILE
#列出文件的inode号码
ls -i /etc
注意:
除了文件名以外的所有文件信息,都存在inode之中。那文件名存哪儿了呢?目录中
目录,也是一种文件,也有相应的块存储其数据,目录块里记录着,这个目录下的文件和子目录的名称及其对应的inode号码,然后,通过对应文件的inode号码,找到文件的数据块。
根目录下的信息存在哪个块,内核知道
1.3、inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
#查看ext*文件系统中inode节点的大小
dumpe2fs -h /dev/sda1 | grep "Inode size"
#查看xfs文件系统的inode大小
xfs_info /dev/sda1
注意:
由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件
2、硬连接
所谓硬链接,是指向同一个inode的多个不同路径。也就是说,可以用多个不同的文件名来访问同一个文件内容,一个文件内容被修改,会影响到所有文件。但是,如果删除了一个文件名,不会影响到其它文件名,因为inode号码只有在对应的最后一个文件名被删除后,才会被删除。
注意
硬链接,不能对目录进行。
硬链接不能跨分区进行
#为/root/file1作一个硬链接,到/tmp/file2
ln /root/file1 /tmp/file2
3、软连接
两个文件的inode号码不一样,但软连接文件的inode中,存储的是被连接文件的路径
比如:file1、file2两个文件,file2是file1的一个软连接,其实file2的内容只是file1的路径,当访问file2的时候,系统会自动将访问导向到file2,因些,你打开的file2文件内容和file1是一样的,但当你删除了file1,file2这个文件也就没用了
注意:
软链接,可以对目录进行
软链接,可以跨分区
#-s,表示软链接
ln -s /root/file1 /tmp/file2