今天开始进入Linux文件系统的学习,在文件系统的学习当中,需要注意以下几点:1.Linux与window文件系统的差别。2.Linux文件系统的基本概念。3.Linux文件系统磁盘管理的常用指令和功能。4.管理Linux的文件系统(磁盘)。根据以上四点来介绍本文。
1.Linux和windows文件系统
Linux和window系统的文件系统完全不同,首先看看window的文件系统的发展:最初window的文件系统为FAT,是DOS时代的主流,现在只有在存储卡和U盘上还能看得到。 FAT32是FAT16的升级,从98开始应用,分区有32G的限制,单文件大小不能超过4G(这种文件系统的U盘不能考超过4G大小的文件)。NTFS全面超越FAT32的性能,是现在的主流文件系统(win7的文件系统)。支持的分区大小可以达到2TB。支持文件夹压缩。支持动态磁盘功能。,文件可以夸磁盘存储。window无论是那个一个文件系统,使用久了都会产生磁盘碎片,以最新的NTFS文件系统为例:当一个文件系统存入磁盘时,系统会把它存放在靠近磁盘开始的地方并留有一定的“缓冲区”以处理文件扩大的情况,第二个文件会紧接着第一个文件放着。由于“缓冲区”有一定的限制,当文件扩大后,就会没有留给文件足够的增长空间,经过一段时间则会产生磁盘碎片。微软的DOS和windows文件系统文件结构采用树型结构,在DOS和 windows中这样的树型结构的根是磁盘分区的盘符(如C:),有几个分区就有几个树型结构,他们之间的关系是并列的。可以使用cd命令来切换目录,有趣的是:在命令行下目录结构Windows是“\”,而Linux是“/”.
而在Linux中,文件系统有ext2,ext3(在ext2基础上有日志功能来记录错误、历史等),ext4等,他的文件存放原理和windows不同,他是将整个文件分散到整个磁盘上,每个文件之间都留有相当巨大的空闲空间,当文件被修改、体积增大、文件系统会尝试转移整个文件夹来消除碎片,所以Linux下没有磁盘碎片的整理。但是当磁盘快要装满时,你会发现开始(>80%)有很多磁盘碎片,不管怎样,正常使用情况下是不用担心的。Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构,每个文件系统必须挂在才能使用,根目录是挂在的顶层。如几个重要的目录:/etc 系统管理和配置文件、/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。
2.文件系统的基本概念
明白磁盘-磁柱-磁道-扇区的物理结构,以及Linux对磁道的划分。此处略。硬盘的分区,在Linux中,要掌握磁盘分区,重点在MBR(主引导记录),扩展分区,逻辑分区。MBR(主引导记录):它主要存放硬盘的信息,他是整个硬盘最重要的区域,一旦MBR物理实体损坏,整个硬盘差不多就报废了。般来说,MBR有512个字节,且可以分为两个部分。
(1)第一部分有446个字节,用于存放引导代码,即bootloader。
(2)第二部分有64个字节,用于存放磁盘分区表.其中,每个分区的信息需要用16个字节来记录。因此,一个硬盘最多可以有4个分区(至少有一个主分区),这4个分区称之为主分区和扩展分区(extended)。
注:通常所说的"硬盘分区"就是指修改磁盘分区表,它定义了"第n个磁盘块是从第x个柱面到第y个柱面".因此,当系统要读取第n个磁盘块时,就是去读硬盘上第x个柱面到第y个柱面的信息。
由于扩展分区只能有一个(<=1),所以这4个分区可以是4个主分区或者3个主分区加1个扩展分区,如下所示:
P + P + P + P
P + P + P + E
重点说明的是,扩展分区不能直接使用,还需要将其划分为逻辑分区(因为扩展分区里面实际存储的是扩展分区的一些信息表,类似链接文件中的软连接)才行,这样就产生了一个问题,既然扩展分区不能直接使用,但为什么还要划分出一定的空间来给扩展分区呢?这是因为,如果用户想要将硬盘划分为5个分区的话,那该如何?此时,就需要扩展分区来帮忙了。
由于MBR仅能保存4个分区的数据信息,如果超过4个,系统允许在额外的硬盘空间存放另一份磁盘分区信息,这就是扩展分区.若将硬盘分成3P+E,则E实际上是告诉系统,磁盘分区表在另外的那份分区表,即扩展分区其实是指向正确的额外分区表.本身扩展分区不能直接使用,还需要额外将扩展分区分成逻辑分区才能使用,因此,用户通过扩展分区就可以使用5个以上的分区了。
Attention!!!
(1)实际上,不建议用户将硬盘分为4个主分区,这是因为,假如一个20GB的硬盘,若4个主分区占据了15GB的空间,则剩下的5GB空间完全不能使用,因为已经没有多余的分区表可以记录这些空间了。
(2)考虑到磁盘的连续性,一般建议将扩展分区放在最后面的柱面内。
在Windows操作系统中,是先将物理地址分开,再在分区上建立目录.在Windows操作系统中,所有路径都是从盘符开始,如C://program file。Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为3个分区,分别是boot分区、swap分区和根分区,其实根目录下的多数文件都是一个分区,比如/home分区,等。
3.Linux文件系统(磁盘管理)的基本命令
磁盘管理涉及到,1.格式化(root权限下的fdisk),2.磁盘分区,3.分区的挂载(mount),4,卸载(umount).在这些过程中,会涉及到磁盘空间的查看,分区的查看等。主要命令如下:
1 df -h 用于报告文件系统的总容量,使用量,剩余容量。
2 du -b /home 查看目前/HOME目录的容量(k)及子目录的容量(k)。
3 fdisk -l 查看系统分区信息
4 fdisk /dev/sda 为一块新的SCSI硬盘进行分区
5 mkfs.ext3 /dev/sda1为第一块SCSI硬盘的第一主分区格式化成ext3的文件系统
# mkfs.ext2 /dev/sda2 格式化成ext2文件系统
6 mount -t 文件系统类型 设备路经 访问路经
# 文件系统类型 ISO9660 光驱文件系统 vfat Fat文件系统(windows) 挂载光驱
# mount –t iso9660 /dev/cdrom /mnt/cdrom 挂载FAT
# mount –t vfat /dev/hda5 /mnt/cdrom 挂第一个ide的第五个逻辑分区
7 umount /mnt/cdrom 卸载/mnt/cdrom为空
4.管理文件系统
主要是利用3.中的一些命令在实现自己的磁盘划分,由于是新手,这里不敢轻易尝试,以免破坏磁盘,待以后有必要的时候在尝试。这里补充以下,默认情况下,Linux系统能识别window的ntfs系统,以及U盘,因为这个也是系统挂载来实现的。默认也会挂载到Linux的文件系统中。