Linux存储结构


Linux目录结构

Linux存储结构_系统识别

磁盘命名规则

/dev/sda

/dev/sdb

/dev/sdc

磁盘名是系统的识别顺序决定的,在系统启动过程中,内核会按照扫描到硬盘的顺序分配盘符;

udev设备管理器服务决定了设备在/dev目录中的名称;

系统识别磁盘的顺序一般和主板上的磁盘插槽顺序一致;这仅仅是一种巧合.

磁盘插槽顺序只是影响了系统识别顺序。

但不代表系统识别磁盘的顺序就是按照磁盘插槽顺序进行的.

查看系统中的磁盘列表

lsblk

Linux存储结构_文件系统_02

磁盘扇区

每个磁盘由N个扇区组成;
每个扇区占用512字节
第一个扇区非常重要,保存了主引导记录(MBR)及分区表信息.
MBR占用了446个字节,(其实还有两个字节作为扇区的结束符);剩余64个字节;
每写入一个分区的信息,需要占用16个字节;只能保存4个分区的信息.
也就是说,一个磁盘只能有4个主分区;
四个以上的分区需要用逻辑分区.

MBR分区表和GPT分区表

Linux存储结构_文件系统_03

主分区

只有把分区信息写入在第一个扇区上面的才把它叫做主分区.

如果将分区信息直接写入第一个扇区的话,它就是主分区,MBR格式分区表,最多4个主分区;

GPT分区表最多128个主分区。

扩展分区

如果我们需要4个以上分区,那就要取出一个原先用于保存分区信息的16个字节,作为一个指针,指向到一个新的扇区上面,又有了一个新的512字节的空间,512/16后,又有了64个用于保存分区信息的空间.

  • 只有把分区信息写入在第一个扇区上面的才把它叫做主分区.

原有用来保存16字节分区信息的那个空间,用来作为指针了,这个指针叫做“扩展分区”;

指针不能存储分区信息,它只是一个指针而已;作用是指向一个空的空间;

一个扩展分区就有一个指针.

逻辑分区

在指针指向的空的512字节的空间(新的扇区)中创建的分区,叫做逻辑分区

分区建议

3主分区+1扩展分区

分区编号

主分区的编号是1到4

扩展分区的编号1到4

逻辑分区的编号是5—(5以后)

文件存储结构

所有的文件都由两部分构成:
inode和block之间的关系就像是一本书一样,inode是一本书的目录,一本书会有很多内容,一个知识点或者一个故事会占很多页,一个block就相当于书中的一页内容。

  • inode(索引节点)

保存文件的属性信息和指针
inode大小一般是128字节或256字节,一个文件不足128字节或245字节,也会占用一个inode;
inode和block的大小是可以手动去指定的,并且在不同的操作系统和文件系统下inode和block的大小是不一样的。

  • 文件名称
  • 文件属主的User ID
  • 文件属组的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳
  • ctime创建时间
  • mtime内容上一次修改时间
  • atime 文件最后一次被访问时间
  • 文件大小
  • 链接数,即有多少文件名指向这个inode
  • 指针–指向block,即文件数据block的位置
  • 可以用stat命令,查看某个文件的inode信息

  • block(块)

系统读硬盘时,一次性连续读取多个扇区(一扇区512字节,约0.5kb),即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中

  • block才是文件的实际数据(内容)

测试题

  • /dev/sdc4 是主板上第三个磁盘插槽的设备吗?

答: 不一定

  • /dev/sdc4 这块硬盘上有4个分区?

答: 不一定,分区编号4可能是扩展分区,扩展分区下可能还有逻辑分区

  • /dev/sdc4 是个主分区吗?

答: 不一定,分区编号4还可能是扩展分区

  • /dev/sdc8 是个逻辑分区吗?

答: 是的

  • 哪个服务决定了设备在/dev目录中的名称?

**答:**udev设备管理器服务。

文件系统

文件系统包含VFS和具体文件系统

Linux存储结构_文件系统_04

VFS

虚拟文件系统,动态将用户产生的数据格式双向转换为对应的文件系统格式,让用户不用再关心底层的文件系.

Linux存储结构_存储_05