首页 > 代码库 > linux磁盘及文件系统管理进阶

linux磁盘及文件系统管理进阶

回顾:

         磁盘,磁盘分区,文件系统

 

         现在的磁盘有两类:机械硬盘和固态硬盘

 

         为了使机械硬盘上流传下来的概念,和组织方式依然可用,固态硬盘也模拟了类似于机         械硬盘上的很多特性,想MBR之类的哪些东西,依然模拟扇区和那些机制,只不过是        固态硬盘是电器设备工作,机械硬盘是机械方式工作而已。

 

         无论是那种格式的硬盘在cent0S6,7只要是磁盘设备而且能够驱动的话统统识别为:                 /dev/sd[a-z]#

 

         管理分区:fdiskpartedsfdisk

 

         创建文件系统:

                   如果要想在创建的分区上实现按名存取文件,就需要再分区上创建文件系统,一个分区一旦格式化以后,就称为一个文件系统,这一点一定要记住,就算两个分区都被格式化为ext4文件系统,那么也要称为两个文件系统。

                  Linux文件系统类型:ext2,ext3,ext4,xfs,reiserfs,iso9660,swap

 

         文件系统的组织结构中的术语:

                   blockgroups:块组

                   block:磁盘块

                   inodetable:索引列表

                            inode

                    bitmap:位图

                    block bitmap:那些磁盘块未被使用

                    superblock:超级块

                    gdt:块组描述符

 

 

 

 

我们此前在CentOS7上演示过了创建文件系统,下面我们演示在centos6上如何创建文件系统

 

 [root@centos6~]# lsb_release     //查看当前系统上的LSB系统的发行版本

LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch

[root@centos6 ~]# cat /etc/issue     //查看当前系统的发行版本

CentOS release 6.8 (Final)   //6.8的最终版

Kernel \r on an \m

 

[root@centos6 ~]# uname -r    //查看内核的版本

2.6.32-642.el6.x86_64

[root@centos6 ~]#

 

 

 

首先我们在虚拟机上添加一块硬盘,容量大小为20G,然后重启,让系统重新加载这块新的硬盘

[root@centos6 ~]# fdisk -l    //发现新添加的硬盘被系统识别

 

Disk /dev/sda: 214.7 GB, 214748364800 bytes

255 heads, 63 sectors/track, 26108 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x000066a0

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sda1  *           1          26      204800  83  Linux

Partition 1 does not end on cylinderboundary.

/dev/sda2              26        6400   51200000   83  Linux

/dev/sda3            6400        8950   20480000   83  Linux

/dev/sda4            8950       26109  137829376    5  Extended

/dev/sda5            8950        9460    4096000   82  Linux swap / Solaris

 

Disk/dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x00000000

 

[root@centos6 ~]#

 

对新添加的硬盘进行分区

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

Device contains neither a valid DOSpartition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with diskidentifier 0x49937535.

Changes will remain in memory only, untilyou decide to write them.

After that, of course, the previous contentwon‘t be recoverable.

 

Warning: invalid flag 0x0000 of partitiontable 4 will be corrected by w(rite)

 

WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to

        switch off the mode (command ‘c‘) and change display units to

        sectors (command ‘u‘).

 

Command (m for help): p

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

 

Command (m for help): n   //new一个新的分区

Command action

  e   extended     //表示扩展分区

  p   primary partition (1-4)    //表示创建主分区

p

Partition number (1-4): 1

First cylinder (1-2610, default 1):   //表示从哪个柱面开始

Using default value 1

Last cylinder, +cylinders or +size{K,M,G}(1-2610, default 2610): +5G

 

Command (m for help): p

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

 

Command (m for help):

 

 

上面的操作我们还可以接着创建3个主分区,因为我们知道在磁盘分区上,我们的主分区和扩展分区的编号一共不能超过4,包括4,因为一个磁盘最多只能有4个主分区,当我们已经创建了3个主分区以后,我们接下来如果再创建分区,如果再创建主分区,那么我们就需要将剩余的空间全部给这个主分区,因为剩下的空间不能用了。因为我们说了,一个磁盘最多只能拥有4个主分区,如果我们不希望这个磁盘上只能创建4个主分区,我们要想多创建几个分区,那么我们就要创建一个扩展分区,创建扩展分区时,我们可以给他指定的空间,也可以将剩余的空间全部给扩展分区。

 

 

接上面的进行演示:

 

Command (m for help): n

Command action

  e   extended

  p   primary partition (1-4)

1                //不能执行操作,这说明这里需要我们填写ep

