1.硬盘最开头有个特殊分区,主引导分区MBR,512字节。
2.分区第一部分为boot sector,第二部分为super block,第三部分为inode,第四部分为block。
3.第四部分分为很多block,每个block为4k,是真正存储文件的地方,在划分区的时候可以指定block的大小。在Windows中称为簇。
若一个文件的大小为1k,并未占用一个block的大小,剩余的3k也是无法使用的。若一个文件占用的block比较多,则增加了系统的寻道时间。
4.如果有文件存于block,则会在第三部分inode有相关的记录。比如所有者,所属组,修改时间,创建时间,放在了哪个block中。
inode也含有编号,每个inode占128字节。相当于block的目录/索。每记录一个块消耗4字节,最多能指向32个块。
5.super block记录的是inode和super block的信息
6.第四部分的block如果过大,会分为block group。
每个block group 含super group、文件系统描述信息(这个block group 是从第几个block到第几个block)、块位图、inode位图、inode表、block。
7.块位图,记录哪些块已使用哪些未使用,当添加一个新的文件的时候应放入哪个block中。
8.inode位图记录哪些inode已使用哪些未使用。
9.inode划分12个直接区,间接区域,二间接区域,三间接区域
直接区域指向的block直接存储数据;
间接区域指向的block并不存储数据,它指向的block指向的block才存储数据,即最多可标记4k/4B=1024个block信息,即1024*4K=4096k为4M大的文件。
二间接区域指向的block并不存储数据,它指向的block指向的block再指向的block才存储数据,
10.ls -i 文件名,查看记录该文件的inode编号
11.filefrag -v 文件名,查看该文件的block编号
12.dumpe2fs /dev/sda3 ,查看sd3这个分区的super block的一些信息
dumpe2fs /dev/sda1 | more ,查看journal inode和journal 大小
13.ls -id 目录名,查看目录指向的block编号,该block存储的是该目录下文件的inode信息
------------------------------------------------------------------------------
14.当存储文件时,先在inode中查找未使用的把文件属性信息存储进去,再去block位图中查找哪个block还未被使用,然后把数据写入。
然后inode位图和block位图更新,然后super block更新。
若在更新过程中断电,在以前:重启后系统会把磁盘所以的数据重新读取一遍。
现在 :当给已存储但未分配位图的位置时,在inode中写入文件属性信息,再把这个操作写入日志文件。block位图同。再开机的话系统会查看日志
15.ext3相对于ext2文件系统多了日志功能。centos5默认文件系统为ext3。
16.VFS虚拟文件系统:ext3 ext2 vfat ,VFS的作用就是文件系统对程序是透明的,程序不需要考虑要运行在哪个文件系统了。
17.df ,查看已挂载的文件系统大小
df -h,显示单位
df -hT ,显示文件系统类型
18.du 文件夹名,显示其中内容 和 整个文件夹的大小
du -s 文件夹名,仅显示整个文件夹的大小
du -sh 文件夹名,仅显示整个文件夹的大小,显示单位
19.ln -s 原文件名 软连接文件名,创建文件软连接
20.硬连接是Linux和Unix中专有的。 同一个文件 有几个名字 链接到它。硬链接/inode 不可以 跨分区。
ln 文件1 文件2,给文件1创建一个硬链接为 文件2
复制为 两个文件名 划分在两个不同的block中; 硬链接为 两个文件名 被划分到 同一个block中,即修改其中一个的内容另一个也会改变。
21.diff 文件1 文件2,查看两个文件内容是否有不同
22.fdisk -l ,显示系统硬盘和 所有的分区
fdisk -l 硬盘号,比如 /dev/sda
fdisk 硬盘名,给硬盘分区 而不是给分区 分区,比如/dev/sda
一个硬盘 最多4个主分区,主分区和扩展分区 相加<=4,可以在扩展分区上划分逻辑分区
23.MBR 前的446字节是引导程序 ,后64字节是分区表,最后两字节是结束符。
中间的64字节 每标记一个主分区消耗16字节
24.划分 分区时 是以柱面的形式划分的,分区的最小组成单位为柱面,一个柱面为8M
25.每一个系统类型都对应一个id,扩展分区 中的逻辑分区的编号 是从5开始的,如sda5。
26.partprobe ,更新全部分区表
partprobe /dev/sda,更新分区表
27.逻辑分区 必须格式化后才能使用。挂载才能使用
mkfs -t 文件系统类型ext3 /dev/sda5,格式化分区,默认的block size为1k。
mkfs -t ext3 -b 4096 /dev/sda5,指明每个block size 大小为4096k。
mkfs.ext3 -b 4096 /dev/sda5,同上一条。
mkfs.vfat /dev/sda5
28.mount 分区/dev/sda5 文件夹/mnt,挂载逻辑分区,临时挂载 重启后不挂载
写入/etc/fstab 才一直挂载
fstab 中:
设备名 挂载点 文件系统 defaults默认权限 0(是否使用dump做备份,0是不做备份,1是每天都要做备份) 0(是否使用fsck进行自检,0是不检查,1是检查)
mount ,显示当前已经挂载了哪些目录
mount -o remount,ro /mnt ,以只读的形式 重新 挂载
mount -o remount,rw /mnt ,以可读可写的形式 重新 挂载
mount -o remount,noexec /mnt ,以无可执行权限的形式 重新 挂载
mount -o loop xx.iso /mnt,挂载镜像文件
fstab 中:
/root/xx.iso /opt iso9660 defaults,loop 0 0
mount LABEL=yy /mnt ,把卷标为yy的分区挂载到mnt中
umount 外部设备/挂载点 ,解挂载
29.fsck ,对整个磁盘/分区 进行自检
fsck -f ,对整个磁盘/分区 进行强制自检
fsck -f -C,显示自检的过程,显示进度条。
30.badblocks /dev/sda5 ,用来检查硬盘上的坏道
badblocks -sv /dev/sda5 ,显示检测的报告和进度
31. ./ls 执行当前路径下的ls
32.fuser -mv 文件名,查看哪个进程正在使用 该文件
33.tune2fs -l ,查看磁盘参数
tune2fs -h ,查看选项参数
tune2fs -L xx /dev/sda5,更改卷标,将sda5的卷标改为xx
tune2fs -c 100,更改最大挂载次数为100
tune2fs -C 101 /dev/sda5,更改当前挂载次数为101
tune2fs -j /dev/sda5,添加日志(由ext2文件系统变为ext3文件系统)
tune2fs -m 50 /dev/sda5,保留块数为 50%,默认的预保留块数 为5%
34. Windows中的 本地磁盘 叫做 卷标;cdef 叫做盘符。
35.当分区挂载次数和 最大挂载次数一致时,系统在重启时会强制自检该分区。(remount也增加挂载次数)
36.e2label /dev/sda5 ,查看卷标
e2label 设备名/dev/sda5 卷标名,设置/更改设备卷标
37.Linux中的交换分区 同 Windows中的虚拟内存
cat /proc/swaps 查看当前系统的交换分区
38.创建交换分区:创建分区,更改文件系统为swap(代码为82),partprobe更新分区,mkswap 格式化为交换分区,swapon激活分区。(重启会失效)
关闭交换分区:swapoff
写入 /etc/fstab 开机会挂载
设备名 swap swap defaults 0 0
39.dd if=/dev/zero of=file bs=1M count=100
使用bs定义zero的大小,count定义zero的数量,用100个1M的zero组成一个文件file,如果没有写M的话单位是字节。
可以把file占用的这100M空间当作交换分区
mkswap file
swapon file
写入 /etc/fstab 开机会挂载
/root/file swap swap defaults 0 0