扇区是最小的屋里存储单位,每个扇区大小为512bit,将扇区组成一个圆就是磁柱,这是分区的最小单位
B:块设备,数据是随机存取,如硬盘
C: 字符设备,数据线性存取,如键盘,显示器
linux常见硬盘接口设备
ATA(IDE):并行,133M/s 并行造成干扰导致速率不高
SATA:串行,300M/s,600M/s
SCSI: 并行,转速高,数据读取块,内置控制器,极大解脱了CPU的I/O时间
窄带:连接七块硬盘;
宽带:连接15块硬盘
SAS: 串行SCSI,
USB:
/dev/hd[a-d][1-63]:IDE设备,最多支持63个分区
/dev/sd[a-d][1-15]:SATA,SCSI,SAS,USB,最多支持15个分区
三块硬盘/dev/sda:sata,/dev/sdb:usb,/dev/sdc:scsi,主机重启之后,设备文件都是动态创建的,根据设备被识别的次序,可能会造成设备识别混乱,例如usb被识别为了/dev/sda, 内核通过udev来识别硬盘设备,我们可以在udev中来定义设备,以避免这种情况发生.
BLOCK
我们知道硬盘只有被格式化后才能被存储数据,格式化磁盘实际上是把磁盘分成了固定大小的block块,比如
1K,2K,4K,数据的存储实际上是存储在这些block块中间的,每个block只能存储一个文件, block的划分
要根据实际的需要来,比如你系统上面的小文件多,最好把block划分的小一点,假如你的文件很多都是不超过1K的
你划分的block是4K的, 一个block只能用来存放一个文件,剩余的空间就会被浪费掉,造成了磁盘空间的浪费.
根据block的大小,文件系统中单一文件的容量以及总的文件系统的容量实际上也被固定了
1K:最大单一文件-16G 文件系统总大小-2T
2K:最大单一文件-256G 文件系统总大小-8T
4K:最大单一文件-2T 文件系统总大小-16T
注:这里以ext2文件系统来说明,ext3或这ext4计算结果会有所不同
实际上block被划分后不是全部都用来存储数据的,一部分要给inode来用,便于文件系统找到
INODE
文件对应的inode号来读取数据,另一部分则是分给了超级块,用来记录整个文件系统中block的大小,多少,inode的数量等信息.合理的规划inode的数量很重要,尽管磁盘有空间但是inode没了,那些空间照样不可用了.
每个inode的大小为128bit, 一个inode只能记录一个文件,为了存储比较大的文件我们不得不
需要很多的inode,而inode表本身只有128bit,因此我们的系统把这128bit的inode划分为了12个
直接,一个间接,一个双间接和一个三间接.
12个直接:12*1K=12K,间接:256*1K=256K,双间接:256*256*1K,三间接:256*256*256*1K
把这三个相加就得到了我们的文件系统中单一文件的大小16G
超级块
超级块主要用来记录inode和block的使用情况,总量,空闲等,以及这块分区被挂载的时间,最近
一次写入数据的时间等,超级块中有一个valid bit数值,若被挂载了,这个数值为0,否则为1
文件系统
linux文件系统读取数据的时候,会先找到文件对应的inode号,然后根据inode的记录找到对应磁盘上的block块,把数据读取出来,就像查看一本书的某些内容要先查找目录一样,因此称为索引式文件系统.
linux还支持多种不同的文件系统,但是不同文件系统的系统调用不同,为了方便访问,linux采用VFS(虚拟文件系统)来作为中间层,用以实现对不同文件系统的访问.
磁盘的挂载和使用
磁盘被格式化之后还要被挂载才能用来存储数据,所谓挂载就是找一个接口把分区插入到现有的文件系统当中
以通过这个接口实现对分区的访问.
系统中有有两个文件用来存放分区的挂载信息
more /etc/fstab
/dev/vol0/root / ext3 defaults 1 1
/dev/vol0/home /home ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
第五行表示是否作备份,0不备份,1每天备份,2隔天备份
第六行表示是否自检,0不自检,1最早自检(一般只有根目录才设置为1),2自检.
这个文件用来记录开机需要挂载的分区信息
more /etc/mtab
/dev/mapper/vol0-root / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/mapper/vol0-home /home ext3 rw 0 0
/dev/sda1 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
这个文件用来记录实时的挂载信息,只要某个分区被挂载上了这里就会看到
本文出自 “成长全记录” 博客,请务必保留此出处http://lymrg.blog.51cto.com/1551327/635488
|