Linux文件系统及磁盘分区与格式化

磁盘的组成与分区:

  由图中可以看到磁盘中存储数据的部件为圆形的盘片(磁盘主要记录数据的部分)。

    

wKioL1Z6Vcui-73qAAEfajuNpSY151.jpg

wKioL1Z6Vc_QFV3fAACt_QAVcTE886.jpg

wKiom1Z6Vb3xkMCfAAGlQKSK6cI904.jpg

而磁盘的物理组成如图所示,主要由扇区组成,扇区(sector)为最小的物理存储单元,每个扇区为512bytes;将扇区组成一个圆,那就是柱面(Cylinder),柱面是分区(partition)的最小单位;

 磁盘的第一个扇区很重要,里面有硬盘主引导记录(MBR)以及分区表(partition table ),其中MBR占有446bytes,而分区表占有64bytes。


  市面上的各种接口的磁盘在LINUX系统当中是以文件形式存在的(Linux 一切皆文件)。

  SCSI、SATA、USB、Flash等接口的磁盘在LINUX系统当中的文件名:/dev/sd[a-p][1-15]

  IDE接口的磁盘在LINUX系统当中的文件名:/dev/hd[a-d][1-63]

  上面中括号中的字母表示磁盘的序号,如sda ,sdb 等。而数字表示某一磁盘的某一分区,如/dev/sda2表示磁盘sba的2号分区;


  上文中一直提到一个叫做“磁盘分区”的概念,那么什么是磁盘分区呢,所谓磁盘分区即指定分区的起始与结束柱面,说白了就类似于古代的跑马圈地,我看中了某一片地,于是告诉地主(操作系统)从哪到哪这片地我要了(即指定分区的起始与结束柱面)。

  那么指定分区的柱面范围记录在哪里呢?就是第一个山区的分区表中。但是因为分区表仅有64bytes ,所以最多只能记录4条分区记录,这四条记录我们称为主分区(primary)或拓展分区(extended),其中拓展分区是不能存储数据的,只有从其中分出逻辑分区(logical),才能存储数据。

 由于操作系统的限制,拓展分区只能有一个,而在linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)。


  上面讲道理一些磁盘组成与分区的基本知识,那么如果我现在有一块硬盘,在linux系统下要怎样对它分区呢?

  在linux系统下对硬盘分区有二类方式,图形界面下分区与命令行下分区,在这里我们讲解在命令行下对硬盘进行分区。

  linux系统有三大分区管理工具:fdisk, parted, sfdisk

  fdisk是我们最常用的分区管理工具,fdisk对于一块硬盘来讲,最多只能管理15分区;在命令行下我们可以使用fdisk 命令带 -l 选项来查看机器所挂硬盘个数及分区情况。

   

[root@localhost ~]# fdisk -l


磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节



磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x00064131


   设备 Boot      Start         End      Blocks   Id  System

/dev/sda1   *        2048     1026047      512000   83  Linux

/dev/sda2         1026048    41943039    20458496   8e  Linux LVM



  从中我们可以看出当前机器有俩快硬盘,一块已经分区(sda),一块还没有(sdb)。

  fdisk命令的使用格式如下:

    

                     fdisk device

子命令:管理功能

p: print, 显示已有分区;

n: new, 创建

d: delete, 删除

w: write, 写入磁盘并退出

q: quit, 放弃更新并退出

m: 获取帮助

l: 列表所分区id

t: 调整分区id


    在此我们要对磁盘sdb进行分区,首先 键入fdisk /dev/sdb 命令 开始对sdb进行分区

          [root@localhost ~]# fdisk /dev/sdb

          欢迎使用 fdisk (util-linux 2.23.2)。


          更改将停留在内存中,直到您决定将更改写入磁盘。

          使用写入命令前请三思。


          Device does not contain a recognized partition table

          使用磁盘标识符 0x1550511f 创建新的 DOS 磁盘标签。


          命令(输入 m 获取帮助):

      

   然后输入n 新建一个分区

         

