zoukankan      html  css  js  c++  java
  • linux下硬盘的操作以及关于硬盘的一些理解

    linux的磁盘管理:他的目录和磁盘分区相互独立,用挂载相互关联,卸载取消关联。

    1.fdisk

    fdisk -l     用来列出来我们硬盘的分区情况

    fdisk /dev/sda 用来管理sda硬盘,比如说增、删等等操作,具体的可以用fdisk -m 来查看命令

    2.mkfs

    用来格式化分区,或者说是给分区格式化他的文件系统。用命令

            ls /sbin/mkfs*

    可以查看我们有那些可以使用的文件系统。

    比如用命令  mkfs -t ext4 /dev/ext4   就可以给相应的分区make它的FileSystem

    3 添加swap分区

    mkswap /dev/sda# 用来分配swap

    swapon /dev/sda#  用来启用刚刚分配的swap

    4 mount和umount用来挂载和卸载文件系统

    在fdisk -l 可以查看分区挂载在那个文件夹下面。

    mount /dev/sda# dir   将分区挂载在某一个文件夹上面了。

    mount          查看挂载列表。

    umount dir    可以用来卸载

    mount -t iso9660 /dev/cdrom dir 将一个镜像文件挂载到一个文件夹

    /etc/fstab是一开机就会执行这个文件,所以我们把命令写在这个文件里面就不用每次都写上面的命令才能读iso

    5 df 查看挂载空间使用情况

    6 用free可以查看物理内存和swap的使用情况

    --------------------------------------------------------------------------------------------------------------

    1.inode的存在 & 读取文件的顺序

    Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

    2.硬链接 & 软链接

    一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。

     除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。

    3.磁盘的单位

    磁盘-->inode、blocks-->Sector扇区(512字节)

    4.理解inode的特殊作用

    由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
      1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。
      2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。
      3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。
          第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

    磁盘文件部分来自:http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

    ---------------------------马哥的Linux关于磁盘及文件系统的管理的笔记----------------------------

    1、主流的硬盘还是机械式硬盘。

    机械式:u盘、光盘、软盘、硬件、磁带

    磁盘的机械式,而cpu等确是电气式的,所以速度差别大。

    2、磁道(Track),外面的磁道要比外面的磁盘周长长,所以外面的磁道可以存储更多的东西。所以,为了便于管理,所以磁道被分为扇区(Sector),保存有数据和磁道本身的信息,512byte。

    它的每一个盘面上都有一个读写磁头。他们都是在一个机械臂上。所以有柱面(Cylinder)概念。

    每写入一个文件都是在好几个盘面上写入数据。所以不同盘面的相同编号的磁道组成柱面(Cylinder)

    分区(Partition),如果不划分分区,那么整个磁盘只能有一个文件系统。分区是一个磁盘的逻辑分区。分区是用来创建独立的文件系统的。

    MBR(Master Boot Record)在第0磁道的0扇区,一共512字节。他是独立于文件系统的,是属于磁盘的。

      前446bytes:BootLoader

      64bytes:每16bytes标识一个分区,是一个分区表

      2bytes:Magic Number

    3、设备启动顺序

    BIOS-->MBR(将MBR中的BootLoader到内存),BIOS退出,BootLoader获得控制权-->读取分区表-->到对应分区上找到对应分区的内核,内核获得控制权

    4、主分区+扩展分区<=4

    5、磁盘分区是按柱面(Cylinder)划分的。

    衡量一个磁盘的一个重要指标就是寻道时间,所以转速很重要,它就影响寻道时间。笔记本的硬盘一般是5400r/min,台式机7200r,工业级SCSI有10k、15k转速的。当然转速越快,发热就越厉害。 硬盘里面是真空的,千万不能有一粒灰尘。

    最外面的扇区与最里面的扇区的:越靠外,它的线速度越快,所以他的读取速度越快,所以c盘一般是在最外面的磁道上。

    6、分区 & 文件系统

    每个分区需要两个部分:metadata以及存储的数据。

    文件系统,简单来讲是一个软件,它也是存储在磁盘上某一部分,它将磁盘上分成两份,一份是元数据存储区,一份是数据存储区。将数据区又分成block,文件存储以block为单位。

    我们在查找空闲的时候要遍历block还是很慢的,所以又一个区域叫做块位图bitmap,将每一个block对应一个bit来标记这个block有没有被用过。当我们要存储数据的时候就直接扫描bitmap,这样来迅速查找空的block。

    在思考,我们在删除一个文件的时候在一个可能导致index中间部分的空闲,当在存储一个文件的时候,这个文件的index放在哪儿,又要遍历index表。所以出现了inode(index node),标识了文件了全局唯一,放了内容:inode、文件的权限、组、onwer、大小、时间戳等等,但就是没有文件名

    在Linux中,目录也是文件,文件名全放在目录上。目录磁盘块上,每一行是inode、文件名。

    NOTE:分区中的主要有index数据块。数据块用bitmap块位图标识有没有被使用,inode文件位图标识index节点有没有被使用。以上的四个概念都没有涉及到文件名。文件的文件名是存储在一个目录文件中的,目录文件中一个条目记录文件与inode一一对应

    文件查找的过程可以参考http://blog.csdn.net/luomoweilan/article/details/19011917

    7、新建一个文件和删除一个文件是什么意思

    新建:在目录文件中添加一个条目,表示新添加的文件;分配一个inode;将文件数据写入分配给它的blocks

    删除:删除目录文件中的条目;条目对应的inode号码标记为空;在块位图标记为空,里面的数据不动,所以可以恢复数据

    360的文件粉碎机:就是将inode标记为空的时候还用一些数据(比如说全0)将block覆盖。

    8、文件的复制与剪切

    剪切,只是修改文件的条目,这只是在同一个分区上。但是,要是是跨分区的话那就一个步骤都不能少。

    Just like writing, coding is a work of creating!
  • 相关阅读:
    【php学习之路】微信公众帐号
    【php学习之路】php基础语法
    WCF全局异常处理
    【原创】【2015最新】微信公众平台开发手把手入门之一:缘起微信公众号(PHP,MYSQL, BAE)
    【原创】【2015最新】微信公众平台开发手把手入门之四:SVN和验证消息真实性(PHP,MYSQL, BAE)
    【原创】【2015最新】微信公众平台开发手把手入门之三:申请百度开放平台BAE云服务(PHP,MYSQL, BAE)
    【原创】【2015最新】微信公众平台开发手把手入门之二:开发者模式(PHP,MYSQL, BAE)
    微信公众号PHP简单开发流程
    angular+requirejs前端整合
    04、AngularJS的ng-bind、多个控制器和apply
  • 原文地址:https://www.cnblogs.com/chenbuer/p/3840893.html
Copyright © 2011-2022 走看看