欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

磁盘的相关知识

程序员文章站 2024-03-08 11:43:28
...
  • 磁盘相关知识
  • 磁盘多为双面可读写,用于增大存储范围。磁盘振动容易发生磁盘损坏,导致磁盘坏道出现,磁盘被划分为磁道,也就是一个一个的同心圆磁道的周长不一样的,磁道上的存储空间被划分为扇区(sector),扇区用于存储用户的数据扇区自己的编号,自己的位置,磁头号,碟片号,磁道号等相关信息,一个扇区的大小为 512 字节,磁盘的数据是同步的存入多个盘面的,而不是只存在一个盘面的; 位于不同盘面的相同磁道组成柱面,不同的分区表使用不同的文件系统,分区是磁盘的逻辑边界;
  • 磁盘的低级格式化,按照磁盘的的物理属性划分磁道;
  • 分区是用来实现创建文件系统的,文件系统是不能够跨越分区存在的;
  • 1.磁盘通常是外设,不是核心设备,核心设备通常是CPU和内存;
  • 2.磁道:存储数据的同心圆,外面的磁道存储更多的数据;
  • 3.磁道上面的存储空间被划分称为扇区,扇区还需要存储盘面,磁道,扇区等用于定位的信息,每一个扇区大小为512字节;
  • 4.柱面(Cylinder):位于不同盘面的相同编号的磁道;
  • 5.如果磁盘不进行分区的话,只能够存储一个文件系统,分区其实是磁盘的逻辑边界;
  • 低级格式化:
    • 磁盘在出场的时候的会进行低级格式化,进行磁道划分,扇区划分等操作;
    • 分区(partition):分区是用来创建独立的文件系统的,分区是文件系统的逻辑边界,磁盘的分区是按照柱面进行分区的,这样加快数据存取,外侧磁道的读取速度高,可以作为缓存来使用;
    • MBR(Master Boot Record):称为主引导记录,0盘面0磁道0扇区一共512个字节都使用来存储主引导分区记录的,不属于任何操作系统,是全局的;
      • 446字节:
        • bootloader:引导加载程序:用于引导某个分区上面的操作系统来完成启动的;
      • 64字节:
        • 16个字节,用于标识一个分区,一共标识4个主分区 ,使用主分区里面的一个或者多个16个字节,用于表示指针,指向一块更大的空间,这块空间也是用来表示分区信息的,这种分区称为扩展分区;
      • 2个字节:
        • Magic Number:用于标记MBR是否是有效的,
  • 系统开机启动的部分过程:

    • 1.BIOS完成启动的健康状况检查;
    • 2.然后根据BIOS里面的设定查找指定设备的MBR;
    • 3.如果指定设备的MBR出错,就会直接提示错误;
    • 4.如果不存在,就会按照顺序进行查找;
    • 5.BIOS将查找到的MBR里面的Bootloader加载进入内存;
    • 6.Bootloader根据分区表查找指定分区上面的操作系统;
    • 7.bootloader加载引导指定操作系统的内核,并且将其读入内存,控制权转移;
    • 8.根据配置查找文件系统,找到需要运行的程序,完成系统的启动;
  • 磁盘分区

  • 磁盘分区是按照柱面进行分区的,因为磁盘的数据读取是按照柱面同时进行读取的,
    磁盘在进行数据读取时,需要进行磁道寻道,这样会浪费时间,笔记本磁盘时间一般是 5400,
    台式机一般是 7200,工业级别的磁盘一般是 10K 以上的转速,磁盘的最外面的扇区的转速
    是最快的,性能也是最好,所以频繁访问的数据是会被放在最外扇区的,所以操作系统一
    般都放在 C 盘;
  • 磁盘的文件存储
  • 文件的存储是依赖于文件系统的,文件系统是一个数据管理软件文件系统上面的是数
    据在磁盘上的。文件系统将磁盘分为 index, inode(索引节点),元数据信息, inode 位图,块位图等;

    • 每一个 index node 在全局都有一个为一个编号,iNode 用于表示文件本身的相关信息包括:文件权限,属主和属组,时间戳,大小以及存储在那些磁盘块等信息,但是不存储文件名, inode 可以通过直接,间接,一级间接、二级间接、三级间接等方式用于大数据文件的存储,这些 inode 的指向方式决定了一次存储数据文件的的最大大小;例如 FAT32 理论上支持最大 4G 的单个文件存储;
    • 目录也是一个文件,文件名是保存在目录里面的,保存文件名的条目称为目录项;目录的本质是一个文件路径映射表文件的查找过程:
      • 例如查找/var/log/messages:
        • 1.内核通过自检找到根的位置,跟这个目录连保存有 var 目录的 inode 节点号;
        • 2.查找到 varinode 号码后,再去查找 inode 表格,找到 var 的位置;
        • 3.在 var 目录里面找到 log 目录,并得到 log 目录的inode号,然后再去查找 inode 表格查找log 目录的位置,得到 log 目录的位置后;
        • 4.再去查找 messages 文件,并得到 messages 文件的 inode信息,得到 messages 存储的相关块的信息,完成文件的查找;
    • 如果需要经常查找一个文件,那么可以将该文件的 inode信息作为缓存保存在一个位置,下次查找时,直接调用缓存;
  • 1.一个磁盘块只能够属于一个文件;

  • 2.对于文件系统来说,块的大小必须是2^n个字节,block_size:1024,不同的系统和CPU对于块的大小设定是不一样的;
  • 3.对于内存中页框的大小通常是4K;
  • 4.创建文件,首先找到inode,有可能需要磁盘块进行数据存储(符号连接不一定需要磁盘块),设备文件,管道文件都是不需要磁盘块进行数据存储的;
  • 5.为了加快空闲磁盘块的查找,引入了bitmap,为了加快bitmap的查找,引入了blockgroup的概念,blockgroup是磁盘块的划分;
  • 6.磁盘块是用一位0|1来表示是否是使用的,位图的一个位和一个磁盘块相对应;
  • 7.超级块用户包含,块组的大小,以及块组的个数等信息.超级块的信息是应该备份在不同的区域里面的,为了防止超级块损坏;
  • 超级块里面的信息:
    • 1.块组的数量;
    • 2.块组的大小;
    • 3.块组中包含多少个块;
    • 4.块的大小;
    • 5.空闲磁盘块,已用磁盘块,空闲inode,已用inode;
    • 超级块里面包含的主要是全局信息;
  • 块组描述符表:
    • 1.是一个新的块,用于保存当前系统上面包含多少个块,每一个块组从哪些个块开始结束等信息;
    • 2.每一个块组里面也应该包含自己所拥有的Inode信息,块组里面也应该包含块位图以及inode位图;
  • BootBlock:
    • 这个块是不能够使用的,需要预留出来的,这属于引导块,如果在这个分区上面安装了操作系统,那么操作系统的引导信息,就需要安装在这里,用于安装多操作系统使用,是任何一个分区的第0个块,多系统互存是需要使用这里来进行引导的;
    • 操作系统引导的两个过程:
      • MBR正常:BIOS引导加载MBR里面的Bootloader里面的信息,MBR损坏,开机无法正常进行,如果MBR损坏,BootBlock里面的信息正常也无法正常引导加载,MBR:属于磁盘的0磁道0扇区,不属于任何的分区;
        *MBR损坏,BootBlock里面的信息正常也无法正常引导加载,BootBlock里面的Bootloader是需要被MBR里面的Bootloader里面的信息来进行引导的,所以MBR损坏这里也无法正常使用;
    • 这里的没有单独划分数据区域和元数据区域,而是首先划分块组,在块组里面划分,数据区域和元数据区域;
  • 块组里面的信息包括:
    • Super_Block :就是备份Super_Block里面的新,防止Super_Block损坏造成的信息丢失;
    • Group_Description_Table:块组描述符表,块组名,起始磁盘块,结束磁盘块等全局信息,需要备份多次;
    • Block_Bitmap:
    • Inode_BitMap:
    • Inode_Table:
    • Data_Blocks:
  • 目录里面的信息:
    • inode号码:
    • 文件名称的长度:
    • 文件类型:
    • name:
    • 如果文件占据的Inode特别大,以至于使用的inode里面的信息不足够存储磁盘块编号信息,就需要使用层级指针的方式来进行引用;
  • ext3:

    • 支持日志称为日志文件系统(journal file system),是为了防止系统在存储文件时,因为异常导致文件存储不完整而出错;日志文件系统就是为了防止这种错误,从而将磁盘划分称为三个区域:数据区,元数据区以及日志区域;
    • 1.将Inode存储在日志区域;
    • 2.数据正常存储,Inode转移到元数据区域;
    • 3.数据异常存储,Inode在日志区域不动,用于检查;
  • 数据的存储

  • 对于数据的存储需要借助与文件系统来完成,文件系统本身是不在分区上面的,但是文件系统的数据是存储在分区上面的;
  • 对于数据:
    • 元数据(Metadate):不是真实的数据,而是为了方便数据的组织管理而产生的数据
      • 数据条目区域(Index Node):用于存放文件在真是数据存储区域的索引位置信息;存在全局唯一的Inode号码用来标识不同的文件,这块区域里面的信息包括:inode号码,对应文件的权限,属主和属组,时间戳,大小,以及存储的磁盘块等信息,但是不包含文件名;
        • 对于大数据文件的存储,可以使用指针的方式间接指向磁盘块的某些区域,用来标识所占用的磁盘块,因为Inode里面可能没有办法包含所有的磁盘块,通过各级指针引用文件的方式,决定了单个文件的最大大小;
        • 对于目录来说:目录也是文件,目录对应存放内容的磁盘块里面存放的内容包括:文件的Inode号码以及对应的文件名,便于进程查询文件名称和inode的对应关系;;
        • 数据条目存储区域也是可以通过位图来实现快速判断数据条目区域的使用情况;
      • 块位图(Bit Map): 在元数据区域通过块位图来标记真实数据区域的某些磁盘块是否使用;
    • 真实数据存储区域:
      • 磁盘块:是逻辑概念,通常是存在编号的,在磁盘块上面通常还需要标记是否已经被使用,通常需要规模扫描;
  • 目录里面文件的查找过程:
  • 例如查找/var/log/messages :
    • 1.首先查找根,根是自引用的,文件系统必须确保能够查找到/的位置;
    • 2.找到根对应的存储实际数据的磁盘块,根据对应的表,查找到varinode信息;
    • 3.然后在查找inode索引表,找到对应的var的磁盘块,查找inode_filename对应的表,找到log对应的inode;
    • 4.根据log对应的inode号码,找到log对应的磁盘块;
    • 5.查找到messages对应的inode号码,去查找对应的磁盘块;
  • 新建立文件的过程
    • /backup/test.txt :大约由10kb的数据需要保存,每一个磁盘块为2kb;
    • 1.首先确认/backup目录是存在的;
    • 2.然后扫描inode_map,申请一个新的inode号码;
    • 3.查找目录对应inode,并且找到对应的磁盘块;
    • 4.在表里面新建立inode_file里面新建立条目;
    • 5.查找bitmap位图查找空闲的磁盘块,一次划分的可能多余实际需要的,是为了防止文件碎片的;
  • 删除文件的过程:
    • 1.找到对应目录里面的条目,删除条目,回收Inode;
    • 2.重新标记Bit_map为未使用;
  • 复制与剪切文件的过程:
    • 文件复制为什么慢:文件复制目录项以及文件内容都需要更改;
    • 文件剪切快速:剪切只是目录项的新建立;
  • 关于分区的知识补充:
    • 1.首先将磁盘划分称为不同的块组(block_group);
    • 2.使用超级块来保存块组信息(一共有多少个块组,使用情况);
  • 关于链接文件:
    • 硬连接:/back/m/a.txt 指向同一个Inode节点的不同目录(访问路径)称为硬链接;硬链接次数小于2时,被删除,文件就会消失;
      • 1.只能够对于文件创建,不能够对于目录进行创建,这是为了循环链接路径的出现但是目录的链接次数是2,因为.指向当前目录;
      • 2.硬链接是不能够跨文件系统创建的;
      • 3.创建硬链接会增加文件被链接的次数;
    • 符号链接:
      • 在访问某个路径信息,查找到对应的磁盘块信息后,得到的内容是另一个路径的链接,还需要通过链接区访问的到具体的磁盘信息;
      • 软链接文件的大小是存储链接字符的个数,软链接的权限是777用于确保任何用户都可以找到这个链接文件,但是具体的权限依据链接指向文件的大小;
      • 1.符号链接可以在目录上面创建;
      • 2.可以跨文件系统;
      • 3.不会增减被链接文件的链接次数;
      • 4.其大小为指定的路径所包含的字符的个数;
  • 链接文件的创建:
  • ln [ -s -v ] SRC DEST :
    • 在进行软连接的设置时,建议使用绝对路径,否则容易出错;
  • 系统对于硬盘的识别
    磁盘的相关知识
  • /dev表示的是设备目录,对于设备的识别是通过主设备号和次设备号码来识别;
    • 主设备号:表示设备类型;
    • 此设备号码:用来识别同一个类型底下各个不同的硬件设备;
    • 设备文件通常是作为设备的访问入口存在的,当创建一个设备文件之后,并且建立了关联关系,内核就可以通过设备号找到对应的设备;
  • 创建设备文件:
  • 创建一个主设备号码为66,次设备号码为0的字符设备文件;
    磁盘的相关知识
  • 设备文件是不占据元数据空间的,但是会占据inode空间;
    • 系统对于硬盘的识别
  • /dev/hd:IDE,ATA接口;
  • /dev/sd:A、SCSI、USB接口;
  • 一类型下的不同磁盘使用小写英文字母来进行区别,表示的字母顺序实际上是操作系统对于硬件设备的识别顺序;
  • Linux常见的文件系统
  • 文件系统是内核提供的功能,但是管理文件系统的进程是用户空间的进程,常见的文件系统操作包括:open,close,create,delete,edit,常见的文件系统包括ext2,ext3,xfs等,由于文件系统是内核提供的功能需要通过系统系统调用来完成操作,对于不同的文件系统提供的调用的接口可能不同,导致文件系统的管理复杂,为了防止上述情况的出现,使用中间的vfs来统一各个文件系统之间不同的差异,向用户提供统一的接口,Linux提供的Virtual FileSystem来提供这种功能;
  • 常见的文件系统包括:ext2,ext3,ext4,xfs,reiserfs,GFS,NFS,ocfs,VSF也是内核提供的功能,一个分区就是一个独立的文件系统;
  • 操作系统提供了相关模块去支持如此多的文件系统;对于快的大小默认是 2^ n块的大小有三种规格:1024,2048,4096 三种规格,内存中的数据是按照也块进行编号的,页框的大小默认是 4K;
  • 一般来说只有普通文件和目录文件是占用数据块的位图是用来方便进行数据查找的,不再去扫描整个磁盘空间;当数据量十分大时,会创建几个块组,用于将分区划分,进而方便查找;块组的信息保存在 super block 里面;保存的信息包括:块组数量,块大小,空闲磁盘块,已用 inode,空闲 inode,同时提供一个块组描述符表中,用于保存块组的起始与结束的块信息;
  • 以下是分区的位图:
    磁盘的相关知识
  • 其中 boot block 是用来作为引导块的,用来引导操作系统,是用来安装多系统的的一个引导;boot block 是必须被 MBR 里面的 boot loader 进行识别和引导的,里面是是不会用来存储任何数据的;super block 信息十分重要一般是存在备份的,一般默认去查找第一个块组的 super block;
  • GDT:是块组描述表,Group description table,当前分区上块组的块组名,以及块组的边界信息;
  • 对于各个目录之间存在的相互包含的关系,但是在分区上面不一定是相互包含的,很有可能是两个相互独立的分区:
  • 目录中包含的信息
    磁盘的相关知识
  • 每一行表示一个文件,首先 inode 号码,文件名称,长度,最近一次访问时间,文件类型;磁盘的数据类型是按照逐级进行引用调用的,有一级二级三级指针指向进行存储;

  • 1.首先内核是在内存中,高于硬盘的,内核是可以找到根的位置的;

  • 2./var这个目录在1号分区,里面存储着inode_filename信息;
  • 3.将这块空间作为var的访问入口,实际的数据信息存储在2号分区;
  • 关于文件的系统格式化的信息:
  • 解释关于文件系统格式化过程中的某些信息