命令(输入 m 获取帮助):n

         Partition type:

         p   primary (0 primary, 0 extended, 4 free)

         e   extended

         Select (default p): 


    这里会出现一个提示让你选择创建的分区类型,主分区还是拓展分区,默认为主分区。

    这里我们输入p 建立一个主分区。


    

        Select (default p): p

        分区号 (1-4,默认 1):


   这里会让你输入分区号,默认为1,分区号从5开始是留给逻辑分区的。

   这里我们直接回车默认分区号为1。

        

        分区号 (1-4,默认 1):

        起始 扇区 (2048-41943039,默认为 2048):

   接下来会让你输入分区的起始扇区,我们直接回车默认为2048.

        

        起始 扇区 (2048-41943039,默认为 2048):

        将使用默认值 2048

        Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):


  在这一步会让你输入分区的大小,有俩种输入方式,输入结束扇区数或直接输入分区大小(后跟单位K,M,G前跟+号)。

  这里我们给第一个分区10G空间。

    

    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G

    分区 1 已设置为 Linux 类型,大小设为 10 GiB


    命令(输入 m 获取帮助):


 自此一个分区划分完毕,我们输入p 显示已有分区。

   

        磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

        Units = 扇区 of 1 * 512 = 512 bytes

        扇区大小(逻辑/物理):512 字节 / 512 字节

        I/O 大小(最小/最佳):512 字节 / 512 字节

        磁盘标签类型:dos

        磁盘标识符:0x97df264f


           设备 Boot      Start         End      Blocks   Id  System

            /dev/sdb1            2048    20973567    10485760   83  Linux


 在你划分好分区以后一定要注意,要输入w 保存分区信息并退出,否则你就白干了,如果你没有保存分区信息直接输入q退出,那么你再输入fdisl -l 查看机器所挂硬盘个数及分区情况时

     

        [root@localhost ~]# fdisk -l


        磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

        Units = 扇区 of 1 * 512 = 512 bytes

        扇区大小(逻辑/物理):512 字节 / 512 字节

        I/O 大小(最小/最佳):512 字节 / 512 字节



        磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区

        Units = 扇区 of 1 * 512 = 512 bytes

        扇区大小(逻辑/物理):512 字节 / 512 字节

        I/O 大小(最小/最佳):512 字节 / 512 字节

        磁盘标签类型:dos

        磁盘标识符:0x00064131


           设备 Boot      Start         End      Blocks   Id  System

        /dev/sda1   *        2048     1026047      512000   83  Linux

        /dev/sda2         1026048    41943039    20458496   8e  Linux LVM


  你的劳动没有效果,一切都付之东流了。

  一定一定要记得输入w 保存退出,如下

     

      

        命令(输入 m 获取帮助):w

        The partition table has been altered!


        Calling ioctl() to re-read partition table.

        正在同步磁盘。

  


   其他分区划分方式类似,如下划分俩个逻辑分区。

        命令(输入 m 获取帮助):n

        Partition type:

           p   primary (1 primary, 0 extended, 3 free)

           e   extended

        Select (default p): e

        分区号 (2-4,默认 2):2

        起始 扇区 (20973568-41943039,默认为 20973568):

        将使用默认值 20973568

        Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G

        分区 2 已设置为 Extended 类型,大小设为 5 GiB


        命令(输入 m 获取帮助):n

        Partition type:

           p   primary (1 primary, 1 extended, 2 free)

           l   logical (numbered from 5)

        Select (default p): l

        添加逻辑分区 5

        起始 扇区 (20975616-31459327,默认为 20975616):

        将使用默认值 20975616

        Last 扇区, +扇区 or +size{K,M,G} (20975616-31459327,默认为 31459327):+5G

        值超出范围。

        Last 扇区, +扇区 or +size{K,M,G} (20975616-31459327,默认为 31459327):+4G

        分区 5 已设置为 Linux 类型,大小设为 4 GiB


        命令(输入 m 获取帮助):p


        磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

        Units = 扇区 of 1 * 512 = 512 bytes

        扇区大小(逻辑/物理):512 字节 / 512 字节

        I/O 大小(最小/最佳):512 字节 / 512 字节

        磁盘标签类型:dos

        磁盘标识符:0x97df264f


           设备 Boot      Start         End      Blocks   Id  System

        /dev/sdb1            2048    20973567    10485760   83  Linux

        /dev/sdb2        20973568    31459327     5242880    5  Extended

        /dev/sdb5        20975616    29364223     4194304   83  Linux


        命令(输入 m 获取帮助):



 大家不知有没有注意到在你的分区信息中有一个id 项,这是个什么东东?


