磁盘和文件系统创建

磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘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 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。元数据中的inode才是…

    Linux干货 2016-10-20
  • linux添加用户

    今天给大家说一下linux添加用户,大家可能觉得添加用户很简单,’adduser 用户名’就这个命令搞掂了。那么大家知道这个命令帮我们完成了那些事情呢,今天就给大家普及一下 添加一个linux用户需要关系到以下几个文件: 保存用户组的/etc/group文件。 保存用户ID和密码的/etc/passwd文件。 在home目录下生产一个…

    Linux干货 2017-05-28
  • 学习宣言

    书山有路勤为径,学海无涯苦作舟。学吧!!!

    Linux干货 2016-10-29
  • 创建CA、申请证书和吊销证书详解

    创建CA和申请证书、吊销证书 搭建工具:openssl 服务端:centos7 客户端:centos6 配置实验环境: 需要两台虚拟机为服务端、客户端提供运行环境,装载openssl工具,添加必要文件;通过查看openssl的配置文件/etc/pki/tls/openssl.cnf(图一),对比服务端的/etc/pki/CA文件内容(图二),如果第一次搭建服…

    2017-04-11
  • N25-第五周博客作业

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

    Linux干货 2017-01-06
  • 22期第十四周课堂练习

    系统的INPUT和OUTPUT默认策略为DROP; [root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周…

    Linux干货 2017-03-15