磁盘和文件系统创建

磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘BIOS、主控芯片和硬件缓存等单元;接口部件包含电源、数据接口主从跳线等。读取硬盘数据时,主轴电机带动盘片旋转,副轴电机带动磁头臂将磁头放到相应的数据存放的柱面和磁道上,再由磁头读出相应扇区中的数据。(图1-1)

磁道(track):每个盘面被划分成了多个同心圆环,数据就是存储在这些同心圆环上。这些同心圆环被称为磁道。(图1-2)

扇区(sector):每个磁道上划分成若干个圆弧,这每一个圆弧称为扇区,扇区是硬盘上存储的物理单元通常一个扇区为(512byte)。硬盘的扇区与扇区之间隔了交叉因子,因为硬盘的转速很快,读完这个扇区来不及读下一个扇区,这时就必须等待转一圈才能读下一个扇区,造成时间浪费,所有就用交叉因子来解决这个问题。(图1-3)

柱面(cylinder):不同盘面上相同编号的磁道组成的一个同心的圆柱面,称为柱面。硬盘的数据读写和分区是按柱面进行的,磁头读写数据时首先在同一个柱面的0磁头开始依次向下直到所有的磁头全部读写完毕后,磁头在转向下一个柱面。

ceuyzVtrgdgrY.jpgjiaocha.jpgzhumian.jpg

     图1-1                                                          图1-2                                             图1-3

硬盘分区

MBR:主引导记录(Master Boot Record),计算机开机后根据主板设备的加载项去读取硬盘的第一个扇区(0柱面,0磁头,1扇区),该扇区大小为512byte,其中446byte负责找到系统的活动分区,并从活动分区中装载并运行系统引导程序(bootloader)。后面64byte为分区表,每16byte标识一个活动分区,最多支持4个活动分区。2byte的结束标识符。

文件系统:

文件系统是一套帮助操作系统管理和存储文件信息的软件。它对存储设备的空间进行管理和分配,负责文件的存储和检索。

fdisk对硬盘进行分区操作

fdisk  -l   [-u]    [DEVICE]    ##查看系统的硬盘信息
fdisk  [DEVICE]              ##管理设备##常用的子命令的管理功能
       p   print the partition table             ##显示已有分区
       n   add a new partition                ##创建新分区   
       d   delete a partition                 ##删除一个分区   
       w   write table to disk and exit           ##保存分区表并退出   
       q   quit without saving changes             ##退出不保存修改的内容
       m   print this menu                   ##显示帮助菜单   
       l   list known partition types             ##列表分区的ID和类型   
          change a partition's system id            ##调整分区的ID

查看/proc/parttions内核是否识别新分区

[root@mage ~]# cat /proc/partitions
       major minor  #blocks  name   
       8     0    8388608 sda   
       8     1     512000 sda1   
       8     2    7875584 sda2   
       8    16    4194304 sdb   
       8    17    2104483 sdb1   
       8    18    2088450 sdb2

如果当前硬盘正在使用,新划的分区未能识别则用partx命令重读硬盘分区表

[root@mage ~]# partx  -a  /dev/sdb          ##通知内核重新读取硬盘分区表   
BLKPG: Device or resource busy   
error adding partition 1    
BLKPG: Device or resource busy    
error adding partition 2

Linux支持多种文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap….

由于支持这么多的文件系统,为了方便进程或应用程序的调用,弱化各个文件系统之间的差异,所以就需要在内核与文件系统在有一层中间件。于是就有了虚拟文件系统VFS(Virtual File System),虚拟文件系统将不同文件系统的差异进行隐藏,并向进程或应用程序提供同一的调度接口。应用程序或进程要访问文件时,只需要使用VFS提供的接口,VFS确定要访问的文件所属的文件系统,通过存储在VFS中的指针调用该文件系统进行相应的操作。

ext2(second EXTended Filesysem)是一个被linux广泛使用的文件系统。文件的文件名不能超过255个字符。ext2文件系统第一块为引导扇区(boot sector)用于系统启动引导使用,即使该分区非系统分区也会保留。引导扇区的块被分成若干个块组。

QQ图片20151213162158.png

超级块:该文件系统的信息,包括inode和block的总数、空闲、块的大小、文件、块组的大小、文件系统创建时间、默认挂载的参数等。

超级块会备份到若干个块组内。

组描述符:存放block和inode的开始与结束的位置,空闲块数和inode的空闲数,块组中的目录数等信息,

inode位图:对位标识每个inode空闲与否的状态信息

块位图:对位标识每个block空闲与否的状态信息

inode表:大小为128字节,每个inode恰好描述了一个文件。文件类型,链接数据,文件的改变、修改、访问时间,文件的属主、属组、大小,以及12block硬盘物理地址和后面3个间接指针(直接指针、间接指针、三级指针)。

数据块:存放文件内容数据的位置,每个数据块的大小在文件系统创建时都已经确认了,一个文件至少占用一个数据块,可以占用多个数据块。

ext3是ext2文件系统的升级版,并加入了日志文件系统。系统在写入数据时会现将数据写入日志区。再通过日志信息将数据写入数据区中,这样的好处,一旦系统非正常关机成数据的损坏。可以通过日志信息快速检测错误区并加以修复。而不需要像ext2遍历全盘,节约了事件,也提高了数据的可靠性。