查看分区id的方法,在 命令(输入 m 获取帮助):下直接输入l 

   

命令(输入 m 获取帮助):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            

1e  隐藏的 W95 FAT1 80  旧 Minix       


命令(输入 m 获取帮助):




   


 分区已经创建完成,此时这个分区就真的已经存在了嘛?难道不是嘛,我已经看到它的分区信息了呀。

 NO,NO ,NO 因为使用fdisk 快速分区,需要重启电脑,否则内核无法识别到新的分区。

 这时我们可以采取另一种方法,使用partx命令通知内核重新读取硬盘分区表:

    语法

    partx [-a|-d|-l] [--type TYPE] [--nr M-N] [partition] disk


    选项

    -a         增加制定的分区或读磁盘新增的分区

    -d         删除制定或所有的分区

    -l         列出分区

    --type     指定分区类型。dos,bsd,solaris,unix,或者gpt

    --nr M-N   指定分区范围


现在我们可以向分区存储内容了吧。     

       

        [root@localhost ~]# cd /dev/sdb1

        -bash: cd: /dev/sdb1: 没有那个文件或目录

显然不能,会报错的,为什么呢?因为我们还没对分区进行格式化(format)。

为什么需要进行格式化呢?这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。

   既然提到了文件系统那么都有那些文件系统呢?

  

        Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap

swap: 交换分区

光盘:iso9660

Windows:fat32, ntfs

Unix: FFS, UFS, JFS2

网络文件系统:NFS, CIFS

集群文件系统:GFS2, OCFS2

分布式文件系统:ceph, 

moosefs, mogilefs, GlusterFS, Lustre


根据其是否支持"journal"功能:

日志型文件系统: ext3, ext4, xfs, ...

非日志型文件系统: ext2, vfat


  那么文件系统是如何运行的呢?这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容外,通常含有非常多的属性,例如linux操作系统的文件权限,与文件属性。文件系统通常会将这两部分的数据分别存放在不同的块,权限与属性放置到inode中,至于实际的数据则放置到data block 块中。另外还有一个超级块(superblock)会记录记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

   每个inode与block都有编号,至于这三个数据的意义可以简略说明如下:

   superblock :记录文件系统的整体信息,包括文件系统inode/block 的总量、使用量、剩余量以及文件系统的格式与相关信息等; 

       可以通过dumpe2fs查看超级块信息

                 dumpe2fs:-h 设备文件名 


       如:  

[root@localhost ~]# dumpe2fs -h /dev/sdb

dumpe2fs 1.42.9 (28-Dec-2013)

Filesystem volume name:   <none>

Last mounted on:          <not available>

Filesystem UUID:          27a699ec-aeb5-45c9-997a-5ca47af333c0

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:         signed_directory_hash 

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              1310720

Block count:              5242880

Reserved block count:     262144

Free blocks:              5116558

Free inodes:              1310709

First block:              0

Block size:               4096

Fragment size:            4096

Group descriptor size:    64

Reserved GDT blocks:      1024

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         8192

Inode blocks per group:   512

Flex block group size:    16

Filesystem created:       Wed Dec 23 21:39:32 2015

Last mount time:          n/a

Last write time:          Wed Dec 23 21:39:56 2015

Mount count:              0

Maximum mount count:      -1

Last checked:             Wed Dec 23 21:39:32 2015

Check interval:           0 (<none>)

Lifetime writes:          132 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:      1bc9fae0-4477-46a3-9e89-5bceedb64907

Journal backup:           inode blocks

Journal superblock magic number invalid!

    

  



如此多的文件系统,那么linux的内核又是如何管理这些认识的文件系统呢?其实整个linux系统都是通过VFS(虚拟文件系统)的内核功能区读取文件系统的。也就是说,整个linux认识的文件系统其实都是VFS在进行管理,我们用户并不需要知道每个分区上头的文件系统是什么,VFS会主动帮我们做好读取的操作。


