fdisk文件系统磁盘管理

1、文件系统介绍(由于操作的环境是在centos6的linux系统下,因此主要是围绕在linux系统上解释说明)

随着网络的发展,磁盘存储的发展也得到快速的发展。磁盘的存储容量由原来的几M到现在上T的存储磁盘。磁盘存储的变换很大。磁盘的接口类型主要可以分成两类:一、并行的接口;二、串口的类型。其中并行的主要类型分为IDE:133MB/S;SCSI:640MB/s。二串口类型有SATA:6Gbps,SAS:6Gbps,USB:480MB/s等一些类型。但是近些年磁盘的发展的速度遇到瓶颈。磁盘的存储速度遇到一个瓶颈。

拿一个普通机械硬盘来说,机械式硬盘:track:磁盘,cylinder:柱面,secotr:扇区。按住面分区:0磁道0扇区存放在系统的MBR表的512bytes。其中446bytes是系统的引导加载程序(boot loader)。另外剩余中的64bytes分别表示的是分区表信息,其中16bytes标识一个分区。最后剩余的两个2bytes表示的是分区结束的标志4个主分区:3主分区+1扩展(n个逻辑分区)

wKiom1XjByqyBw6PAADwlxbqZyU324.jpg 

就目前而言,文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法,文件系统的类型有很多。比如:linux系统就支持很多种文件系统类型:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap,甚至连Windows系统下的一些文件系统也能够支持,只是支持的性能不是很好。而我们日程使用的windows系统它支持的文件系统类型就比较少。主流支持的是fat32和NTFS文件系统类型。另外Unix系统它支持的是:ffs,ufs,jfs2。此外还有很多文件系统类型如:网络文件系统:nfs,CIFS;集群文件:gfs2,ocfs2分布式文件系统:moodefs,mogilefs,glusterfs,lustre等。随着网络的快速发展,有些文件系统存储格式,已经被淘汰或者已经濒临淘汰的边缘。

在CentOS7的版本之前,默认的文件系统的类型为ext4类型。本次操作的环境实在CentOS6.6的环境下,文件系统类型采用的ext4.对于文件系统的类型就不过多说明,想具体的了解的可以去搜索相关的资料。咱们还是回归本次的主题,通过fdisk命令对文件系统的管理。

2、Fdisk命令介紹

首先,看到fdisk命令,大家都会有所了解。就fdisk(Partition table manipulator for Linux)这个命令我个人的看法是磁盘列表管理工具。如果有误,大家见谅。 就我个人认为,fdisk命令很强大,它能够管理文件下的所有磁盘。相对而言,既然命令强大,那么对其操作也需要一定的谨慎性。

fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux 、fat32、 linux 、linux swap 、fat16 以及其它类Unix类操作系统的文件系统等;当然我们用fdisk 对磁盘操作分区时,并不是一个终点,我们还要对分区进行格式化所需要的文件系统;这样一个分区才能使用;这和DOS中的fdisk 是类似的。闲话不多扯,还是进入主题比较好。

3、初步对fdisk命令了解

在文件系统中,能够直接接触但磁盘的命令就是fdisk -l。这条命令能够查看当前系统上所有磁盘的使用情况。其中l的是list的意思。

