正在从新装载虚拟机,碰到磁盘分区一阵头大,花了一下午对分区的基本原理做了一个梳理
 
一、磁盘
 
硬盘内部结构:
磁盘:由盘片、机械手臂、磁头、主轴马达组成,而数据的写入主要是在盘片上面,盘片上又细分为扇区与柱面两种单位,扇区每个为512bytes那么大  。
 
其中,磁盘的第一个扇区特别重要。
MBR(Master Boot Record)主引导记录扇区:使用位于磁盘的0号扇区(一扇区等于512bytes),来表示整个磁盘的整体分区情况,整个0号扇区:由引导代码、MBR分区表、MBR结束标志3部分构成,一共占用512个bytes。其中引导代码占用446bytes,MBR分区表占用64bytes,MBR结束标志占用2bytes,MBR扇区一共占用512bytes。
1、引导代码:占MBR分区的前446bytes,负责整个系统的启动。如果引导代码被破坏,系统将无法启动
2、分区表:占引导代码后面的64bytes,是整个硬盘的分区表。每个分区使用的字节为16个,所以这确定了MBR分区方式最多只有4个主分区(包含扩展分区在内)。
3、MBR结束标志:占用最后2个字节,一直为"55AA".
 
磁道:上图中硬盘被一圈圈分成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操作系统中,是先将物理地址分开,再在分区上建立目录.在Windows操作系统中,所有路径都是从盘符开始,如C://program file。
  • Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为3个分区,分别是boot分区、swap分区和根分区。
无论是Windows操作系统,还是Linux操作系统,每个分区均可以有不同的文件系统,如FAT32、NTFS、Yaffs2等。
 
为什么要分区
  1. 防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。
  2. 增加磁盘空间使用效率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。
  3. 数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。
 
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,只存放系统相关文件,网站业务数据不放在这里。
剩余空间保留,不再进行分区,将来分配给部门,由他们自己根据需求再分~
提示:此种分区方案更灵活,比较适合业务线比较多需求不确定的大企业使用
 
请注意以下信息:
  1. 其实所谓的”分区”只是针对那个64bytes的分区表进行设置而已。
  2. 硬盘默认的分区表仅能写入四组分区信息。
  3. 这四组分区信息我们称为主(Primary)和扩展(Extended)分区。
  4. 分区的最小单位为柱面(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.Linux 分区简介 1.1 主分区 vs 扩展分区 硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extend ...

  2. Linux 磁盘的分区

    如果我们想在系统中新增一块硬盘,需要做什么呢? 1. 对磁盘进行分区,新建可用分区 2. 对该分区进行格式化,以创建系统可用的文件系统 3. 若想要仔细一点,可以对刚才新建好的文件系统进行检验 4. ...

  3. Linux 磁盘、分区、文件系统、挂载

    磁盘 Linux所有设备都被抽象成为一个文件,保存在/dev目录下. 设备名称一般为hd[a-z]或sd[a-z].如果电脑中有多硬盘,则设备名依次为sda.adb.sdc...以此类推 IDE设备的 ...

  4. 7.linux磁盘管理 分区 建立文件系统 挂载使用

    一.磁盘管理 分区  建立文件系统  挂载使用   逻辑卷建立  磁盘阵列的建立  磁盘配额设定     fdisk -l       查看磁盘信息     df -Th        查看硬盘对应的 ...

  5. linux磁盘之分区类型id

    我们通过命令来查看一下linux系统定义的分区类型id及其意义(更改磁盘分区类型必须掌握)系统采样: [root@fp-web-130 ~]# cat /etc/redhat-release Cent ...

  6. Linux 磁盘挂载分区

    举例说明: 新增磁盘的设备文件名为 /dev/vdb 大小为100GB. #fdisk -l 查看新增的的磁盘 1.对新增磁盘进行分区 #fdisk /dev/vdb 按提示操作 p打印 n新增 d ...

  7. 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)

    0. 背景: inux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻 ...

  8. Linux磁盘及分区之wwid和uuid

    背景描述,在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN存储LUN操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况. 例如之前添加的SAN存储LUN的磁盘标识符为/dev/sd ...

  9. LINUX 磁盘如何分区

    fdisk -l  可以查看当前磁盘 假设未分配磁盘为/dev/sdb    size=10G fdisk /dev/sdb  (m for help) 按照提示应该可以分区成功,注意一点   一个磁 ...

随机推荐

  1. HLS(HTTP Live Streaming)学习和探讨

    Introduction HTTP Live Streaming lets you send audio and video over HTTP from an ordinary web server ...

  2. 请求通道在等待 00:00:58.9616639 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。

    异常信息:请求通道在等待 00:00:58.9616639 以后答复时超时.增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值.分配给此操作的时间可能是更长超时的一部分. 开发背 ...

  3. storm(二)消息的可靠处理

    storm 通过 trident保证了对消息提供不同的级别.beast effort,at least once, exactly once. 一个tuple 从spout流出,可能会导致大量的tup ...

  4. DataTable,DataView 排序和使用

    我们都知道在Sql Server可以用order by来排序,所以很多朋友在DataTable中排序也想到了用order by关键字.但这样实现是比较困难的,下面,我们讲解一种比较简单的方法: 控制台 ...

  5. EF CodeFirst数据迁移与防数据库删除

    1 开启migrations功能 enable-migrations -force 2 添加迁移版本 add-migration 名称后缀 我们每次修改实体后,都应该使用这个add-migration ...

  6. QString之simplified()用于读取数据、规范数据,非常方便

    在工程项目开发中,遇到这么个问题:手工计入文件中的数据,每行有三个,前两个是数字,最后一个是标识,现在把这3个数据提取出来. 一提取就出现问题了:由于手工导入,数据间使用空白间隔,有可能是一个空格,有 ...

  7. 记一次排查tomcat耗费CPU过高的经历

    有一个新项目,在测试环境部署后,发现tomcat进程耗费的CPU非常高,排查过程如下: 日志搜集 先通过top,查找耗费CPU最高的线程 top -Hp pid 将线程ID转为16进制 printf ...

  8. Ubuntu14.04 静态编译安装Qt4.8.6

    ./configure -static -nomake demos -nomake examples -nomake tools -no-exceptions -prefix /usr/local/Q ...

  9. Delphi中inherited问题

    inherited Create(AOwner); 和直接写inherited有区别吗 有区别,inherited Create是指定调用父类的Create方法,当然你也可以inherited Des ...

  10. 海康威视频监控设备Web查看系统(三):Web篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK以为的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...