磁盘数据的组成:
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 自动修复。