• 几个文件系统概念:geometry、sector 、Block


    一:geometry应该翻译为几何数据,其实就是指的CHS(Cylinder、Head、Sector/Track) 。C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,编号从0开始,最大为1023,表示有1024个磁道(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,编号从0开始,最大为255,表示有256个磁头(用8个二进制位存储);S-Sector/Track扇区数表示每条磁道上有几个扇区,编号从1开始,最大为63,表示63个扇区(用6个二进制位存储),每个扇区512字节,它是硬盘的最小存储单位。我们可以算一下:1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即通常的8.4GB(实际上应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。当然现在的硬盘早就超过8.4GB了。
    从大到小
    H-Head(磁头)---》C-Cylinder(柱面数或者磁道数,即每个磁头的磁道数)------》S-Sector/Track(扇区,也就是每个磁道有多少扇区)--------》扇区大小(512bit)磁盘空间
          
    二:除了CHS,我们还需要了解block,因为现在的硬盘早就不以CHS来设定了。不论我们的操作系统用的是哪一种 filesystem ,数据总是需要储存的吧!既然硬盘是用来储存数据的,想当然尔, 数据就必须写入硬盘啦!我们知道硬盘的最小储存单位是 sector ,不过数据所储存的最小单位并不是 sector 喔,因为用 sector 来储存太没有效率了。怎么说呢?因为一个 sector 只有 512 Bytes ,而磁头是一个一个 sector 的读取,也就是说,如果我的档案有 10 MBytes ,那么为了读这个档案, 我的磁头必须要进行读取 (I/O) 20480 次!
        为了克服这个效率上的困扰,所以就有逻辑区块( Block )的产生了! 逻辑区块是在 partition 进行 filesystem 的格式化时, 所指定的『最小储存单位』,这个最小储存单位当然是架构在 sector 的大小上面( 因为 sector 为硬盘的最小物理储存单位啊! ),所以啦, Block 的大小为 sector 的 2 的次方倍数。此时,磁头一次可以读取一个 block ,如果假设我们在格式化的时候,指定 Block 为 4 KBytes ( 亦即由连续的八个 sector 所构成一个 block ),那么同样一个 10 MBytes 的档案, 磁头要读取的次数则大幅降为 2560 次,这个时候可就大大的增加档案的读取效能啦!
    不过,Block 单位的规划并不是越大越好!怎么说呢?因为一个 Block 最多仅能容纳一个档案 !这有什么问题呢?举例来说好了,假如您的 Block 规划为 4 KBytes ,而您有一个档案大小为 0.1 KBytes ,这个小档案将占用掉一个 Block 的空间,也就是说,该 Block 虽然可以容纳 4 Kbytes 的容量,然而由于档案只占用了 0.1 Kbytes ,所以,实际上剩下的 3.9 KBytes 是不能再被使用了,所以,在考虑 Block 的规划时,需要同时考虑到:
        档案读取的效能
        档案大小可能造成的硬盘空间浪费
    因此,在规划您的磁盘时,需要留意到您主机的用途来进行规划较佳!例如 BBS 主机由于文章较短, 也就是说档案较小,那么 Block 小一点的好;而如果您的主机主要用在储存大容量的档案, 那么考虑到效能,当然 Block 理论上,规划的大一点会比较妥当啦! 



    举例来说,我们可以用 tune2fs 来查看系统逻辑分区块的大小:
    [WEB01~]# tune2fs -l /dev/sda3|grep Block
    Block count:              15488668
    Block size:               4096
    Blocks per group:         32768
    Block size:               4096
    表示:4096B = 4K  (默认)
    (15488668 * 4096 B) / 1024 K /1024 M /1024 G
    15488668*4096/1024/1024/1024 = 59.08G
    核对:
    fw00:~# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda3              59G  4.5G   51G   9% /

    然而,vmstat 中块的大小则表示扇区:
    vmstat 中的 io/bi bo 的单位也是块,但是它不是操作系统里的那个块,这个块表示物理磁盘的块(sector),即扇区,每个扇区 512 字节.
  • 相关阅读:
    2014,成为更好程序员的7个方法
    联想集团大裁员,血淋漓的教训:公司只能给你位置,却无法给你未来!(转)
    Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连
    Could not find a version that satisfies.... No matching distribution found for .....
    深度学习(七)U-Net原理以及keras代码实现医学图像眼球血管分割
    深度学习(六)keras常用函数学习
    np.random.random()函数 参数用法以及numpy.random系列函数大全
    2019最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA失败 导入tensorflow失败报错问题解决
    c++ 网络编程课设代码 网络编程入门教程 ---目录
    c++ 网络编程(十一) LINUX下 初步制作基于HTTP的WEB服务器
  • 原文地址:https://www.cnblogs.com/jjkv3/p/2771053.html
Copyright © 2020-2023  润新知