在Windows系统中,我们一般都是只创建一个主分区(也就是C盘),再将剩余的磁盘空间全部划给扩展分区,最后在扩展分区中创建逻辑分区。在“磁盘管理”工具中可以清楚地查看到这种逻辑关系。
在Linux系统中所有的磁盘以及磁盘中的每个分区都是用文件的形式来表示的。比如在你的电脑中有一块硬盘,硬盘上划分了3个分区,那么在Linux系统中就会有相应的4个设备文件,一个是硬盘的设备文件,另外每个分区也有一个设备文件,所有的设备文件都统一存放在/dev目录中。
不同类型的硬盘和分区的设备文件命名都有统一的规则,具体表述形式如下:
硬盘:对于IDE接口的硬盘设备,表示为“hdX”形式的文件名,对于SATA或SCSI接口的硬盘设备,则表示为“sdX”形式的文件名,其中“X”可以为a、b、c、d等字母序号。例如,将系统中的第1个IDE设备表示为“hda”,将第2个SATA设备表示为“sdb”。
分区:表示分区时,以硬盘设备的文件名作为基础,在后边添加该分区对应的数字序号即可。例如,第1个IDE硬盘中的第1个分区表示为“hda1”、第2个分区表示为“hda2”,第2个SATA硬盘中的第3个分区表示为“sdb3”,第4个分区表示为“sdb4”等。
需要注意的是,由于主分区的数目最多只有四个,因此主分区和扩展分区的序号也就限制在1~4之间,而逻辑分区的序号将始终从5开始。例如,即便第1个IDE硬盘中只划分了一个主分区、一个扩展分区,则新建的第1个逻辑分区的序号仍然是从5开始,应表示为“sda5”,第2个逻辑分区表示为“sda6”。
虽然现在有很多动态调整磁盘的工具可以使用,例如Partation Magic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。
因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,Logical Volume Manager)机制就是一个完美的解决方案。
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
LVM基本术语
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。下面是几个LVM术语:
物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
EXT4,第4代扩展文件系统,是RHEL6中默认使用的文件系统类型,属于典型的日志型文件系统。其特点是保持有磁盘存取记录的日志数据,便于恢复,性能和稳定性更加出色。
除了EXT4文件系统之外,Linux中还有一个比较特殊的SWAP类型的文件系统,swap文件系统是专门给交换分区使用的。交换分区类似于Windows系统中的虚拟内存,能够在一定程度上缓解物理内存不足的问题。不同的是,在Windows系统中是采用一个名为pagefile.sys的系统文件作为虚拟内存使用,而在Linux系统中则是划分了一个单独的分区作为虚拟内存,这个分区就被称为交换分区。交换分区的大小通常设置为主机物理内存的2倍,如主机的物理内存大小为1GB,则交换分区大小设置为2GB即可。
在Linux系统中,将所有的目录和文件数据组织为一个树型的目录结构,整个系统中只存在一个根目录,所有的分区、目录、文件都在同一个根目录下面。
在Linux系统中定位文件或目录位置时,使用“/”进行分隔(区别于Windows中的“\”)。在整个树型目录结构中,使用独立的一个“/”表示根目录,根目录是Linux文件系统的起点。在根目录下面按用途不同划分有很多子目录,而一个硬盘分区只有挂载到某个目录中才能被访问,这个指定的目录就被称为挂载点。例如将分区“/dev/hda2”挂载到根目录“/”,那么通过访问根目录“/”就可以访问到“/dev/hda2”分区,这个分区也就称为根分区。对于初学者,除了交换分区以外,一般只需要再创建2个分区,分别作为根分区和/boot分区,基本就可以满足需求了。
/dev: 设备文件
设备文件:字符设备、块设备
块设备:(硬盘、光盘)随机访问,数据块
字符设备:(键盘、鼠标)线性访问,按字符为单位
设备号:主设备号(major device number)和此设备号(minor device number)
系统核心就是通过这两个号码来判断设备的。
/etc:配置文件
/home:默认用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
~:表示当前用户的家目录
~USERNAME:则表示USERNAME的家目录
/lib:系统使用的函数库目录
静态库, .a
动态库, Windows(.dll), Linux(.so:shared object)
/lib/modules:内核模块文件
系统主要程序、图形界面所需要的文件、额外的函数库、本机自行安装的软件、共享目录与文件
/usr/bin、/usr/sbin:一般身份和管理员可执行的文件
/usr/lib:各应用软件的函数库文件
/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录 -> /usr/local/
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/sbin:管理命令
/lost+found:系统发生错误时,会将一些遗失的片段放置此目录