文件系统:
操作系统是如何识别磁盘和分区的:
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文件内容是当前的文件系统的硬盘分区信息,是内核识别的
[[email protected] 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
[[email protected] 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