- 磁盘相关知识
- 磁盘多为双面可读写,用于增大存储范围。磁盘振动容易发生磁盘损坏,导致磁盘坏道出现,磁盘被划分为磁道,也就是一个一个的同心圆磁道的周长不一样的,磁道上的存储空间被划分为扇区
(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.根据配置查找文件系统,找到需要运行的程序,完成系统的启动;
- 1.
磁盘分区
- 磁盘分区是按照柱面进行分区的,因为磁盘的数据读取是按照柱面同时进行读取的,
磁盘在进行数据读取时,需要进行磁道寻道,这样会浪费时间,笔记本磁盘时间一般是5400
,
台式机一般是7200
,工业级别的磁盘一般是10K
以上的转速,磁盘的最外面的扇区的转速
是最快的,性能也是最好,所以频繁访问的数据是会被放在最外扇区的,所以操作系统一
般都放在C
盘; - 磁盘的文件存储
文件的存储是依赖于文件系统的,文件系统是一个数据管理软件文件系统上面的是数
据在磁盘上的。文件系统将磁盘分为index
,inode(索引节点)
,元数据信息,inode 位图
,块位图等;- 每一个
index node
在全局都有一个为一个编号,iNode
用于表示文件本身的相关信息包括:文件权限,属主和属组,时间戳,大小以及存储在那些磁盘块等信息,但是不存储文件名,inode
可以通过直接,间接,一级间接、二级间接、三级间接等方式用于大数据文件的存储,这些inode
的指向方式决定了一次存储数据文件的的最大大小;例如FAT32
理论上支持最大4G
的单个文件存储; - 目录也是一个文件,文件名是保存在目录里面的,保存文件名的条目称为目录项;目录的本质是一个文件路径映射表文件的查找过程:
- 例如查找
/var/log/messages
:
- 1.内核通过自检找到根的位置,跟这个目录连保存有 var 目录的 inode 节点号;
- 2.查找到
var
的inode
号码后,再去查找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.找到根对应的存储实际数据的磁盘块,根据对应的表,查找到
var
的inode
信息; - 3.然后在查找
inode
索引表,找到对应的var
的磁盘块,查找inode_filename
对应的表,找到log
对应的inode
; - 4.根据
log
对应的inode
号码,找到log
对应的磁盘块; - 5.查找到
messages
对应的inode
号码,去查找对应的磁盘块;
- 1.首先查找根,根是自引用的,文件系统必须确保能够查找到
- 新建立文件的过程
/backup/test.txt
:大约由10kb
的数据需要保存,每一个磁盘块为2kb
;- 1.首先确认
/backup
目录是存在的; - 2.然后扫描
inode_map
,申请一个新的inode
号码; - 3.查找目录对应
inode
,并且找到对应的磁盘块; - 4.在表里面新建立
inode_file
里面新建立条目; - 5.查找
bitmap
位图查找空闲的磁盘块,一次划分的可能多余实际需要的,是为了防止文件碎片的;
- 删除文件的过程:
- 1.找到对应目录里面的条目,删除条目,回收
Inode
; - 2.重新标记
Bit_map
为未使用;
- 1.找到对应目录里面的条目,删除条目,回收
- 复制与剪切文件的过程:
- 文件复制为什么慢:文件复制目录项以及文件内容都需要更改;
- 文件剪切快速:剪切只是目录项的新建立;
- 关于分区的知识补充:
- 1.首先将磁盘划分称为不同的块组
(block_group)
; - 2.使用超级块来保存块组信息(一共有多少个块组,使用情况);
- 1.首先将磁盘划分称为不同的块组
- 关于链接文件:
- 硬连接:
/back/m/a.txt
指向同一个Inode
节点的不同目录(访问路径)称为硬链接;硬链接次数小于2
时,被删除,文件就会消失;
- 1.只能够对于文件创建,不能够对于目录进行创建,这是为了循环链接路径的出现但是目录的链接次数是2,因为
.
指向当前目录; - 2.硬链接是不能够跨文件系统创建的;
- 3.创建硬链接会增加文件被链接的次数;
- 1.只能够对于文件创建,不能够对于目录进行创建,这是为了循环链接路径的出现但是目录的链接次数是2,因为
- 符号链接:
- 在访问某个路径信息,查找到对应的磁盘块信息后,得到的内容是另一个路径的链接,还需要通过链接区访问的到具体的磁盘信息;
- 软链接文件的大小是存储链接字符的个数,软链接的权限是
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
号分区; - 关于文件的系统格式化的信息:
- 解释关于文件系统格式化过程中的某些信息
[root@localhost ~]# 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,2048
或4096
;-L LABLE
:用于指定卷标;-m #
:预留给超级用户管理元的空间大小;-I #
:用于指定多少个Block
指定一个Inode
,这个指定为block
数值,inode
应该大于Block
,:制定自己字节inode
与block
的比率,一般为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.挂载交换分区
[root@localhost ~]# swapon /dev/vdb2
swapon /dev/vdb2
-a:表示启用所有的定义的在/etc/fstab里面的所有的交换设备;
swapoff /dev/vdb2
一种创建交换分区的特殊情况
本地磁盘没有足够的分区使用,但是在某个已经挂载的分区里面存在足够的空间用来创建交换分区;
1.
Linux
以及Window
s支持本地回环设备,并且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
[root@localhost ~]# dd if=/dev/zero of=/var/swap.file bs=M count=1024
[root@localhost ~]# mkswap /var/swap.file -f
[root@localhost ~]# 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
:用于显示整个磁盘分区的使用情况;