主机规划与磁盘分区
主机规划与磁盘分区
/*再说一遍,每个组件或者设备在Linux下都是文件。
/*计算机的配置问题://(注释里的是桌面级的最低配置)
-*CPU:只要不宕机就行,目前i3也没问题//(I5或者i7)
-*内存:越大越好,至少512MB以上,如果使用X - window 最好1GB以上//(1GB以上)
-*硬盘:20GB就够了,但是如果你是用来做备份或者企业的文件服务器,可以考虑使用高级的磁盘阵列(RAID)模式//(60GB以上)
-*显卡:一般没有太大的要求,使用X- window显存至少32MB以上//(256MB以上)
-*网卡:看情况。//(普通的以太网卡即可)
-*光盘,鼠标,键盘和软盘:如果不需要就统统不要了。
/*硬件在Linux中的文件名:
*几乎所有的硬件问价名都在/dev这个目录里
-*SCSI,SATA,USB设备:/dev/sd[a-p]
-*U盘:/dev/sd[a-p]
-*Virtio接口:/dev/vd[a-p](用于虚拟机内)
-*软盘驱动器:/dev/fd[0-7]
-*打印机:/dev/lp[0-2](25针打印机) /dev/usb/lp[0-15](USB接口)
-*鼠标:/dev/mouse(当前鼠标) /dev/input/mouse[0-15](通用) /dev/psaux(PS/2接口)
-*CD-ROM、DVD-ROM:/dev/scd[0-1](通用) /dev/sr[0-1](通用,centos常见) /dev/cdrom(当前cd-rom)
-*磁带机:/dev/ht0(IDE接口) /dev/st0(SATA,SCSI接口 ) /dev/tape(当前磁带)
-*IDE磁盘驱动器:/dev/hd[a-d](旧式系统才有)
*IDE接口的磁盘驱动器几乎已经被淘汰了,因此现在IDE接口的磁盘文件现在都被模拟为/dev/sd[a-p],如果使用的是互联万提供商(ISP)提供的云端机器,因为是虚拟机,磁盘是模拟出来的,为了加速,磁盘文件名可能是/dev/vd[a-p]
/*磁盘分区
**磁盘分区的意义:
(1)数据的安全性:比如我的C盘和D盘,我想重装系统盘,只需重装C盘,D盘就是安全的
(2)系统的性能考虑:如果数据集中在某些连续柱面区段,便于读取啊。
**先谈磁盘的连接方式和叫什么(设备文件名):
-*个人计算机常用的磁盘接口有SATA和SAS,主流的是SATA,大部分发行版都将老的IDE模拟成和SATA一致的,也就是/dev/sd[a-p],还记得虚拟那档子事吗?为了加速,用的是/dev/vd[a-p]。
-*至于a-p是Linux检测到磁盘的顺序来命名的,比如:
主板上有六个SATA插槽,顺序是1-6,两个SATA磁盘插在插槽1和5上,另一个USB磁盘接到主机上,那么插槽1上的是/dev/sda,插槽5是/dev/sdb,USB设备是系统启动后才识别的,所以它是最慢的也就是/dev/sdc啦
**磁盘的重要信息在哪里?磁盘上每一个扇区都是同等重要的吗?磁盘上每个扇区都能格式化存储文件吗?
早期整块磁盘的第一个扇区特别重要,上面存储了整块磁盘的重要信息,这种存储称为MBR(master boot record);
后来又多了一种新的磁盘分区格式GPT(guid partition table),使用的扇区不同于MBR格式。
主要分区和逻辑分区可以格式化。扩展分区无法格式化,因为扩展分区是借助逻辑分区对磁盘进行划分的。
**磁盘如何分区?
*MBR格式:(旧的格式)不能超过2TB
-*第一扇区里存的是什么?
早期的扇区512B,第一个扇区分两部分,一个是主引导记录(master boot record)446B ,一个是分区表(partition table)64B。
-*分区表存的是是什么?作用是什么?
分区表只有64字节,只能有四组记录区,每组记录区记录该区段的起始柱面和结束柱面(通常柱面为分区的最小单位)。其实所谓的分区也就是对分区表进行设置。系统向磁盘写入数据的时候一定会参考磁盘分区表。
作用就是划分整个磁盘的空间。
-*因为四组记录区,每组记录一组起始和终止信息就完了,也就是顶多分四个区,如果我想分的区大于四个怎么办?(主要分区和扩展分区之和最多可以有四个,扩展分区最多有一个,当然扩展分区不是必要的)参见下面的示例,扩展分区的目的是使用额外的分区来记录分区信息。
1)分区类别又可以分成主要分区(primary)和扩展分区(entended),默认1-4这几个代号是给主要分区的。扩展分区就是用额外的扇区来记录分区信息,划分出一定的柱面区间是使用额外的分区表来划分分区的。在额外的分区表上记录新的分区的柱面区间,我们称之为逻辑分区(logical partition)实际上这些新的或者说额外的分区表分布在新的逻辑分区之前。至于为什么叫做逻辑分区,也许意思就是这些新增的扇区是我们通过逻辑思考增加的,哈哈。
2)强调逻辑分区是对扩展扇区的持续分组。实际存储分组信息的是逻辑分组而非扩展分区。
**几个有趣的问题:
(1)P3&4:/dev/sda3&4去哪里了?
P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
因为1-4这几个代号是分给主要分区的,逻辑分区L1-L4自然就是从5开始计数了。
-
主要分区和扩展分区只能有四个(硬盘的限制)
-
扩展分区只能有一个(操作系统的限制)
-
逻辑分区的数量依操作系统而定,在Linux中sata硬盘可以突破63个以上的分区限制
(2)主要分区和逻辑分区可以合并吗?
不能。
主要分区之间的合并只要将原本的分区破坏掉,重新记录分区的起始地址和终止地址就好了。逻辑分区也是一样,但是主要和逻辑分区之间不能合并。
扩展分区和逻辑分区的关系就是,扩展分区(目的是使用额外的信息来记录分区信息)占住剩余容量,然后以逻辑分区的形式划分扩展分区的空间。因此能够被格式化的是逻辑分区和主要分区,扩展分区不能被格式化。(是不是意味着扩展分区如果没有被重新划分逻辑分区,就不能被使用,我的理解是扩展分区是使用扩展分区表来划分的区域,没有划分的区域就是剩余容量,只有被分区(逻辑分区)了才能被使用和格式化。)
我更愿意把扩展分区理解为可以使用扩展分区表的区域。
**GPT(guid partition table)磁盘分区表
*它的组成是什么?存的信息是什么?
-*扇区的定义上面使用逻辑区块地址(logical block address,LBA )来处理。GPT使用了34个LBA区块(LBA0-LBA33)来记录分区信息,除了前面的34个区块之外还有34个用来备份.(LBA0-LBA33,LBA-34~LBA-1).
-*
LBA0:MBR兼容区块,分两部分,一个446B启动引导程序,而分区表在记录区,这里兼容模式存放一个特殊标志符,表示这是GPT磁盘。
LBA1(GPT表头记录):这个部分记录了分区表本身的位置和大小,同时记录了备份用的GPT分区的位置,和校验码。
LBA2-33(实际记录分区信息处)每个LBA记录四组分区信息,4*32=128组分区,因为每组分区记录用到了128字节,
所以除了记录了分区标志符合相关的记录还有64位记载的开始/结束扇区号码。注意2^63=8ZB 相当大了,2^30TB,当前绝对够了。注意看补充。
-*
因为没有主要,扩展,逻辑等概念,所以,每一个分区都可以视为主要分区,每一个分区都可以用来格式化。
* 补充:过去一个扇区的大小是512B,现在有4K的扇区设计,那么GPT最大容量就可以这么计算,每一个LBA-512B,只能分四组记录,每组记录对应128B(这些除了所需要的标志符与相关记录之外还有64位来记录开始/结束的扇区号码,0X0000 0000 0000 0000 - 0xffff ffff ffff ffff是2^64个扇区,每个扇区是512B,对于单一分区来说,最大容量就是2^64*512B对应8zb,2的30次幂TB,绝对够了
* 补充1: GPT和MBR的区别,MBR第一个扇区非常重要,这个扇区包括了引导程序和64B的分区表,分区表包括上限为4的主要分区和扩展分区;一旦丢失就是完结篇。
GPT,使用更多的扇区来完成记录分区的任务(分区表的作用就是记录分区信息啊),LBA0是MBR兼容区块,包括引导程序和GPT标志位,而后则是真正的分区表LBA2-33,LBA1记录分区表本身的位置与大小,同时记录了备份用的GPT分区,同时还有分区表的校验码(CRC32),如果不正确,就使用备份。
* 补充2: MBR的限制,操作系统无法使用2.2TB以上的磁盘容量(因为分区表只有64B,每组记录只有16B,起始分别对应8B- 64位,2^64 ,这就是限制。
/*启动流程的BIOS和UEFI启动检测程序
**计算机怎么启动内核的呢?就是通过写在ROM里的BIOS(早期)或UEFI(新的)引导计算机加载硬件驱动方面的程序。
**BIOS搭配MBR/GPT的启动流程:
(1)计算机启动时主动执行存储在固件里的BIOS->
(2)BIOS分析计算机有那些存储设备,BIOS会根据用户设置去启动硬盘,读取第一个扇区的MBR位置,而MBR里的446MB存储着启动引导程序(boot loader),Boot loader启动,至此BIOS结束任务->
(3)引导程序加载(load)内核文件,引导程序结束任务->
(4)内核开始工作,开始启动操作系统。
-*至于GPT需要,启动引导程序支持GPT格式。
-*由于LBA0仅提供第一阶段的引导程序,因此如果使用grub这样的启动引导程序的话,那么就得额外划分一个BIOS boot分区,这个分区用来存放其他开机过程中所需的程序。???
**在介绍UEFI之前我们先讲讲boot loader(启动引导程序),它的任务是什么:
1)提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能。
2)加载内核文件,直接指向可执行的程序区段来启动操作系统。
3)转交给其他的启动引导程序,将启动管理功能转交给其他的启动引导程序。
计算机里存在两个启动引导程序?不是只有一个MBR吗?
-*是的,但是启动引导程序除了可以放到MBR之外,还可以安装在每个分区的启动扇区(boot sector),是的,你没听错,分区还有各自的启动扇区。也正是这个功能实现了多重引导的功能。
-*这也意味着,不同的操作系统内核是装在不同的分区的。启动程序只认识本分区的操作系统和其他引导程序而已。
-*大概流程就是,MBR提供选项M1和M2,M1直接加载本分区的内核,选择M2则将启动引导的管理工作交给下一个启动引导程序,这个启动引导程序如果只含有一个选项M1,那么就加载本分区的内核。
-*先装Windows,再装Linux,因为Windows安装的时候会主动的覆盖掉MBR以及自己所在分区的启动程序,你没的选,而Linux可以选择将启动程序安装在MBR还是别的分区的启动扇区。
* 补充:MBR是分区表的格式,MBR又称为MS-DOS,使用MBR就指分区表。同样GPT也是分区表的格式
**UEFI BIOS搭配GPT的流程:
*UEFI(unified extensible firmware interface)统一可扩展固件接口,为什么会有这个东西出现?再次说明,bios是刷在存储设备的可执行软件,CMOS是记录各项硬件参数并且嵌入到主板的存储器。
1)GPT可以64位寻址,也可以有较大的区块来处理启动引导程序,但是BIOS不懂GPT,需要GPT提供兼容模式才能够读写这个磁盘 ,这也是为什么有些硬盘需要搭配UEFI固件才能使用GPT分区。
2)BIOS是16位的程序,与现今的操作系统接轨方面有点弱。
UEFI的优点:
3)C语言开发,难度降低,而且如果使用者够厉害,在UEFI启动阶段就可以通过TCP/IP上网,也就是充满了可能性;
4)UEFI就像低级的操作系统,它是 加载驱动程序和轮询的方式来实现操作和管理的,跟BIOS使用IRQ(中断)管理不同,但是整体启动速度还是要快一些,一般来说。
5)加载完所有的驱动程序后系统会提供一个类似系统的shell环境,用户可以在shell环境里面执行任意的UEFI应用程序,而且效果比MS-DOS好(这是另一种分区表格式啊,但是是什么意思???)
6)UEFI加入了一个安全启动secure boot的功能,针对骇客cracker经常通过BIOS阶段来破坏系统,取得系统控制权的情况。但是许多操作系统可能因为这个功能而无法顺利启动,所以某些时刻,要把这个功能关掉,才能顺利进入Linux
UEFI缺点:
6)轮询的效率较低,而且UEFI没有缓存功能,因此执行效率也无法提升
注意的点:
1)与BIOS相比,UEFI模式虽然可以直接获得GPT的分区表,不过最好还是拥有BIOS boot(后面分区的时候就知道了,我们仍然要划分出这个分区,2M)的分区支持。
2)同时为了和windows兼容,和提供UEFI执行其他第三厂商所使用的UEFI应用程序空间,我们需要格式化一个FAT格式的文件系统区,512MB到1GB左右,以便UEFI执行比较方便。
/*Linux下的磁盘分区的选择
**Linux下,所有的设备和数据都是文件,采用目录树结构,以根目录为主,然后向下呈现为分支状的目录树结构的一种文件架构。根目录(root directory)->‘/’
文件名的概念:文件路径+文件名+【后缀】
**文件系统与目录树的关系(挂载):
* 补充:挂载:在后面的文件系统章节,我们知道我们会把分区格式化成合适的格式,然后挂在到目录树上;所谓的挂载就是将分区挂载到目录树上,这个目录就是这个分区的进入点。
文件里的数据放置在目录下,进入目录就可以读取数据,数据和目录挂载。而数据是在哪里呢?存在硬盘的分区上,本质上也就是硬盘分区和目录挂钩(我们称之为分区挂载到目录上),进入目录就可以读取硬盘分区里的数据。
如何判断某个文件的分区,很简单,逆向追踪即可?可是我不懂啊。
**挂载点去磁盘分区的规划:
使用自定义模式(custom):初次接触Linux可以先只是划分根目录/和交换分区swap,但是最好预留分区,以便日后练习和备份之用。
稍微麻烦一点的方法:根据用途去分析需要较大容量的目录以及读写频繁的目录,将这些目录独立出来不和根目录放在一起,当这些使用频繁的目录因为某次读写而出现问题的时候,就不会影响到根目录的系统数据,恢复也比较方便。
/boot
/
/home
/var
swap
这些目录是比较符合大容量或读写频繁的特征的目录。至于为什么,我现在也不知道。
*一些分析:(我想表示现在的我真的搞不懂)哈哈,这些是一些常用的分区。
-*NAT(完成IP分享功能):
学校或者企业通常会只通过一条线连接外面的网络,然后全学校或者全公司的人都通过它上网 ,此时就要用到IP分享器来将这一条对外连线分享给使用人员,因为网咯流量大,所以网卡就要好一点。
使用Linux作为NAT虽然较路由器比较费电,但是通过装载的软件可以实现控制带宽和流量达到更加公平的带宽使用。
-*SAMBA(加入Windows网络邻居)
相当于Windows的网络邻居功能,用于分享文件。Linux下使用SAMBA达到这一目的 。如果想要给更多的用户使用,/home就要大一点,硬盘存量是不是也要大一点。
-*mail邮件服务器
/var独立出来,硬盘和网卡速度也是需要注意的地方。
-*web服务器(www服务器)
centos使用Apache完成www网站的功能,CPU和内存需要注意。
-*DHCP(提供客户端自动获取IP的功能)
-*FTP
假设FTP进行网络数据的传输,硬盘容量和网卡好坏值得注意。
**镜像文件。.iso,也就是所谓的image文件,不能以数据格式刻录成cd或DVD,而要使用刻录程序的功能,将镜像文件格式刻录成cd或DVD。