6.Linux分区的创建,ext2和ext3的区别(日志文件系统)

         磁盘分区从物理上看,是按照磁道(track)分的。

         盘片旋转时,角速度是确定的,意味着越靠外的磁道在同样的时间内转过的距离越长,读取的数据量就越大,性能越好,因此访问最频繁的数据应该放在最外面的磁道,一般来讲,分区编号越靠前,其磁道越靠外,性能越好,这也是操作系统要放在C盘的原因。划分分区的时候是以柱面来划分的。一个分区占有一段连续的柱面。

         每一个磁盘设备都是使用文件来标记的,而所有硬件相关的文件都放在/dev目录下。

         IDE接口的硬盘在/dev下都以hd开头,第一个硬盘叫/dev/had,第二块叫做/dev/hdb,第三块叫做/dev/hdc,以此类推。在个人计算机上,一般有两个IDE口,每一个口上可以接两块盘,一主一从。第一个口上的主盘就叫hda,第一个口上的从盘叫做hdb;第二个口上的主盘叫做hdc。        SATA接口的硬盘在/dev下都以sd开头,SATA没有主从的概念。

         USB接口也表现为sd。

         SCSI接口也表现为sd。

         SAS接口也表现为sd。

 

         查看IDE接口的设备:

[root@redhat4 dev]#ls -l hd*
brw-rw----  1 root disk 22, 0 2016-01-20  hdc


#       VMware模拟出来的光驱都是IDE接口的,而且都在第二个口的主盘上(/dev/hdc)

 

         查看S*接口的设备:

[root@redhat4 dev]#ls -l sd*
brw-rw----  1 root disk 8, 0 2016-01-20  sda
brw-rw----  1 root disk 8, 1 2016-01-20  sda1
brw-rw----  1 root disk 8, 2 2016-01-20  sda2


#       sda1和sda2的由来:每一个磁盘都可以分为多个区,每个区都是一个独立的块设备,所以每一个分区都需要一个设备文件。而无论是哪一种接口的磁盘,每一块磁盘上的分区编号中,主分区(扩展分区)占据了1-4这几个编号,扩展分区对于磁盘来讲只能有一个,逻辑分区的编号>=5。

 

         查看当前系统的磁盘设备:

root@ubuntu:~# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
#磁盘名称、大小、多少个字节
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
#每个磁道有多少个扇区,一共有多少个柱面
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x0007ef80
 
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1  *        2048    39845887   19921920   83  Linux
/dev/sda2        39847934    41940991    1046529    5  Extended
/dev/sda5       39847936    41940991    1046528   82  Linux swap / Solaris


#Boot字段指明该分区是否为引导分区,引导分区就是默认操作系统所在的分区。加*则是。

#Start和End指明分区的开始和结束柱面。

#格式化以后才有block。

#ID指的是分区的文件系统类型。83为普通Linux分区(无论是ext2、ext3还是其他文件系统),82是swap分区。Linux的虚拟内存要使用独立的文件系统,也就是要独立的分区。因为是模拟内存,故对性能要求较高,应该把swap放到尽可能靠外的柱面上。

 

要想创建分区得有剩余空间,查看是否有多余的柱面也就是查看是否有剩余空间。查看是否有的方法如红色标记所示。

创建新分区:

1.      fdisk进入交互界面:

root@ubuntu:~# fdisk /dev/sda
Command (m for help):


2.      查看可以使用的单字符命令:

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition            #创建新分区
   o   create a new empty DOS partition table
   p   print the partition table
   q   quitwithout saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)


3.      使用n命令,指定要创建的分区类型:

Command (m for help): n
Partition type:
p  primary (1 primary, 1 extended, 2 free)
l  logical (numbered from 5)
Select (default p):


4.      选择p,创建主分区,并选择分区号为3:

Using default response p
Partition number (1-4, default 3): 3


5.      选择分区的大小(指定开始柱面和结束柱面):

First sector (39845888-41943039, default39845888):
Using default value 39845888
Last sector, +sectors or +size{K,M,G} (39845888-39847933, default 39847933):
Using default value 39847933
#大小的设置有不同的方法


6.      再次查看磁盘分区表

Command (m for help): p
 
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders,total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x0007ef80
 
  Device Boot      Start         End      Blocks  Id  System
/dev/sda1  *        2048    39845887   19921920   83  Linux
/dev/sda2        39847934    41940991    1046529    5  Extended
/dev/sda3        39845888    39847933        1023  83  Linux
/dev/sda5        39847936    41940991    1046528   82  Linux swap / Solaris
Partition table entries are not in disk order


7.      创建完分区后必须格式化才能使用:

格式化分为低级格式化和高级格式化。

低级格式化由厂商完成,主要是划分磁道和扇区。

高级格式化的目的是创建文件系统。文件系统是软件,在内核中。

 

         Ext2和ext3的区别:

         Extended:扩展。Ext2和ext3的核心区别:ext2不支持日志(journal)功能;ext3支持日志功能。

         什么是日志文件系统?

         正常情况下,创建一个文件时,会先在metadata区为文件申请一个iNode号,然后找到文件所在目录的路径映射表,插入文件的名字和iNode,然后在data区为文件分配block,并把文件数据写入block中。

         如果在写block时系统突然断电,当操作系统重启时,文件的iNode还在,路径映射表中也有对应的条目,但是文件不完整,不能被使用。一般而言开机时,文件系统会做完整性校验,但是还原文件的可能性很小。而且要对整个文件系统做完整性校验,时间代价巨大。

         此时日志就派上用场了。在磁盘上划分一块日志区,申请空闲iNode时,先把iNode存到日志区,然后在目录block的路径映射表里建条目,接着往数据区存数据,等这一切做完了,再把日志区的条目移动到元数据区。

         开机后不用对整个文件系统进行扫描,只需要检查日志区就可以了。

         在日志文件系统中,iNode要先存在日志区,然后移动到元数据区,在写入频繁的分区中,或者小文件多的分区中,日志文件系统的性能没有非日志文件系统的性能好,但是日志文件系统在崩溃恢复时的性能是高于非日志文件系统的。

         日志的使用方式有三种:

1.      只对iNode使用日志

2.      不但把iNode放日志区,同时把数据也放iNode里,性能更差

3.      在2的基础上,一旦存储成功,隔一段时间才把iNode和数据写回该有的位置,这性能高于2。

 

给分区取一个名字,用这个名字就可以操作这个分区,这个名字就叫做卷标。

在X86平台的电脑上,内存页大小为4K,所以文件系统的block大小不能大于4K,一般而言是1K、2K、4K的大小。Block大小是在格式化的时候决定的。

 

格式化分区:

root@ubuntu:~# mkfs.ext3 /dev/sda5
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65408 inodes, 261376 blocks
13068 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376
 
Allocating group tables: done                            
Writing inode tables: done                           
Creating journal (4096 blocks): done
Writing superblocks and filesystem accountinginformation: done


你可能感兴趣的:(Linux文件系统笔记)