磁盘数据的组成:

  1.数据(数据块 data block)。

  2.元数据(matadata)。


主引导记录(mbr):

mbr(512字节)=

1.主引导程序(bootloader 446字节)。

2.硬盘分区表(DPT Disk Partition Table 64字节。每16字节标识一个分区。)。

3.磁盘有效标志(magic number(魔数) 2字节,固定为55AA)。


引导扇区(boot sector)有2级,1个是硬盘的,1个是分区的。、


元数据(matadata):

bitmap(位图):有block bitmap和inode bitmap。状态信息都存放在位图中。

inode(index node索引节点):全局唯一号码,对应的条目用来引用一个文件。


目录也是个文件,要占用磁盘块。但并不是容器。目录的磁盘块中包含inode号码和相对应的名称关系。



块组(block group)组成:

1.super block

2.block group description

块组描述表。存放的是当前分支上每个块组的块名,起始结束编号。

3.block bitmaps

4.inode bitmaps

5.inode table

6.data blocks

但是实际存放的时候是分开存放的。1-5在元数据区,6在数据区。


超级块(super block 全局描述信息):

保存全局文件信息,如硬盘已用空间,数据块可用空间,inode信息等等。

不是每个块组中都存在超级块。查看超级块使用dumpe2fs -h查看。


inode结构组成:

1.mode 权限 rw ro等等。

2.owner info 属主,属组等信息

3.size 大小

4.timestamps 时间戳 ctime(建立或改变时间),atime(最后读取时间),mtime(最后修改时间)。

5.direct blocks 直接块,指向数据块位置。

6.indirect blocks 间接块 当文件过大时候直接块存储不下的时候,分段指向数据块位置。

7.double indirect 双间接块 同间接块作用。

8.thriple indirect 三重间接块 同间接块作用。


inode内不记录文件名或目录名,文件名或目录名记录在文件所在目录对应的block里。



链接文件:

硬链接:指向同一个inode的不同路径。

1.只能对文件创建,不能应用于目录。目录默认硬链接数为2,除自己以外当前目录下还有.的存在。

2.不能跨文件系统,可以在不同目录下。

3.创建硬链接会增加文件被链接的次数。



软链接(符号链接):其中一个路径指向inode的内容不是文件,而是一个路径。权限为777。访问文件的权限和链接的权限无关。

1.可应用于目录。

2.可以跨文件系统。

3.不会增加被链接的次数。

4.其大小为指定路径所包含的字符个数。

#ln [OPTION] SOURCE DESTINATION  默认建立硬链接。


[OPTION]

-s 建立软链接。

-v 显示过程。


例如:

#ln /etc/passwd /etc/abc

#ln -s /etc/passwd /etc/abc


设备文件:

存放在/dev下。

主设备号(major number):标识设备类型。

次设备号(minor number):标识同一种类型中不同设备。


块设备:按块为设备,随机访问的设备。

常见的块设备:

硬盘。


字符设备:按字符为单位,线性设备。

常见的字符设备:

键盘。


#mknod [OPTION] NAME TYPE [MAJOR MINOR] 创建字符或块设备。

[OPTION]

-m MODE 指定权限。

TYPE

c 字符设备

b 块设备

p 管道文件。


例如:

#mknod mydev  66 0

#mknod -m 640 mydev2 c 66 1



硬盘设备的设备文件名:

IDE,ATA:hdxxx

STAT:sdxxx

SCSI:sdxxx

USB:sdxxx


同一种类型下的设备用a,b,c等等来区别不用的设备。

每个设备的主分区用1-4标识,逻辑分区从5开始。


fdisk:

#fdisk -l DEVICE  显示DEVICE分区信息,后边什么也不加默认显示所有磁盘的分区信息。


#fdisk DEVICE  进入设备

m  相当于help,显示所有可用的命令。 

p  显示当前设备的所有分区。 

a  设定硬盘启动分区,标记为活动的(boot)。 

