您的位置:新葡亰496net > 电脑系统 > linux相识相知,磁盘及文件系统

linux相识相知,磁盘及文件系统

发布时间:2019-10-22 05:08编辑:电脑系统浏览(132)

    磁盘,提供持久的数据存储,它不像我们的内存,如果突然断电了,在内存中的数据一般都会被丢掉了,内存中的数据在保存的时候,会被写到硬盘里面,磁盘也是一种I/O设备。

    【linux相识相知】磁盘分区及文件系统管理详解,linux相识相知

    磁盘,提供持久的数据存储,它不像我们的内存,如果突然断电了,在内存中的数据一般都会被丢掉了,内存中的数据在保存的时候,会被写到硬盘里面,磁盘也是一种I/O设备。

    我们都知道磁盘分区完成之后,还要进行格式化,这个格式化操作就是指定文件系统,文件系统的本质就是对一个存储设备上的元数据和数据就行组织,最终把数据有组织的放在可以长期存储的设备中。

    本次博客主要是介绍可linux中的磁盘分区和文件系统管理。

     

    磁盘及文件系统

    我们都知道磁盘分区完成之后,还要进行格式化,这个格式化操作就是指定文件系统,文件系统的本质就是对一个存储设备上的元数据和数据就行组织,最终把数据有组织的放在可以长期存储的设备中。

    磁盘的接口类型:

    IDE:一种较老的接口技术,价格低廉,兼容性强,传输速度可达133MB/s;

    SCSI:主要应用于中、高端服务器中,支持热拔插,价格较高,其中UltraSCSI可达320MB/S,UltraSCSI640可达640MB/S;

    SCSI接口

    SATA:主要用于PC上,串口硬盘,可达6gbps;

    SAS:是一种串行链接的SCSI接口技术,向下兼容SATA,速度快;

    USB:一种便携的存储设备,USB3.0理论最大传输速度可达500MB/s,现在最新的USB3.1Gen 2最高可达10Gbps。

     

    并口和串口的区别:

    并口:同一线缆可以接多块设备,IDE和SCSI为并口硬盘;

    串口:同一线缆只可以接一个设备,SATA、SAS和USB为串口,抗干扰能力强。

    我们都知道作为linux的哲学思想之一,一切皆文件,在linux中使用设备文件来标识不同的硬盘,也就是设备的访问接口,在Linux中I/O设备分为2倍,字符设备和块设备,基于不同的功能进行分类的:

    (1)字符设备:线性访问的,数据的交换单位是“字符”,提供的连续的数据流,不支持随机存取,举例来说,键盘、调制解调器都是典型的字符设备;

    (2)块设备:可以提供随机访问,数据交换的单位是“块”,硬盘、CD-ROM驱动器都是典型的块设备,应用可以寻址磁盘上的任何位置,并读取数据。

     图片 1

    在Linux系统中,c代表字符设备,b为块设备(红色部分标识)。

    后面黄色标注的两行为设备号:

    主设备号:左列,区分设备类型,用于标明设备所需要的驱动程序;

    次设备号:右列,区分同种类型下的不同的设备。

     

     mknod命令

     mknod可以创建设备文件,格式如下:

    mknod  [OPTION]...  NAME  TYPE  [MAJOR  MINOR]
    选项:
    -m MODE:创建后的设备文件的访问权限
    
    mknod /dev/ttyUSB32 c 188 32
    

     linux的设备文件都是放在/dev目录下的,应用程序可以通过这些设备文件完成都设备的读写等操作。之前写过设备都有主次设备号,linux有约定俗成的编号,如硬盘的主设备号在centos6和7中为8:

     根据接口类型的不同,设备的文件名命令也有一些规定,在centos如下:

     图片 2

    在引用设备的时候可以通过以下三种方式:

    1.设备文件名,也就是/dev目录下的文件名;

    2.系统卷标(volume label);

    3.UUID,唯一表示码,能够唯一的表示一个设备。

     

    硬盘的物理构成:

    本次博客主要是介绍可linux中的磁盘分区和文件系统管理。

    MBR和GPT

    一块磁盘是可以被分割成多个分区,从Windows的角度来看,就是C,D,E分区。磁盘分区的方式有MBR和GPT。

     

     MBR(Master Boot Record)

    总共大小为512字节,存在于磁盘的第0个扇区。

    446bytes:引导启动操作系统的程序;

    64bytes:分区表,每16bytes标识一个分区,一共能够有4个主分区,但是如果想划分更多的区,可以指定扩展分区,比如分为3个主分区,一个扩展分区,而扩展分区可以划分为若干个逻辑分区。

     图片 3

     综上所述,如果使用MBR分区,就必须至少有一个扩展分区,然后将扩展分区分成逻辑分区,逻辑分区的序号从5开始。

     

     GPT(GUID Partition Table):

    MBR是另一种分区方式:

    1):GPT分区表中最多可以支持128个主分区

    2):突破了MBR单个分区只能是2.2T的限制,最大支持1EB容量

    在GPT中主分区、扩展分区和模糊分区的概念就淡化了很多。

     

     

        扇区(sector)、磁道(track)、磁头、柱面(cylinder)

     

    分区工具

     fidisk

     1.查看磁盘分区

    fdisk -l device...:查看指定磁盘设备的分区情况
    

     图片 4

     2.管理分区

     fdisk为MBR方式的分区工具,提供了交互式的接口来管理分区所有的操作,都是在内存中完成的,当使用w保存的时候,才真正去创建或修改分区。

    fdisk device
    

     我们来试试,可以看到使用fdisk加设备名,就进入到了一个交互式的界面,输入m即可获得帮助:

    [[email protected] ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    Device does not contain a recognized partition table
    使用磁盘标识符 0x3918c6ef 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):m
    命令操作
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition                <=======删除已有分区
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       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   quit without 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)
    

     举个例子:现在新加了一块120G的磁盘,分为3个主分区,每个区20G,余下的空间都给扩展分区并添加一个20G的逻辑分区。

    [[email protected] ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    Device does not contain a recognized partition table
    使用磁盘标识符 0x3918c6ef 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):1
    起始 扇区 (2048-251658239,默认为 2048):
    将使用默认值 2048
    Last 扇区,  扇区 or  size{K,M,G} (2048-251658239,默认为 251658239): 20G
    分区 1 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p
    分区号 (2-4,默认 2):2
    起始 扇区 (41945088-251658239,默认为 41945088):
    将使用默认值 41945088
    Last 扇区,  扇区 or  size{K,M,G} (41945088-251658239,默认为 251658239): 20G
    分区 2 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p): p
    分区号 (3,4,默认 3):
    起始 扇区 (83888128-251658239,默认为 83888128):
    将使用默认值 83888128
    Last 扇区,  扇区 or  size{K,M,G} (83888128-251658239,默认为 251658239): 20G
    分区 3 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (3 primary, 0 extended, 1 free)
       e   extended
    Select (default e): e
    已选择分区 4
    起始 扇区 (125831168-251658239,默认为 125831168):
    将使用默认值 125831168
    Last 扇区,  扇区 or  size{K,M,G} (125831168-251658239,默认为 251658239):
    将使用默认值 251658239
    分区 4 已设置为 Extended 类型,大小设为 60 GiB
    命令(输入 m 获取帮助):n
    All primary partitions are in use
    添加逻辑分区 5
    起始 扇区 (125833216-251658239,默认为 125833216):
    将使用默认值 125833216
    Last 扇区,  扇区 or  size{K,M,G} (125833216-251658239,默认为 251658239): 20G
    分区 5 已设置为 Linux 类型,大小设为 20 GiB
    

     查看分区情况:

    [[email protected] ~]# fdisk -l /dev/sdb 
    磁盘 /dev/sdb:128.8 GB, 128849018880 字节,251658240 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x3918c6ef
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    41945087    20971520   83  Linux
    /dev/sdb2        41945088    83888127    20971520   83  Linux
    /dev/sdb3        83888128   125831167    20971520   83  Linux
    /dev/sdb4       125831168   251658239    62913536    5  Extended
    /dev/sdb5       125833216   167776255    20971520   83  Linux
    

     

     parted

     这个工具既可以做MBR的分区,又可以做GPT的分区,主要时候用来做GPT的。

     1.查看分区情况:

    parted -l device   (亲测:竟然也可以使用fdisk -l指定设备查看)
    

     2.管理分区

     parted也提供了交互式的接口来管理分区,输入help查看帮助,我们来看一下:

    [[email protected] ~]# parted
    GNU Parted 3.1
    使用 /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) help                                                             
      align-check TYPE N                        check partition N for TYPE(min|opt) alignment
      help [COMMAND]                           print general help, or help on COMMAND
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
      mkpart PART-TYPE [FS-TYPE] START END     make a partition
      name NUMBER NAME                         name partition NUMBER as NAME
      print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found
            partitions, or a particular partition
      quit                                     exit program
      rescue START END                         rescue a lost partition near START and END
      rm NUMBER                                delete partition NUMBER
      select DEVICE                            choose the device to edit
      disk_set FLAG STATE                      change the FLAG on selected device
      disk_toggle [FLAG]                       toggle the state of FLAG on selected device
      set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
      toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
      unit UNIT                                set the default unit to UNIT
      version                                  display the version number and copyright information of GNU Parted
    (parted)                                  
    

    (看起来比fdisk麻烦多了) 我们来举个例子来说明parted的使用方法: 1)首先选择要分区的设备,使用select Device

    (parted) select /dev/sdc
    使用 /dev/sdc
    

     2)选择分区格式为GPT

     mklabel gpt
    

     下面是命令的使用帮助

    (parted) help mklabel 
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
        “标签类型”是以下任意一项:aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop
    

     3)使用mkpart分区时,不需要指定分区的数字标识(在MBR中可能要指定1-4或更多),可以直接给它加上名称,这说明在GPT分区的情况下,主分区扩展分区已经变得不那么重要了,分区的起始点最好从1开始

    (parted) mkpart 
    分区名称?  []? my_data1                                                  
    文件系统类型?  [ext2]?     #文件系统先不用管,后面会讲到                                               
    起始点? 1        #                                                        
    结束点? 2048     #默认为M
    

     4)这样一个分区就创建好了,可以使用print查看

    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
    

     5)让我们再来新建一个分区,新建分区的起始点就是上一个分区的结束点

    (parted) mkpart                                                           
    分区名称?  []? my_data2
    文件系统类型?  [ext2]?                                                   
    起始点? 2048
    结束点? 4096                                                             
    (parted)                                                                  
    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
     2      2048MB  4096MB  2048MB               my_data2
    

     6)作为linux的哲学思想之一,避免与用户交互,我们也可以使用以下方式来创建新的分区

    (parted) mkpart my_data3 4096 6144                                        
    (parted)                                                                  
    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
     2      2048MB  4096MB  2048MB               my_data2
     3      4096MB  6144MB  2048MB               my_data3
    

     7)parted使用quit退出即生效

    (parted) quit                                                             
    信息: You may need to update /etc/fstab.
    [[email protected] ~]#       
    

    以上就是2种比较常用的分区工具了 特别要注意的是,在已经分区并且已经挂载在根文件系统的目录上的设备,再在这个设备上创建新的分区(比如在扩展分区上创建逻辑分区),内核可能在创建完成后无法直接识别。 可以查看/proc/partitions,确认内核是否已经识别:

    [[email protected] ~]# cat /proc/partitions 
    major minor  #blocks  name
       8       16  125829120 sdb
       8       17   20971520 sdb1
       8       18   20971520 sdb2
       8       19   20971520 sdb3
       8       20          1 sdb4
       8       21   20971520 sdb5
       8       32   52428800 sdc
       8       33    1998848 sdc1
       8       34    1999872 sdc2
       8       35    1999872 sdc3
       8        0   20971520 sda
       8        1     512000 sda1
       8        2   20458496 sda2
      11        0    4277248 sr0
     253        0   16261120 dm-0
     253        1    2097152 dm-1
     253        2    2097152 dm-2
    

     如果没有识别可以使用以下两种方式通知内核强制重读磁盘分区表:

    partx -a device
    kpartx -af device
    

     如果命令一次不能成功,请多试几次。

     

    分区:就是记录每一个分区的起始柱面和结束柱面。分区信息存放在0柱面0磁头1扇区上:MBR 主引导记录(446字节) DPT磁盘分区表(64字节) 结束标志(2个字节)

    磁盘的接口类型:

    IDE:一种较老的接口技术,价格低廉,兼容性强,传输速度可达133MB/s;

    SCSI:主要应用于中、高端服务器中,支持热拔插,价格较高,其中UltraSCSI可达320MB/S,UltraSCSI640可达640MB/S;

    图片 5

    SCSI接口

    SATA:主要用于PC上,串口硬盘,可达6gbps;

    SAS:是一种串行链接的SCSI接口技术,向下兼容SATA,速度快;

    USB:一种便携的存储设备,USB3.0理论最大传输速度可达500MB/s,现在最新的USB3.1Gen 2最高可达10Gbps。

     

    并口和串口的区别:

    并口:同一线缆可以接多块设备,IDE和SCSI为并口硬盘;

    串口:同一线缆只可以接一个设备,SATA、SAS和USB为串口,抗干扰能力强。

    我们都知道作为linux的哲学思想之一,一切皆文件,在linux中使用设备文件来标识不同的硬盘,也就是设备的访问接口,在Linux中I/O设备分为2倍,字符设备和块设备,基于不同的功能进行分类的:

    (1)字符设备:线性访问的,数据的交换单位是“字符”,提供的连续的数据流,不支持随机存取,举例来说,键盘、调制解调器都是典型的字符设备;

    (2)块设备:可以提供随机访问,数据交换的单位是“块”,硬盘、CD-ROM驱动器都是典型的块设备,应用可以寻址磁盘上的任何位置,并读取数据。

     图片 6

    在Linux系统中,c代表字符设备,b为块设备(红色部分标识)。

    后面黄色标注的两行为设备号:

    主设备号:左列,区分设备类型,用于标明设备所需要的驱动程序;

    次设备号:右列,区分同种类型下的不同的设备。

     

     mknod命令

     mknod可以创建设备文件,格式如下:

    mknod  [OPTION]...  NAME  TYPE  [MAJOR  MINOR]
    选项:
    -m MODE:创建后的设备文件的访问权限
    
    mknod /dev/ttyUSB32 c 188 32
    

     linux的设备文件都是放在/dev目录下的,应用程序可以通过这些设备文件完成都设备的读写等操作。之前写过设备都有主次设备号,linux有约定俗成的编号,如硬盘的主设备号在centos6和7中为8:

     根据接口类型的不同,设备的文件名命令也有一些规定,在centos如下:

     图片 7

    在引用设备的时候可以通过以下三种方式:

    1.设备文件名,也就是/dev目录下的文件名;

    2.系统卷标(volume label);

    3.UUID,唯一表示码,能够唯一的表示一个设备。

     

    文件系统的特性

    磁盘分区完成之后,还要进行格式化,这个格式化操作就是指定文件系统,文件系统的本质就是对一个存储设备上的元数据和数据就行组织,最终把数据有组织的放在可以长期存储的设备中。

    传统的说法是一个分区只能格式化成一种文件系统,但是由于新技术的产生,LVM或者RAID,一个分区可以被格式化成多个文件系统,也可以将多个分区格式格式化成一个文件系统。

    数据一般分为实际的数据(实际的数据,一首mp3)和元数据(文件的属性和权限等),它们在文件系统中存放的位置是不同的。实际的数据是存储在data block中,元数据则是存储在innode中,除此之外还有一个superblock。

    superblock:记录了文件系统的整体信息,包括innode/block的总量、使用量和剩余量和文件系统的格式等

    inode:记录文件的属性,一个文件占一个inode,同时也记录了文件所在的block号

    block:实际记录文件的内容,若文件大小大于block,则占用多个block块

     

     下面就来讲一下inode和block之间的关系:

     1.索引式文件系统

     若一个文件的inode号是4,此中存放了其block的位置:2,7,13,15,那么操作系统读取数据的时候,就可以根据inode中block的位置一次性将数据读取出来。

     图片 8

    2.链式文件系统

     和索引式文件系统不同的是莲式读取文件方式,常见于U盘的FAT格式,这种文件系统没有inode的存在,每个block的号码都记录在前一个block中。

     图片 9

     3.磁盘重组

     磁盘重组的目的就是将写在磁盘中离散的block重新组织一下,将同一个文件的block块集合在一起,以便于数据的读取。导致数据离散的原因,一般是由于文件系统使用的时间过长,非常多次的数据的操作,比如删除、增加和修改的次数很多。

     

          硬盘的主引导记录(MBR)是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存,并发挥作用,然后才将控制权交给主分区(活动分区)内的

    MBR和GPT

    一块磁盘是可以被分割成多个分区,从Windows的角度来看,就是C,D,E分区。磁盘分区的方式有MBR和GPT。

     

     MBR(Master Boot Record)

    总共大小为512字节,存在于磁盘的第0个扇区。

    446bytes:引导启动操作系统的程序;

    64bytes:分区表,每16bytes标识一个分区,一共能够有4个主分区,但是如果想划分更多的区,可以指定扩展分区,比如分为3个主分区,一个扩展分区,而扩展分区可以划分为若干个逻辑分区。

     图片 10

     综上所述,如果使用MBR分区,就必须至少有一个扩展分区,然后将扩展分区分成逻辑分区,逻辑分区的序号从5开始。

     

     GPT(GUID Partition Table):

    MBR是另一种分区方式:

    1):GPT分区表中最多可以支持128个主分区

    2):突破了MBR单个分区只能是2.2T的限制,最大支持1EB容量

    在GPT中主分区、扩展分区和模糊分区的概念就淡化了很多。

     

     

     文件系统的类别

    Linux的文件系统: ext2(无日志功能), ext3, ext4, xfs, reiserfs, btrfs
    光盘:iso9660
    网络文件系统:nfs, cifs
    集群文件系统:gfs2, ocfs2
    内核级分布式文件系统:ceph
    windows的文件系统:vfat, ntfs
    伪文件系统:proc, sysfs, tmpfs, hugepagefs
    Unix的文件系统:UFS, FFS, JFS
    交换文件系统:swap
    用户空间的分布式文件系统:mogilefs, moosefs, glusterfs
    

     

      操作系统,并用主分区信息表来管理硬盘。

    分区工具

     fidisk

     1.查看磁盘分区

    fdisk -l device...:查看指定磁盘设备的分区情况
    

     图片 11

     2.管理分区

     fdisk为MBR方式的分区工具,提供了交互式的接口来管理分区所有的操作,都是在内存中完成的,当使用w保存的时候,才真正去创建或修改分区。

    fdisk device
    

     我们来试试,可以看到使用fdisk加设备名,就进入到了一个交互式的界面,输入m即可获得帮助:

    [root@localhost ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    Device does not contain a recognized partition table
    使用磁盘标识符 0x3918c6ef 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):m
    命令操作
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition                <=======删除已有分区
       g   create a new empty GPT partition table
       G   create an IRIX (SGI) partition table
       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   quit without 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)
    

     举个例子:现在新加了一块120G的磁盘,分为3个主分区,每个区20G,余下的空间都给扩展分区并添加一个20G的逻辑分区。

    [root@localhost ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    Device does not contain a recognized partition table
    使用磁盘标识符 0x3918c6ef 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):1
    起始 扇区 (2048-251658239,默认为 2048):
    将使用默认值 2048
    Last 扇区,  扇区 or  size{K,M,G} (2048-251658239,默认为 251658239): 20G
    分区 1 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p
    分区号 (2-4,默认 2):2
    起始 扇区 (41945088-251658239,默认为 41945088):
    将使用默认值 41945088
    Last 扇区,  扇区 or  size{K,M,G} (41945088-251658239,默认为 251658239): 20G
    分区 2 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p): p
    分区号 (3,4,默认 3):
    起始 扇区 (83888128-251658239,默认为 83888128):
    将使用默认值 83888128
    Last 扇区,  扇区 or  size{K,M,G} (83888128-251658239,默认为 251658239): 20G
    分区 3 已设置为 Linux 类型,大小设为 20 GiB
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (3 primary, 0 extended, 1 free)
       e   extended
    Select (default e): e
    已选择分区 4
    起始 扇区 (125831168-251658239,默认为 125831168):
    将使用默认值 125831168
    Last 扇区,  扇区 or  size{K,M,G} (125831168-251658239,默认为 251658239):
    将使用默认值 251658239
    分区 4 已设置为 Extended 类型,大小设为 60 GiB
    命令(输入 m 获取帮助):n
    All primary partitions are in use
    添加逻辑分区 5
    起始 扇区 (125833216-251658239,默认为 125833216):
    将使用默认值 125833216
    Last 扇区,  扇区 or  size{K,M,G} (125833216-251658239,默认为 251658239): 20G
    分区 5 已设置为 Linux 类型,大小设为 20 GiB
    

     查看分区情况:

    [root@localhost ~]# fdisk -l /dev/sdb 
    磁盘 /dev/sdb:128.8 GB, 128849018880 字节,251658240 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x3918c6ef
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    41945087    20971520   83  Linux
    /dev/sdb2        41945088    83888127    20971520   83  Linux
    /dev/sdb3        83888128   125831167    20971520   83  Linux
    /dev/sdb4       125831168   251658239    62913536    5  Extended
    /dev/sdb5       125833216   167776255    20971520   83  Linux
    

     

     parted

     这个工具既可以做MBR的分区,又可以做GPT的分区,主要时候用来做GPT的。

     1.查看分区情况:

    parted -l device   (亲测:竟然也可以使用fdisk -l指定设备查看)
    

     2.管理分区

     parted也提供了交互式的接口来管理分区,输入help查看帮助,我们来看一下:

    [root@localhost ~]# parted
    GNU Parted 3.1
    使用 /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) help                                                             
      align-check TYPE N                        check partition N for TYPE(min|opt) alignment
      help [COMMAND]                           print general help, or help on COMMAND
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
      mkpart PART-TYPE [FS-TYPE] START END     make a partition
      name NUMBER NAME                         name partition NUMBER as NAME
      print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found
            partitions, or a particular partition
      quit                                     exit program
      rescue START END                         rescue a lost partition near START and END
      rm NUMBER                                delete partition NUMBER
      select DEVICE                            choose the device to edit
      disk_set FLAG STATE                      change the FLAG on selected device
      disk_toggle [FLAG]                       toggle the state of FLAG on selected device
      set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
      toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
      unit UNIT                                set the default unit to UNIT
      version                                  display the version number and copyright information of GNU Parted
    (parted)                                  
    

    (看起来比fdisk麻烦多了)

    我们来举个例子来说明parted的使用方法:

    1)首先选择要分区的设备,使用select Device

    (parted) select /dev/sdc
    使用 /dev/sdc
    

     2)选择分区格式为GPT

     mklabel gpt
    

     下面是命令的使用帮助

    (parted) help mklabel 
      mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
        “标签类型”是以下任意一项:aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop
    

     3)使用mkpart分区时,不需要指定分区的数字标识(在MBR中可能要指定1-4或更多),可以直接给它加上名称,这说明在GPT分区的情况下,主分区扩展分区已经变得不那么重要了,分区的起始点最好从1开始

    (parted) mkpart 
    分区名称?  []? my_data1                                                  
    文件系统类型?  [ext2]?     #文件系统先不用管,后面会讲到                                               
    起始点? 1        #                                                        
    结束点? 2048     #默认为M
    

     4)这样一个分区就创建好了,可以使用print查看

    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
    

     5)让我们再来新建一个分区,新建分区的起始点就是上一个分区的结束点

    (parted) mkpart                                                           
    分区名称?  []? my_data2
    文件系统类型?  [ext2]?                                                   
    起始点? 2048
    结束点? 4096                                                             
    (parted)                                                                  
    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
     2      2048MB  4096MB  2048MB               my_data2
    

     6)作为linux的哲学思想之一,避免与用户交互,我们也可以使用以下方式来创建新的分区

    (parted) mkpart my_data3 4096 6144                                        
    (parted)                                                                  
    (parted) print                                                            
    Model: ATA VMware Virtual I (scsi)
    Disk /dev/sdc: 53.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    Number  Start   End     Size    File system  Name      标志
     1      1049kB  2048MB  2047MB               my_data1
     2      2048MB  4096MB  2048MB               my_data2
     3      4096MB  6144MB  2048MB               my_data3
    

     7)parted使用quit退出即生效

    (parted) quit                                                             
    信息: You may need to update /etc/fstab.
    [root@localhost ~]#       
    

    以上就是2种比较常用的分区工具了

    特别要注意的是,在已经分区并且已经挂载在根文件系统的目录上的设备,再在这个设备上创建新的分区(比如在扩展分区上创建逻辑分区),内核可能在创建完成后无法直接识别。

    可以查看/proc/partitions,确认内核是否已经识别:

    [root@localhost ~]# cat /proc/partitions 
    major minor  #blocks  name
       8       16  125829120 sdb
       8       17   20971520 sdb1
       8       18   20971520 sdb2
       8       19   20971520 sdb3
       8       20          1 sdb4
       8       21   20971520 sdb5
       8       32   52428800 sdc
       8       33    1998848 sdc1
       8       34    1999872 sdc2
       8       35    1999872 sdc3
       8        0   20971520 sda
       8        1     512000 sda1
       8        2   20458496 sda2
      11        0    4277248 sr0
     253        0   16261120 dm-0
     253        1    2097152 dm-1
     253        2    2097152 dm-2
    

     如果没有识别可以使用以下两种方式通知内核强制重读磁盘分区表:

    partx -a device
    kpartx -af device
    

     如果命令一次不能成功,请多试几次。

     

     linux下的EXT2文件系统

    EXT2是一种比较旧的文件系统了,从Centos7开始文件系统已经开始使用了XFS,但是这种使用inode为基础的文件系统还是要了解的,毕竟后面也出现了它的升级版本,EXT3和EXT4。

    前面说过inode记录是文件的权限和属性,inode和block在文件系统创建好之后就已经分好了的,但是我们想一想,如果一个硬盘有500G甚至更大,inode和block都放在一起就会显得不是很合理,数量过大,不容易去管理。所有在EXT2文件系统中在格式化的时候将文件系统分为多个区块,称为block group,每个block group都有自己的block/inode/superblock。

    下面我们就来看看一个block group的大致样子:

     图片 12

    在文件系统的最前面有一个Boot Sector,可以安装开机管理程序,这样我们就能将不同的开机管理程序安装在个别的文件系统之前,而不用覆盖整个磁盘的MBR,这样就能做出多重开机的环境。

     

     block group的内容:

    date block:用来放置文件内容的地方,大小一般为1k、2k、4k,block的大小在格式化之后就不能再改变了,每个block就能存放一个文件的数据。

    inode table:记录了文件的权限,文件的大小,时间戳,flag或者该文件的真正指向

    superblock:block和inode的数量信息,文件系统的时间戳,一个有效比特,该值为0代表已经被挂载,该值为1则没有被挂载

    Filesystem Description:文件系统描述说明,描述了每个block group的开始和结束的block号码,已经说明了superblockbitmapinodemapdata block分别在哪个一个block号码之间。

    block bitmap:block位图,记录block的使用情况,标明了哪些block是空的,我们在删除的文件的时候,会发现很快,删除文件操作其实就是改变了该文件占用的bitmap的位置为空,block的文件暂时没有删除,这就是我们的数据可以被找回的原因

    inode bitmap:inode位图,与block bitmap的功能类似,记录的是使用与未使用的inode号码。

     

    文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

    文件系统的特性

    磁盘分区完成之后,还要进行格式化,这个格式化操作就是指定文件系统,文件系统的本质就是对一个存储设备上的元数据和数据就行组织,最终把数据有组织的放在可以长期存储的设备中。

    传统的说法是一个分区只能格式化成一种文件系统,但是由于新技术的产生,LVM或者RAID,一个分区可以被格式化成多个文件系统,也可以将多个分区格式格式化成一个文件系统。

    数据一般分为实际的数据(实际的数据,一首mp3)和元数据(文件的属性和权限等),它们在文件系统中存放的位置是不同的。实际的数据是存储在data block中,元数据则是存储在innode中,除此之外还有一个superblock。

    superblock:记录了文件系统的整体信息,包括innode/block的总量、使用量和剩余量和文件系统的格式等

    inode:记录文件的属性,一个文件占一个inode,同时也记录了文件所在的block号

    block:实际记录文件的内容,若文件大小大于block,则占用多个block块

     

     下面就来讲一下inode和block之间的关系:

     1.索引式文件系统

     若一个文件的inode号是4,此中存放了其block的位置:2,7,13,15,那么操作系统读取数据的时候,就可以根据inode中block的位置一次性将数据读取出来。

     图片 13

    2.链式文件系统

     和索引式文件系统不同的是莲式读取文件方式,常见于U盘的FAT格式,这种文件系统没有inode的存在,每个block的号码都记录在前一个block中。

     图片 14

     3.磁盘重组

     磁盘重组的目的就是将写在磁盘中离散的block重新组织一下,将同一个文件的block块集合在一起,以便于数据的读取。导致数据离散的原因,一般是由于文件系统使用的时间过长,非常多次的数据的操作,比如删除、增加和修改的次数很多。

     

    目录的Inode

    文件系统会给目录分配至少一个block,inode记录了权限和属性以及分配到的block号,而block则记录了这个目录下的文件名与该文件名所占用的inode号码。

    下面描述读取一个目录下文件的流程:

    举例:root读取/tmp/test.txt文件的过程:

    1./的inode:通过挂载点信息找到inode号码为128的根目录的inode,取得权限和block号

    2./的block:根据block的号码,查看block的内容,找到目录tmp/的文件名和其inode号

    3.tmp/的inode:根据inode,获取权限信息和block号

    4.tmp/的block:查看对应的block的内容,找到test.txt的inode号

    5.test.txt的inode号:根据inode,获取权限信息和对应的block号

    6.test.txt的block:获取文件的实际内容

     

        block :数据存储的最小单元

     文件系统的类别

    Linux的文件系统: ext2(无日志功能), ext3, ext4, xfs, reiserfs, btrfs
    光盘:iso9660
    网络文件系统:nfs, cifs
    集群文件系统:gfs2, ocfs2
    内核级分布式文件系统:ceph
    windows的文件系统:vfat, ntfs
    伪文件系统:proc, sysfs, tmpfs, hugepagefs
    Unix的文件系统:UFS, FFS, JFS
    交换文件系统:swap
    用户空间的分布式文件系统:mogilefs, moosefs, glusterfs
    

     

    日志式文件系统功能

    数据存放区域:inode table,data block

    metadata:中介数据,变化次数频繁,superblock,block bitmap和inode bitmap

    新增一个文件的过程:

    1.根据目录文件的inode确定用户是否有权限

    2.根据inode位图找到没有使用的inode号,在inode table写入权限等信息

    3.根据block位图找到没有使用的block号,在block中写入实际数据,更新到inode中去

    4.更新inode位图和block位图,并更新到superblock中

    一般一个完整的新建文件的过程就如上

    但是但是出现特殊情况,比如断电,可能会出现数据仅仅写到了inode table和block中却没有更新inode位图和block位图,也没有更新superblock,那就导致中介数据和真正存储数据的内容不一致。

    在EXT2中,要使用e2fsck这个工具,要遍历整个文件系统,!!不敢想象啊!

    所以就出现了日志式文件系统:

    在文件系统中又单独划分一个区块,记录了写入或修改文件时的信息

    1.当要写入一个文件的时候,就在日志区块记录一下某个文件要写入了

    2.写入文件的数据,更新metadata数据

    3.完成数据和metadate的更新,在日志记录区块当中完成对该文件的记录

    这样,当发生意外的时候,我们可以直接检查日志记录区块,查看哪些文件有问题,然后做出校验即可

    EXT2不支持日志式文件系统,EXT3和EXT4都支持日志式文件系统,并向下兼容EXT2

     

        inode:索引节点,全局唯一编号,除了记录文件的属性外,同时还具有指针功能,指向文件内容放置的快

     linux下的EXT2文件系统

    EXT2是一种比较旧的文件系统了,从Centos7开始文件系统已经开始使用了XFS,但是这种使用inode为基础的文件系统还是要了解的,毕竟后面也出现了它的升级版本,EXT3和EXT4。

    前面说过inode记录是文件的权限和属性,inode和block在文件系统创建好之后就已经分好了的,但是我们想一想,如果一个硬盘有500G甚至更大,inode和block都放在一起就会显得不是很合理,数量过大,不容易去管理。所有在EXT2文件系统中在格式化的时候将文件系统分为多个区块,称为block group,每个block group都有自己的block/inode/superblock。

    下面我们就来看看一个block group的大致样子:

     图片 15

    在文件系统的最前面有一个Boot Sector,可以安装开机管理程序,这样我们就能将不同的开机管理程序安装在个别的文件系统之前,而不用覆盖整个磁盘的MBR,这样就能做出多重开机的环境。

     

     block group的内容:

    date block:用来放置文件内容的地方,大小一般为1k、2k、4k,block的大小在格式化之后就不能再改变了,每个block就能存放一个文件的数据。

    inode table:记录了文件的权限,文件的大小,时间戳,flag或者该文件的真正指向

    superblock:block和inode的数量信息,文件系统的时间戳,一个有效比特,该值为0代表已经被挂载,该值为1则没有被挂载

    Filesystem Description:文件系统描述说明,描述了每个block group的开始和结束的block号码,已经说明了superblockbitmapinodemapdata block分别在哪个一个block号码之间。

    block bitmap:block位图,记录block的使用情况,标明了哪些block是空的,我们在删除的文件的时候,会发现很快,删除文件操作其实就是改变了该文件占用的bitmap的位置为空,block的文件暂时没有删除,这就是我们的数据可以被找回的原因

    inode bitmap:inode位图,与block bitmap的功能类似,记录的是使用与未使用的inode号码。

     

    VFS

    VFS(Virtual Filesystem Switch),linux系统通过VFS的核心功能去读取文件系统。

    比如/是使用的是/dev/sda1,其文件系统是ext2格式的,而/home使用的/dev/sda2,其格式为xfs,如果我们现在要读取/home/Frank,直接cat就行了,我们有指定要用什么文件系统的模块去读取吗?没有,这个就是VFS的功能,VFS可以管理所有的filesystem,示意图如下:

     图片 16

     

            (里面保存的是文件的权限,所有者,所属主等基本信息)

    目录的Inode

    文件系统会给目录分配至少一个block,inode记录了权限和属性以及分配到的block号,而block则记录了这个目录下的文件名与该文件名所占用的inode号码。

    下面描述读取一个目录下文件的流程:

    举例:root读取/tmp/test.txt文件的过程:

    1./的inode:通过挂载点信息找到inode号码为128的根目录的inode,取得权限和block号

    2./的block:根据block的号码,查看block的内容,找到目录tmp/的文件名和其inode号

    3.tmp/的inode:根据inode,获取权限信息和block号

    4.tmp/的block:查看对应的block的内容,找到test.txt的inode号

    5.test.txt的inode号:根据inode,获取权限信息和对应的block号

    6.test.txt的block:获取文件的实际内容

     

    硬链接和符号链接

     硬链接和符号链接都是都是链接文件,用"l"表示

     图片 17

    (红色为符号链接标识l,黄色为引用计数)

     

     硬链接 指向同一个inode的多个文件路径 特性:目录不支持硬链接,硬链接不支持跨文件系统,创建硬链接会增加inode引用计数 创建硬链接:

    ln   源文件  链接文件
    

     我们来看一下如下:

    [[email protected] ~]# ls -l /etc/ | grep "fstab" 
    -rw-r--r--.  1 root root      541 7月  16 04:37 fstab为其创建一个链接
    

     为其创建一个链接

    [[email protected] ~]# ln /etc/fstab /tmp/fstab.link
    

     引用计数变为了2

    [[email protected] ~]# ls -l /etc/ | grep "fstab" 
    -rw-r--r--.  2 root root      541 7月  16 04:37 fstab
    

     再去看一下/tmp下的链接文件

    [[email protected] ~]# ls -l /tmp/ | grep "link"
    -rw-r--r--. 2 root  root    541 7月  16 04:37 fstab.link
    

     cat一下内容,因为指向的是inode,所有即使你删除了源文件,通过符号链接还是读取文件内容:

    [[email protected] ~]# cat /tmp/fstab.link 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    

     

    符号链接

    指向一个文件路径的另一个文件路径

    特性:符号链接与文件两个各自是独立的文件,各有自己的inode,对文件创建符号链接不会增加引用计数

              支持对目录创建符号链接,可以跨文件系统,删除原文件,符号链接指定的路径就不存在了,此时变成了无效链接:

    ln  -s 源文件 链接文件
    

    举例:在当前目录下创建文件,并添加内容:

    [[email protected] ~]# touch frank.txt
    [[email protected] ~]# echo "hello" > ./frank.txt 
    [[email protected] ~]# cat frank.txt 
    hello
    

     创建符号链接:

    [[email protected] ~]# ln -s frank.txt  frank.link
    

     查看符号链接:

     图片 18

     删除原文件后,符号填充色变黑,原文件名闪烁:

     图片 19

     写了这么些文件系统的基础知识,应该可以大致理解文件系统是什么个东西了,下面我们就开始介绍如何管理和使用文件系统。

     

    1、文件的拥有者与用户组(owner/group)

    日志式文件系统功能

    数据存放区域:inode table,data block

    metadata:中介数据,变化次数频繁,superblock,block bitmap和inode bitmap

    新增一个文件的过程:

    1.根据目录文件的inode确定用户是否有权限

    2.根据inode位图找到没有使用的inode号,在inode table写入权限等信息

    3.根据block位图找到没有使用的block号,在block中写入实际数据,更新到inode中去

    4.更新inode位图和block位图,并更新到superblock中

    一般一个完整的新建文件的过程就如上

    但是但是出现特殊情况,比如断电,可能会出现数据仅仅写到了inode table和block中却没有更新inode位图和block位图,也没有更新superblock,那就导致中介数据和真正存储数据的内容不一致。

    在EXT2中,要使用e2fsck这个工具,要遍历整个文件系统,!!不敢想象啊!

    所以就出现了日志式文件系统:

    在文件系统中又单独划分一个区块,记录了写入或修改文件时的信息

    1.当要写入一个文件的时候,就在日志区块记录一下某个文件要写入了

    2.写入文件的数据,更新metadata数据

    3.完成数据和metadate的更新,在日志记录区块当中完成对该文件的记录

    这样,当发生意外的时候,我们可以直接检查日志记录区块,查看哪些文件有问题,然后做出校验即可

    EXT2不支持日志式文件系统,EXT3和EXT4都支持日志式文件系统,并向下兼容EXT2

     

    文件系统的管理

    文件系统的创建: mkfs 格式1:

    mkfs.文件系统格式   device
    文件系统格式:
    mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
    mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat 
    

     举例:将/dev/sdb1格式化为ext4格式

    [[email protected] ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成
    

     也可以使用:

    mkfs -t 文件系统格式  device
    

     举例:将/dev/sdb1格式化为ext3格式

    [[email protected] ~]# mkfs -t  ext3 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=4294967296
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成   
    

     

    2、文件的访问模式(read/write/excute)

    VFS

    VFS(Virtual Filesystem Switch),linux系统通过VFS的核心功能去读取文件系统。

    比如/是使用的是/dev/sda1,其文件系统是ext2格式的,而/home使用的/dev/sda2,其格式为xfs,如果我们现在要读取/home/Frank,直接cat就行了,我们有指定要用什么文件系统的模块去读取吗?没有,这个就是VFS的功能,VFS可以管理所有的filesystem,示意图如下:

     图片 20

     

    ext系列系统专用管理工具

     mke2fs

    创建一个ext2或ext3或ext4的文件系统,和mkfs命令类似

    mke2fs [OPTIONS] device
    常用选项:
    -t {ext2|ext3|ext4}:指明要创建的文件系统类型
    -b {1024|2048|4096}:指明文件系统的块大小;
    -L LABEL:指明系统卷标;
    -j:创建有日志功能的文件系统ext3;
    -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode;
    -N #:直接指明要给此文件系统创建的inode的数量;
    -m #:指定预留的空间,百分比;
    

     也可以使用-O选项,指定特性,具体指定的各种feature可以使用命令"man 5 ext4"查看

    mke2fs -O feature  device
    

    举例:

    [[email protected] ~]# mke2fs -t ext4  -L my_data /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=my_data
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 
    

     

    e2label 系统卷标的查看与设定 查看:

    [[email protected] ~]# e2label  /dev/sdb1
    my_data
    

     设定:

    [[email protected] ~]# e2label /dev/sdb2 mydata2
    [[email protected] ~]# 
    [[email protected] ~]# e2label /dev/sdb2 
    mydata2
    

     

    tune2fs 调整ext2/ext3/ext4的文件系统的某些属性,块大小写创建之后是不可以改变的

    tune2fs [OPTIONS]  DEVICE
    -l:查看super block的信息
    修改文件系统的属性:
    -j:修改文件系统
    -L LABEL:修改卷标
    -m #:调整预留空间百分比
    -O [^]FEATURE:开启或关闭某种特性
    -o [^]mout_options:开启或关闭某种默认挂载选项,比如 开启acl -o acl  或者关闭  -o  ^acl
    

     

    dumpe2fs 查看设备属性

    blkid device
    blkid -L LABEL:根据LABEL定位设备
    blkid -U UUID:根据唯一表示号定位设备
    

     举例

    [[email protected] ~]# blkid /dev/sdb1
    /dev/sdb1: LABEL="my_data" UUID="0557dfda-a2ab-4d75-93be-38f84c6663a1" TYPE="ext4" 
    

     

    3、文件的类型(type)

    硬链接和符号链接

     硬链接和符号链接都是都是链接文件,用"l"表示

     图片 21

    (红色为符号链接标识l,黄色为引用计数)

     

     硬链接

    指向同一个inode的多个文件路径

    特性:目录不支持硬链接,硬链接不支持跨文件系统,创建硬链接会增加inode引用计数

    创建硬链接:

    ln   源文件  链接文件
    

     我们来看一下如下:

    [root@localhost ~]# ls -l /etc/ | grep "fstab" 
    -rw-r--r--.  1 root root      541 7月  16 04:37 fstab为其创建一个链接
    

     为其创建一个链接

    [root@localhost ~]# ln /etc/fstab /tmp/fstab.link
    

     引用计数变为了2

    [root@localhost ~]# ls -l /etc/ | grep "fstab" 
    -rw-r--r--.  2 root root      541 7月  16 04:37 fstab
    

     再去看一下/tmp下的链接文件

    [root@localhost ~]# ls -l /tmp/ | grep "link"
    -rw-r--r--. 2 root  root    541 7月  16 04:37 fstab.link
    

     cat一下内容,因为指向的是inode,所有即使你删除了源文件,通过符号链接还是读取文件内容:

    [root@localhost ~]# cat /tmp/fstab.link 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    

     

    符号链接

    指向一个文件路径的另一个文件路径

    特性:符号链接与文件两个各自是独立的文件,各有自己的inode,对文件创建符号链接不会增加引用计数

              支持对目录创建符号链接,可以跨文件系统,删除原文件,符号链接指定的路径就不存在了,此时变成了无效链接:

    ln  -s 源文件 链接文件
    

    举例:在当前目录下创建文件,并添加内容:

    [root@localhost ~]# touch frank.txt
    [root@localhost ~]# echo "hello" > ./frank.txt 
    [root@localhost ~]# cat frank.txt 
    hello
    

     创建符号链接:

    [root@localhost ~]# ln -s frank.txt  frank.link
    

     查看符号链接:

     图片 22

     删除原文件后,符号填充色变黑,原文件名闪烁:

     图片 23

     写了这么些文件系统的基础知识,应该可以大致理解文件系统是什么个东西了,下面我们就开始介绍如何管理和使用文件系统。

     

    文件系统检测工具

    因进程意外终止或者系统崩溃的时候,可能会造成文件损坏,此时应该检查并修复文件系统,建立离线修复。

      e2fsck 检测ext2ext3ext4类型的linux文件系统

    e2fsck  [OPTIONS] device
    -y:对所有问题自动回答yes
    -f:即使文件系统处于clean状态,也要强制检查,clean说明文件系统没有问题,反之为dirty
    

     

    fsck

    检查和修改一个linux的文件系统

    -t fstype:指名文件系统
    -a:无须交互而自动修复所有的错误
    -r:交互式修复
    

     也可以使用以下格式:

    [[email protected] ~]# fsck
    fsck         fsck.cramfs  fsck.ext3    fsck.fat     fsck.msdos   fsck.xfs     
    fsck.btrfs   fsck.ext2    fsck.ext4    fsck.minix   fsck.vfat    
    [[email protected] ~]# fsck.ext2  /dev/sdb1
    

    在centos7上,默认使用的文件系统是xfs,centos6默认不可以格式化分区为xfs文件系统,可以安装其文件系统驱动,在centos6安装:

    [[email protected] ~]# yum  -y install xfsprogs
    

     

    4、文件建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改时间(mtime)

    文件系统的管理

    文件系统的创建:

    mkfs

    格式1:

    mkfs.文件系统格式   device
    文件系统格式:
    mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
    mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat 
    

     举例:将/dev/sdb1格式化为ext4格式

    [root@localhost ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成
    

     也可以使用:

    mkfs -t 文件系统格式  device
    

     举例:将/dev/sdb1格式化为ext3格式

    [root@localhost ~]# mkfs -t  ext3 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=4294967296
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成   
    

     

    swap文件系统

    linux上的交换分区必须使用独立的文件系统,system-ID必须是82 图片 24

    举例:现在要把分区sdb5转换为支持swap文件系统

    [[email protected] ~]# fdisk /dev/sdb 
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    命令(输入 m 获取帮助):t
    分区号 (1-5,默认 5):5
    Hex 代码(输入 L 列出所有代码):l
     0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
     1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
     2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
     3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
     4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
     5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
     6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
     7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
     8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
     9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
     a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
     b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
     c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
     e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
     f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
    10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
    11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
    12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
    14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
    16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS       fb  VMware VMFS    
    17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
    18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
    1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
    1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT    
    Hex 代码(输入 L 列出所有代码):82
    已将分区“Linux”的类型更改为“Linux swap / Solaris”
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    

     再来查看sdb的分区情况

    [[email protected] ~]# fdisk -l /dev/sdb
    磁盘 /dev/sdb:128.8 GB, 128849018880 字节,251658240 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x3918c6ef
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    41945087    20971520   83  Linux
    /dev/sdb2        41945088    83888127    20971520   83  Linux
    /dev/sdb3        83888128   125831167    20971520   83  Linux
    /dev/sdb4       125831168   251658239    62913536    5  Extended
    /dev/sdb5       125833216   167776255    20971520   82  Linux swap / Solaris
    

     注意:windows无法识别linux的文件系统,要使用U盘在两种类型的设备上copy文件的时候,可以使用wimdows和Linux都能识别的文件系统:FAT32(vfat)。

    ~]# mkfs.vfat  device
    

     

    5、文件的大小

    ext系列系统专用管理工具

     mke2fs

    创建一个ext2或ext3或ext4的文件系统,和mkfs命令类似

    mke2fs [OPTIONS] device
    常用选项:
    -t {ext2|ext3|ext4}:指明要创建的文件系统类型
    -b {1024|2048|4096}:指明文件系统的块大小;
    -L LABEL:指明系统卷标;
    -j:创建有日志功能的文件系统ext3;
    -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode;
    -N #:直接指明要给此文件系统创建的inode的数量;
    -m #:指定预留的空间,百分比;
    

     也可以使用-O选项,指定特性,具体指定的各种feature可以使用命令"man 5 ext4"查看

    mke2fs -O feature  device
    

    举例:

    [root@localhost ~]# mke2fs -t ext4  -L my_data /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=my_data
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242880 blocks
    262144 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 
    

     

    e2label

    系统卷标的查看与设定

    查看:

    [root@localhost ~]# e2label  /dev/sdb1
    my_data
    

     设定:

    [root@localhost ~]# e2label /dev/sdb2 mydata2
    [root@localhost ~]# 
    [root@localhost ~]# e2label /dev/sdb2 
    mydata2
    

     

    tune2fs

    调整ext2/ext3/ext4的文件系统的某些属性,块大小写创建之后是不可以改变的

    tune2fs [OPTIONS]  DEVICE
    -l:查看super block的信息
    修改文件系统的属性:
    -j:修改文件系统
    -L LABEL:修改卷标
    -m #:调整预留空间百分比
    -O [^]FEATURE:开启或关闭某种特性
    -o [^]mout_options:开启或关闭某种默认挂载选项,比如 开启acl -o acl  或者关闭  -o  ^acl
    

     

    blkid

    查看设备属性

    blkid device
    blkid -L LABEL:根据LABEL定位设备
    blkid -U UUID:根据唯一表示号定位设备
    

     举例

    [root@localhost ~]# blkid /dev/sdb1
    /dev/sdb1: LABEL="my_data" UUID="0557dfda-a2ab-4d75-93be-38f84c6663a1" TYPE="ext4" 
    

     

    文件系统的使用

    文件系统创建完毕之后,想要使用,就必须要挂载到指定的位置。

    根文件系统之外的其他系统想要能够被访问,就必须挂载在根文件系统上的某一个目录上,而此目录被称为挂载点。

    挂载点:一个文件系统的访问入口,它有以下特性:

    1.目录必须实现存在

    2.应该使用未被或者不会被其他进程使用的目录

    3.挂载点下原有的文件会被隐藏

     mount

     挂载文件系统

    mount  [-nrw]  [-t vfstype]  [-o options]  device  dir
    命令选项:
    -r:readonly,只读挂载; 
    -w:read and write, 读写挂载; 
    -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;
    -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
    -L LABEL:挂载时以卷标的方式指明设备;
        mount -L LABEL dir
    -U UUID:挂载时以UUID的方式指明设备;
        mount -U UUID dir
    -o options:挂载选项
        sync/async:同步/异步操作;
        atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
        diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
        remount:重新挂载; 
        acl:支持使用facl功能;
            # mount -o acl  device dir 
            # tune2fs  -o  acl  device
        ro:只读 
        rw:读写 
        dev/nodev:此设备上是否允许创建设备文件;
        exec/noexec:是否允许运行此设备上的程序文件;
        auto/noauto:
        user/nouser:是否允许普通用户挂载此文件系统;
        suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
    defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
    

     注意:也可以将挂载后的目录再挂载到另一个目录上,作为其临时访问入口

     举例:将/dev/sdb1挂载到/mnt目录下

    [[email protected] ~]# mount /dev/sdb1 /mnt/
    [[email protected] ~]# df -l
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542180 12708700   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9116  1006960    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sdb1           20511312   45080 19401272    1% /mnt
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  427172  1659740   21% /var
    tmpfs                 203216      16   203200    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    

     

     查看当前系统系统所有已经挂载的设备

     三种方式:

    #mount
    #cat /etc/mtab
    #cat /proc/mounts
    

     

     卸载文件系统

    umount device/dir   #指定设备名和目录都可以
    

    注意:

    如果挂载点下有文件被访问,我们无法卸载

    可以使用以命令来查看哪些进程占用了挂载点:

    lsof  MOUNT_POINT
    fuser -v  MOUNT_POINT
    

     并可以使用如下面命令,强制终止所有正在访问的某挂载点

    fuser  -km  MOUNT_POINT
    

     

     交换分区的启用和禁用

    交换分区不需要挂载。

    创建交换分区:

    mkswap device  #将指定的分区创建支持swap格式的文件系统,也可以进入fdisk的交互模式下,使用t选项
    

     启用:

    swapon  [OPTION]  [DEVICE]
        -a:定义在/etc/fstab文件中的所有swap设备;
    

     禁用:

    swapoff device
    

     查看:

    [[email protected] mnt]# cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-1                               partition    2097148    0    -1
    /dev/sdb5                               partition    20971516    0    -2
    

     

    6、定义文件属性的标志(flag),如setUID...

    文件系统检测工具

    因进程意外终止或者系统崩溃的时候,可能会造成文件损坏,此时应该检查并修复文件系统,建立离线修复。

     

    e2fsck

    检测ext2ext3ext4类型的linux文件系统

    e2fsck  [OPTIONS] device
    -y:对所有问题自动回答yes
    -f:即使文件系统处于clean状态,也要强制检查,clean说明文件系统没有问题,反之为dirty
    

     

    fsck

    检查和修改一个linux的文件系统

    -t fstype:指名文件系统
    -a:无须交互而自动修复所有的错误
    -r:交互式修复
    

     也可以使用以下格式:

    [root@localhost ~]# fsck
    fsck         fsck.cramfs  fsck.ext3    fsck.fat     fsck.msdos   fsck.xfs     
    fsck.btrfs   fsck.ext2    fsck.ext4    fsck.minix   fsck.vfat    
    [root@localhost ~]# fsck.ext2  /dev/sdb1
    

    在centos7上,默认使用的文件系统是xfs,centos6默认不可以格式化分区为xfs文件系统,可以安装其文件系统驱动,在centos6安装:

    [root@localhost ~]# yum  -y install xfsprogs
    

     

    配置文件/etc/fstab

     默认情况下只有根文件系统能够自动挂载,可将需要自动挂载的设备等信息按指定的格式写在/etc/fstab文件中:

    [[email protected] ~]# cat /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    

    从左到右分为6个字段:
    (1)要挂载的设备,可以使用设备文件,卷标和UUID

    (2)挂载点,swap类型的设备文件挂载点为swap

    (3)文件系统类型

    (4)挂载选项:defaults为默认挂载选项,多个挂载选项之间用逗号隔开

    (5)转储频率:0:从不备份,1:每天备份,2:每隔一天备份

    (6)自检次序:0:不自检,1:首先自检,只能是根文件系统,2,次级自检,以此类推

    可以使用mount -a:自动挂载在此文件中所支持的自动挂载设备

    举个例子:将系统光盘自动挂载在/mnt目录下,使其开机自动挂载:

    [[email protected] ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    /dev/sr0                /mnt                    iso9660 defaults        0 0
    

     重启设备确认挂载成功:

    [[email protected] ~]# df
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542224 12708656   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9116  1006960    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sr0             4276440 4276440        0  100% /mnt
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  427160  1659752   21% /var
    tmpfs                 203216      12   203204    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    

     

    7、文件真正内容的指针(pointer)

    swap文件系统

    linux上的交换分区必须使用独立的文件系统,system-ID必须是82

    图片 25

    举例:现在要把分区sdb5转换为支持swap文件系统

    [root@localhost ~]# fdisk /dev/sdb 
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    命令(输入 m 获取帮助):t
    分区号 (1-5,默认 5):5
    Hex 代码(输入 L 列出所有代码):l
     0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
     1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
     2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
     3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
     4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
     5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
     6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
     7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
     8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
     9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
     a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
     b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
     c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
     e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
     f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
    10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
    11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
    12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
    14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
    16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS       fb  VMware VMFS    
    17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
    18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
    1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
    1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT    
    Hex 代码(输入 L 列出所有代码):82
    已将分区“Linux”的类型更改为“Linux swap / Solaris”
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    

     再来查看sdb的分区情况

    [root@localhost ~]# fdisk -l /dev/sdb
    磁盘 /dev/sdb:128.8 GB, 128849018880 字节,251658240 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x3918c6ef
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    41945087    20971520   83  Linux
    /dev/sdb2        41945088    83888127    20971520   83  Linux
    /dev/sdb3        83888128   125831167    20971520   83  Linux
    /dev/sdb4       125831168   251658239    62913536    5  Extended
    /dev/sdb5       125833216   167776255    20971520   82  Linux swap / Solaris
    

     注意:windows无法识别linux的文件系统,要使用U盘在两种类型的设备上copy文件的时候,可以使用wimdows和Linux都能识别的文件系统:FAT32(vfat)。

    ~]# mkfs.vfat  device
    

     

    其他常用命令

     df

     报告文件系统磁盘的使情况

    df  [OPTIONS] file
    -l:显示本地文件的相关信息
    -h:以human_readabel的方式显示
    -i:显示inode的使用状态,而不是block
    
    [[email protected] ~]# df -l
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542172 12708708   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9112  1006964    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  426924  1659988   21% /var
    tmpfs                 203216      12   203204    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    
    [[email protected] ~]# df -l /mnt/CentOS_BuildTag    #查看某个文件属于哪个文件系统
    文件系统         1K-块    已用  可用 已用% 挂载点
    /dev/sr0       4276440 4276440     0  100% /mnt
    

     

     dd

     转换和拷贝文件,它每次从输入读取的是一个块的大小(默认512字节)

    if=FILE:从FILE读而不是标准输入
    of=FILE:写到FILE里去,而不是标准输出
    ibs=BYTES:一次读取BYTES个字节
    obs=BYTES:一次写BYTES个字节
    bs=BYTES:一次性读写BYTES个字节
    skip=blocks:在拷贝之前,跳过输出文件的前blocks个块,每块大写为ibs个字节
    seek=blocks:在拷贝之前,跳过输出文件的前 blocks 块,每块大小为 obs-byte 字节
    count=blocks:只拷贝输入文件的前 blocks 块(每块的大小为 ibs-byte 字节),而不是全部内容,直到文件末尾。
    

    举例:

    1.将本地的/dev/sda整盘备份到/dev/sdb中

    dd if=/dev/sda of=/dev/sdb
    

     2.将/dev/sda整盘保存到/root/my_sda

    dd if=/dev/sda of=/root/my_sda
    

     3.备份MBR

    dd if=/dev/sda of=/root/my_mbr count=1 bs=512
    

     一个好玩的设备文件/dev/zero,是一个输入设备,它可以向外面不断的吐0,另外的一个设备文件是/dev/null,它像一个无底洞一样,可以吞噬一切数据。

     4.格式化硬盘

    dd if=/dev/zero of=/dev/sda bs=512 count=1
    

     

     du

     查看当前指定的文件或目录占磁盘空间的大小,会递归显示

    du [OPTIONS] file
    -a:显示对所有文件的统计,而不只是包含子目录。
    -b:输出以字节为单位的大小,替代缺省时1024字节的计数单位。
    --block-size=size:输出以块为单位的大小,块的大小为 size 字节。( file- utils-4.0 的新选项)
    -h: 为每个数附加一个表示大小单位的字母,象用M表示二进制 的兆字节。
    -k:输出以1024字节为计数单位的大小。
    -m:输出以兆字节的块为计数单位的大小(就是 1,048,576 字节)。
    --max-depth=n:只输出命令行参数的小于等于第 n 层的目录的总计。
    详细可以查看man手册
    

     

    参考链接:       

     

    磁盘,提供持久的数据存储,它不像我们的内存,如果突然断电了,在内存...

    创建目录:分配一个inode和至少一个block

    文件系统的使用

    文件系统创建完毕之后,想要使用,就必须要挂载到指定的位置。

    根文件系统之外的其他系统想要能够被访问,就必须挂载在根文件系统上的某一个目录上,而此目录被称为挂载点。

    挂载点:一个文件系统的访问入口,它有以下特性:

    1.目录必须实现存在

    2.应该使用未被或者不会被其他进程使用的目录

    3.挂载点下原有的文件会被隐藏

     

     mount

     挂载文件系统

    mount  [-nrw]  [-t vfstype]  [-o options]  device  dir
    命令选项:
    -r:readonly,只读挂载; 
    -w:read and write, 读写挂载; 
    -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;
    -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
    -L LABEL:挂载时以卷标的方式指明设备;
        mount -L LABEL dir
    -U UUID:挂载时以UUID的方式指明设备;
        mount -U UUID dir
    -o options:挂载选项
        sync/async:同步/异步操作;
        atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
        diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
        remount:重新挂载; 
        acl:支持使用facl功能;
            # mount -o acl  device dir 
            # tune2fs  -o  acl  device
        ro:只读 
        rw:读写 
        dev/nodev:此设备上是否允许创建设备文件;
        exec/noexec:是否允许运行此设备上的程序文件;
        auto/noauto:
        user/nouser:是否允许普通用户挂载此文件系统;
        suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
    defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
    

     注意:也可以将挂载后的目录再挂载到另一个目录上,作为其临时访问入口

     举例:将/dev/sdb1挂载到/mnt目录下

    [root@localhost ~]# mount /dev/sdb1 /mnt/
    [root@localhost ~]# df -l
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542180 12708700   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9116  1006960    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sdb1           20511312   45080 19401272    1% /mnt
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  427172  1659740   21% /var
    tmpfs                 203216      16   203200    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    

     

     查看当前系统系统所有已经挂载的设备

     三种方式:

    #mount
    #cat /etc/mtab
    #cat /proc/mounts
    

     

     卸载文件系统

    umount device/dir   #指定设备名和目录都可以
    

    注意:

    如果挂载点下有文件被访问,我们无法卸载

    可以使用以命令来查看哪些进程占用了挂载点:

    lsof  MOUNT_POINT
    fuser -v  MOUNT_POINT
    

     并可以使用如下面命令,强制终止所有正在访问的某挂载点

    fuser  -km  MOUNT_POINT
    

     

     交换分区的启用和禁用

    交换分区不需要挂载。

    创建交换分区:

    mkswap device  #将指定的分区创建支持swap格式的文件系统,也可以进入fdisk的交互模式下,使用t选项
    

     启用:

    swapon  [OPTION]  [DEVICE]
        -a:定义在/etc/fstab文件中的所有swap设备;
    

     禁用:

    swapoff device
    

     查看:

    [root@localhost mnt]# cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-1                               partition    2097148    0    -1
    /dev/sdb5                               partition    20971516    0    -2
    

     

              inode记录该目录的相关属性,并指向分配到的那个快;

    配置文件/etc/fstab

     默认情况下只有根文件系统能够自动挂载,可将需要自动挂载的设备等信息按指定的格式写在/etc/fstab文件中:

    [root@localhost ~]# cat /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    

    从左到右分为6个字段:
    (1)要挂载的设备,可以使用设备文件,卷标和UUID

    (2)挂载点,swap类型的设备文件挂载点为swap

    (3)文件系统类型

    (4)挂载选项:defaults为默认挂载选项,多个挂载选项之间用逗号隔开

    (5)转储频率:0:从不备份,1:每天备份,2:每隔一天备份

    (6)自检次序:0:不自检,1:首先自检,只能是根文件系统,2,次级自检,以此类推

    可以使用mount -a:自动挂载在此文件中所支持的自动挂载设备

    举个例子:将系统光盘自动挂载在/mnt目录下,使其开机自动挂载:

    [root@localhost ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Sun Jul 16 04:37:14 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/cl-root     /                       xfs     defaults        0 0
    UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot                   xfs     defaults        0 0
    /dev/mapper/cl-var      /var                    xfs     defaults        0 0
    /dev/mapper/cl-swap     swap                    swap    defaults        0 0
    /dev/sr0                /mnt                    iso9660 defaults        0 0
    

     重启设备确认挂载成功:

    [root@localhost ~]# df
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542224 12708656   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9116  1006960    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sr0             4276440 4276440        0  100% /mnt
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  427160  1659752   21% /var
    tmpfs                 203216      12   203204    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    

     

      block记录在这个目录下的相关文件(或目录)的关联性

    其他常用命令

     df

     报告文件系统磁盘的使情况

    df  [OPTIONS] file
    -l:显示本地文件的相关信息
    -h:以human_readabel的方式显示
    -i:显示inode的使用状态,而不是block
    
    [root@localhost ~]# df -l
    文件系统               1K-块    已用     可用 已用% 挂载点
    /dev/mapper/cl-root 16250880 3542172 12708708   22% /
    devtmpfs             1000180       0  1000180    0% /dev
    tmpfs                1016076      84  1015992    1% /dev/shm
    tmpfs                1016076    9112  1006964    1% /run
    tmpfs                1016076       0  1016076    0% /sys/fs/cgroup
    /dev/sda1             508580  151316   357264   30% /boot
    /dev/mapper/cl-var   2086912  426924  1659988   21% /var
    tmpfs                 203216      12   203204    1% /run/user/42
    tmpfs                 203216       0   203216    0% /run/user/0
    
    [root@localhost ~]# df -l /mnt/CentOS_BuildTag    #查看某个文件属于哪个文件系统
    文件系统         1K-块    已用  可用 已用% 挂载点
    /dev/sr0       4276440 4276440     0  100% /mnt
    

     

     dd

     转换和拷贝文件,它每次从输入读取的是一个块的大小(默认512字节)

    if=FILE:从FILE读而不是标准输入
    of=FILE:写到FILE里去,而不是标准输出
    ibs=BYTES:一次读取BYTES个字节
    obs=BYTES:一次写BYTES个字节
    bs=BYTES:一次性读写BYTES个字节
    skip=blocks:在拷贝之前,跳过输出文件的前blocks个块,每块大写为ibs个字节
    seek=blocks:在拷贝之前,跳过输出文件的前 blocks 块,每块大小为 obs-byte 字节
    count=blocks:只拷贝输入文件的前 blocks 块(每块的大小为 ibs-byte 字节),而不是全部内容,直到文件末尾。
    

    举例:

    1.将本地的/dev/sda整盘备份到/dev/sdb中

    dd if=/dev/sda of=/dev/sdb
    

     2.将/dev/sda整盘保存到/root/my_sda

    dd if=/dev/sda of=/root/my_sda
    

     3.备份MBR

    dd if=/dev/sda of=/root/my_mbr count=1 bs=512
    

     一个好玩的设备文件/dev/zero,是一个输入设备,它可以向外面不断的吐0,另外的一个设备文件是/dev/null,它像一个无底洞一样,可以吞噬一切数据。

     4.格式化硬盘

    dd if=/dev/zero of=/dev/sda bs=512 count=1
    

     

     du

     查看当前指定的文件或目录占磁盘空间的大小,会递归显示

    du [OPTIONS] file
    -a:显示对所有文件的统计,而不只是包含子目录。
    -b:输出以字节为单位的大小,替代缺省时1024字节的计数单位。
    --block-size=size:输出以块为单位的大小,块的大小为 size 字节。( file- utils-4.0 的新选项)
    -h: 为每个数附加一个表示大小单位的字母,象用M表示二进制 的兆字节。
    -k:输出以1024字节为计数单位的大小。
    -m:输出以兆字节的块为计数单位的大小(就是 1,048,576 字节)。
    --max-depth=n:只输出命令行参数的小于等于第 n 层的目录的总计。
    详细可以查看man手册
    

     

    参考链接:       

     

     

     

     

     

     

     

     

    创建文件:分配至少一个inode与相对于该文件大小的快数量

              inode不记录文件名,而是记录文件的相关属性,文件名记录在目录所属的block区域

    例如:读取/etc/crontab的流程如下:

        1、操作系统根据根目录(/)的相关数据可获取/etc目录所在的inode,并读取/etc这个目录所有相关属性

    2、根据/etc的inode的数据,可以获取/etc目录下所有文件的关联数据是放置在哪一个block中,并前往该block读取文件的关联性内容

    3、由上步骤的block中,可以知道crontab文件的inode所在地,并前往该inode

    4、由上步骤的inode中,可以获取crontab文件的所有属性,并前往由inode所指向的block区域,获取crontab文件内容

    块组:block group 对用户是不可见的,子逻辑区域,有个超级标示区

    文件系统构成:(dumpe2fs 可以查看)

        superblock(超级块):记录整个文件系统相关信息

        1、block与inode的总量

    2、未使用和已使用的inode/block数量

    3、文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息

    4、有效位的值,已载入为0,未载入为1

    group description(组描述):记录此block由何处开始记录

        block bitmap(快位图):此处记录block是否使用

    inode bitmap(inode位图):此处记录inode是否使用

    inode table(inode表):为每个inode的数据存放区

    data block(数据块):为每个block的数据存放区

    metadata  bitmap (块位图)dentry 目录项

    创建文件:先在目录下创建一个条目,把名字和iNode对应上,回到源数据,指定块位置

    删除文件:删除条目里面的名字和iNode对应关系,将对应的iNode标记为0

              通过inode号码来删除文件:find ./ -inum 400935 -exec rm -rf {} ;  

              extundelete: linux下高效数据恢复工具   安装时需要的依赖包 e2fsprogs-lib e2fsprogs-devel

    复制文件:不同的inode和block

    剪切文件:同一个分区,inode号和磁盘块位置都没有变,只是把条目里面的名字改变了一下

    链接:硬链接和软链接(符号链接),多个文件指向同一个iNode,硬链接;符号连接,指向的是源文件的路径,而不是文件块

    ln (link) [-s -v]  源文件  链接

    硬链接:在某个目录下的block中增加一个文件关联数据,不会用到inode与磁盘空间

            只能对文件进行创建,为了避免循环引用

            不能跨文件系统,可以在不同目录下

    创建硬链接可以增加文件被连接的次数

    符号链接:建立一个独立的文件,这个文件会让数据的读取指向它连接的文件内容

            可以对目录创建

    可以跨文件系统

    不会增加被链接文件的链接次数

    其大小为指定路径所包含的字符个数

    -b 删除,覆盖以前建立的链接

    -d 允许超级用户制作目录的硬链接

    -f 强制执行

    -i 交互模式,文件存在则提示用户是否覆盖

    -n 把符号链接视为一般目录

    -s 软链接(符号链接)

    -v 显示详细的处理过程

    du    查看文件大小  [-s -h ] 

    -s 只分别计算命令列中每个参数所占的总用量

    -h 做单位转换

    df  查看硬盘使用情况

    -i  查看inode的使用情况

    -P 不换行显示

    -h  做单位转换

    设备文件:

    b:块设备文件,以块为单位,随机访问

    c: 以字符为单位,是线性设备,访问时有先后顺序

    例:ls -l /dev

    主设备号(标示设备类型,major number)   

    次设备号(标示同一类型的不同设备,minor number)

    创建设备文件:mknod  -m name type major ninor

    硬盘的设备文件名:

    IDE ATA  :hd

    SATA  SCSI USB :sd

    a b c ....来区别同一种类型下的不同设备

    IDE:    第一个IDE口,控制器,主 从hda  hdb

    第二个IDE口,主从  hdc hdd

    fdisk 查看当前系统识别的硬盘和分区的情况

    fdisk -l [/dev/to/smoe_device_file]

    还可用来管理分区

    fdisk /dev/sda

    p:显示当前硬件的分区,包括没有保存的改动

    n:创建一个新的分区

    d:删除一个分区

    w:保存并退出

    q:不保存退出

    t:修改分区类型(文件系统类型)

    l:显示所支持的所有类型

    cat /proc/partitions  查看分区

    partprobe  [/dev/sda]  通知操作系统分区表的变化

    partx -a [/dev/sda]    告诉内核磁盘分区是否存在及其编号

    cat /proc/filesystem  查看文件系统类型

    高级格式化:mkfs -t ext4

    mkfs -t msdos /dev/hdb3

    mkfs.ext2 、mkfs.ext3 、mke2fs

    -b:分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

    -i:设定inode大小

    -N:设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

    -c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

    -L:预设该分区的标签label

    -j:建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

    查看磁盘超级块的信息:

        tune2fs -l /dev/sda[n]  调整ext2/ext3/ext4文件系统参数

        dumpe2fs -h /dev/sda[n]  显示ext2/ext3/ext4文件系统信息

    二.swap

    swap分区:主要是用来内存过载使用,可以和内存上暂停进程的页面保存在swap分区中,再次启用时再分配页面,pageoutswap分区:主要是用来内存过载使用,可以和内存上暂停进程的页面保存在swap分区中,再次启用时再分配页面,pageout pagein ,swap out swap in ,发现有频繁的换进和换出的时候就需要加内存。

    1.虚拟内存:

    虚拟地址:线性地址;

    页面的换进和换出,允许了内存的过载使用

    计存器1纳秒,缓存10纳秒,内存10毫秒,磁盘秒

    free 查看物理内存和交换空间使用情况

    -m

    buffers 缓冲  cached 缓存

    fdisk命令中,调整分区类型为82;

    创建交换分区:

    格式化:# mkswap /dev/sda8,先调整分区类型为82,fdisk,

    -L LABEL

    swapon /dev/sda8,启用该交换空间

    -a:启用所有的定义在/etc/fstab文件中的交换设备

    swapoff /dev/sda8

    回环设备

    loopback, 使用软件来模拟实现硬件

    创建一个镜像文件,120G,当作一个硬件设备来使用

    dd命令:

    if=数据来源

    of=数据存储目标

    bs=1

    count=2

    seek=#: 创建数据文件时,跳过的空间大小;

    dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1

    dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1

    可用来备份和恢复mbr

    dd if=/dev/zero of=/var/swapfile  bs=1M count=1024

    seek 跳过多大的空间

    mkswap 格式化为swap分区

        1、通过fdisk创建swap分区或者使用dd命令创建一个虚拟内存的文件

      dd if=/dev/zero of=/tmp/swap bs=1M count=1024

    2、mkswap进行swap分区格式化

    3、swapon 激活swap分区

      swapoff 关闭swap分区

    mount:挂载命令

        命令格式:mount [-t vfstype] [-o options] device dir

    -a 挂载fstab中提到的所有文件系统

    -o remount 重新挂载已挂载的文件系统

    -o loop:用来把一个文件当成硬盘分区挂接上系统

        -o ro:采用只读方式挂接设备

        -o rw:采用读写方式挂接设备

    挂接光盘镜像文件

    1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

            #cp /dev/cdrom /home/sunky/mydisk.iso 或

            #dd if=/dev/cdrom of=/home/sunky/mydisk.iso

    2、挂载光盘镜像文件

        #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

    三.自动挂载

    文件系统的配置文件/etc/fstab

    OS在初始时,会自动挂载此文件中定义的每个文件系统

    要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率(每多少天做一次完全备份) 文件系统检测次序(只有根可以为1)

    /dev/sda5 /mnt/test ext4 defaults 0 0

    mount -a:挂载/etc/fstab文件中定义的所有文件系统

    /etc/fstab文件  实现开机自动挂载

        设备  挂载点  文件系统类型  挂载参数  是否执行备份命令dump  是否启动使用fsck扫描磁盘

    fuser: 验正进程正在使用的文件或套接字文件

    -v: 查看某文件上正在运行的进程

    -k:

    -m:针对目录,也就是挂载点,一般和-k 一起使用

    fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程

    linux相识相知,磁盘及文件系统。wodim --devices 查看设备名(没有挂载的光盘)

    练习:

    1、创建一个5G的分区,文件系统为ext4,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;

    2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备;

    # mkdir /var/swaptemp

    # dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512

    # mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile

    /etc/fstab

    /var/swaptemp/swapfile  swap swap defaults 0 0

    3、上述第一问,如何让其自动挂载的同时启用ACL功能;

    /etc/fstab

    LABEL='MYDATA' /data ext4 defaults,acl 0 0

    Linux: 查看VFS结构图

    VFS:virtual filesystem  ,interface:system call

    当前,除了Linux标准的文件系统Ext2/Ext3/Ext4外,还有很多种文件系统,比如reiserfs, xfs, Windows的vfat NTFS,

    网络文件系统nfs 以及flash 文件系统jffs2, yaffs/yaffs2 ubifs。

    linux通过叫做VFS的中间层对这些文件系统提供了完美的支持。

    VFS存在的意义

            1. 向上,对应用层提供一个标准的文件操作接口;

            2. 对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;

            3. VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,

        使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;

            4. 此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单

            VFS 是一种软件机制,也许称它为 Linux 的文件系统管理者更确切点,与它相关的数据结构只存在于物理内存当中。

    所以在每次系统初始化期间,Linux 都首先要在内存当中构造一棵 VFS 的目录树(在 Linux 的源代码里称之为 namespace),

    实际上便是在内存中建立相应的数据结构。

    VFS: virtual filesystem  中间层

    每个分区都是一个单独的文件系统

    物理和逻辑之间的关系

    本文由新葡亰496net发布于电脑系统,转载请注明出处:linux相识相知,磁盘及文件系统

    关键词:

上一篇:新葡亰496net怎么样使用yum来安装

下一篇:没有了