wKiom1Z6xYySzFn8AABUC1KRJow539.jpg



  在罗嗦了一些关于文件系统的知识以后,现在我们进入文件系统的格式化。格式化的方法非常简单,那就是使用linux文件系统的用户空间的管理工具:mkfs命令。

  

mkfs命令的两种用法:

(1) # mkfs.FS_TYPE /dev/DEVICE

ext4

xfs

btrfs

vfat

(2) # mkfs -t FS_TYPE /dev/DEVICE


-L 'LABEL': 设定卷标

                        


如:

     

[root@localhost ~]# mkfs.ext4 /dev/sdb1

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=                                  #分区的名称既卷标

OS type: Linux

块大小=4096 (log=2)                            #block大小

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

655360 inodes, 2621440 blocks                  #由此设置决定的inode/block数量

131072 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=2151677952

80 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


Allocating group tables: 完成                            

正在写入inode表: 完成                            

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成 


[root@localhost ~]# mkfs.ext4 /dev/sdb2

mke2fs 1.42.9 (28-Dec-2013)

mkfs.ext4: inode_size (128) * inodes_count (0) too big for a

filesystem with 0 blocks, specify higher inode_ratio (-i)

or lower inode count (-N).


[root@localhost ~]# mkfs.ext4 /dev/sdb5

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=

OS type: Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

262144 inodes, 1048576 blocks

52428 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=1073741824

32 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


Allocating group tables: 完成                            

正在写入inode表: 完成                            

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成 





 上面在将sdb格式化为ext4文件系统的例子中,可以发现结果里有非常多的信息,由于我们没有指定文件系统的这些具体信息的具体内容,因此系统会使用默认值来进行格式化。其中比较重要的部分为:卷标(label)、block块的大小以及inodede数量。如果要在格式化时同时设置这些值,就要使用ext系列文件系统专用管理工具:mke2fs 

    

mke2fs:ext系列文件系统专用管理工具

-t {ext2|ext3|ext4} 

-b {1024|2048|4096} 设置block大小

-L 'LABEL'          设置卷标

-j: 相当于 -t ext3 (当没有指定-j选项时,mke2fs使用ext2 为格式化文                         件格式 ,如加入-j 时,则格式化为ext3这个Journaling(日志记录)的文件                         系统)

mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block                               的大小;

-N #:为数据空间创建个多少个inode;

-m #: 为管理人员预留的空间占据的百分比;

-O FEATURE[,...]:启用指定特性

-O ^FEATURE:关闭指定特性


 如格式化sdb为ext3文件系统,卷标为L5,block为2048,每8192bytes分配一个inode ;


[root@localhost ~]# mke2fs -i 8192 -L L5 -b 2048 -j /dev/sdb5 

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=L5

OS type: Linux

块大小=2048 (log=1)

分块大小=2048 (log=1)

Stride=0 blocks, Stripe width=0 blocks

524288 inodes, 2097152 blocks

104857 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=538968064

128 block groups

16384 blocks per group, 16384 fragments per group

4096 inodes per group

Superblock backups stored on blocks: 

16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 

2048000


Allocating group tables: 完成                            

正在写入inode表: 完成                            

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成   


[root@localhost ~]# 


        大家在学习安装linux系统时有时会在图形界面下创建一个swap(内存交换空间),那么在命令行下要如何用命令创建一个swap分区呢?四步即可搞定。

 第一步:

     分区:

[root@localhost ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。


更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。



命令(输入 m 获取帮助):n

Partition type:

   p   primary (1 primary, 1 extended, 2 free)

   l   logical (numbered from 5)

Select (default p): 

Using default response p

分区号 (3,4,默认 3):

起始 扇区 (31459328-41943039,默认为 31459328):

将使用默认值 31459328

Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):

将使用默认值 41943039

分区 3 已设置为 Linux 类型,大小设为 5 GiB


命令(输入 m 获取帮助):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            

1e  隐藏的 W95 FAT1 80  旧 Minix       


命令(输入 m 获取帮助):t

分区号 (1-3,5,默认 5):3

Hex 代码(输入 L 列出所有代码):82         #修改System为82 即linux交换分区

已将分区“Linux”的类型更改为“Linux swap / Solaris”


