Linux和Windows硬盘分区设置

现在的Linux都带了图形界面的分区工具,所以老的fdisk命令使用就不在这再写了。

一、系统引导过程简介

系统引导过程主要由以下几个步骤组成(以硬盘启动为例)
1、开机;
2、BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000;
3、将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;
4、检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;
5、跳转到0000:7c00处执行MBR中的程序;
6、MBR先将自己复制到0000:0600处,然后继续执行;
7、在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止;
8、将活动分区的第一个扇区读入内存地址0000:7c00处;
9、检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动;
10、跳转到0000:7c00处继续执行特定系统的启动程序;
11、启动系统.

以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成.
一 般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock.

注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同.

二、硬盘结构及参数
3D参数(Disk Geometry):

CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);

H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);

S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储).

1、引导扇区
Boot Sector组成
Boot Sector也就是硬盘的第一个扇区,它由MBR(Master Boot Record), DPT(Disk Partition Table)和Boot Record ID三部分组成.

MBR又称为主引导记录,占用Boot Sector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序).

DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息.主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信 息(因此最多可以有四个主分区).

Boot Record ID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志).

Boot Secor具体结构如图:

由于主分区表只有四个分区信息块,所以不管是Windows还是Linux,

一块硬盘上的主分区数目最多4个,如果要支持5个和以上的分区怎么办?

这种情况下引入1个扩展分区,使用这个扩展分区占用1个主分区表的项目,

这样最多是3个主分区加1个扩展分区。

这个扩展分区只是一个管理结构,它管理后面实际的众多逻辑分区。

一个磁盘的扩展分区只能有一个,并且只能是连续的磁盘空间。

它只是用于逻辑分区管理,扩展分区本身不能被系统加载。

能够加载的只有主分区和逻辑分区,文件和目录等也只能存储在主分区和逻辑分区内。

一个磁盘上所有的逻辑分区构成一个扩展分区。

Windows默认分区结构:

相应的Linux分区编号为:

以扩展分区方式管理多个逻辑分区,这在Windows和Linux下都一样。

Windows XP默认将C盘作为主分区,其他全部空间作为扩展分区,

在扩展分区里面建立各个逻辑分区,就是D:,E:,。。。。

这种方式比较无恼,也推荐这种方式来管理磁盘分区。

2、分区类型和分区规定
硬盘分区一共有三种:主分区,扩展分区和逻辑分区。
在一块硬盘上最多只能有四个主分区。您可以另外建立一个扩展分区来代替四个主分区的其中一个,然后在扩展分区下您可以建立更多的逻辑分区。
扩展分区只不过是逻辑分区的“容器”。实际上只有主分区和逻辑分区进行数据存储。

(1)Dos/Windows下的分区名称
在windows下操作系统使用的分区将用盘符来表示。A:和B:为软驱保留,其他应盘上的主分区和逻辑分区将从C:开始依次排列。(扩展分区没有任何盘符,而且是看不到的。在Windows下同样也看不到Linux分区)
如 果一台机器有很多的硬盘,光驱,软驱等,磁盘分区的命名将产生混乱。在这种情况下,第一块硬盘上的主分区和逻辑分区将首先得到命名盘符;然后是第二块,第 三块等等。比如您有三块硬盘,每一快硬盘上同时又有一个主分区和两个逻辑分区,那么第一块硬盘的命名将是C:,F:,G:,第二块为D:,H:,I:,第 三块为E:,J:,K:。
陌生文件系统的分区将不会被命名,在大多数程序里面(比如资源管理器)是看不到的。
右击我的电脑---->管理--->磁盘管理,可以看到陌生分区,但是Windows不能读取Linux分区。可以用 Ext2Read 软件来读取 ext2/ext3/ext4分区内容。
Ext2Read 2.2.71 绿色版:http://www.linuxidc.com/Linux/2010-10/29013.htm

