磁盘和文件系统创建

磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘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

(0)
Y.sirY.sir
上一篇 2016-02-14 09:44
下一篇 2016-02-14 09:48

相关推荐

  • Linux的哲学思想

    Linux的哲学思想 一切皆文件 不管是普通的文件、目录,还是跟硬件相关的字符设备、块设备、套接字等在Linux中都被当作文件来进行统一的操作管理。 单个程序完成简单的功能,复杂的功能由多个程序组合而成 单个程序只实现简单功能,保证了其高效运行,而复杂功能由多个简单程序组合而成,也能保证一定的高效性。 尽量避免与用户交互 程序从启动开始到结束不需要用户参与,…

    Linux干货 2017-07-02
  • 《 Git 权威指南 》学习笔记

    这个没办法直接发博客了,篇幅太长,无法直接在 Blog 上排版了,直接发上 pdf 文档了。 接 《LNAMP Shell 部署脚本》 博文的内容,线上测试系统的 Git 环境部署。 整个 Git 环境包括了:     Git / Gitweb     Gitolite / Gerrit &nbsp…

    Linux干货 2015-10-27
  • apache自动化脚本搭建虚拟主机

    1 基于主机名实现三个虚拟主机 (1).创建网站目录与测试文件 (2).创建虚拟主机文件(目录为/etc/httpd/conf.d/下)   (3).修改测试apache主机hosts文件(就不用DNS服务器解析,方便测试),测试httpd配置文件是否有问题,重启httpd服务   (4)修改测试主机hosts文件(就不用DNS服务器解析…

    Linux干货 2016-10-09
  • N25第五周 grep 和find 命令使用示例

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;    [root@localhost grub]# grep "^[[:space:]]\+.*" grub.conf    root (hd0,0)…

    Linux干货 2016-12-25
  • 逻辑卷LVM

    逻辑卷LVM 简介     在实际生产应用中,磁盘的分区的容量是固定不变的,当出现分区容量不足的情况,除了新加磁盘,还有没有其他方法呢?    逻辑卷(LVM)的概念就出现了,全称叫Logical Volume Manager。它的作用是允许对卷进行方便操作的抽象层,包括重新设定…

    Linux干货 2017-08-12
  • python使用paramiko 模块建立ssh通讯

    一 paramiko简介 下文是我从别人博客那里copy下来的: paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOSX, Windows…

    Linux干货 2017-03-07