第三十二讲——磁盘的分区 本文共有5953个字,关键词: 磁盘的分区命令:fdisk fdisk /dev/sda 会产生一个交互式界面 m:帮助信息 p: 显示分区信息 n:新建磁盘分区 d:删除磁盘分区 w:保存并退出 q:不保存退出 l: 查看文件系统类型 t:修改文件系统类型 在此选项下也可使用l/L查看支持的文件系统类型 新建分区时指定起始柱面。一般为默认即可 结束柱面的指定,一般使用大小指定,单位为M、G 建立好一个分区时,系统内核并不会立即识别,我们需要通知内核联系当前系统上的所有磁盘 partx /dev/sda 也可指定某一磁盘 partprobe 老版本的命令 更新内核识别后我们可以查看/proc/partitions cat /proc/partitions 会列出当前内核识别的分区 任何一个分区想要使用都要创建文件系统,要想创建文件系统就意味着,我们要利用内核中内核的文件系统模块,在对应的设备上划分出组织结构。 swap分区 在早期内存算是一种比较昂贵的资源,在此场景下物理内存无法满足我们的需要。 我们的操作系统内核是一个虚拟机,它将我们底层硬件所提供的计算能力虚拟成接口,能够让多个进程并行运行。将资源通过分时共享:time share,或者多路复用:matiplex,将资源分成几份,然后每个进程都可以使用一份。 CPU的虚拟,将CPU的计算能力划分成时间片,time slice。CPU所提供的计算能力是按照时间的流逝来完成的。 I/O设备是通过多路复用来完成 X86系列CPU上(32位),尤其是从80286开始,我们的内存当中引入了所谓的虚拟地址的概念,也称为线性地址、内存就是可编址的存储单元,所以进程在访问内存设备的时候,我们内存中的存储空间每一个字节被称为一个cell(存储单元,存储格),每一个存储格都是由地址的,所以CPU到内存中访问数据时是根据地址来查找的。 地址总线就是负责寻址的,CPU通过地址总线能够找到对应地址的存储单元,而后通过数据总线将数据读取出来,(读取数据是在控制指令的控制下完成数据读取的。),进程是跑在内核之上的,虽然线性空间是4G(32位CPU),但内核会占用一部分,这就意味着进程并不能直接使用4G,而是划分为两段,这个地址空间是虚拟出来的,假的、不存在的,真正的数据还是存放在物理内存当中,虽然出去内核占用的空间,进程都能够使用,但并不代表进程会完全占用整个剩余空间(进程管理),大多数进程空间是分页的(页框,page)。 在物理内存上,内存空间被分成一个一个的页框,每4K一个页框,可以放一个页面的数据,而后每一个进程真正使用的数据会被转换映射到内存空间中去。 数据在物理内存空间中很可能是不连续的,数据是交替存放的。 虚拟地址是假的,每一个进程都以为自己使用了全部的地址空间,而事实上由内核将虚拟地址空间转换到物理内存当中。 进程在虚拟地址上上是看不到其他进程的存在的。万一物理内存中没有页框了,但是进程还需要使用内存,进程是意识不到内存快占满了,进程会继续向内核申请地址空间来装数据。这个时候内核会采取折中的办法,将硬盘中的虚拟内存(特殊分区,linux中为swap分区)划分为一个一个的页框,模拟成物理内存,将物理内存中较少使用的页框挪到虚拟内存当中,然后就腾出一段空间。 当内存中的数据,被挪到虚拟内存中时,内核会消除其物理内存的指向关系,但是内核会维护一张表,里面保留了数据的指向关系。当进程使用的数据存放在虚拟内存中时,内核会将进程的申请拦截,并再次将其他暂时不使用的数据挪到虚拟内存中去,将要使用的数据挪到物理内存中,并像进程给出指向关系。 这个过程就称为换进换出的过程,这个硬盘上的空间称为交换空间,交换空间的存在允许我们的内存过载使用。 在linux上,交换空间是一个分区(swap分区) 我们将内存中的数据放到磁盘上的过程称为page out,将内存中的数据取回的过程称为page in 相对应的,站到swap的角度来说,内存中的数据存入swap分区为swap in,将swap分区的数据读入内存叫做swap out。 当操作系统频繁有页面数据换进换出,很有可能是由于物理内存太小,虚拟内存只能用于应急使用,数据换进换出的效率低下,且硬盘的读取写入相比内存会慢很多。 CPU中的寄存器是存储空间中速度最快的,大概是1纳秒完成访问,一级缓存和二级缓存大概需要10纳秒左右,内存的完成访问时间在10毫秒左右,硬盘的访问时间可能是以秒为单位。 当我们使用交换分区的时候,会使系统的性能大受影响,如果不得不使用swap交换空间,我们应将swap分区放到靠外的磁道上。 free 命令,查看当前系统物理内存和交换分区的使用情况,默认是以字节为单位显示空间大小 -m选项以M为单位显示内存和swap交换分区的使用情况。 free 命令结果的中的buffers和cached buffers:缓冲,缓冲是避免慢的设备遭受冲击。 buffer中通常存储元数据,例如使用过的inode放在buffer中。 cached:缓存,缓存是快速设备向低速设备读取数据的中介(中间设备) cached中通常存储数据,保存元数据对应的数据。 缓存中也涉及交换,但是缓存中的数据只是往外交换,并不影响数据本身。 buffer、cached是为了提高计算机的性能而设定的。 创建交换分区(swap分区) 在fdisk中新建分区,并调整为linux swap类型(82),而后使用mkswap命令(交换分区的格式化命令) mkswap /dev/sda# 将新建的linux swap类型的分区格式化为交换分区。 也可以在格式化的时候指定卷标 swap:-L LABLE 创建分区----高级格式化----挂载 swap交换空间的挂载和格式化都较为特殊。 swap分区的挂载点比较独特:swap 挂载点为swap 文件类型为swap 挂载:swapon /dev/sda# 启动swap分区 swapoff /dev/sda# 关闭swap分区 当swap空间不够使用,且磁盘上已经没有空闲空间来创建新分区,但是某个已经挂载的设备上还有空闲的空间,在这个空闲的空间上使用软件的方式模拟硬件来创建一个镜像文件,将这个镜像文件当做设备来使用。模拟出来的镜像文件甚至可以分区格式化,挂载,很可能镜像文件看起来不到20M大小,但是fdisk查看却有120G。 无论是Windows还是linux都支持本地回环设备,loopback,回环设备。 dd 命令: dd命令是用于复制文件的,用法格式比较特殊。 dd if=input file of=output file 输入的文件或者数据(指定数据来源) 保存到什么地方(存储目标) dd和cp不同之处在于: cp命令是通过文件系统读取出来(内存中),再粘贴到我们制定的位置。cp命令是通过VFS接口,以文件为单位读取到内存中,然后保存到另一个文件所对应的区域。 对于dd命令来讲,它不通过VFS,二是直接将文件所对应的1.0代码复制。 dd命令可以只复制文件的几个字节, bs=1024(字节)bs为blocksize count=2(以bs为单位,一共复制两次) dd命令强大到无以复加的地步,甚至可以帮助我们备份MBR dd if=/dev/sda of=/tmp/MBR.backup bs=512 count=1 这里直接指定的硬盘,没有指定文件,那么就会从硬盘最开始处开始复制,当我们需要还原MBR的时候: dd if=/mnt/MBR.backup of=/dev/sda bs=512 count=1 dd命令还可以直接将光盘中的数据抽取出来做成iso文件,cat命令也可以实现 cat /dev/cdrom >/tmp/test.iso 没有指定文件,直接指定设备的时候,cat会一个字节一个字节的取读取。 linux中有两个特殊的设备 一是/dev/null 这个脚本里经常用到,是一个数据黑洞 二是/dev/zero 这个称为泡泡设备,能有向外吐0,要多少有多少。 我们可以借助泡泡设备,创建一个确定大小的虚拟镜像文件,这个文件可以直接被mkswap并且启用。 dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 使用dd命令实实在在创建一个大小为1024M的镜像文件,只是其中填满了0,所以硬盘会高速运转,,此处用于应急swap空间的添加。 dd 命令还可以用于测试磁盘的性能测试 dd if=/dev/zero of=/dev/test bs=1M count=1024 可以查看创建镜像文件时磁盘每秒完成的数据量。 dd命令有一个选项能跳过中间需要创建的空间。 seek 可用于创建一个假的文件。 dd if=/dev/zero of=/tmp/test bs=1 seek=1023 count=1 即创建一个假的1G镜像文件,使用fdisk命令对其格式化时会看见其空间大小为1G,实际上只有几M。 使用du命令还可以查看其实际大小。 挂载镜像文件设备: mount –o loop /mnt/.....iso /mnt/test 挂载镜像文件(回环设备) swapon -a 启用所有的交换设备(此处为定义在/etc/fstab下的交换设备) 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-01 评论 1661 次浏览