(2)Linux 分区的规定
    1) 设备管理 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 或SATA 设备也不例外。
     Linux 把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 或SATA 设备,则分配了一个由 sd 前缀组成的文件。
     例如,第一个 IDE 设备,Linux 就定义为 hda;第二个 IDE 设备就定义为 hdb;下面以此类推。而 SCSI 或SATA设备就应该是 sda、sdb、sdc 等。
    2) linux分区数量
    要进行分区就必须针对每一个硬件设备进行操作,这就有可能是一块IDE硬盘或是一块SCSI或SATA硬盘。
    对于每一个硬盘(IDE 或 SCSI或SATA)设备,Linux 分配了一个 1 到 16 的序列号码,这就代表了这块硬盘上面的分区号码。
    例如,第一个 IDE 硬盘的第一个分区,在 Linux 下面映射的就是 hda1,第二个分区就称作是 hda2。对于 SCSI 或SATA硬盘则是 sda1、sdb1 等。
    3)linux各分区的作用
    在 Linux 中规定,每一个硬盘设备最多能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。
    对于早期的 DOS 和 Windows(Windows 2000 以前的版本),系统只承认一个主分区,可以通过在扩展分区上增加逻辑盘符(逻辑分区)的方法,进一步地细化分区。
    主分区的作用就是计算机用来进行启动 操作系统 的,因此每一个 操作系统 的启动,或者称作是引导程序,都应该存放在主分区上。
    这就是主分区和扩展分区及逻辑分区的最大区别。
    我们在指定安装引导 Linux 的 bootloader 的时候,都要指定在主分区上,就是最好的例证。
    Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。
    以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。
    因此,Linux 下面每一个硬盘总共最多有 16 个分区,其中扩展分区用于管理,不能加载,所以可加载的主分区、逻辑分区数是15个。

(老贴不详细,补充:在未使用 IDE 驱动器热插拔支持的系统上,IDE 驱动器最多支持 63 个分区。通过热插拔支持的 SCSI / SATA驱动器、USB 驱动器和 IDE 驱动器最多可有 15 个分区。剩下的1个是扩展分区编号。)

对于逻辑分区,Linux 规定它们必须建立在扩展分区上(在 DOS 和 Windows 系统上也是如此规定),而不是主分区上。
    因此,我们可以看到扩展分区能够提供更加灵活的分区模式,但不能用来作为 操作系统 的引导。 除去上面这些各种分区的差别,我们就可以简单地把它们一视同仁了。

三、关于硬盘分区划分标准及合理分区结构
1、硬盘分区划分标准

硬 盘的分区由主分区、扩展分区和逻辑分区组成;所以我们在对硬盘分区时要遵循这个标准;主分区(包括扩展分区)的最大个数是四个,主分区(包含扩展分区) 的个数硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程序(GRUB,LILO,NTLOARDER等)和分区表记录。其中扩展分区也算一个主分区;扩展分区下 可以包含更多的逻辑分区;所以主分区(包括扩展分区)范围是从1-4,逻辑分区是从5开始的;比如下面的例子(IDE硬盘):

通过这个例子,我们可以看到主分区有3个(包含扩展分区占位hda3),从 hda1-hda3 ,扩展分区管理的逻辑分区编号由 hda5-hda10 ;此硬盘没有主分区4,所以也没有显示主分区hda4 ;
但逻辑分区不可能从4开始,因为那是主分区的位置,明白了吧。

2、硬盘设备(包括移动存储设备)在Linux或者其它类Unix系统的表示

IDE 硬盘在Linux或者其它类Unix系统的一般表示为 hd* ,比如hda、hdb ... ... ,我们可以通过 fdisk -l 来查看;有时您可能只有一个硬盘,在操作系统中看到的却是 hdb ,这与硬盘的跳线有关;另外hdc 大多表示是光驱设备;如果您有两块硬盘,大多是 hda和hdb。在这方面说的太多也无用,还是以fdisk -l 为准为好; SCSI 和SATA 硬盘在Linux通常也是表示为 sd* ,比如 sda 、sdb ... ... 以fdisk -l 为准 移动存储设备在linux表示为 sd* ,比如 sda 、sdb ... ... 以fdisk -l 为准

3、合理的规划分区

