Linux磁盘管理(理论常识部分)

mac2026-08-13  4

Linux系统一切以文件的方式存储于硬盘,应用程序数据需要时刻读写硬盘,所以企业生产环境中对硬盘的操作变得尤为重要,对硬盘的维护和管理也是每个运维工程师必备工作之一。

本篇博客向读者介绍硬盘简介、硬盘数据存储方式等基础知识,为后半部分的实战操作部分打好铺垫。

一、计算机硬盘简介

硬盘内部由磁道、柱面、扇区、磁头等部件组成,如下图所示:

       注意:文件储存在硬盘上,硬盘的最小存储单位叫做Sector(扇区),每个Sector储存512字节。操作系统在读取硬盘的时候,不会逐个Sector的去读取,这样效率非常低,为了提升读取效率,操作系统会一次性连续读取多个Sector,即一次性读取多个Sector称为一个Block(块)

由多个Sector组成的Block是文件存取的最小单位。Block在Linux中常设置为4KB,即连续八个Sector组成一个Block

 

block大小设置不当引起的空间浪费,例如:

         创建一个普通文件,文件大小为10Bytes,而默认设置Block为4K,如果有1万个小文件,由于每个Block只能存放一个文件,如果文件的大小比Block大,会申请更多的Block,相反如果文件的大小比默认Block小,仍会占用一个Block,这样剩余的空间会被浪费掉。

                          1万个文件理论大小:10000x10=100000Bytes=97.65625MBytes;

                          1万个文件真实大小:10000x4096Bytes=40960000Bytes=40000MBytes=40GB。

根据企业实际需求,此时可以将Block设置为1K,从而节省更多的空间。

二、硬盘Block及其Inode详解

1、常识

(1)通常而言,操作系统对于文件数据的存放包括两个部分:文件内容、权限及文件属性。

(2) 因为每个 inode 与 block 都有编号,而每个文件都会占用一个 inode ,inode 内则有文件数据放置的 block 号码。如果能够找到文件的 inode,就可以找到该文件所放置数据的block号码,从而读取该文件内容。

(3)操作系统进行格式化分区时,操作系统自动将硬盘分成两个区域。一个是数据Block区,用于存放文件数据;另一个是Inode Table区,用于存放inode包含的元信息。

2、各部分存储差别:

1)Superblock(超级区块):记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小, 以及文件系统的格式与相关信息等;

2)Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;

3)Block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。

 

     格式化磁盘时,可以指定默认Inode和Block的大小,-b指定默认Block值,-I指定默认Inode值,如图7-2所示,命令如下:

mkfs.ext4  -b   4096   -I   256    /dev/sdb

三、硬链接和软链接详解

1、硬链接

(1)什么是硬链接?

        一般情况下,文件名和inode编号是一一对应的关系,每个inode号码对应一个文件名。但UNIX/Linux系统多个文件名也可以指向同一个inode号码。这意味着可以用不同的文件名访问同样的内容,对文件内容进行修改,会影响到所有文件名。但删除一个文件名,不影响另一个文件名的访问。这种情况就被称为硬链接(hard link)。

(2)怎么创建一个文件的硬链接?

创建硬链接的命令为:ln  jf1.txt  jf2.txt,其中jf1.txt为源文件,jf2.txt为目标文件。

(3)硬链接的特点?

      硬链接不能跨分区链接,硬链接只能对文件生效,对目录无效,也即是目录不能创建硬链接。硬链接源文件与目标文件共用一个inode值,从某种意义上来,节省inode空间不管是单独删除源文件还是删除目标文件,文件内容始终存在。同时链接后的文件不占用系统多余的空间。

2、软链接

(1)什么是软链接?

      文件jf1.txt和文件jf2.txt的inode号码虽然不一样,但是文件jf2.txt的内容是文件jf1.txt的路径。读取文件jf2.txt时,系统会自动将访问者导向文件jf1.txt,这就是软链接。

(2)怎么创建软链接?

(3)软链接的特点?

    软链接可以跨分区链接,软链接支持目录同时也支持文件的链接。软链接源文件与目标文件Inode不相同,从某种意义上来,会消耗省inode空间;

    无论打开哪一个文件,最终读取的都是文件jf1.txt,文件jf2.txt依赖于文件jf1.txt而存在,如果删除了文件jf1.txt,打开文件jf2.txt就会报错:"No such file or directory"。

 

最新回复(0)