n  创建一个新分区。 

e  指定分区为扩展分区(extend)。 

p  指定分区为主分区(primary)。 

l  显示分区类型

t  修改分区格式类型。

L

d  删除分区。 

q  结束不保存。 

w  结束保存并写入硬盘。 


#partporbe DEVICE 将DEVICE的信息写入至内核,不然fdisk完成的信息不回自动写入内核,只能等系统下次重启的时候才能生效。


linux支持的文件系统:

通过VFS(Virtual FIle System)来作为内核的功能来被用户和软件调用。沙漏模型。

每一个分区都是一个独立的文件系统。

FAT32(vfat)

NTFS

ISO9660

CIFS

ext2/3/4

xfs

reiserfs

jfs

nfs

...


rootfs:

根文件系统 / 根是自引用的,根所在的文件系统就是rootfs。


#mkfs [OPTION] DEVICE

[OPTION]

-t FSTYPE


#mke2fs [OPTION] DEVICE 

-j 启动日志。即创建ext3格式。ext2格式无日志的。


-L LABEL_NAME 指定卷标。


-b BOOCK_SIZE  指定BLOCK块大小,常用的大小是1024 2048 4096。默认为4096


-m NUM 设定磁盘为超级用户保留磁盘空间的百分比,默认是5% 。


-i NUM 指定NUM个字节对应一个inode。默认为8192字节。比例不能小于磁盘快大小,自定义一般是2的n次方。


-N SUM 直接指定inode的个数为SUM个。


-F 强制创建文件系统。


-E 用户指定额外文件系统属性。


#df [OPTION] 显示整个磁盘分区的使用情况。

默认显示所有显示文件系统的最大可用空间及使用情况。


[OPTION]

-P 强制不换行。

-h 单位换算,用M G等表示容量。

-i 显示inode使用比例。


#du [OPTION] DIR|FILE

查看文件或者是文件系统占用的空间情况。


[OPTION]

-s 显示摘要汇总,显示目录和目录下的文件一共的大小。

-h 单位换算。


例如:

#du -s /etc


#blkid [OPTION] DEVICE 

显示DEVICE的文件系统的相关属性,例如NTFS,swap。ext3等等,不加参数显示所有已挂载的文件系统的类型TYPE和UUID(通用唯一识别码)。


[OPTION]

-s LABEL 显示卷标名称。

-S UUID 显示UUID值。


#e2label DEVICE [LABEL_NAME] 

不加LABEL_NAME默认显示DEVICE的卷标名称。可以更改DEVICE的卷标名称为LABEL_NAME 


#tune2fs [OPTION] DEVICE 无损调整文件系统的相关属性。

[OPTION]

-l 显示超级块中的信息(全局信息)。


-L LABEL_NAME 修改卷标。


-j 创建日志。


-m NUM 调整保留百分比。


-r SUM 指定预留块数。


-c SUM 调整最大挂载次数,次数达到后进行自检。0或者-1表示关闭此功能。


-C NUM 指定挂载次数。


-i TIME(Day,Month,Year) 调整最大时间,到时间后进行自检。默认180天自检一次。0或-1表示关闭此功能。


-o 设定文件系统默认挂载选项。


#dumpe2fs [OPTION] DEVICE

显示更详细的超级块信息和块组详细信息。

[OPTION]

-h 显示超级块信息。不显示块组信息。


#fsck [OPTION] DEVICE

检查并修复文件系统。

切记,千万不要对已经挂载的文件系统进行检查,否则可能会破坏结构。

[OPTION]

-t FSTYPE 

-A 根据/etc/fstab检查文件系统的完整性。

-a 自动修复文件系统。

-y 修复时直接回复y。

-f 及时文件系统显示干净,也进行检检查。


#e2fsck [OPTION] DEVICE 专用来修复ext2/ext3文件系统。

[OTPION]

-f 强制检查。

-p 自动修复。