关于一个磁盘的分区,一个磁盘应该有四个主分区,其中扩展也算一个主分区;存在以下情况:

(1)分区结构之一:
四个主分区,没有扩展分区;(不实用,不能扩展)

这种情况,如果您想在一个磁盘上划分五个以上分区,这样是行不通的; 如果已经分了四个主分区,
不使用扩展分区,那么如果该磁盘上还有自由空间,那么就会无法使用,如上图所示。
一般情况下,只应该使用下面(2)中的分区方式,如下面描述。
 
(2)最合理的的分区方式
最合理的分区结构:
主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区;
主分区的个数 + 扩展分区(1个)要控制在4个之内;
比如下面的分区是比较好的:
A.

扩展分区里面可以分很多个逻辑分区,上面画3个只是示意,一块磁盘的逻辑分区上限12个够用了。
除了3个主分区占据的空间,剩下的所有连续空间全部划归扩展分区。
上面的sda1,sda2,sda3,sda5,sda6,sda7 … 泛指各种格式分区的编号,
如EXT3、EXT4、SWAP、FAT32、NTFS,像sda1等只是Linux对分区的编号而已。
sda1可以是Windows的系统分区,也可以是Linux的系统分区,
sda5可以是EXT分区也可以是NTFS分区。

B.

扩展分区里面可以分很多个逻辑分区,上面画3个只是示意,一块磁盘的逻辑分区上限12个够用了。
除了2个主分区占据的空间,剩下的所有连续空间全部划归扩展分区。
上面的sda1,sda2,sda5,sda6,sda7 … 泛指各种格式分区的编号,
如EXT3、EXT4、SWAP、FAT32、NTFS,像sda1等只是Linux对分区的编号而已。
sda1可以是Windows的系统分区,也可以是Linux的系统分区,
sda5可以是EXT分区也可以是NTFS分区。

C.


扩展分区里面可以分很多个逻辑分区,上面画3个只是示意,一块磁盘的逻辑分区上限12个够用了。
除了1个主分区占据的空间,剩下的所有连续空间全部划归扩展分区。
上面的sda1,sda5,sda6,sda7 … 泛指各种格式分区的编号,
如EXT3、EXT4、SWAP、FAT32、NTFS,像sda1等只是Linux对分区的编号而已。
sda1可以是Windows的系统分区,也可以是Linux的系统分区,
sda5可以是EXT分区也可以是NTFS分区。

(3)最不合理的分区结构:
主分区包围扩展分区,比如下面的:

这样[主分区2]和[主分区4]之间的[扩展分区]是有自由度,但[主分区4]后的[空白未分区空间]怎么办?除非把主分区4完全利用扩展分区后的空间,否则您想在主分区4后再划一个分区是不可能的,划分逻辑分区更不可能;虽然类似此种办法也符合一个磁盘四个主分区的标准,但这样主分区包围扩展分区的分区方法实在不可取。

扩展分区管理的是连续的磁盘空间,在主分区4之后的自由空间是无法使用的,不能格式化为主分区,也不能归入扩展分区,这就是有些人划分过多主分区的后果——有自由空间而不能用。

我们根据这个标题,查看一下我们的例子,是不是符合这个标准呢?

4、典型的Linux和Windows分区例子
(1)单Windows系统分区例子

C、D、E、F一般都是NTFS格式的分区。
Windows系统分区C盘一般20GB以上空间。其他盘空间大小随意。

(2)单Linux系统分区例子

一般主分区sda1空间20GB以上,用于安装系统文件。
主分区一个就够了,其他空间可以全划分为扩展分区。
在扩展分区内部创建逻辑分区。

交换分区(相当于Windows系统的虚拟内存)一般为 1 至 2 倍内存大小,这个必须要有。
现在机器的内存较大,如4GB等,这时内存就够用了,
Linux很少用到交换分区,交换分区设置为和内存一样大就行了。

剩下的可以都格式化为一个EXT4分区,作为用户分区:/home 。
一般用户的音频、视频、文档等文件都存储在:/home/用户名/
这是普通用户使用Linux的典型分区,而服务器的按照其服务类型灵活分区,
一般用户用不到,这里不赘述了。

