磁盘存储和文件系统

磁盘存储

   设备类型

      1.块设备

             以块为单位进行存储和读取,相当于批量存和批量读

      2.字符设备

            以一个字节或者一个字符为单位进行读取和写入.

       cp -a    /dev/sda      /data/sda

       mknod  /data/sda b 8 1   创建特殊类型的文件

      3.硬盘结构

        1.磁头在盘片上进行从里到外-左右移动

        2.盘片进行高速旋转

        3.磁道          圈和圈之间的空隙(类似于操场的跑道)                            每个磁道分成多少个扇区需要占用6个位来存储,最大值是2^6=64

        4.扇区          每个扇区512字节   每个磁道被划分成多个扇区

        5.柱面          不同盘片之间的相同磁道组成一个柱面

     4.硬盘的使用

        1.分区

        2.创建文件系统(格式化)

        3.挂载 (把设备名和目录名关联起来)

        4.硬盘如果不进行格式化,那么往硬盘上存储和读取数据的时候只能以二进制(0和1)方式来进行,而不能以文件的方式进行访问.

        5. hexdump -C  /dev/sda |  less  直接以二进制或者相关进制的方式来读取硬盘上的数据.

    5.分区方式

       分区必须是在一个连续的空间

       4个主分区  或者        3个主分区+1个扩展分区+N个逻辑分区

      1.MBR分区

        1.   hexdump   -C     /dev/sda    -n      512       查看磁盘上前面的512个字节内容

        2.  dd  if=/dev/sda    of=/data/mbr_bak    bs=1   count=512              读取二进制文件内容,每次读取一个字节   总共读取512个字节

        3.  dd  if=/dev/zero   of=/dev/sda             bs=1    count=512              用0设备读取数据写到其它二进制文件,每次写入一个字节,总共写512个字节

        4.  dd  if=/data/mbr_bak  of=/dev/sda      bs=1   count=512               恢复二进制文件内容

        5.  dd  if=/dev/zero   of=/dev/sda    bs=1   count=2  seek=510           把第511和512个字节清0

      2.GPT分区

       4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

  6.管理分区

    列出块设备    lsblk

    fdisk创建   MBR分区

    gdisk创建  GPT分区 

    parted高级分区操作 

    partprobe   同步内存和磁盘上的分区表信息   centos6上无效

    partx    -a     /dev/DEVICE     centos6 同步新增分区

    partx    -d     /dev/DEVICE     centos6  同步删除分区

  7.分区表存储在两个地方,一个在内存,一个存储在磁盘.

       fdisk 查看磁盘上的分区表信息
       lsblk 等其它命令查看的是内存上的分区表信息

    

文件系统

    操作系统中负责管理和存储文件信息的软件结 构称为文件管理系统,简称文件系统

    如果没有文件系统,那么我们只能以0和1二进制的方式来访问磁盘上的内容不能以文件的方式来访问磁盘数据.

    

   分布式文件系统

       把一个文件打散,均匀的存储在不同的机器上.具有对文件备份和容错的功能.

   日志型文件系统

     日志的功能就是记录了用户对数据的一切操作

     如果没有日志系统,用户把数据从磁盘调入内存进行修改后,如果在系统还没开始从内存写入磁盘的时候出现异常,那么只会丢到内存的修改,

     磁盘上的原数据并没有被损坏。

    

     如果在系统已经开始从内存写入磁盘的过程中出现异常,那么内存中的数据会丢失,同时磁盘上的原文件内容也会被损坏.

     日志系统会在硬盘上单独开辟一块空间进行日志存储(journal)日志和文件是分离的,通过日志可以避免系统异常而导致损坏文件,保证系统的稳定性.

     

 虚拟文件系统

    封装了各种不同类型文件系统的API给用户统一调用使用户无需关心底层系统,如用户执行ls cp等命令,会首先把命令发送给虚拟文件系统

    然后由虚拟系统进行翻译再发送给不同类型的底层文件系统来执行

buffer和cache

   1.   当用户访问一个文件的时候,磁盘会先把文件存入磁盘的缓存中,然后内存再从磁盘的缓存中读取数据.

   2.   buffer是为了提高写数据的性能     先把内存中需要写入磁盘的数据存放到buffer中,然后再批量写入磁盘.

   3.   cache是为了提高读数据的性能    先把需要读取的数据存放到cache中,下次读取的时候直接从cache中读取.

集群文件系统

    默认情况下,当多个服务器同时访问同一块磁盘上的同一个文件,就会造成这个文件的数据损坏.  集群文件系统就是为了解决这个问题

  块组和簇(windows)的基本概念

       文件系统分配给文件的最小单位,一个文件再小也要占用的最少磁盘空间.

    

原文地址:https://www.cnblogs.com/yxh168/p/8906463.html