[aaa@qq.com ~]# mkfs.ext3 /dev/vdb1 
mke2fs 1.41.12 (17-May-2010)
warning: 180 blocks unused.

Filesystem label=                   //表示卷标,可以手动指定卷标
OS type: Linux              //表示操作系统类型;
Block size=4096 (log=2)         //表示块大小以及日志的数量
Fragment size=4096 (log=2)      //表示偏移大小;
Stride=0 blocks, Stripe width=0 blocks  
65664 inodes, 262144 blocks     //表示Inode数量以及块的数量;
13116 blocks (5.00%) reserved for the super user    //用于给管理员修复软件文件系统使用;
First data block=0          
Maximum filesystem blocks=268435456
8 block groups              //分配8个块组
32768 blocks per group, 32768 fragments per group   
8208 inodes per group
Superblock backups stored on blocks:        //超级块的备份位置
    32768, 98304, 163840, 229376

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override. 
  • 查看内核支持的文家系统类型查看方法:
    磁盘的相关知识
  • 日志文件系统:
    • Journalfile system:日志系统是磁盘中的一个新的区域,将 inode 创建在日志区,然后在日志区进行存储,如果数据未发生损坏,那么久将 inode 放回元数据区;是为了在系统发生异常时,存储的数据,未存储完的数据就会数据就会丢失,导致数据损坏,无法使用,日志文件系统就是在进行数据储存发生异常时能够快速的恢复数据;
  • 文件系统的管理

  • mke2fs:专门用于ext系列的文件系统管理

    • -j:表示使用ext3,否则默认就是ext2日志文件系统;
    • -b用于指定block的大小,默认为4096,可用取值为1024,20484096;
    • -L LABLE:用于指定卷标;
    • -m #:预留给超级用户管理元的空间大小;
    • -I #:用于指定多少个Block指定一个Inode,这个指定为block数值,inode应该大于Block,:制定自己字节 inodeblock 的比率,一般为 8192,4096,2048;默认为 8192 个字节创建一个 inode,这里给出的字节默认应该是 2^n 的整数倍;
    • -N #:用于指定要创建的Inode个数;
    • -c:主要用于检查在创建文件系统值之前出现的bad block;
    • -F:表示强行格式化;,已经被挂载的文件系统,是不能够用来格式化的;
    • -E:用户用来执行额外的文件系统属性;
  • blkid :
    • UUID:用于唯一的标识磁盘ID,用于查看磁盘设备的相关属性,也可以用于查看卷标;
  • e2label :
    • 用于查看或者定义卷标的,e2label /dev/vdb3 NEWdata:用于设定卷标;
  • tune2fs :
    • 用于无损调整文件系统属性
    • -j:调整为ext3,降级是不支持的;块大小是不能够修改的;
    • -L:是用于设定或者修改卷标的;
    • -m #:用于调整预留空间的百分比;
    • -r #:表示指定预留的块的数量;
    • -o:表示挂载选项,用于设定默认的挂载选项;
    • -i 0 | -1:隔多少天后进行自检,表示关闭次功能;
    • -c 0 | -1:表示进行挂载的多少次之后,执行自检,前面的值表示不进行限制;
    • -l:用于列出超级块信息,大量的详细信息;
    • -t FSTYPE:指定文件系统类型,系统默认会自己制定,但是不能指定错误的类型,否则就麻烦了;
    • -a:使用自动检测并且修复,否则就需要不停的回答y;
  • dumpe2fs :
    • 用于显示文件系统的信息,这个显示的信息是最为详细的;
    • -h:表示仅仅用于显示超级块信息;
  • 文件系统自检:
    • fsck:检查并且修复Linux文件系统;
      • -t FileSystem:表示对于某个文件系统进行检查;
      • -a:表示检查错误.并且自动进行修复,对于通用的文件系统都是支持的;
    • e2fsck:
      • 专门用于检查并且修复ext系列的文件系统;
      • -a:表示自动修复;
      • -f:表示强制进行检查,并且自动进行修复;
      • -p:同样表示自动修复;
  • blkid:查看设备的相关信息,UUID 信息以及文件系统类型,卷标等信息;
  • e2lable:专门用于查看或者定义卷标,后面加上设备 新卷标,可以用于直接设置卷标
  • 文件系统的挂载与卸载
  • 挂载:将新的文件系统关联至当前根文件系统;
  • 卸载:当某文件系统与当前根文件系统的关联关系移除;
  • mount:
    • mount 设备 挂载点
      • 设备:设备文件 卷标(LABLE=" ") UUID (UUID=" ")
      • 挂载点通常是目录:
        • 要求:
          • 1.目录没有内其他进程使用;
          • 2.目录应该存在;
          • 3.目录里面的原有文件会被暂时隐藏;
          • 4.挂载的设备没有被进程使用;
    • 挂载完成之后,需要通过挂载点访问对应系统上面的文件;
      • -a:表示挂载/etc/fstab里面的指定的所有的文件系统;
      • -n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存在/etc/mtab文件里面,-n表示不把信息写入这个文件;
      • -t FILETYPE:表示指定正在挂载设备上的文件系统的类型,不使用这个选项时,mount会调用blkid回去文件系统类型;
      • -r:表示挂载文件系统为只读,挂载光盘文件系统为次选项;
      • -w:表示挂载文件系统为写,一般情况下为读写挂载;
      • -o:表示用于指定额外的挂载选项,表示指定文件系统的额外属性;
        • async:表示异步写入磁盘,默认选项;
        • atime:表示更新改变时间戳,建议关闭;
        • auto:是否可以使用-a自动挂载;
        • default:表示在没有使用默认选项时,使用默认的选项自动挂载,
        • rw:表示权限
        • suid:属于特殊权限,在挂载时是否启用里面文件的SUID权限;
        • dev:是否启用这个文件系统上面存在的设备文件;
        • exec:运行这个文件系统上面具有可执行权限的文件执行,为了安全,U盘挂载时,需要是只读的,并且noexec;
        • nouser:
        • _netdev:在进行网络文件系统的挂载过程中,如果网络不通等情况,不进行阻塞;
        • owner:允许普通用户挂载文件系统;
        • remount:ro表示挂载为只读文件系统;
  • free -m 命令输出的解释:
    磁盘的相关知识
  • mem:表示内存使用情况
  • swap:表示交换分区使用情况;
  • buff:表示缓冲,缓冲是为了弥补存取数据存取速度差异的,通常用来存储元数据;
  • cache:表示缓存,缓存是用来存放经常使用的数据的,通常用来存储数据,通常用于加速查找;这两种数据都是可以清空的,清空以后可以根据指定的算法生成;
  • 为Linux添加交换分区
  • 虚拟内存: x86: 引入虚拟地址的概念,也就是线性地址;
  • CPU访问数据就是根据地址进行数据查找的,但是进程出现BUG时会覆盖其余进程的数据,每一个进程假设自己运行在4G的内存空间可用;最底端的空间是留给内核使用的,其余的留给应用程序,大多数进程空间是分页的,4k作为一个页框,应用程序使用的空间会被转换映射到页框里面,该功能是由操作系统实现的,不关心其他进程是否存在;当物理内存没有页框可用时,就需要借用硬盘的一块空间,操作系统会将其划分为页框,将不常用的数据转移到硬盘上的页框里面去,同时操作系统会将内部的映射表进行修改,再将其余数据挪出去,再将需要用的
    数据唤入内存,同时修改映射表,该过程称为唤进唤出;这样就可以实现内存的过载使用,可以作为应急使用。交换空间必须是一个独立的分区,称为swap分区,内存中数据进入硬
    盘称为 page out,page in:建议将 swap 分区放在最外层的磁道上,可以用于提高 swap 的性能;
  • 非特殊情况下是不建议使用交换分区的;
  • 1.新建分区
