硬盘分区(硬盘的规范,跟操作系统无关):
- 一个硬盘只能有4个主分区(分区信息存放在硬盘的启动扇区里面,因为启动扇区还要存很多其他信息,用于存分区表的空间就只够存储4个主分区的信息了)
- 扩展分区:可以把某一个主分区拿出来,作为扩展分区
- 最多只能有一个
- 不能用来存数据,只能用来包含逻辑分区
- 逻辑分区:最多可以有23个(盘符:D~Z)
- Linux分区之后,会自动给每个分区起一个设备文件名,如:/dev/sda1(表示第a个sata硬盘的第1个分区,逻辑分区的第1个一定从5开始,1~4保留给主分区使用)
- 每一个分区挂载到一个文件目录(挂载点,mount point)下,比如:/dev/sda1 -> /boot ,/dev/sda2 -> /home,/dev/sda3 -> /
- 必须的分区:
- /(根分区,Linux的最高一级目录)
- swap分区(相当于虚拟内存,建议跟内存一样大小,虚拟机建议2G)
- 推荐的分区:
- /boot(启动分区,如果没有这个分区的话,启动文件会放在根分区中,比较混乱而且容易被误删除,建议分200M)
文件系统:
- win:FAT16(<=2G)、FAT32(<=16T,单文件<=4G)、NTFS
- Linux:EXT2、EXT3、EXT4(CentOS7默认的文件系统)、XFS、等
格式化:用于在磁盘中创建一个文件系统
- 创建等大小的数据块(sector:512字节;block,常见的是4k,即8个sector。为了提高效率,操作系统读取硬盘每次读取一个block,而不是sector)
- 创建文件索引表,用于存放:文件id/iNode(即索引节点,包括创建者、修改时间、权限、文件内容块的位置等信息)
注:查看某个文件的inode信息:> stat example.txt
注:查看每个硬盘分区的inode总数和已经使用的数量:> df -i
注:Linux使用inode号码来识别文件,查看某个文件的inode号码:> ls -i example.txt
注:每个文件都必须有一个inode,所以有可能发生inode已经用光而硬盘还未存满的情况
Linux的硬链接和软链接:
Linux使用inode号码来识别文件,文件名只是一个可读性的符合而已。
硬链接(hard link):
- 两个文件名指向同一个inode
- inode中有一个“链接数”标记有多少个文件名指向它
- 当删除一个文件名时,“链接数”减一,另外一个文件名还可以访问inode;减到0的时候就释放和回收inode以及相关的block区域
- 每一个目录下面的“.”和“..”就是硬链接,一个指向本目录文件的inode(目录也是一个文件),另外一个指向父目录文件的inode
- 创建硬链接的命令:ln 源文件 目标文件
软链接(soft link或symbolic link):
- 两个文件名指向不同的inode,文件A的内容是文件B的路径,访问A时系统会自动导向B
- 文件A依赖B而存在,如果删除了B,打开A时会报错“No such file or directory”
- 创建软链接的命令:ln -s 源文件或目录 目标文件或目录
inode的特殊作用:
- 对于某些包含了特殊字符而无法删除的文件,可以删除inode节点,就能起到删除文件的作用
- 移动或重命名文件,不影响inode号码
- 软件更新时,新版文件以同样的文件名生成一个inode,不会影响运行中的文件;等到下次再运行这个文件的时候,文件名就指向新版文件了,旧版文件的inode则被回收
Linux硬件和设备文件名的对应关系: