A. 安装Linux前,需要对使用了解后进行规划, 你必须要针对districtions的特性,服务器软件能力,未来的升级需求,硬件扩充性
B. 对所安装的主机进行磁盘分区规划 目录规划 权限规划 IP规划
2.1 Linux与硬件的搭配 (目前品牌的服务器都基本支持LINNUX,包括各驱动,但是台式机一般不一定,有时没有提供LINUX的驱动,所以硬件购买前需要确认兼容性)
需要考虑计算能力,数据储存的容量,输入输出的I/O,网络接口
2.2 各硬件在LINUX中的文件名
【linux中,每个装置都被当成一个文件来对待,如IDE接口的硬件的文件名就是 /dev/sd[a-d],其中的字母a-d当中任一个,/dev/sda, /dev/sdb就表示两个文件】
设备名称 | 在Linux内的文件名 |
SCSI/SATA/USB 接口硬盘 (包括USB内存) | /dev/sd[a-p] |
virtI/O 界面 | /dev/vd[a-p] 用于虚拟机内 |
软盘驱动器 | /dev/fd[0-7] 现基本已不用 |
printer | /dev/lp[0-2](25Pin) /dev/usb/lp[0-15]USB |
mouse/keyboard |
/dev/input/mouse[0-15] 通用的 /dev/psaux(ps/2界面) /dev/mouse(当前鼠标) |
cdrom/dvdrom |
/dev/scd[0-1] 通用 /dev/sr0[0-1] (通用,centos较常见) /dev/cdrom(当前CDROM) |
磁带机 |
/dev/ht0(IDE界面)---基本淘汰 /dev/st0(sata/scsi界面) /dev/tape(当前磁带) |
IDE硬盘机 | /dev/hd[a-d] 基本已不用 |
adw |
近些年来虚拟化技术的成熟应用, 方便了我们学习,这次的学习我就是安装在虚拟化的系统中的。
例:PC上有两个SATA盘和一个USB盘,主板上有6个SATA槽,两个SATA盘在SATA1和SATA5上,那么这几个设备在LINUX中的文件名是什么?
SATA1插槽上的档名: /dev/sda SATA5插槽上的档名:/dev/sdb USB上的开机后才误别的:/dev/sdc
硬盘简述:
硬盘是由磁盘, 机械手臂,磁盘读取头与主轴马达所组成, 磁盘面上又分为扇区,磁道 硬盘的容量=柱面数*磁头数*扇区数*512B
早期的硬盘第一个扇区有重要的信息,称为MBR(master boot record)格式,近年来由于磁盘容量不断扩大,大于2T的磁盘分区无法进行读取,因此后来又多了一个新的磁盘分区格式--GPT
MSDOS(MRB)与GPT磁盘分区表(partition table)
LINUX为了兼容windows磁盘,使用了支持windows的MBR的方式来处理管理程序与分区表,而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区,这个扇区是512byte:
主要包括这两个数据:
* 主要启动记录区(master boot record,MBR): 可以安装开机管理程序的地方,有446bytes
* 分区表(partition table): 记录整颗硬盘分区的状态,有64bytes
每个分区信息用16个字节表示,四个分区就用掉了16X4=64个字节,这64个字节分布在MBR的第467-510字节,后面紧接着两个字节AA和55被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一个没有被分区的硬盘.
由于分区表所在的区块仅有64bytes容量,因此最多仅能有四组记录区,每组记录了该区段的起始与结束的磁柱号码,这四个分区的记录被称为主要(Primary)或延伸(extended)分区槽。
- 其实所谓的【分区】只是针对那个64bytes的分区表进行设定而已!
- 硬盘默认的分区表仅能写入四组分区信息
- 这四组分区信息我们称为主要(Primary)或延伸(extended)分区槽。
- 分区槽的最小单位【通常】为磁柱。
- 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区槽进行数据的处理。
2.3 磁盘分区的好处
(数据的安全性 系统效能考虑)
如我们对一个磁盘进行了分区,P1,P2,P3,P4,P1-P3为主分区,P4为扩展分区,由于扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能拿来格式化,然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。
扩展分区继续分区,分出来的叫做逻辑分区(logical partition), 在LINUX中逻辑分区的设备名称号码是从5号开始的。
P1(/dev/sda1) P2(/dev/sda2) P3(/dev/sda3) P4(/dev/sda4 ) L1(/dev/sda5)
综上所述,总结一下MBR分区的特性:
- 主要分区和扩展分区最多可以有四个(
- 扩展分区最多只能有一个
- 逻辑分区是由扩展分区划分出来的
- 能够被格式化后,作为数据存取的分区为主要分区和逻辑分区,扩展分区不能被格式化。
- 逻辑分区的数量依操作系统而不同,在LINUX系统中SATA硬盘已经可以突破63个以上的分区限制。
MBR带来的缺点:
- 操作系统无法抓取到2.2T以上的磁盘容量 2. MBR仅有一个区块,被破坏后,经常无法或很难救援 3. MBR内的存放开机管理程序的区块仅446bytes,无法容纳较多的程序代码
GPT磁盘分区表 GUID partition table
当前由于技术的进步,过去一个扇区就是512bytes,现在已经有4K的扇区设计出现,为了兼容于所有的磁盘,因此在扇区的定义上面,大多会使用逻辑块(logical block address,LBA)来处理,GPT将磁盘所有区块以此LBA(预设为512bytes)来规划,第一个LBA称为LBA0
MBR仅使用第一个512bytes区块来纪录,GPT使用了34个LBA区块来纪录分区,GPT还把磁盘最后的33个LBA拿来做备份。
- LBA0(MBR相容区块)
与MBR模式相似,这个兼容区块也分为两个部分,第一个部分与MBR的446bytes一样,储存了第一阶段的开机管理程序,原本的分区纪录区内,兼容模式放入了一个特殊标志,用来表示此磁盘为GPT格式,而不懂GPT分区表的管理程序,就不认识这个磁盘,起到进一步保护作用。
- LBA1(GPT表头纪录)
这个部分纪录了分区表本身的位置与大小,同时纪录了备份用的GPT分区,同时放置了分区表的检验机制码(CRC32),操作系统会根据这个检验码来判断GPT是否正确,有错误还可以透过这个纪录来取得备份
- LBA2-33(实际纪录分区信息处)
从LBA2区块开始,每个LBA都可以纪录4笔分区记录,所以在默认的情况下,总共可以有4*32=128个分区记录,每个LBA有512bytes,GPT的每笔纪录中分别提供了64bits来记载开始/结束的扇区号码,他的最大容量限制在 2的64次方*512bytes=8ZB
GPT分区已经没有所谓的主分区,扩展分区,逻辑分区的概念,每个分区记录都独立存在,当然每个都可以视为主分区,每一个都可以拿来格式化。
并不是所有的操作系统都可以读取到GPT的磁盘格式,也不是所有的硬件都可以支持GPT格式,是否能够读写GPT格式又与开机的检测程序有关,那开机的检测程序就是BIOS与UEFI.
2.4 开机过程中的BIOS与UEFI开机检测程序
CMOS是记录各项硬件参数且嵌入在主板上的一个储存器,很多时候还要电池供电。
BIOS是一个写入到主板上的一个软件程序,这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序。
BIOS会去加载基本硬件的驱动方面的程序,识别并分析计算在那些设备(如储存设备),我们以硬盘为便,BIOS会依据使用者的设定去取得能开机的硬盘,并去此硬盘里面去读取第一个扇区的MBR位置,MBR里面有一个446bytes的部分里面放置最基本的开机管理程序,此时BIOS功成圆满,接下来就是MBR内的开机管理程序工作了。
开机管理程序---目的就是加载核心文件,开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,然后接下来就是核心文件的工作,开机管理程序与BIOS也完成工作,将之后的工作就交给操作系统了。
简单来说,整个开机流程到操作系统之前的动作是这样的:
- BIOS : 开机自动执行的软件,是认识硬件及加载驱动,并寻找到可开机的硬盘
- MBR:硬盘装置中第一个扇区内的446bytes的开机管理程序
- 开机管理程序 :一支可读取核心文件来执行的软件
- 核心文件:开始操作系统功能
2.5 磁盘分区
LInux下文件系统与目录树的关系(挂载)
所谓【挂载]就是利用目录当成进入点,把磁盘分区放在这个目录下,通过这个目录来读取这个分区数据。
[[email protected] ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 0F1C34E5-5C72-417F-9B2D-11C94D621598
# Start End Size Type Name
1 2048 6143 2M BIOS boot parti
2 6144 2103295 1G Microsoft basic
3 2103296 85997567 40G Linux LVM
4 85997568 88094719 1G Linux filesyste Linux filesystem
5 88094720 92289023 2G Microsoft basic Microsoft basic data
6 92289024 93313023 500M Linux swap Linux swap
Disk /dev/mapper/centos-root: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-home: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 40G 0 part
│ ├─centos-root 253:0 0 10G 0 lvm /
│ ├─centos-swap 253:1 0 2G 0 lvm [SWAP]
│ └─centos-home 253:2 0 5G 0 lvm /home
├─sda4 8:4 0 1G 0 part
├─sda5 8:5 0 2G 0 part
└─sda6 8:6 0 500M 0 part
sr0 11:0 1 1024M 0 rom
[[email protected] ~]#
挂载点与磁盘分区的规划:
初学者,建议选择自定义,不要使用默认的自动分区的模式,那样对于学习LINUX分区没有好处,因为你压根就不知道这个分区是什么鬼。
初次接触LINUX,只要分区【/】和【SWAP】
预留一部份空间,作为学习过程中做分区练习。
麻烦一点的根据需要和用途进行磁盘规划和分区,去分析需要较大容量的目录,以及读写频繁的目录,需要将这些目录独立出来而不与根目录放在一起。在默认的centos中,底下的目录是比较符合容量大读写频繁的目录。
/boot / /home /var swap