• 磁盘区分和系统该文件管理


    1. 磁盘
    • 硬盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成
    • 磁道:当磁头保持在同一位置时,磁头会在磁盘留一个圆形轨迹
    • 柱面:在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面
    • 扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区。操作系统以扇区(Sector)形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。
    • 磁头:在硬盘系 统中,硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会利 用,都可以存储数据。盘面号又叫磁头号,因为每一个有效盘面都有一个对应的读写磁头。
      在 linux 中可以使用 fdisk -l 查看一个磁盘的物理结构:
      该磁盘有255个heads,也就是说共有255个盘面。3263个柱面(cylinders),也就是说每个盘面上都有3263个磁道, 63 sectors/track说的是每个磁道上共有63个扇区。命令结果也给出了Sector size 的值是512bytes。那我们动笔算一下该磁盘的大小吧。
      255盘面 * 3263柱面 * 63扇区 * 每个扇区512bytes = 26839088640byte。
      结果是26.8G,和磁盘的总大小相符。
    1. 磁盘的读写原理
    • 系统将文件存储在磁盘上,以柱面,磁头,扇区来储存,以第一磁道的第一磁头(第一盘面的第一磁道)的所有扇区。然后是柱面的下一磁头,......,一个柱面存完,到下一个柱面,直到完成
    • 柱面号,磁头号,扇区号==物理地址的三个部分
    • 磁盘io:寻道时间+旋转延迟+存取时间
      第一步:磁头径向移动在磁道上寻找存储位置:寻道时间
      第二步:找到目标磁道,通过盘面旋转,将扇区移动到磁头下面
      第三步:将目标扇区读取或者写出数据
    • 对于旋转延时,现在主流服务器上经常使用的是1W转/分钟的磁盘,每旋转一周所需的时间为60*1000/10000=6ms,故其旋转延迟为(0-6ms)。
    • 对于存取时间,一般耗时较短,为零点几ms。
    • 对于寻道时间,现代磁盘大概在3-15ms,其中寻道时间大小主要受磁头当前所在位置和目标磁道所在位置相对距离的影响。
    1. 候选磁盘分区方案
    • 方案一: 255个盘面,C盘是0-100盘面, D盘是101-200个盘面,……
    • 方案二:3263个柱面,C盘0-1000个柱面,D盘1001-20001个柱面,……
    1. linux下磁盘分区和命名
    • 磁盘命名:对 SCSI 和 SATA 设备是以 sd 命名的,第一个 scsi 设备是 sda,第二个是 sdb,依此类推。

    一般主板上有两个SCSI接口,因此一共可以安装四个SCSI设备。主 SCSI 上的两个设备分别对应 sda 和 sdb,第二个 SCSI 口上的两个设备对应 sdc 和 sdd。一般硬盘安装在主 SCSI 的主接口上,所以是 sda 或者 sdb,而光驱一般安装在第二个SCSI的主接口上,所以是 sdc。(IDE接口设备是用 hd 命名的,第一个设备是hda,第二个是hdb,依此类推。)
    uploading-image-103894.png

    • 分区命名:设备名称+数字命名:hda1=hda磁盘上的第一个分区,每个磁盘最多有四个分区,多个分区只有一个active主分区作为启动分区
    • 分区步奏:fdisk来分区:

      第一个和第二个是已经分好的磁盘,第三个没有分
      分多个区的目的:
      • 在不损失数据的情况下重装系统,比如独立设置 /home 挂载点,重装系统的时候直接标记回 /home,数据不会有任何损失。
      • 针对不同的挂载点的特性分配合适的文件系统以合理发挥性能,比如对 /var 使用reiserfs,对 /home 使用xfs,对 / 使用ext4。
      • 针对不同的挂载点开启不同的挂载选项,如是否需要即时同步,是否开启日志,是否启用压缩。
      • 大硬盘搜索范围大,效率低
      • 磁盘配额只能对分区做设定
      • /home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片
    • 格式化分区:mkfs -t ext3 /dev/sda1
      mkfs.ext3 /dev/sdb1 //格式化分区成 ext3
      mkfs.ext2 /dev/sdb1 //格式化分区成 ext2
    • 开机直接挂载:编辑 /etc/fstab 文件,添加:/dev/sda1 /test ext3 defaults 1 1,重启则发选已经挂载上去。
    • 总结
      • 挂载点必须是一个目录。
      • 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。对于其他操作系统建立的文件系统的挂载也是这样,卸载后,目录以前的文件都还在,不会有任何丢失。
      • 目录只占磁盘里的一个inode,存放文件属性等信息。
      • 任何一个分区都必须挂载到某个目录上。
      • 目录是逻辑上的区分。分区是物理上的区分。
      • 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
      • 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
      • 一个分区可以挂在多个目录,但反过来一个目录只能是一个分区的挂载点。
  • 相关阅读:
    在TCP四次挥手中,为什么客户端发送FIN后,还可以发送报文
    园子今天有个Intel最新漏洞的文章,越来越觉得离谱了
    cdn load fail fallback
    Ethernaut的writeup
    把字符串渲染到页面上有哪些方式?
    VUE基础
    java 多线程 CountDownLatch&CyclicBarrier
    MySQL为什么使用B+树索引
    java 虚拟机
    聊聊C#中的composite模式
  • 原文地址:https://www.cnblogs.com/wml3030/p/15135920.html
Copyright © 2020-2023  润新知