[root@localhost ~]# fdisk /dev/vdb
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
    p
Partition number (1-4): 2
First cylinder (2083-16644, default 2083): 
Using default value 2083
Last cylinder, +cylinders or +size{K,M,G} (2083-16644, default 16644): +1G
  • 2.调整分区类型
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)
  • 3.通知内核
[root@localhost ~]# partx /dev/vdb
  • 4.创建交换分区的格式化的命令:
[root@localhost ~]# mkswap /dev/vdb2
mkswap /dev/vdb2
-L :表示使用卷标;
  • 5.挂载交换分区
[aaa@qq.com ~]# swapon /dev/vdb2
swapon /dev/vdb2
    -a:表示启用所有的定义的在/etc/fstab里面的所有的交换设备;
swapoff /dev/vdb2   
  • 一种创建交换分区的特殊情况

    本地磁盘没有足够的分区使用,但是在某个已经挂载的分区里面存在足够的空间用来创建交换分区;

  • 1.Linux以及Windows支持本地回环设备,并且loopback支持实用软件的方式来创建本地回环设备模拟硬件实现;

  • 2.首先需要创建一个镜像文件,虚拟任意大小;
  • 首先介绍需要的几个命令
  • dd:
    • dd if=SRC of=DEST:
    • dd复制文件是按照底层的数据流进行复制的;
    • if=:数据来源;
    • of=:数据存储目标;
    • bs=:表示每一个块的大小;
    • count=:表示数量;
    • seek=:表示复制一次跳过多少个,创建的文件大小实际小于划定的大小;
  • 备份MBR:
    • dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1 ;
  • 恢复MBR :
    • dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
