MBR(Master Boot Record)主引导记录扇区:使用位于磁盘的0号扇区(一扇区等于512bytes),来表示整个磁盘的整体分区情况,整个0号扇区:由引导代码、MBR分区表、MBR结束标志3部分构成,一共占用512个bytes。其中引导代码占用446bytes,MBR分区表占用64bytes,MBR结束标志占用2bytes,MBR扇区一共占用512bytes。
3、MBR结束标志:占用最后2个字节,一直为"55AA".
.png)
磁道:上图中硬盘被一圈圈分成18等分的同心圆,这些同心圆就是磁道,但打开硬盘,用户不能看到这些,它实际上是被磁头磁化的同心圆.这些磁道是有间隔的,因为磁化单元太近会产生干扰。
扇区:每个磁道中被分成若干等份的区域,扇区是硬盘数据存储的最小单位。
柱面:假如一个硬盘只有上图中的3个磁盘片,每一片中的磁道数是相等的.从外圈开始,这些磁道被分成了0磁道、1磁道、2磁道...具有相同磁道编号的同心圆组成面就称作柱面.为了便于理解,柱面可以看作没有底的铁 桶.从上图可以看出,柱面数就是磁盘上的磁道数,柱面是硬盘分区的最小单位。因此,一个硬盘的容量=柱面*磁头*扇区*512。
簇:扇区是硬盘数据存储的最小单位,但操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32、64个扇区。
磁盘连接的方式
主流的磁盘接口为SATA接口。
SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。顺序需要根据Linux内核检测到磁盘的顺序来决定。
比如PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有6个SATA的插槽。这两个SATA磁盘分别安插在转的SATA1 SATA5接口上,那么
1.SATA1插槽上的文件名 /dev/sda
2.SATA2插槽上的文件名 /dev/sdb
3.USB磁盘(开机完成后才被系统识别) /dev/sdc
二、分区
无论是Windows操作系统,还是Linux操作系统,每个分区均可以有不同的文件系统,如FAT32、NTFS、Yaffs2等。
为什么要分区
防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。
增加磁盘空间使用效率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。
数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。
Linux系统默认分区
boot分区
该分区对应于/boot目录,约100MB.该分区存放Linux的Grub(bootloader)和内核源码。用户可通过访问/boot目录来访问该分区.换句话说,用户对/boot目录的操作就是操作该分区。(一般由本机MBR与硬盘MBR共同组成)
swap分区
该分区没有对应的目录,故用户无法访问。
Linux下的swap分区即为虚拟内存.虚拟内存用于当系统内存空间不足时,先将临时数据存放在swap分区,等待一段时间后,然后再将数据调入到内存中执行.所以说,虚拟内存只是暂时存放数据,在该空间内并没有执行。所以,swap分区只能由系统访问,其大小为物理内存的2倍。
/ 根分区
在Linux操作系统中,除/boot目录外的其它所有目录都对应于该分区.因此,用户可通过访问除/boot目录外的其它所有目录来访问该分区。
Linux系统分区的基本要求
1、至少要有一个根(/)分区,用来存放系统文件及程序。其大小至少在5GB以上。
2、要有一个swap(交换)分区,它的作用相当于Windows里的虚拟内存,swap分区的大小一般为物理内存容量的1.5倍(内存<8G)。但当系统物理内存大于8GB时,swap分区配置8-16GB即可,太大无用,浪费磁盘空间。swap分区不是必须的,但是大多数情况还是设置比较好,个别企业的数据库应用场景不分swap。
3、/boot分区,这是Linux系统的引导分区,用于存放系统引导文件,如Linux内核等。所有文件的总大小一般只有几十MB,并且以后也不会增大太多。因此,该分区可以设置位100~200MB,这个分区也不是必须的。
Linux系统推荐分区方案
方案1:网站集群架构中的某个节点服务器,即数据有多份或者数据不重要的服务器,建议的分区方案如下:
/boot:设置位100~200MB。
/swap:物理内存的1.5倍,当内存大于等于8GB时,给8-16GB即可
/:剩余硬盘空间大小(/usr,/home,/var等分区和/共用一份分区,这相当于在Windows系统中的C盘一样,所有数据和系统文件都放在了一起)
方案2:数据库及存储角色的服务器,即有大量重要数据的业务,建议分区方案如下:
/boot:设置为100~200MB。
/:大小设置为50~200GB,只存放系统相关文件,网站业务数据不放在这里。
/data:剩余硬盘空间大小,放数据库及存储重要数据的,data的名称也可以起别的名字。
提示:本方案其实就是把重要数据单独分区,便于备份和管理
方案3:大网站或门户级别企业的分区思路
/boot:设置为100MB
swap:物理内存的1.5倍,当内存大于等于8GB时,给8-16GB即可
/:大小设置为50~200GB,只存放系统相关文件,网站业务数据不放在这里。
剩余空间保留,不再进行分区,将来分配给部门,由他们自己根据需求再分~
提示:此种分区方案更灵活,比较适合业务线比较多需求不确定的大企业使用
请注意以下信息:
其实所谓的”分区”只是针对那个64bytes的分区表进行设置而已。
硬盘默认的分区表仅能写入四组分区信息。
这四组分区信息我们称为主(Primary)和扩展(Extended)分区。
分区的最小单位为柱面(cylinder)。
三、Linux系统分区命令
fdisk
查看硬盘分区信息
划分磁盘成为若干个区
为每个分区指定分区的文件系统
fdisk -l 查看硬盘及分区信息
fdisk -l /dev/sda 查看特定分区信息
dev/sdX 这一类的设备是指硬盘物理卷,只要装在了系统里就会显示的。
/dev/mapper/XXX 这一类是逻辑卷,逻辑卷跟物理卷不同,一个逻辑卷可以横跨N多块硬盘,且可以实时增大缩小其空间,这种灵活度已经超出了sdX这样单块硬盘的能力了。
逻辑卷是基于物理卷上的,所有的逻辑盘的大小加起来小于等于设备内装的硬盘的大小。
fdisk /dev/sda 修改磁盘分区
知识点扩展
挂载点
利用一个目录当成进入点, 将磁盘分区的数据放置在该目录下。也就是说,进入该目录就可以读取该分区的意思。
这个操作称为 “挂载”,那个进入点的目录称为 挂载点 。
根目录一定需要挂载到某个分区。
虚拟内存
虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入分页文件可释放RAM,以便完成工作。 一般而言,计算机的RAM容量越大,程序运行得越快。若计算机的速率由于RAM可用空间匮乏而减缓,则可尝试通过增加虚拟内存来进行补偿。
主分区、扩展分区、逻辑分区
一个硬盘主分区至少有1个,最多4个;
扩展分区可以没有,最多1个;
主分区+扩展分区总共不能超过4个。
主分区也叫引导分区,Windows系统一般需要安装在这个主分区中,这样才能保证开机自动进入系统。简单来说,主分区就是可以引导电脑开机读取文件的一个磁盘分区,一块硬盘,最多可以同时创建4个主分区,当创建完四个主分区后,就无法再创建扩展分区和逻辑分区了(占用了所有硬盘空间)。此外,主分区是相互独立的,一般对应磁盘上的第一个分区,目前绝大多数电脑,在分区的时候,一般都是将C盘分成主分区。
分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,剩下的部分就浪费了。
扩展分区不能直接使用,必须分成若干逻辑分区。所有的逻辑分区都是扩展分区的一部分。一般情况下,windows系统中的D、F等盘就是逻辑分区,也属于扩展分区。
硬盘的容量=主分区的容量+扩展分区的容量;扩展分区的容量=各个逻辑分区的容量之和+未分完的容量。
LVM逻辑卷管理(Logical Volume Manager)
LVM的做法是将几个物理的分区(或磁盘)通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分成可使用分区(LV),最终就能够挂载使用。
物理卷:实际的物理分区
卷组:物理分区的集合
逻辑卷:从卷组中划分出的虚拟分
- linux磁盘及分区详解
1.Linux 分区简介 1.1 主分区 vs 扩展分区 硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extend ...
- Linux 磁盘的分区
如果我们想在系统中新增一块硬盘,需要做什么呢? 1. 对磁盘进行分区,新建可用分区 2. 对该分区进行格式化,以创建系统可用的文件系统 3. 若想要仔细一点,可以对刚才新建好的文件系统进行检验 4. ...
- Linux 磁盘、分区、文件系统、挂载
磁盘 Linux所有设备都被抽象成为一个文件,保存在/dev目录下. 设备名称一般为hd[a-z]或sd[a-z].如果电脑中有多硬盘,则设备名依次为sda.adb.sdc...以此类推 IDE设备的 ...
- 7.linux磁盘管理 分区 建立文件系统 挂载使用
一.磁盘管理 分区 建立文件系统 挂载使用 逻辑卷建立 磁盘阵列的建立 磁盘配额设定 fdisk -l 查看磁盘信息 df -Th 查看硬盘对应的 ...
- linux磁盘之分区类型id
我们通过命令来查看一下linux系统定义的分区类型id及其意义(更改磁盘分区类型必须掌握)系统采样: [root@fp-web-130 ~]# cat /etc/redhat-release Cent ...
- Linux 磁盘挂载分区
举例说明: 新增磁盘的设备文件名为 /dev/vdb 大小为100GB. #fdisk -l 查看新增的的磁盘 1.对新增磁盘进行分区 #fdisk /dev/vdb 按提示操作 p打印 n新增 d ...
- 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
0. 背景: inux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻 ...
- Linux磁盘及分区之wwid和uuid
背景描述,在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN存储LUN操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况. 例如之前添加的SAN存储LUN的磁盘标识符为/dev/sd ...
- LINUX 磁盘如何分区
fdisk -l 可以查看当前磁盘 假设未分配磁盘为/dev/sdb size=10G fdisk /dev/sdb (m for help) 按照提示应该可以分区成功,注意一点 一个磁 ...
随机推荐
- 无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)
简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此, ...
- delphi读取ini文件
ini文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如vb.vc.vfp.delphi等都提供了读写ini文件的方法,其中delphi中操作ini文件,最为简洁, ...
- JavaScript语言核心--词法结构
编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语言之间如何分隔等规则. 1. 字符集 JavaScript程 ...
- Java的Qt绑定 jambi
大二在学java,所以有时会写点java的小程序,可是习惯了qt的界面,使用AWT和swing让我有些不适,后来发现了jambi,才知道原来早就有了java的绑定版,所以迫不及待的安装了上. ...
- <iOS 导航栏>第一节:导航栏透明方法实现代码
说下导航栏的透明方法: 很多应用需要导航栏随着向上滑动,逐渐从透明变成不透明,很炫酷,大部分应用都在使用导航栏渐变效果,现附上代码然后直接将实现,一会讲下如何来实现,这一部分直接上代码. ...
- 多进程demo
多进程实现DOS重定向输出,界面如下: 主要的代码实现如下: #define MAXREADBUFFERLEN (60 * 1000) void CRedirectDlg::OnBnClickedBu ...
- c++类运算符重载遇到的函数形参问题
class A { public: A(int arg1, int arg2); ~A(); A &operator = ( A &other); A operator + ( A & ...
- 设计模式之单例模式的几种写法——java
对于设计模式的使用场景和好处,之前有介绍一篇,今天主要是单例模式的编写方式,直接看代码吧 单例模式之饿汉模式,不会懒加载.线程安全 /** * @Author wangtao * @Descripti ...
- net开发框架never
[一] 摘要 never是纯c#语言开发的一个框架,同时可在netcore下运行. 该框架github地址:https://github.com/shelldudu/never 同时,配合never_ ...
- MySQL优化(一)
MySQL数据库优化一之引索详解 对于网站优化最注重的就是数据库的优化,而在数据库优化中首先考虑到的应该是数据库索引是否建立于是否建立的正确. 1.对于刚刚接触数据库的程序员,对于引索不是很理解.下面 ...