一. 硬盘结构及原理
从几个问题开始,扇区,磁道,磁柱,块分别指什么?磁盘分区是什么意思?格式化是干什么?为什么要进行磁盘分区?又该怎样分?
我们知道硬盘是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。盘片上又细分出扇区,以512bytes为一个单位。同一纵截面上的磁道组成柱面。分区也就是将磁盘由最内层的柱面到最外层的柱面分成几个不同的部分,以方便数据的管理和系统安全的维护。在整个磁盘的所有扇区中,第0磁道的第0扇区又是最为重要的,因为它记录两个重要的信息,分别是主引导分区MBR和分区表。MBR是很重要的,因为当系统开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。此外,分区表记录了你的分区信息。
MBR(446bytes) | 分区表(64bytes) |
二. 文件系统特性
磁盘分区完毕之后是否立马就可以存储数据了呢?当然不可以,你还得对磁盘进行格式化。格式化的目的是为了形成一个有效的数据组织管理的方式。每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。
那么文件系统是如何运行的呢?印象中似乎不同的操作系统文件的属性还有所不同,确实是这样的!文件系统通常会将文件的实际数据和属性这两部分存放在不同的块,权限与属性放置在inode中,而实际数据则放置到data block块中。这里有必要对inode,block,superblick作一个介绍:
- Inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在block号码。
- Block:由上可知,block应该是实际记录文件内容的地主,在Ext2文件系统中block可以支持的块大小为1k,2k,4k这三种,所以如果一个文件很大的话通常就得占据多个block了。因此在该文件的inode中也可以看到它所占据的多个block的记录。
- 记录此文件系统的整体信息,包括inode/block的总量,使用量,剩余量,以及文件系统的格式与相关信息等。
这里还引申说明一下:
#文件系统一开始一开始就将inode和block规划好了,除非重新格式化,否则inode和block固定后就不再变动。
#每个block内最多只能够放置一个文件的数据。
#如果文件大于block的大小,则一个文件会占用多个block数量;如果一个文件小于block,则该block的剩余空间也不能够再被使用了。
三. Linux下的磁盘管理
df #该命令可以调出目前挂载的所有设备
-a :列出所有的文件系统,包括系统特有的/proc文件系统;
-k :以KB的容量显示各文件系统;
-m :以MB的容量显示各文件系统;
-h :以人们较易阅读的GB,MB,KB等格式显示出来;
-T :连同该分区的文件系统名称,如EXT3也显示出来;
-I :不用硬盘容易,而以inode的数量来显示;
目录或者文件名:df会自动分析该目录或文件所在的分区,并将控制该分区的容量显示
出来,所以我们就可以知道某个目录下面还有多少容量可以使用了;
fdisk #磁盘分区
-l :输出后面所接的设备的所有分区内容,若只有-l参数则将系
统内所有可以找到的分区均列出来;s
-n :新增一个分区
我自己的手提电脑是320G的硬盘,在装系统的时候已经划分出3个主分分别挂载
在”/”,”/home”,”/boot”目录下,一个扩展分区,5个逻辑分区分别挂载在”/usr”,”/usr/local”,”/var”,”/temp”,”/opt”目录下。总共消耗的空间也只有100来G,所以还剩下200多G未被分配的空间,足够用来练手的了。嘿嘿!
就一般意义上而言新增加的分区可以是主分区也可以是扩展分区,逻辑分区,观察上上两图可知系统中主分区(只能4个,而且其中一个还扩展分区给占了)已经全部占满,现在只能够是增加逻辑分区。sda10的结束柱面号为13017,所以我们新增分区从13017开始,不用默认的11742(default 11742),我人为设定为从13017号柱面开始,新增空间为2G(+2048M,新增的容量通过“+容量”表示就可以了)。以下是增加新分区后的分区表:
mkfs : 磁盘格式化
分区完毕后还要进行文件系统的格式化,格式化命令非常简单,用mkfs(make file system)即可。本机大部分分区所用文件系统为ext4,但我们也可以将新建的分区格式化为其它的文件系统,那么mkfs命令当前支持哪些文件系统呢,通过mkfs[tab][tab]命令可以查询,这里[tab]是说让你按一下tab这个键,结果如下图所示:
我还是将/dev/sda11格式化为ext4文件系统。这里提一下,当我利用mkfs.ext4 /dev/sda11这个命令来格式化/dev/sda11这个分区,系统竟然提示找不到/dev/sda11这个文件,cd进入/dev下查看也确实没有看到sda11这个文件,心想难道之前的分区没有成功?没道理呀,重启一下试试,唉,出现了!嘻嘻!
mke2fs 1.41.12 (17-May-2010)
Filesystem label= #这里是指分区的名称
OS type: Linux
Block size=4096 (log=2) #block的大小设置为4K
Fragment size=4096 (log2)
131072 inodes, 524227 blocks #由之前的设定决定的inode/block数量
好啦,分好了区又进行了格式化操作,现在就可以利用这个新的分区来进行数据的储存啦。但是注意还剩下最后一步:挂载。将/dev/sda11挂载到/mnt/sda11目录下面吧!两行命令搞定:
再df确认一下,OK啦: