上周四去客户那里安装,装系统时遇到一个问题。那台机器是8块硬盘做了一个raid 5,大概5T左右的可用空间,但是在装CentOS 6.4时只能分配到2T。一开始没在意,打算装完系统再用parted把剩下的分一个数据分区。但装完系统才发现parted也只能分配前2T,上网搜了一下发现是因为msdos格式的文件分配表只能支持2T的硬盘,必须改成gpt格式才行。用parted修改分区格式# /usr/sbin/parted -s /dev/sda mklabel gpt
为GPT,然后提示
警告: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost.
没办法,看来只能重装系统了。重装系统后,问题来了,竟然提示硬盘上没有操作系统!又在网上搜了一番,发现要想在GPT格式的硬盘上安装系统,必须得新BIOS支持UEFI才行。打开BIOS研究了半天,都没找到相关选项,后来打电话给HP询问,确实是不支持,只有比较新的机型才支持。没办法,和对方运维人员商讨解决方案,只用2T是肯定没办法接受的,只能退而求其次,用6块硬盘做一个raid 5,采用GPT格式,用做数据盘。然后2块硬盘做一个raid 1+0,大约900G,采用msdos的MBR。由于对方坚持硬盘不做raid数据安全没法保障,但实际上我们自己的服务器都没做raid也没发生过数据损坏的问题。重新做了raid之后重装系统,仔细的看了一下分区之后的提示,发现提示
you are using a gpt bootdisk on a non-EFI system
我擦,明明已经用msdos的mbr装系统了啊,为何还提示这个?难道是因为先做了那个raid 5的原因?因为先做了那个,所以CentOS识别硬盘时将GPT的硬盘识别成了/dev/sda
而系统盘识别成了/dev/sdb
,而BIOS默认选sda的MBR导致仍然无法启动系统。重做raid,这回先做小raid之后果然这个问题就没有了。唉,看来这个东西还真不智能,以后必须注意/dev/sda
做系统盘,并且小于2T,并且采用msdos格式。目前来看,似乎大部分服务器的BIOS都不支持UEFI。
那么说了这么多,到底GPT是啥呢?
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体磁盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。
GPT分配64bits给逻辑块地址,因而使得最大分区大小在2-1个扇区成为了可能。对于每个扇区大小为512字节的磁盘,那意味着可以有9.4ZB(9.4 x 10字节)或8ZiB-512字节。
所以,为了以后维护方便,操作系统所在物理硬盘(包括raid卡虚拟出来的硬盘)尽量小于2T,并且为第一个硬盘,采用msdos格式的MBR,这样就不会出问题了。