(3)在Windows系统基础上装Linux实现双系统
如果已经安装了Windows,典型分区如下:


在这基础上来装Linux,比如将F盘里面的东西全部复制后,清空F盘,准备安装Linux。
Linux可以直接装到扩展分区里面的逻辑分区,所以不用另外准备单独的主分区,C、D、E盘都不用动。

那么先将F盘逻辑分区删除掉,让它变成未使用的自由空间:

上图就是在Windows眼里的磁盘分区状况。

然后来安装Linux,一般安装Linux时,Linux会将以上分区按照自己的理解并命名为:
(这些命名将来会存储在Linux自己分区,而不会改变原来的Windows分区,Windows分区默认不动。)

Linux检测到一大块自由空间,它自己会根据自由空间和内存大小,自动生成推荐的分区,
如果自由磁盘空间大小是40GB,那么推荐的分区设置比如:


或者使用Linux自带的磁盘分区工具将自由空间划分成上面3个分区。
一个EXT4分区(上图中18GB,如果20GB以上更好)作为Linux系统分区 /  ;
一个SWAP分区(上图中2GB)作为交换方分区,和内存大小一样就行了;
剩下的划为一个EXT4分区(上图中20GB)作为用户目录 /home 。
一般Linux会自动检测Windows分区并自动加载,上面是openSUSE典型的加载Windows分区的状况。
以上分区方式和Linux安装分区设置对Windows系统分区是没有影响的。不会改变Windows分区。
双系统都可以正常使用。

5、Linux与Windows内存占用的区别
Linux与Windows不同,Windows不管内存够不够用,全部写磁盘,
无论运行多么小的程序,都会使用虚拟内存,所以很费硬盘。
Linux优先使用内存,运行程序时如果内存没用完,那么只使用内存,而不使用交换分区(虚拟内存),
有些Linux跑起来看着很占用内存,但是它一丁点虚拟内存都没用,基本不写入磁盘,
所以使用Linux是对硬盘的极佳保护。

对于Windows而言,如果它的内存快用完了,就代表它快不行了,因为好几GB的磁盘空间正作为
虚拟内存在不停地写来写去,很容易折耗硬盘。
而对Linux而言,内存快用完了,代表它的内存利用率已经到达最大化,这才刚热身而已,
内存利用完了,才会使用交换分区来缓存运行中的程序的内容。

所以不要拿Linux占用多少内存 与 Windows占用多少内存相提并论。比如系统总共有2GB内存,
Windows占用1GB内存,意味着它还在不停地写入虚拟内存,加上磁盘上虚拟内存的,
其真实使用量很可能是2GB以上 。
而linux占用1GB内存,那就是1GB,一分不多,一分不少。在内存没用完的情况下,
Linux压根不用虚拟内存(交换分区),所以一般用户长年看到Linux的交换分区使用率为零。
如下图:

所以使用Linux,完全不用看它用了多大内存。
内存就用来占用的,留着不用又不能当饭吃,不用白不用。
而windows的逻辑是,内存无限大它也要使用虚拟内存存储程序内容,
硬盘使劲写,写坏了是用户买硬盘,反正不用微软付钱,它无所谓。

希望以后别再出现抱怨Windows开机占用500MB内存而Linux开机占用800MB的事情了,
越这样抱怨,越说明自己无知而已。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

阅读(1558) | 评论(0) | 转发(0) |

0

上一篇:Oracle DBWn(DBWR)写数据文件

下一篇:英国物理学家冷嘲中微子超光速发现

给主人留下些什么吧!~~
评论热议

