文件系统:


操作系统是如何识别磁盘和分区的:

MBR: Master Boot Record, 主引导记录,存放磁盘的信息,包括分区信息,操作系统引导程序,标志符号。一个扇区大小

MBR一共512个字节,下面是这些字节的分配:

512bytes: 

bootloader: 446bytes:

 引导加载器程序,加载操作系统的程序,用来启动操作系统的,例如在开机时可以选择启动哪个操作系统,就是这段的信息

fat: (磁盘分区)文件系统分配表,64bytes, 16bytes引导一个分区, 因此只有四个主分区,引导作用,也就是为了找到,不是规定大小

MBR有效性标记:5A ,其余剩下的两个字节

MBR是不属于任何分区的,机器首先启动的是这个

4:主分区,可扩展

3主,1扩展分区:引用额外的分区表:

   每个主分区就是一个分配表,指向该分区所属的位置等信息

   主分区是对应每个区的分配表,因为磁盘越来越大,因此16个字节的分配表不够用,因此需要将提出扩展分区,扩展分区是用来引用额外分区表的,也就是说扩展分区指向了一个更大的分配表,该分配表在指向其定义的分区,也就是逻辑分区。

逻辑分区

主分区在分区表方面受限定就是因为引导分区的空间太小


硬盘设备都存在该目录下:/dev/



硬盘接口:

IDE(ATA)控制器: 并口,每个控制器可接两个硬盘,master/slave一主一从,133MB/s

/dev/hd[a-z]    在centos6中 hd就换为sd了,hda代表第一块硬盘(主盘),hdb代表第二块硬盘(从盘)

每一个磁盘上面有很多分区,每一个分区在系统看来都是一个独立的设备,被独立设置访问的

/dev/hda

/dev/hda[1-4] 表示的是hda这块硬盘的的主分区,1-4代表区

/dev/hda[5+]  5以后的代表逻辑分区 

SCSI设备: Small Computer System Interface  非常非常快

320MB/S

SATA(Serial): 300Mbps, 600Mbps, 6Gbps

SAS:6Gbps   出来很多接口,每个接一个硬盘


USB:


/dev/sd[a-z]   sd是系统识别硬盘接口的标志,centos6以后都统一为sd,可再区分,后面字母是指明哪个硬盘

[1-4]

[5+]

内核通过/dev下的设备文件访问磁盘


/proc下的文件是当前操作系统内核中状态数据和配置信息,/proc是一个伪文件系统,由内核输出出来,方便用户的程序查看的当前系统有多少分区信息的接口

    proc下的partitions文件内容是当前的文件系统的硬盘分区信息,是内核识别的

[root@zhenzhen proc]# cat /proc/partitions

major minor  #blocks  name


  8        0    8388608 sda

  8        1     512000 sda1

  8        2    7875584 sda2

253        0    7036928 dm-0

253        1     835584 dm-1


完!


根是记录在内核中的,文件是存在磁盘上的,内核启动后拿这个根作为外界访问的入口,将磁盘挂载到该内核中,用户就可以通过该入口访问磁盘上的数据了


文件系统属于内核,内核来定义根。MBR的bootloader根据元数据区的信息找到操作系统启动,内核启动后,在内核中创建根,作为外界访问的入口。


磁盘格式化时,会将磁盘划分为元数据区和数据区,只要能在元数据区中查找,就可以所有数据的位置,这也就是bootloader找操作系统存放位置的方法。


文件系统的根是在内核上,是文件系统的入口,目录是在磁盘上,例如bin。。

内核启动所需的执行文件一定要放在根分区上,因为内核启动时,只会先挂载根分区到内核上,例如/bin,/sbin,/lib,/etc

其他分区的文件需要通过主分区再挂载到根上


/bin, /sbin 

/usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

/lib, /lib64, /usr/lib, /usr/lib64

/etc/

/media, /mnt

/dev

/proc, /sys

/home, /root

/var

/opt, /misc

/srv

/tmp

/boot

/usr



fdisk, sfdisk, parted


[root@zhenzhen proc]# fdisk -l /dev/sda


Disk /dev/sda: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000eb87f


  Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          64      512000   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              64        1045     7875584   8e  Linux LVM

    *表示内有引导文件,如内核

    start和end指的是cylinders的大小,从开始到结束的位置


VFS:虚拟文件系统,使得linux可以支持多种文件系统,而对更高一层可以统一命令

文件系统:

基本文件系统:Ext2, Ext3, Ext4, Reiserfs(对小文件处理很好), xfs(对单一大文件支持非常好), JFS, vfat, NTFS

交换分区:swap

集群文件系统:GFS2, OCFS2

网络文件系统:NFS, smbfs(CIFS)

光盘:iso9660


raw: 


fdisk /dev/sda

d: 删除分区

n: 新建分区

p: 列出磁盘上的信息,当前磁盘上的分区

t: 调整分区ID,文件系统类型

l: 列出内核支持的分区ID,也就是内核支持的文件系统

w: 保存退出

q: 不保存退出


以下两个指令是在对磁盘进行分区后,感觉使用fdisk对/dev/sda操作,就是对磁盘设备文件的操作,制定下来分区,然后使用下面指令,使得内核识别出分区。

起始的磁盘可能使用不全,只是制定下的分区可以使用,分区使得磁盘其他剩余空间可以进行使用。

CentOS 5: partprobe 

CentOS 6: partx, kpartx

在6中要反复使用下面三个指令才可以完成操作,比较shit

kpartx -l /dev/sda

kpartx -af /dev/sda

partx -a /dev/sda