Invalid partition number for type `1‘

Command action

  e   extended

  p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (655-2610, default 655):

Using default value 655

Last cylinder, +cylinders or +size{K,M,G}(655-2610, default 2610): +2G

 

Command (m for help): P

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   83  Linux

 

Command (m for help): N    //new创建一个新的分区时,大小写都可以

Command action

  e   extended

  p   primary partition (1-4)

e

Partition number (1-4): 1                   //不能操作,说明扩展分区与主分区一共是4个,所以标号                                                          1,2前面都用了,所以这里不能再使用1了。

Partition 1 is already defined.  Delete it before re-adding it.

 

Command (m for help): n

Command action

  e   extended

  p   primary partition (1-4)

e

Partition number (1-4): 3

First cylinder (917-2610, default 917):

Using default value 917

Last cylinder, +cylinders or +size{K,M,G}(917-2610, default 2610):    //这里默认将剩余的空间                                                                                                                                       全部分给逻辑分区

Using default value 2610

 

Command (m for help): p

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

   DeviceBoot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   83  Linux

/dev/sdb3             917        2610   13607055    5  Extended

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

[root@centos6 ~]# fdisk -l

 

Disk /dev/sda: 214.7 GB, 214748364800 bytes

255 heads, 63 sectors/track, 26108cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x000066a0

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sda1  *           1          26     204800   83  Linux

Partition 1 does not end on cylinderboundary.

/dev/sda2              26        6400   51200000   83  Linux

/dev/sda3            6400        8950   20480000   83  Linux

/dev/sda4            8950       26109  137829376    5  Extended

/dev/sda5            8950        9460    4096000   82  Linux swap / Solaris

 

Disk/dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   83  Linux

/dev/sdb3             917        2610   13607055    5  Extended

[root@centos6 ~]# cat /proc/partitions    //查看内核是否识别了新建的分区。

major minor #blocks  name

 

  8        0  209715200 sda

  8        1     204800 sda1

  8        2   51200000 sda2

  8        3   20480000 sda3

  8        4          1 sda4

  8        5    4096000 sda5

  8       16   20971520 sdb

  8       17    5253223 sdb1

  8       18    2104515 sdb2

  8       19          1 sdb3

[root@centos6 ~]#

 

如果这个创建分区是在一个已经创建分区,并且挂载其中某个分区的磁盘设备文件上再继续进行分区,那么就有可能使得内核无法识别新建分区,那么我们需要执行命令,让centos6重新读取磁盘分区表。

                   centos6partx  -a /dev/sdb

                   centos7kpartx  -af /dev/sdb

 

 

如果我们想创建一个SWAP类型的分区,那么就用了更改分区类型

 

接上面的操作继续演示:

 

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

 

WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to

        switch off the mode (command ‘c‘) and change display units to

        sectors (command ‘u‘).

 

Command (m for help): p

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   83  Linux

/dev/sdb3             917        2610   13607055    5  Extended

 

Command (m for help): t          //更改分区的类型用子命令t

Partition number (1-5): 2                   //需要更改类型的分区编号

Hex code (type L to list codes): l   //列出已知的分区类型对应的编号

 

 0 Empty           24  NEC DOS         81 Minix / old Lin bf  Solaris       

 1 FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-

 2  XENIXroot      3c  PartitionMagic  83 Linux           c4  DRDOS/sec (FAT-

 3  XENIXusr       40  Venix 80286     84 OS/2 hidden C:  c6  DRDOS/sec (FAT-

 4  FAT16<32M      41  PPC PReP Boot   85 Linux extended  c7  Syrinx        

 5 Extended        42  SFS             86 NTFS volume set da  Non-FSdata   

 6 FAT16           4d  QNX4.x          87 NTFS volume set db  CP/M / CTOS /.

 7 HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  

 8 AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df BootIt        

 9  AIXbootable    50  OnTrack DM      93 Amoeba          e1  DOS access    

 a  OS/2Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3 DOS R/O       

 b  W95FAT32       52  CP/M            9f BSD/OS          e4  SpeedStor     

 c  W95FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       

 e  W95FAT16 (LBA) 54  OnTrackDM6      a5 FreeBSD         ee  GPT           

 f  W95Ext‘d (LBA) 55  EZ-Drive        a6 OpenBSD         ef  EFI (FAT-12/16/

10 OPUS            56  Golden Bow      a7 NeXTSTEP        f0  Linux/PA-RISC b

11 Hidden FAT12    5c  Priam Edisk     a8 Darwin UFS      f1  SpeedStor     

12 Compaq diagnost 61  SpeedStor       a9 NetBSD          f4  SpeedStor     

14 Hidden FAT16 <3 63  GNU HURD orSys ab  Darwin boot     f2 DOS secondary 

16 Hidden FAT16    64  Novell Netware  af  HFS/ HFS+      fb  VMware VMFS   

17 Hidden HPFS/NTF 65  NovellNetware  b7  BSDI fs         fc VMware VMKCORE

18 AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd Linux raid auto

1b Hidden W95 FAT3 75  PC/IX           bb Boot Wizard hid fe  LANstep       

1c Hidden W95 FAT3 80  Old Minix       be Solaris boot    ff  BBT           

1e Hidden W95 FAT1

Hex code (type L to list codes): 82                     //输入目标类型的编号

Changed system type of partition 2 to 82(Linux swap / Solaris)

 

Command (m for help): p                   //查看一下是否更改完成

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   82  Linux swap/ Solaris

/dev/sdb3             917        2610   13607055    5  Extended

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

[root@centos6 ~]# fdisk -l

 

Disk /dev/sda: 214.7 GB, 214748364800 bytes

255 heads, 63 sectors/track, 26108cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x000066a0

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sda1  *           1          26      204800  83  Linux

Partition 1 does not end on cylinderboundary.

/dev/sda2              26        6400   51200000   83  Linux

/dev/sda3            6400        8950   20480000   83  Linux

/dev/sda4            8950       26109  137829376    5  Extended

/dev/sda5            8950        9460    4096000   82  Linux swap / Solaris

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x49937535

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         654    5253223+  83  Linux

/dev/sdb2             655         916    2104515   82  Linux swap / Solaris

/dev/sdb3             917        2610   13607055    5  Extended

[root@centos6 ~]# cat /proc/partitions

major minor #blocks  name

 

  8        0  209715200 sda

  8        1     204800 sda1

  8        2   51200000 sda2

  8        3   20480000 sda3

  8        4          1 sda4

  8        5    4096000 sda5

  8       16   20971520 sdb

  8       17    5253223 sdb1

  8       18    2104515 sdb2

  8       19          1 sdb3

[root@centos6 ~]#

 

 

 

 

磁盘和文件系统管理:

 

         文件系统管理工具

 

         1)创建文件系统工具

                            mkfs

                                     mkfs.etx2,mkfs.etx3,mkfs.etx4,mkfs.xfs,mkfs.vfat,......

         2)检测及修复文件系统的工具

                            fsck

                                     fsck.ext2,fsck.ext3,.........

         3)查看其属性的工具

                            dumpe2fs,tune2fs

         4)调整文件系统特性:

                            tune2fs

 

我们一定要记得,每一种文件系统,都有自己专用的,在用户空间中的工具。那么文件系统在哪呢?

 

 

内核级文件系统的组成部分:

         1)文件系统驱动;由内核提供

         2)文件系统管理工具;由用户空间的应用程序提供

 

 

详解:内核级文件系统组成部分:

 

内核级文件系统的组成部分:通常由两部分组成,

 

         第一部分:

                   文件系统驱动:由内核驱动并识别的

 

                   (内核级文件系统的组成部分,被装载或者我们能够识别磁盘上文件系统内部的内容,是在内核中通过内核中的文件系统驱动实现的。很多时候一个程序让一个设备或者让一个机制后者让一个功能工作的更加流畅的代码都叫做驱动。对于linux而言,工作在内核中的这种文件系统,尤其是让某一个磁盘分区上文件系统工作起来了的那个内核模块,我们通常称他们为文件系统驱动。一般而言,要想ext4文件系统,能在我们的文件系统上工作的话,我们必须装载这个模块,如果ext4编译成了模块的话,比如说我们使用lsmod命令,lsmod命令的意思是:程序显示在Linux内核模块的状态

[root@centos6 ~]# lsmod                           //查看当前内核已装载的模块,我们的内核要识别一个                                                                  文件系统,那么我们的内核必须先装载了这么个模块对于内核来讲,我们可以直接装载这个模块,也可以进行直接编译,是她成为内核的一部分如果是内核的一部分,那么我们使用lsmod命令,是看不到这个模块的名字的。也就是说即使看不到名字,但是内核能够正常工作,这也说明内核加载了相关的驱动程序。

Module                  Size  Used by

nls_utf8                1455  1

rfcomm                 71079  4

sco                    17493  2

bridge                 85674  0

bnep                   16370  2

l2cap                  54306  16 rfcomm,bnep

autofs4                27000  3

8021q                  20362  0

garp                    7152  1 8021q

stp                    2218  2 bridge,garp

llc                     5418  3 bridge,garp,stp

ipt_REJECT              2351  2

nf_conntrack_ipv4       9186 2

nf_defrag_ipv4          1483 1 nf_conntrack_ipv4

iptable_filter          2793 1

ip_tables              17831  1 iptable_filter

ip6t_REJECT             4340  2

nf_conntrack_ipv6       7985 3

nf_defrag_ipv6         26468 1 nf_conntrack_ipv6

xt_state                1492  5

nf_conntrack           79537  3nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

ip6table_filter         2889 1

ip6_tables             18732  1 ip6table_filter

ipv6                  336282  284bridge,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

fuse                   79892  4

vmhgfs                 50307  0

vsock                  46582  4

uinput                  8120  0

microcode             112205  0

btusb                  16915  2

bluetooth              97895  9 rfcomm,sco,bnep,l2cap,btusb

rfkill                 19255  3 bluetooth

snd_seq_midi            6423  0

snd_seq_midi_event      7205 1 snd_seq_midi

vmware_balloon          7199 0

snd_ens1371            21523  2

snd_rawmidi            24633  2 snd_seq_midi,snd_ens1371

snd_ac97_codec        124967 1 snd_ens1371

ac97_bus                1452  1 snd_ac97_codec

snd_seq                60769 2 snd_seq_midi,snd_seq_midi_event

snd_seq_device          7277 3 snd_seq_midi,snd_rawmidi,snd_seq

snd_pcm                93697  2 snd_ens1371,snd_ac97_codec

snd_timer              22747  2 snd_seq,snd_pcm

snd                    73783  11 snd_ens1371,snd_rawmidi,snd_ac97_codec,snd_seq,snd_seq_device,snd_pcm,snd_timer

soundcore               7958  1 snd

snd_page_alloc          8856 1 snd_pcm

e1000                 134863  0

sg                     29318  0

vmci                   75097  1 vsock

i2c_piix4              11232  0

shpchp                 29130  0

ext4                  379655  3

jbd2                   93252  1 ext4

mbcache                 8193  1 ext4

sd_mod                 37158  5

crc_t10dif              1209  1 sd_mod

sr_mod                15049  1

cdrom                  39085  1 sr_mod

mptspi                 16411  4

mptscsih               36638  1 mptspi

mptbase                93615  2 mptspi,mptscsih

scsi_transport_spi     25447 1 mptspi

pata_acpi               3701  0

ata_generic             3837  0

ata_piix               24409  1

vmwgfx                226420  2

ttm                    89408  1 vmwgfx

drm_kms_helper        127219 1 vmwgfx

drm                   362893  5 vmwgfx,ttm,drm_kms_helper

i2c_core               29132 3 i2c_piix4,drm_kms_helper,drm

dm_mirror              14864  0

dm_region_hash         12085 1 dm_mirror

dm_log                  9930  2 dm_mirror,dm_region_hash

dm_mod                102467  2 dm_mirror,dm_log

[root@centos6 ~]#

 

 

 

第二部分:文件系统管理工具:

                   通常由用户空间的应用程序提供

 

         要想管理由内核提供的驱动的某中文件系统,那么首先有个前提是我们有可能事先手动安装这个用户空间的应用程序,因为有可能我们的系统默认可能并没有安装

 

创建文件系统的工具,对于不同的文件系统来说,其创建的工具是不一样的。

 

centos6系统上,我们在命令行输出:mkfs.”然后连敲两次Tab键命令,会显示很多工具,

[root@centos6 ~]# mkfs.

mkfs.cramfs   mkfs.ext3    mkfs.ext4dev  mkfs.vfat    

mkfs.ext2     mkfs.ext4     mkfs.msdos   

[root@centos6 ~]# mkfs.

 

centos7上我们输入“mkfs.”然后连敲两次Tab,显示如下:可知centos7centos6系统多了两个文件系统:btrfsxfs,而xfscentos7上默认的文件系统。

[root@centos7 ~]# mkfs.

mkfs.btrfs   mkfs.ext2    mkfs.ext4   mkfs.minix   mkfs.vfat   

mkfs.cramfs mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs    

[root@centos7 ~]# mkfs.

 

那我们怎样知道目前已有分区他的文件系统类型是什么?

我们用命令blkid

[root@centos6 ~]# blkid /dev/sda3

/dev/sda3: UUID="32376552-a128-416d-be08-0aa6acab4661"TYPE="ext4"

[root@centos6 ~]# blkid /dev/sda5

/dev/sda5:UUID="091e5b14-8201-4ffc-9278-41b7acae00d9" TYPE="swap"

[root@centos6 ~]#

 

 

 

创建文件系统的工具:

         mkfs

        

         创建文件系统的工具,主要命令是:“mkfs”,但是我们现在主要使用的是centos系列的系统,尽管说centos7默认支持的文件系统的是xfs了,但是ext4仍然在使用,所以我们这里先说一下,ext系列文件系统的管理工具:

 

         ext系列文件系统的管理工具:(这里是经典的工具)

                   mkfs.ext2(无日志功能),mkfs.ext3mkfs.ext4

                            ext4文件系统向后兼容前面的两种文件系统。所以如果可以的话我们建议使用ext4文件系统。

         创建上面的文件系统非常简单,直接“mkfs.ext#”后面跟上分区即可

         我们再次说明,我们格式化分区,会破坏所有的原有数据,请慎重操作。

 

         我们创建文件系统类型的命令:mkfs后面的点,可以用选项“-t”来表示,这样更好理解

 

         mkfs -t  ext2=mkfs.ext2

 

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

         mke2fs  [OPTIONS] device

                   -t  {ext2|ext3|ext4}:指明要创建的文件系统类型

                            mkfs.ext4=mkfs  -t ext4=mke2fs  -t  ext4

                   -b  {1024|2048|4096}:指明文件系统的块大小;最大不能超过4K

                   -L  LABEL:指明卷标;

                            举例:mke2fs  -t  ext3  -L  MYDATA -b  1024  /dev/sdb1

                   -j:创建有日志功能的文件系统ext3

                            (这是ext2文件系统用来创建ext3文件系统的;

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

                   -i#bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个inode

                   -N#:直接指明要给此文件系统创建的inode的数量;

                   -O[^]FEATURE:以指定的特性创建目标文件系统,前面有“^”表示取消这个功能,                                              没有“^”表示启用这个功能;

                            举例:mke2fs  -O has_joural  /dev/sdb1   //开启日志功能                

                                       mke2fs  -O  ^has_joural /dev/sdb1      //关闭日志功能

                   -m#:指定预留的空间百分比,默认是“%5”不需要加符号,也不需要进行换算,                              直接加数字即可

 

        

 

         e2label命令:卷标的查看与设定

                            e2labelext系列文件系统专用的卷标命令)

                   查看:e2label  device

                   设定:e2label  device LABEL

 

 

         tune2fs命令:查看或修改ext系列文件系统的某些属性

                   (注意:只能查看某些属性)

                   用法:adjust  tunable filesystem  parameters  on ext2/ext3/ext4  filesystems

                            注意:块创建大小后不可修改;

                            可修改的项:卷标,文件系统类型,预留空间

                           

                   tune2fs  [OPTIONS] device

                            -l:查看超级块的内容;

                            -j:修改指定的文件系统的属性;

                                      -jext2---->ext3

                            -L  LABEL:设定卷标或修改卷标;   

                            -m#:不用格式化磁盘,修改预留空间的百分比;默认是%5

                                               举例:tune2fs  -m 2  /dev/sdb1  :将预留空间调节成%2

                            -O  [^] FEATHER:开启或关闭某种特性;

                                               举例:tune2fs  -O has_journal  /dev/sdb1

                                                          tune2fs  -O  ^has_journal /dev/sdb1

                            -o  [^]mount_options:开启或关闭某种默认挂载选项

                                               常用的设置就是:acl     ^acl   //acl是访问控制列表   

                                               举例:tune2fs  -o acl  /dev/sdb1

         (如果我们创建了一个新的分区,挂载时没有指明acl,那么这个分区是不支持acl的,也就是setacl或者getacl是不支持的,而操作系统安装时,自动创建的分区是支持acl的,但是我们在后面自己创建的分区并挂载时是不支持acl的,我们需要在挂载时明确指定。如果我们让其默认就支持,那么就需要使用tune2fs命令设定。)

 

        

         dumpe2fs命令:

                   显示ext系列文件系统的属性信息

                   dumpe2fs  [-h] device

                            例:如果不加选项“-hdumpe2fs  /dev/sdb1:会显示整个文件系统的信息,                             每个块组的详细信息

                            (我们如果直接执行:dumpe2fs  /dev/sdb1,很有可能我们看不到开头的信息,我们可以加上less,分页显示:  dumpe2fs /dev/sdb1 | less

                   dumpe2fs  -h /dev/sdb1   //仅显示文件系统前面的信息。与tune2fs  -l的显示很相似。

 

 

 

 

                   用于实现文件系统检测的工具;

                  

                   因进程意外终止或系统崩溃等原因导致操作系统非正常终止时,可能会造成文件损坏,此时,应该检测并修复文件系统;建议离线进行;(离线就是不挂载)

                  

                 ext系列文件系统的专用检测工具:

                            e2fsckcheck aLinux ext2/ext3/ext4 file system

                                     e2fsck  [OPTIONS] device

                                               -y:对所有问题自动回答会yes

                                               -f:即使文件系统处于clean状态,也要强制进行检测;

 

                            fsckcheck andrepair a Linux file system

                                     是通用的文件系统检测工具

                                     -t  fstype:指明文件系统类型;

                                               fsck  -t ext4=fsck.ext4

                                     -a:无须交互自动修复所有错误;

         -a无须交互式修复,我们一般不建议使用,因为,当我们在写一个2G的文件,我们写到1.9G的时候,突然断电,那么再开机的时候,我们如果使用完全修复,那么其实我们要知道修复其实就是先将原先的文件内容删除,然后再写,所以,这个时候就有点不得当了,所以不是所有时候都是适合进行“-a”修复的。)

                                     -r:交互式修复;

 

 

                   创建:mkfs.xfs

                   检测:fsck.xfs

 

         blkid命令:

                   blkid  device

                   blkid  -L LABEL:根据LABEL定位设备

                   blkid  -U UUID:根据UUID定位设备

 

 

 

swap文件系统:

         Linux上的交换分区必须使用独立的文件系统;也就是独立的磁盘分区

                   且文件系统的system  ID必须为82

        

         创建swap分区设备有专有的命令:mkswap命令

 

 

当我们使用fdisk  -l”命令查看磁盘分区时,如果我们创建的分区后面的system  ID82,那么我们对这个分区进行格式化时,我们只能将其格式化为swap格式的。而如果ID83,那么我们可以既可以格式化为ext系列的,也可以格式化为ntfs等格式的。

 

                   mkswap  [OPTIONS] device

                            -L LABEL:指明卷标

                                -f:强制

 

windows无法识别linux的文件系统;因此,存储设备需要在两种系统之间交叉使用时,应该使用windowslinux同时支持的文件系统;fat32linux上叫vfat);

 

                   #mkfs.vfat  device

 

 

我们创建了分区,也对其进行格式化了,那么我们怎样使用这个空间呢?

         解:

                   我们需要挂载,对于linux而言,他的所有的存储设备要想能够被访问到,必须要关联至当前根文件系统上的某一个位置,但是不能关联至根“/”上,如果要是关联至根上,那么根上原来的文件系统去哪了?

         注意:把设备关联至或者挂载哪一个设备上,虽说通过这个目录访问的文件,都是直接指向那个分区的文件,所以说,如果让一个分区关联至根上,那么根上原来的文件就会被隐藏了,那么根下所有自己管理可用的工具就找不到了。

         对于内核来讲,内核启动时,首先要找到根,也就意味着根在内核中随时被使用,但是在系统启动之前,根在哪呢?其实根压根就没有这个东西,但是根文件系统有一定的特性,所谓的根文件系统就是指根文件系统拥有很多自己的关键目录,像bin,boot,dev,etc等,所在的路径一个分区只要有这些路径,有工具,在内核启动时,告诉内核去找这样一个分区,那么这个分区就成了根,所以只要有一个分区,即假如说一个磁盘上有4个分区,其中有两个目录都有“根”这样的目录结构,而且都有自己的需要的工具,那么启动时告诉内核识别哪个分区,那么这个分区就代表根分区。

 

         我们要使用新建的文件系统,那么我们就要先创建一个目录,然后将这个文件系统挂载到这个目录下。作为其他分区入口的目录,一定要在前一个文件系统上,这个目录被称为挂载点。而新建的文件系统叫做挂载设备。我们如果把根卸载了,那么我们操作系统就无法使用了,因为没有根,我们的内核启动起来也没什么用。我们理想的挂载就是在根文件系统上找一个目录进行挂载。

 

 

文件系统的使用:

         首先要“挂载”:mount命令和卸载umount命令

 

 

 

演示:tune2fs  -o acl  /dev/sdb1

 

[root@centos6 ~]# tune2fs -l /dev/sdb1

tune2fs 1.41.12 (17-May-2010)

Filesystem volume name:   DONG

Last mounted on:          <not available>

Filesystem UUID:          0288c516-c353-4bea-80c6-401655d5f9fd

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inodedir_index filetype sparse_super

Filesystem flags:         signed_directory_hash

Defaultmount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              328704

Block count:              5253220

Reserved block count:     262661

Free blocks:              5132956

Free inodes:              328693

First block:              1

Block size:               1024

Fragment size:            1024

Reserved GDT blocks:      256

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         512

Inode blocks per group:   128

Filesystem created:       Wed Nov 9 09:18:58 2016

Last mount time:          n/a

Last write time:          Wed Nov  9 09:46:33 2016

Mount count:              0

Maximum mount count:      36

Last checked:             Wed Nov  9 09:18:58 2016

Check interval:           15552000 (6 months)

Next check after:         Mon May  8 09:18:58 2017

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:      3dcd0272-7789-4623-a547-f69ee10db38c

Journal backup:           inode blocks

 [root@centos6~]# tune2fs -o acl /dev/sdb1

tune2fs 1.41.12 (17-May-2010)

[root@centos6 ~]# tune2fs -l /dev/sdb1

tune2fs 1.41.12 (17-May-2010)

Filesystem volume name:   DONG

Last mounted on:          <not available>

Filesystem UUID:          0288c516-c353-4bea-80c6-401655d5f9fd

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inodedir_index filetype sparse_super

Filesystem flags:         signed_directory_hash

Defaultmount options:    acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              328704

Block count:              5253220

Reserved block count:     262661

Free blocks:              5132956

Free inodes:              328693

First block:              1

Block size:               1024

Fragment size:            1024

Reserved GDT blocks:      256

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         512

Inode blocks per group:   128

Filesystem created:       Wed Nov 9 09:18:58 2016

Last mount time:          n/a

Last write time:          Wed Nov  9 10:31:44 2016

Mount count:              0

Maximum mount count:      36

Last checked:             Wed Nov  9 09:18:58 2016

Check interval:           15552000 (6 months)

Next check after:         Mon May  8 09:18:58 2017

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:      3dcd0272-7789-4623-a547-f69ee10db38c

Journal backup:           inode blocks

[root@centos6 ~]#

 

 

 

 

演示tune2fs  -l /dev/sdb1

[root@centos6 ~]# tune2fs -l /dev/sdb1

tune2fs 1.41.12 (17-May-2010)

Filesystem volume name:   DONG        //卷标

Last mounted on:          <not available>                  //上一次被挂载的

Filesystem UUID:          0288c516-c353-4bea-80c6-401655d5f9fd 

Filesystem magic number:  0xEF53                 //魔数,表示文件系统专用的一种表述

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inodedir_index filetype sparse_super //已启用的功能

Filesystem flags:         signed_directory_hash

Default mount options:    (none)                   //文件系统默认的挂载选项

Filesystem state:         clean           //文件系统状态,clean状态是一致状态,表示没有文                                                                                件损坏,如果有文件损坏,就叫dirty,不干净状态

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              328704

Block count:              5253220

Reserved block count:     262661                 //预留的块数量

Free blocks:              5132956

Free inodes:              328693

First block:              1

Block size:               1024

Fragment size:            1024

Reserved GDT blocks:      256                      //预留给GDT的块数量

Blocks per group:         8192                     //每组多少块

Fragments per group:      8192                    //每组多少个片段

Inodes per group:         512                       //每组有多少个inode

Inode blocks per group:   128                          //每一组中有多少个块放inode

Filesystem created:       Wed Nov 9 09:18:58 2016

Last mount time:          n/a

Last write time:          Wed Nov  9 09:46:33 2016

Mount count:              0

Maximum mount count:      36

Last checked:             Wed Nov  9 09:18:58 2016

Check interval:           15552000 (6 months)

Next check after:         Mon May  8 09:18:58 2017

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:      3dcd0272-7789-4623-a547-f69ee10db38c

Journal backup:           inode blocks

[root@centos6 ~]#

 

 

e2label举例演示:

 

 [root@centos6~]# e2label /dev/sdb1   //查看卷标

MYDATA

[root@centos6 ~]# e2label /dev/sdb1 DONG          //设定卷标

[root@centos6 ~]# e2label /dev/sdb1

DONG

[root@centos6 ~]# blkid /dev/sdb1                   //也可以查看卷标

/dev/sdb1: LABEL="DONG"UUID="0288c516-c353-4bea-80c6-401655d5f9fd" SEC_TYPE="ext2"TYPE="ext3"

[root@centos6 ~]#

 

 

演示创建文件系统时,指明卷标

[root@centos6 ~]# mke2fs -t ext3 -L MYDATA -b 1024 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

Filesystemlabel=MYDATA

OS type: Linux

Blocksize=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

328704 inodes, 5253220 blocks

262661 blocks (5.00%) reserved for thesuper user

First data block=1

Maximum filesystem blocks=72613888

642 block groups

8192 blocks per group, 8192 fragments pergroup

512 inodes per group

Superblock backups stored on blocks:

         8193,24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,

         1024001,1990657, 2809857, 5120001

 

Writing inode tables: done                           

Creating journal (32768 blocks): done

Writing superblocks and filesystemaccounting information: done

 

This filesystem will be automaticallychecked every 36 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@centos6 ~]# blkid /dev/sdb1

/dev/sdb1: LABEL="MYDATA"UUID="0288c516-c353-4bea-80c6-401655d5f9fd" SEC_TYPE="ext2"TYPE="ext3"

[root@centos6 ~]#

 

我们以centos6系统为例:创建文件系统:

 

 

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

mke2fs 1.41.12 (17-May-2010)

Filesystem label=              //每一个文件系统都有一个卷标,我们没有指定卷标,所以为空

OS type: Linux                    //操作系统为linux

Block size=4096 (log=2)                     //没指定块大小,默认块大小为4K

Fragment size=4096 (log=2)              //分块大小为4K

Stride=0 blocks, Stripe width=0 blocks

328656 inodes, 1313305 blocks       //一共给这个分区创建了多少个inode,为这个分区创建了                                                                      多少个磁盘块

65665 blocks (5.00%) reserved for the superuser    //其中有多少块预留下来给超级管理员

First data block=0                       //第一个数据块的编号从零开始

Maximum filesystem blocks=1346371584                //最大文件系统块编号

41 block groups                           //一共有多少个块组

32768 blocks per group, 32768 fragments pergroup              //每个组内有多少个块,每一个                                                                                                                    group有多少个inode

8016 inodes per group

Superblock backups stored on blocks:             //我们的superblock被备份到了哪些块中了,每一                                                                             个块的编号

         32768,98304, 163840, 229376, 294912, 819200, 884736

 

Writing inode tables: done             //正在写入inode表:完成 done表示完成)                         

Creating journal (32768 blocks): done              //创建日志功能完成

Writing superblocks and filesystemaccounting information: done

 

This filesystem will be automatically checkedevery 21 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@centos6 ~]#

 

[root@centos6 ~]# blkid /dev/sdb1         //查看分区的文件系统

/dev/sdb1:UUID="23c40dd1-3a3e-4d70-9772-429ed5c489e0" TYPE="ext4"      //每一个设备还                                                                                                                                                  有一个随机的                                                                                                                                                      UUID,表示全局                                                                                                                                                         唯一标识符,后面                                                                                                                                                     是分区文件系统                                                                                                                                                 的类型。

[root@centos6 ~]#

 

 

上面的操作将分区创建为ext4类型的文件系统,是有日志功能的,下面我们再将分区格式化为ext2类型的文件系统,那么这时在下面的显示信息中就不会出现Creating journal (32768 blocks):done                   //创建日志功能完成”,因为ext2没有日志功能。

 

[root@centos6 ~]# mkfs.ext2 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

328656 inodes, 1313305 blocks

65665 blocks (5.00%) reserved for the superuser

First data block=0

Maximum filesystem blocks=1346371584

41 block groups

32768 blocks per group, 32768 fragments pergroup

8016 inodes per group

Superblock backups stored on blocks:

         32768,98304, 163840, 229376, 294912, 819200, 884736

 

Writing inode tables: done                           

Writing superblocks and filesystemaccounting information: done

 

This filesystem will be automaticallychecked every 21 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@centos6 ~]#

 

centos6系统上安装xfs文件系统:

 

centos6默认是不支持xfs类型的文件系统的。

如果我们想在centos6上使用xfs类型的文件系统,我们需要手动安装xfs相关的rpm才可以。如果我们想安装的话,我们先配置好yum源。

 

         在这里第一次接触登入FTP服务器的步骤:

在命令行中输入:“wget http://10.1.0.1/centos6.repo”即,“wget  http://10.1.0.1/要下载的文件”

 

         我们需要使用yum安装一个xfsrrpm包,这个包的名字叫“xfsprogs”,我们配置yum源时,配置本地光盘的yum源即可。

         [root@centos6yum.repos.d]# vimCentOS-Local.repo

         然后我们编辑的本地yum源文件内容为:

         [base]

         name=local-cdrom-yum

         baseurl=file:///media

         gpgcheck=0

 

         然后我们只需执行命令yum install  xfsprogs

centos6系统上安装成功xfs文件系统后,我们执行下面的命令进行验证:

         在命令行上敲入“mkfs.”然后两次敲Tab键,如果出现“mkfs.xfs”就表示安装成功。

[root@centos6 yum.repos.d]# mkfs.               

mkfs.cramfs   mkfs.ext3    mkfs.ext4dev  mkfs.vfat    

mkfs.ext2     mkfs.ext4     mkfs.msdos    mkfs.xfs     

 [root@centos6 yum.repos.d]# lsmod |grep xfs   //我们使用lsmod命令查找我们的系统是否                                                                                                xfs模块,但是没有找到

[root@centos6 yum.repos.d]# mkfs.xfs /dev/sdb1  //没有找到但是并不影响我们我们的使用,                                                                                              但是仅仅适应mkfs.fs命令,是不能完成                                                                                                          格式化分区的,他会告诉我们这个分区上                                                                                                  已经有ext4文件系统了,这个操作非常                                                                                                           危险,并告诉我们使用选项“-f”来强制                                                                                               覆盖原有的文件系统

mkfs.xfs: /dev/sdb1 appears to contain anexisting filesystem (ext4).

mkfs.xfs: Use the -f option to forceoverwrite.

[root@centos6 yum.repos.d]# mkfs.xfs -f /dev/sdb1             //加上选项“-f”后覆盖成功

meta-data=http://www.mamicode.com/dev/sdb1 isize=256 agcount=4, agsize=328327 blks

        =                      sectsz=512   attr=2, projid32bit=0

data    =                      bsize=4096   blocks=1313305,imaxpct=25

        =                      sunit=0      swidth=0 blks

naming  =version 2              bsize=4096   ascii-ci=0

log     =internal log          bsize=4096   blocks=2560,version=2

        =                      sectsz=512   sunit=0 blks,lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@centos6 yum.repos.d]# bklid /dev/sdb1

-bash: bklid: command not found

[root@centos6 yum.repos.d]# bkild /dev/sdb1

-bash: bkild: command not found

[root@centos6 yum.repos.d]# blkid /dev/sdb1   //使用blkid命令查看分区的文件系统类型

/dev/sdb1:UUID="b8b2eea5-ded1-4182-9a5c-f8be601123ec" TYPE="xfs"

[root@centos6 yum.repos.d]#

 

 

 


本文出自 “11847750” 博客,请务必保留此出处http://11857750.blog.51cto.com/11847750/1875115

linux磁盘及文件系统管理进阶