Linux和Windows硬盘分区设置相关推荐

  1. linux双系统内存分配,Linux和Windows硬盘分区设置(二)

    三.关于硬盘分区划分标准及合理分区结构 1.硬盘分区划分标准 硬盘的分区由主分区.扩展分区和逻辑分区组成:所以我们在对硬盘分区时要遵循这个标准:主分区(包括扩展分区)的最大个数是四个,主分区(包含扩展 ...

  2. 如何查看linux的分区类型,linux 下查看硬盘分区类型

    可以用  df 这个命令 具体 要 man df  仔细看看 实例 [root@localhost mnt]# df -Th 文件系统    类型      容量  已用  可用 已用% 挂载点 /d ...

  3. 认识Linux下的硬盘分区

    认识Linux下的硬盘分区 一.认识硬盘和分区 硬盘是计算机最常见的存储设备. 操作系统读取操作硬盘数据是根据一定的规则和格式进行的,这是硬盘分区格式化的最根本原因. 在操作系统下正常工作的硬盘,都有 ...

  4. 安装Ubuntu Linux系统时硬盘分区最合理的方法

    无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在装 ...

  5. 设置linux引导windows,linux与windows双引导设置【原创】

    最近看到很多朋友问如何实现linux 与 windows 双引导,usen在此向大家介绍一下我的方法,以供大 家参考学习.如你看了,有疑问或使用时有问题,请留言. 关于linux 与windows 双 ...

  6. linux进入windows磁盘,Linux与Windows硬盘资源互访

    目前,个人电脑用户中许多人都使用Windows系统,但也安装了Linux系统,因此如何在Linux或Windows中实现硬盘资源互访就显得非常重要. Linux下访问Windows硬盘分区 在Red ...

  7. 虚拟服务器英文版设置,apache配置(linux及windows中的设置)以及虚拟主机的设置(国外英语资料).doc...

    apache配置(linux及windows中的设置)以及虚拟主机的设置(国外英语资料) apache配置(linux及windows中的设置)以及虚拟主机的设置 Syllabus Apache in ...

  8. Filezilla搭建Linux与Windows文件传输设置

    Filezilla搭建Linux与Windows文件传输设置 1.基本思路 2.linux虚拟机设置 2.windows下载安装FTP软件filezilla 1.基本思路 下载资源在windos下比较 ...

  9. linux添加硬盘分区设置柱面,linux 下添加新硬盘设备和硬盘分区格式化挂载使用磁盘配额限制...

    磁盘管理 1.查看硬盘设备信息 fdisk -l 2.磁盘分区.格式化.挂载使用 1).查看硬盘信息:fdisk -l [root@localhost ~]# fdisk -l Disk /dev/s ...

最新文章

  1. SAP QM 激活01检验类型的前提下无Vendor CoA则不允许收货过账
  2. Strategy模式与Delegate委托
  3. Spring 3.2 @ControllerAdvice批注的异常处理
  4. 立根融资租赁:内部系统平台上云
  5. java虚拟机_深入浅出Java虚拟机,从来没有人能把Java 虚拟机讲解的这么透彻
  6. mysql 类似plsql 软件_推荐一款PG数据库管理工具——pgadmin,一款类似PLSQL的工具...
  7. 浅谈C#中的枚举 【转自http://www.cnblogs.com/liyingyi/archive/2005/12/28/306772.html】
  8. 算法 Tricks(五)—— 二进制逻辑运算
  9. Kubernetes 搭建 Kafka 和 Zookeeper 集群(完整教程)
  10. vmware 官方下载
  11. 强人工智能和弱人工智能
  12. 干货!mysql初始密码
  13. EXCEL数据有效性的多级联动
  14. 复权、前复权和后复权
  15. android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
  16. NGINX源码之:ngx_hash
  17. #深入理解# 机器学习中误差和残差的区别
  18. NVMe到底是什么?用它的SSD有啥优势?
  19. 华为云冰山安全,让用户安心用云
  20. axure android尺寸,移动应用界面设计的尺寸设置及规范

热门文章

  1. Flutter配置镜像
  2. 太阳能MPPT充电控制板
  3. Neo4j使用方法总结
  4. SAP发票校验容差的理解
  5. java实现实体关系抽取
  6. Altium Designer导出Gerber文件的一般步骤
  7. 如何做Code Review——读后感
  8. HTML 基本选择器
  9. AUPRC Vs 平均查准率
  10. 4-HDFS API