创建文件系统

   mkfs命令

  mkfs.cramfs   mkfs.ext2     mkfs.ext3     mkfs.ext4  
  mkfs.FS_TYPE   /dev/DEVICE             
  mkfs -t  FS_TYPE   /dev/DEVICE        
  mke2fs  ##ext文件系统专用管理工具    
  mke2fs  [OPTION]   /dev/DEVICE          
            -t    {ext2|ext3|ext4}      ##指定要创建的类型        
            -b    {1024|2048|4096}      ##指定块大小              
            -L  'LABEL'             ##指定卷标              
            -i #                ##数据空间每多少个字节创建一个inode;此大小不应该小于block的大小;        
            -N #             ##为数据空间创建个多少个inode              
            -m               ##为管理人员预留的空间占据的百分比;默认为5%              
            -O FEATURE[,....]        ##启用指定特性               
            -O ^FEATURE                ##关闭指定特性               
            
 [root@mage ~]# mke2fs  -t ext4   -b 4096  -L 'TEST'  -m 3   /dev/sdb1      
 mke2fs 1.41.12 (17-May-2010)Filesystem label=TEST                                            ##卷标
 OS type: Linux
 Block size=4096 (log=2)                                          ##块的大小
 Fragment size=4096 (log=2)
 Stride=0 blocks,Stripe width=0 blocks
 197600 inodes, 789185 blocks                        ##该文件系统总共的块和inode的数量
 23675 blocks (3.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=809500672
 25 block groups                                                  ##块组数量
 32768 blocks per group, 32768 fragments per group                ##32768块组成一个块组
 7904 inodes per group                                            
 Superblock backups stored on blocks:                             ##超级块的备份        
        32768, 98304, 163840, 229376, 294912
 Writing inode tables: done                            
 Creating journal (16384 blocks): done                            ##创建的日志文件块
 Writing superblocks and filesystem accounting information: done
 This filesystem will be automatically checked every 26 mounts or      
 180 days, whichever comes first.  Use tune2fs -c or -i to override.

块属性的信息查看

  blkid  [OPTION].........[DEVICE]    
        -U UUID                 ##根据指定的UUID来查找对应的设备       
        -L LABEL                ##根据指定的LABEL来查找对应的设备 
  [root@mage ~]# blkid   /dev/sdb1
  /dev/sdb1: LABEL="TEST" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"

修改ext文件系统的卷标

e2label  DEVICE [LABEL]
[root@mage ~]# e2label   /dev/sdb1   MYDATA
[root@mage ~]# blkid /dev/sdb1/dev/sdb1: LABEL="MYDATA" UUID="65770a04-cacc-4a27-8c66-c8bdae1ff40d" TYPE="ext4"

调整ext文件系统的参数

tune2fs  [OPTION]     /dev/DEVICE
     -l                             ##查看指定文件系统超级块信息;super block 
     -L 'LABEL'                        ##修改卷标     
     -m #                          ##修预留给管理员的空间百分比     
     -j                            ##将ext2升级为ext3     
     -O                           ##文件系统属性启用或禁用     
     -o                          ##调整文件系统的默认挂载选项     
     -U:UUID                        ##修改UUID号
[root@mage~]# tune2fs   -l  /dev/sdb1     ##查看超级块
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   TEST
Last mounted on:          <not available>
Filesystem UUID:          d2eda9dd-3c63-40d1-8dce-9f2c18b36602
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 
flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              197600
Block count:              789185
Reserved block count:     23675
Free blocks:              759231
Free inodes:              197589
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      192
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7904
Inode blocks per group:   494
Flex block group size:    16
Filesystem created:       Sun Dec 13 10:31:18 2015
Last mount time:          n/a
Last write time:          Sun Dec 13 10:31:18 2015
Mount count:              0
Maximum mount count:      26
Last checked:             Sun Dec 13 10:31:18 2015
Check interval:           15552000 (6 months)
Next check after:         Fri Jun 10 10:31:18 2016
Lifetime writes:          113 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      4dc8c1cb-a593-4f0f-8da7-2d787b789e4e
Journal backup:           inode blocks

dumpe2fs [OPTION]   /dev/DEV
     -h                              ##查看超级块信息                
     -x                              ##查看块组以信息十六进制显示
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]              ##块组的block的范围  
Checksum 0xc867, unused inodes 7893                 ##校验码和未使用的inode的数量  
Primary superblock at 0, Group descriptors at 1-1  
Reserved GDT blocks at 2-193  
Block bitmap at 194 (+194), Inode bitmap at 210 (+210)      ##块位图,inode位图  
Inode table at 226-719 (+226)                     ##inode表  
24632 free blocks, 7893 free inodes, 2 directories, 7893 unused inodes  ##未使用的块,未使用的inode节点,2个目录  
Free blocks: 8136-32767                            ##未使用块的范围  
Free inodes: 12-7904                              ##未使用inode的范围

原创文章,作者:Y.sir,如若转载,请注明出处:http://www.178linux.com/9922