现在的位置: 首页 > 综合 > 正文

磁盘分区

2013年08月11日 ⁄ 综合 ⁄ 共 1781字 ⁄ 字号 评论关闭

有台服务器的分区不太合理,今天重新给分了一下,顺便整理一下资料。

1 概念

通常新买回来的电脑,都习惯先对磁盘进行分区。磁盘分区就是将一块物理磁盘分为好几个逻辑存储单元,这几个单元之间互相独立,从外部看就好像有多块物理磁盘。分区编辑软件(比如fdisk)可以对磁盘执行创建、删除分区等操作。每个分区都可以有自己的文件系统。

对磁盘进行分区有很多的好处。保护和孤立数据,一个分区损坏了并不会影响其它分区,因此也可以很容易重装一个已损坏的文件系统而不影响其它文件系统;可以将不同类型的数据放在不同的分区中,方便备份和管理,比如将重要的资料都放在一个分区,每次只需要备份这个分区的文件系统;分区还有一个有趣的用法,现在磁盘都很大,磁头的寻道时间很长,如果确定不会使用这么多的存储容量,可以在分区的时候只使用这个磁盘20%的空间,这样分区只占据最外围的磁道,从而成倍地提高磁盘的吞吐率。

分区也有一些弊端。减少了磁盘的总可用容量,每一个分区都需要自己的元数据开销;当需要跨分区访问数据时,会降低全局磁盘性能;由于打断了空闲存储空间,可能导致不能充分利用磁盘的全部可用空间。

现在的PC用的都是MBR(Master Boot Record)分区方案,一块磁盘最多可以分四个主分区或者三个主分区和一个扩展分区,在MBR中保存了描述这些分区的分区表。MBR位于磁盘的第一个扇区,不属于任何分区,一共512字节,其中64字节用于存储分区表,因为每个分区表项需要16个字节,所以一块磁盘最多分四个主分区。分区表项结构如下:

偏移 长度(字节) 功能描述
0x00 1 是否可引导分区,0x80表示可引导,0x00表示不可引导
0x01 3 分区的第一个扇区的CHS地址
0x04 1 分区的类型
0x05 3 分区的最后一个扇区的CHS地址
0x08 4 分区第一个扇区的LBA
0x0C 4 分区包含的扇区数

一个扇区的CHS地址就是此扇区所在的柱面(C),磁头(H)和扇区(S),也就是物理地址。分区类型有很多种,0x05和0x0F表示这是一个扩展分区;而对于主分区,分区类型这个字节用于告诉操作系统此分区的文件系统类型,不过Linux操作系统对于所有文件系统都一视同仁,通通使用0x83,swap分区比较特别用的是0x82。

为了弥补最多四个主分区的限制,扩展分区可以进一步划分为多个逻辑分区。逻辑分区使用和MBR一样的数据结构,称为EBR(Extended Boot  Record),只不过EBR一般只用于存储分区表。和MBR的分区表位置一样,从EBR的第447字节开始存储分区表,但是EBR的分区表只有两个表项,第一表项(16字节)描述此逻辑分区的信息,第二个表项指向下一个逻辑分区的EBR。每个逻辑分区都和它的EBR相邻,所有EBR形成了一个单链表。理论上逻辑分区的数量仅受扩展分区容量的限制,但是数量太多了肯定是会影响性能的。

2 Linux分区工具fdisk

Linux下最常用的分区工具是fdisk,网上也有人推荐parted。都试了一下,parted有点危险,好像每次修改都是立即生效的,一次误操作可能是致命的;而fdisk可以任意设计分区方案,在使用w命令写入分区表之前是不会有任何风险的。所以最好还是使用fdisk。

fdisk -l /dev/sda

这是常用的用法,用来查看一个设备的分区表。打印的信息包括设备的容量,磁盘的磁头、柱面、每个磁道的扇区数,以及每个分区的信息。因为Linux对文件系统一视同仁,从打印信息是看不出分区具体使用的是何种文件系统的。

fdisk /dev/sda

使用这个命令就会进入分区的提示符界面,可以开始为设备/dev/sda进行分区了。m打印帮助信息,p打印分区表,n增加一个分区,d删除一个分区,q退出,w写入分区表后退出,根据提示进行分区很简单。

fdisk分区后,需要重启才能看到效果,否则已经删除的分区的文件系统仍有可能使用。我在分区完成后出现了不能正常启动的问题,查看/etc/fstab文件,发现有一行是一个已经删除的分区,删掉它就可以了。fstab文件里可以看到每个分区安装的实际文件系统,文件默认是不能修改的,可以使用

mount -o remount,rw /

命令打开写权限,修改后再用

mount -o remount,ro /

关闭写权限。分区成功后,使用mkfs命令格式化分区后就可以挂载并使用了。

抱歉!评论已关闭.