参考:
- https://www.cnblogs.com/cyx-b/p/14091603.html
- https://zhuanlan.zhihu.com/p/183238194
- https://zhuanlan.zhihu.com/p/448817053
- https://learn.microsoft.com/zh-cn/windows-server/storage/file-server/ntfs-overview
- https://linux.cn/article-7083-1.html
- https://juejin.cn/post/6844903664235069454
分区表
当使用硬盘的时候,我们并不是直接从头写入。当分区之后我们可以进行更好文件的组织管理,同时提高资源的利用率参见虚拟化的好处. 从功能上看,一个分区表承担着记录分区位置和标记可启动系统的任务.
MBR
上一代分区表格式,由硬盘的第一个扇区储存当然扇区的叫法来自于机械硬盘,不过这里只是计量单位,包含了主引导记录(MBR),数据区,分区表(最多四个)和结束标志.
MBR的系统启动依靠MBR块的程序,启动有启动标志的分区.
分区包含的信息有引导标志,分区类型,分区位置(起始和结束位置)
同时,由于大小的严格限制,MBR最大表示8G的硬盘,但是由于这个实在是太小了,通过一些办法把存储开头结尾用相对值表示之类的将最大调整到2T虽然还是很小
但是他最大仍然只支持4个分区,为了解决这个问题,使用了扩展分区的方式(用类似链表的方式),但是这也导致一个问题就是一旦一个分区寄了,剩下的分区也可能会寄.
GPT
这是目前广泛使用的分区表格式,同时他也兼容或曰留下保护区MBR.
GPT的分区开头会空一个扇区的大小,用来兼容MBR(如果你用过一些分区工具看到开头空了一点点,原因就是这个了)
在最后GPT分区表也会空几个扇区用来备份分区表(这就是为什么你最后一点点也分不干净)
GPT用EFI头来存储整个分区的大小等信息,并且存储了校验码.之后是分区表,分区表中的每个分区项由起始地址、结束地址、类型值、名字、属性标志、GUID值组成,EFI的分区表个数是可以扩展的,默认存储128个分区表.
有一些特殊功能的GUID,被linux或者win用于特殊用途.
ESP分区(EFI系统分区)存储着启动需要的.efi文件,代替主引导记录的功能.
所以从任何角度上看,GPT都是比MBR先进的.
分区
可以理解为系统使用硬盘的驱动所需要的对应格式.
(linux的文件权限存在文件系统里,win存在注册表或者其他什么东西里)
一些常见文件系统以及其特点
ext4
专为linux定制的文件系统,目前为止,ext4被认为是一个需要改进的文件系统,原则上可以支持16T的文件,支持无限的子目录和在线检查,日志记录等功能.
btrfs
被认为是先进的文件系统,提供很强的稳定性,提供大量的备份校验功能,但是性能不行
NTFS,FAT16,FAT32,exFAT
win开发出来的一系列文件系统,其中FAT16,FAT32都是以及淘汰调的文件系统,NTFS是他们的继任者,有日志功能等
exFAT是去除了日志等功能(读写更少)的NTFS,常用于,但所能存储的单文件的最大大小是大于NTFS的.一般多用于移动存储介质.
分区复制
如何实现一个分区的复制? 可以在另一个盘上分好一个相同大小的分区,然后直接按扇区把数据复制过去. 也可以分一个新区然后通过文件系统操作把文件拷贝过去. 当然也复制完了之后也可以通过修改GUID让新分区的GUID和原分区一样.