[root@www ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders nits = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000309a9

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          26      204800   83  Linux

/dev/sda2              26        7859    62914560   8e  Linux LVM

/dev/sda3            7859        8512     5252256   83  Linux

/dev/sda4            8513       15665    57456472+   5  Extended

/dev/sda5            8513       11124    20980858+  83  Linux

/dev/sda6           11125       11778     5253223+  83  Linux

/dev/sda7           11779       11910     1060258+  83  Linux

 

通过使用这条命令能够很好只管查看当前系统磁盘的使用情况。当然你在不确定磁盘的使用情况下,通过这条命令能够帮你解决疑问。同时,这条命令后面还可以跟磁盘路径参数。这样是对单个硬盘的使用情况查询,不跟是对整个系统的磁盘使用情况进行查询。

[root@www ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x37a3a8dc

   设备名称 柱面开始柱面结束磁盘块系统类型id

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         132     1060258+  83  Linux

/dev/sdb4             133        6527    51367837+   5  Extended

/dev/sdb5             133        1438    10490413+  8e  Linux LVM

/dev/sdb6            1439        2744    10490413+  fd  Linux raid autodetect

/dev/sdb7            2745        4050    10490413+  fd  Linux raid autodetect

/dev/sdb8            4051        5356    10490413+  fd  Linux raid autodetect

/dev/sdb9            5357        6010     5253223+  8e  Linux LVM

/dev/sdb10           6011        6403     3156741   8e  Linux LVM

在这需要对磁盘的划分进行简单的说明下。单块硬盘,分区最多只能有四个主分区。不能超过四个主分区,所以如果想划分多个分区,只能采取3主分区+ 一个逻辑分区的方式。并且一块磁盘最多不能超过15个分区。在linux系统中,系统前1-4分区只能有主分区占据,逻辑分区只能从5开始。对上面这块磁盘的一些重要的地方做一些简单的说明:

 53.7 GB,磁盘的大小

有255个磁面(指的是逻辑磁头而非物理磁头);

63个扇区;

6527 个磁柱;

cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(约为)=8.225280M(约为)。


4、进一步的了解fdisk命令

使用fdisk /dev/sdb,通过fdisk命令后面跟上直接跟上磁盘的路径,就能操作磁盘。

[root@www ~]# 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): 

出现上面这个界面,说明已经登录了磁盘操作界面。其中如果进入磁盘之后,你不懂得如何进行操作,系统会有帮助提示(m for help。当你在磁盘上键入m命令就会弹出帮助信息。

Command action

   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)

会把所有的提示信息都弹出。本人偷些就来,命令后面对一些常用的命令进行简单的说明。希望对大家学习有些帮助。接下我做些对常用命令的简单演示

1、列出当前操作硬盘的分区情况,用p
Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

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

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

Disk identifier: 0x37a3a8dc

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb4             133        6527    51367837+   5  Extended

/dev/sdb5             133        1438    10490413+  8e  Linux LVM

/dev/sdb6            1439        2744    10490413+  fd  Linux raid autodetect

/dev/sdb7            2745        4050    10490413+  fd  Linux raid autodetect

/dev/sdb8            4051        5356    10490413+  fd  Linux raid autodetect

/dev/sdb9            5357        6010     5253223+  8e  Linux LVM

/dev/sdb10           6011        6403     3156741   8e  Linux LVM


2、通过fdisk的d指令来删除一个分区

Command (m for help): p 注:列出分区情况;
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux
Command (m for help): d 注:执行删除分区指定;
Partition number (1-6): 6 注:我想删除 sda6 ,就在这里输入 6 ;
Command (m for help): p 注:再查看一下硬盘分区情况,看是否删除了?

Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
Command (m for help):
在删除分区的时候,千万不能随去删除,需要确认删除的分区。

 

3、通过fdisk的n指令增加一个分区
Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p  

Partition number (1-4): 1(主分区一共有四个,默认从1开始。这里我们就选择1

First cylinder (1-6527, default 1): (由于磁盘还没进行分区,所以磁盘从1扇区开始)

Using default value 1

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

对上面的一些操作进行解释:

键入N命令的时候,会弹出两个选择。系统会告诉你,目前可以创建的分区类型。主分区或则逻辑分区(对上面红色部分的说明)。在这里,我就选择主分区了。接着键入p命令。
Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 

注:这个是定义分区大小的,+10G 就是大小为10G;当然您也可以根据p提示的单位cylinder的大小来算,然后来指定 End的数值。
4、通过fdisk的t指令指定分区类型

Command (m for help): t 注:通过t来指定分区类型;
Partition number (1-5): 5 注:要改变哪个分区类型呢?我指定了6,其实也就是sdb5
Hex code (type L to list codes):L 注:在这里输入L,就可以查看分区类型的id了;
默认新创的分区的类型是83.

Command (m for help): p
Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

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

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

Disk identifier: 0x37a3a8dc

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        1306    10490413+  83  Linux

/dev/sdb2            1307        6527    41937682+   5  Extended

/dev/sdb5            1307        2612    10490413+  8e  Linux LVM
5、fdisk 的退出,用q或者 w
其中 q是 不保存退出,w是保存退出
Command (m for help): w

Command (m for help): q

到这里磁盘一些常用
5、磁盘操作的后续工作

在磁盘上的操作结束之后,并不意味这系统能够设备处已经改变的操作。这点linux系统和Windows系统有很大的区别。Windows系统对磁盘做出操作比较简单,能够及时操作,及时设备。而linux系统需要去重新读取文件才能识别。识别的方法有两种,重启系统和重新读取配置文件。重启系统的方法在这就不演示,演示重新读取配置文件的方法。

1、退出磁盘操作之后,对系统的磁盘列表的文件查看。确认系统是否识别到分区。而查看文件内容信息的命令很多,不过多解释。

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

major minor  #blocks  name

   8        0  125829120 sda

   8        1     204800 sda1

   8        2   62914560 sda2

   8        3    5252256 sda3

   8        4          1 sda4

   8        5   20980858 sda5

   8        6    5253223 sda6

   8        7    1060258 sda7

通过以上的命令,可以确认,系统还是否已经识别到新增磁盘信息。

2、系统重读硬盘分区信息的方法有几种,这里只对几个命令做出一些简单说明解释。如partx,kpartx以及系统自动的partprob命令。其中partx命令,我个人的解释是告诉内核关于磁盘列表的信息和编号。而kpartx命令的意思是对于磁盘列表创建一个设备路径。至于最后提到的partprob命令,在centos6之前使用较多;而现在使用的比较少。但是这条命是系统自带的。而这些命令所可以跟的选项,这里就不过多的说明。接下里执行下面的命令partx -a /dev/sda,执行这条命需要注意些地方,有时候执行第一次的时候,系统并不一定会识别出对磁盘的改动。所以多执行一次,系统就能够识别到。

[root@www ~]# partx -a /dev/sda

BLKPG: Device or resource busy

error adding partition 1

BLKPG: Device or resource busy

error adding partition 2

BLKPG: Device or resource busy

对于在执行过程中出现的错误别要担心,并不是说明系统没有识别到新分区信息。

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

  major minor  #blocks  name

   8        0  125829120 sda

   8        1     204800 sda1

   8        2   62914560 sda2

   8        3    5252256 sda3

   8        4          1 sda4

   8        5   20980858 sda5

   8        6    5253223 sda6

   8        7    1060258 sda7

   8        8   10490413 sda8

  再次去查看/proc/partitions 文件信息的时候,就能发现,新增加的分区,系统已经识别到了。识别到之后,接下里就需要去对磁盘进行格式化。这不操作也Windows系统上有些类似,一个新建的分区,无论在什么系统上都需要格式化才能够使用。所以在linux系统也不例外。

6、磁盘分区的格式化

1、在linux系统下,格式化的工具有很多。看个人的选择,在这里个人做出一些简单的介绍,详细具体的使用方法。可以去使用man命令去查看

第一种方式:mkfs.FS_TYPE使用这条命令可以直接格式你指定的分区;第二种方式:mkfs -t FS_TYPE跟指定的分区类型也可以,可以跟上-L这个选项,指定卷名。。第三种方式:mke2fs命令也可以说。但是这条命令只适用ext的文件系统类型。以上这些格式分区的命令,能够支持很多种的文件系统类型,上面已经有说明,这里就不过多的解释。接下来主要说明一下第三种方式的使用方法;先解释一些它一些常用的选项参数:

-t :主要指明的需要跟的系统类型,由于这条命限制于在ext类型的文件系统类型,所以只能在{ext2,ext3,ext4}中选择。

-b :主要是来指明块打下的,有{1024,2048,4096}选择几种选择

-L 'label':用来指明分区的卷标名称的

-j :如果跟上这个参数就相当于创建ext3类型的文件系统。

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

-n #(节点数): 为数据空间创建多少个inode

-m #(百分比) 位管理人员预留的空间占据的百分比;默认百分之五

[root@www ~]# mke2fs -t ext4 -L mytest -b 2048 -m 3  /dev/sda8

mke2fs 1.41.12 (17-May-2010)

Filesystem label=mytest

OS type: Linux

Block size=2048 (log=1)

Fragment size=2048 (log=1)

Stride=0 blocks, Stripe width=0 blocks

657408 inodes, 5245206 blocks

157356 blocks (3.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=543162368

321 block groups

16384 blocks per group, 16384 fragments per group

2048 inodes per group

Superblock backups stored on blocks: 

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

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 25 mounts or

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

    2、标红色地方是指定的一些选项,都实现了。接下来可以通过blkid命令再次确认是否创建成果。这条命令的一些选项参数就不过多说明,可以去通过man命令自行了解。

[root@www ~]# blkid /dev/sda8

/dev/sda8: LABEL="mytest" UUID="e8aacd79-f63d-4a39-822d-b20b692aee0a" TYPE="ext4"

 

3、如果对格式化的分区不满意,还可以通过tune2fs:重新设定ext系统文件系统可调整参数的值。这样能够很好的满足要求。

-j:将ext2升级为ext3

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

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

-L:'label'修改卷标

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

-U UUID:修改UUID号;

除了上面说的这几个命令,还有很多命令都可以查看管理磁盘信息如:e2label:管理ext系列文件系统的; dumpe2fs:-h:查看超级块信息

7、挂载磁盘分区,在Windows系统格式化之后就能使用,但是在linux系统下,需要挂载才能使用。挂载命令相对来说比较简单。Mount命令跟上设备名和需要挂载点就可以。

[root@www ~]# mount /dev/sda8 /mnt/

[root@www ~]# mount

/dev/mapper/vg0-root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

/dev/mapper/vg0-usr on /usr type ext4 (rw)

/dev/mapper/vg0-var on /var type ext4 (rw)

/dev/sda5 on /testing type ext4 (rw)

/dev/sda6 on /mogdata type ext3 (rw,acl)

/dev/sda7 on /data type ext3 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

/dev/sda8 on /mnt type ext4 (rw)

可以看到新建的分区已经挂载成功,可以正常使用。

[root@www mnt]# touch a.txt

[root@www mnt]# ll

total 16

-rw-r--r-- 1 root root     0 Aug 23 22:49 a.txt

drwx------ 2 root root 16384 Aug 23 21:56 lost+found

到这里一个简单的分区文件系统的简单创建使用基本完成,还有很多地方,没有过多解释说明。这里补充说明如果一个文件系统损坏,那应该怎么解决呢?大家有想过吗?接下里对文件的修复进行简单的说明。


1、在对文件系统检查之前,先要把需要检查的文件系统进行卸载。不然不能够进行检查,fsck,简单的说明就是文件系统检测的意思。

fsck -t fs_type(需要认真指明需要检查的文件系统类型)

 -a:自动修复错误

 -r:交互式修复错误


e2fsck是一个对ext系统文件专用的检查修复工具

-y:自动回到为yes

-f:强制修复

接下来进行一些简单的演示过程:

[root@www ~]# umount /mnt/

在linux系统中,如果执行命令没有报错就是最好的情况。

[root@www ~]# 

[root@www ~]# 

[root@www ~]# fsck -t ext4 /dev/sda8

fsck from util-linux-ng 2.17.2

e2fsck 1.41.12 (17-May-2010)

mytest: clean, 12/657408 files, 121824/5245206 blocks

到此基本需要写的东西都写了!