一个磁盘由多个盘片组成,每个盘片的上下两面都有磁头,一个盘面分为多个扇区, 每个扇区大小512字节。
机械臂在转动时对于磁盘的内圈和外圈转动的角速度是一样的,由于外圈的半径大,因此相同时间转过的区域大,因此磁盘外圈读写速度比内圈快,
一个新的磁盘在存储数据时是从外圈向内圈进行使用的,这也就可以解释为什么新买的笔记本随着使用事件的增长感觉越来越卡的原因
1. block
block由多个扇区组成,目的是为了提高磁盘的读写速度,因为这样可以一次读写多个扇区。
在windows系统中类似linux中block的块成为簇,NTFS文件系统默认的簇大小一般是4KB, 如宇哥空的txt文件大小为0字节,
一个只有一个字符的txt文件大小却是4KB大小,原因就是簇导致的。
block是linux下文件存取的最小单位,block常见大小: 1KB,即连个扇区组成一个block,4KB =8扇区,同一个磁盘的不同分区的block可以不同。
查看系统指定分区的block大小:
tune2fs -l /dev/sdb1 | grep size --color
对于文件比较大的分区可将block设置的大一些,比如存放大量电影的分区。
空目录文件大小为分区所在block的大小,空文件大小为0,但是空文件即使写入1个字符文件大小也会变为所在分区block的大小。
分区block大小的设置需要在格式化分区时指定:
mkfs.ext4 -b 2048 /dev/sdb1
2. inode
linux文件系统由三部分组成:文件名、inode、block
inode :存储文件的元数据信息,比如文件的创建者、文件的创建日期、文件的大小等,inode中文名称为索引节点。
删除文件实际删除的是文件的文件名,文件的inode信息,文件的内容等并未删除,因此使用rm删除的信息时可以恢复的,具体方法前面博客已经做出了
详细说明,在此不再赘述。
inode具体包含的信息包括:
文件的字节数
文件拥有者的UID
文件的group ID
文件的读、写、执行权限
文件的而时间戳信息:ctime、mtime、atime, ctime值文件上次变动的时间,如文件属性的改动,atime是指上次打开文件的时间,阅读时间,mtime是指文件内容上次改动的时间。
链接数: 即指向文件inode的文件数
查看文件inode的时间信息:
stat a.txt
inode也会消耗磁盘空间,因此磁盘格式化时操作系统会自动将磁盘分成两个区域,一个数据区,存放数据,一个inode区,存放inode的所有信息,
因为有inode信息的存在因此即使刚刚添加的磁盘其大小也是小于磁盘给定大小 。
查看磁盘分区inode使用情况:
df -i
查看文件inode号:
ll -i a.txt
查看目录inode号:
ls -di /tmp
3. 链接
链接分为:软连接和硬链接。
1) 硬链接
硬链接的链接连接文件和源文件共用一个inode,因此新建硬链接不会消耗额外的的inode,另外硬链接不会占用磁盘空间,连接文件和源文件指向相同的block
因此删除连接文件或者源文件对数据无影响,除非最后一个文件被删除。不可以给目录建硬链接,不可以跨分区见硬连接。
为/root/a.txt新建一个硬链接
ln /root/a.txt /root/b.txt
2)软连接
相当于windows的快捷方式,可以跨分区建立,源文件被删除后数据丢失,连接文件则不可用,源文件与连接文件inode不同,连接文件占据空间。
新建/root/a.txt的软连接:
ln -s /root/a.txt /root/b.txt
3)扩展1
新建文件inode值为1,新建目录为2,以为在新建的文件里面包含目录本身'.', 即那个点, 此点实际为目录的一个硬链接,连接到目录本身,因此inode值为2。
4)扩展2
系统无法进行数据的写入,检查发现系统中仍然有剩余空间,此时可能是分区的inode耗尽,此时删除分区上备份文件即可。
4. ext3与ext4文件系统比较
1)ext4向下兼容ext3
2)ext4支持更大的文件系统和更大的文件,ext3最大支持16TB的文件系统,支持最大的文件为2TB,ext4支持1EB的文件系统,即1024*1024TB,支持最大文件为16TB。
3)ext4支持无限的子目录。ext3最大支持32000个子目录。
4)日志系统总是有开销的,ext4可以进入无日志模式,即在某些特殊情况下可以关闭日志,提高性能。