命令(输入 m 获取帮助):p


磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xf8f3e822


   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048    20973567    10485760   83  Linux

/dev/sdb2        20973568    31459327     5242880    5  Extended

/dev/sdb3        31459328    41943039     5241856   82  Linux swap / Solaris

/dev/sdb5        20975616    29364223     4194304   83  Linux


命令(输入 m 获取帮助):w

The partition table has been altered!


Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@localhost ~]# 

[root@localhost ~]# partprobe


第二部:

  格式化:使用mkswap命令 (前提:调整其分区的ID为82;)

   

         mkswap:格式化分区为swap格式

 语法:mkswap [options] device

     -L 'LABEL'


        

        [root@localhost ~]# mkswap /dev/sdb3

        正在设置交换空间版本 1,大小 = 5241852 KiB

        无标签,UUID=e2b3e522-974d-4337-9fcc-66aa5ba7a8f2

        [root@localhost ~]# 

第三步:

     启动:使用swapon命令

     [root@localhost ~]# swapon /dev/sdb3


第四步:

     查看:使用free命令

  

    [root@localhost ~]# free

              total        used        free      shared  buff/cache   available

    Mem:        1010336      539824      236556        8116      233956      290804

    Swap:       7339000           0     7339000

    [root@localhost ~]# 


  

    [root@localhost ~]# swapon -s        #列出目前使用的swap设备有哪些

    文件名 类型 大小 已用 权限

    /dev/dm-1                               partition 2097148 0 -1

    /dev/sdb3                               partition 5241852 0 -2

    [root@localhost ~]# 



大家在使用windows系统时,可以通过一些磁盘管理软件在不格式化分区的前提下更换卷标,那么在linux系统时,更换卷标就只能在格式化时设置嘛? 当然不是可以通过e2label命令管理ext系列文件系统的卷标。

   语法:

       

        e2label DEVICE [LABEL] 设置卷标

e2lable DEVICE         查看卷标




   [root@localhost ~]# e2label /dev/sdb5 L6

   

   [root@localhost ~]# e2label /dev/sdb5 

    L6



那么分区的其他属性是否也可以在不重新格式化的前提下修改呢?答案是可行的,通过使用tune2fs命令。

 

tune2fs:重新设定ext系列文件系统可调整参数的值

-l:查看指定文件系统超级块信息;super block

-L 'LABEL':修改卷标

-m #:修预留给管理员的空间百分比

-j: 将ext2升级为ext3

-O: 文件系统属性启用或禁用

-o: 调整文件系统的默认挂载选项

-U UUID: 修改UUID号;



  计算机用户在使用计算机的过程当中死机这种情况,我想已经是见怪不怪了,而死机飞常可能导致文件系统的错乱。如果发生文件系统错乱的话该怎么办呢?简单那就是使用文件系统检查命令:fsck。

    

文件系统检测:

fsck: File System CheCk

fsck.FS_TYPE

fsck -t FS_TYPE

-a: 自动修复错误

-r: 交互式修复错误

                                

                ext系列文件系统的额外参数:

                                -f:强制检查 

范例:

      

[root@localhost ~]# fsck -t ext3 -f -C /dev/sdb5

fsck,来自 util-linux 2.23.2

e2fsck 1.42.9 (28-Dec-2013)

第一步: 检查inode,块,和大小

第二步: 检查目录结构                                                           

第3步: 检查目录连接性

Pass 4: Checking reference counts

第5步: 检查簇概要信息

L6: 11/524288 files (0.0% non-contiguous), 104300/2097152 blocks                

[root@localhost ~]# 



另外我们的系统实际执行的fsck命令,其实是调用e2fsck这个ext系列文件专用的检测修复工具的。

   e2fsck语法:

e2fsck:ext系列文件专用的检测修复工具 

                     e2fsck [option..] device

                     选项:

-y:自动回答为yes; (同fsck的 -a选项)

-f:强制修复;


  





最后在此衷心感谢鸟哥的LINUX私房菜这本书,(有抄袭之处望鸟哥见谅)同时感谢马哥。

仅作学习浏览,不做商业使用。

    

   





     


你可能感兴趣的:(linux文件系统)