[aaa@qq.com ~]# dd if=/dev/zero of=/var/swap.file bs=M count=1024
[aaa@qq.com ~]# mkswap /var/swap.file -f
[aaa@qq.com ~]# swapon /var/swap.file
  • 上面的方法适用于救急,但是这样使用的性能差近

  • 解释一个配置文件

/etc/fstab文件:
#
# /etc/fstab
# Created by anaconda on Mon Dec 11 00:19:28 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=689ed409-fa9f-4720-af98-e924352b7103 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

172.25.23.250:/showmount1 /showmount             nfs     defaults       0 0
  • /etc/fstab:称为文件系统表,在这个表里面的文件系统,内核会自动分析这个表,并且将这里面的文件系统自动执行挂载操作;
  • 上面涉及的文件系统类类型tmpfs,devpts,sysfs,proc都是伪文件系统;
  • 解释上面各个字段的含义:
    • 第一个字段: 表示要挂载的设备,可以使用卷标,UUID,设备卷标,挂载设备路径等方式;
    • 第二个字段:表示挂载点,文件在本地的挂载位置,移动设备在/media/里面,通常在/mnt/里面新建目录,交换分区的挂载点就是 swap;
    • 第三个字段:表示文件系统类型,这个需要根据格式化的进行指定;
    • 第四个字段:表示挂载选项,默认为defaults,也就是mount -o支持的选项;
    • 第五个字段:表示转储频率,表示多少天对这个文件系统做一次完全备份,0表示不备份,1表示每天进行依次备份;
    • 第六个字段:文件系统检测顺序,一般来说只有gen需要先检查,其余的顺序可以自定义,0表示不检查;
    • 如果需要启用其他的挂载选项,只需要在defaults,acl隔开;
    • mount -a:表示用来挂载定义在/etc/fstab文件中定义的所有文件系统,挂载完成之后,会写入/etc/mtab;
    • mount -n:表示不写入/etc/mtab;
    • 如果挂载的目录,无法卸载,请确保自己不在这个目录里面,或者这个目录没有其他人正在使用,可以使用fuser -v /mountPoint
  • fuser:
    • identify processes using files or sockets
    • 验证进程正在使用的文件或者是套接字;
    • -v:表示查看某个文件正在运行的进程;
    • -k:表示结束正在访问这个文件的进程;
    • -i:表示询问正在访问这个文件的进程,是否可以进行退出操作;
    • -l:List all known signal names,表示列出所有支持的信号名称;
    • -m:表示对于一个挂载点,而不是一个文件上面的进程;
  • 两个命令:
    • du:可以用于显示文件所占有的文件大小;
      • -s:可以用于显示整个目录里面的文件占用的磁盘大小,包括目录本本身;
        磁盘的相关知识
    • df:用于显示整个磁盘分区的使用情况;
      磁盘的相关知识