文件系统磁盘管理之fdisk

fdisk文件系统磁盘管理node

一、文件系统介绍(因为操做的环境是在centos6的linux系统下,所以主要是围绕在linux系统上解释说明)linux

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

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

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命令对文件系统的管理。数据结构

二、Fdisk命令介紹app

首先,看到fdisk命令,你们都会有所了解。就fdisk(Partition table manipulator for Linux)这个命令我我的的见解是磁盘列表管理工具。若是有误,你们见谅。 就我我的认为,fdisk命令很强大,它可以管理文件下的全部磁盘。相对而言,既然命令强大,那么对其操做也须要必定的谨慎性。分布式

fdsik 能划分磁盘成为若干个区,同时也能为每一个分区指定分区的文件系统,好比linux 、fat3二、 linux 、linux swap 、fat16 以及其它类Unix类操做系统的文件系统等;固然咱们用fdisk 对磁盘操做分区时,并非一个终点,咱们还要对分区进行格式化所须要的文件系统;这样一个分区才能使用;这和DOS中的fdisk 是相似的。闲话很少扯,仍是进入主题比较好。ide

三、初步对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(约为)。


四、进一步的了解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)

会把全部的提示信息都弹出。本人偷些就来,命令后面对一些经常使用的命令进行简单的说明。但愿对你们学习有些帮助。接下我作些对经常使用命令的简单演示

一、列出当前操做硬盘的分区状况,用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


二、经过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):
在删除分区的时候,千万不能随去删除,须要确认删除的分区。

 

三、经过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的数值。
四、经过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
五、fdisk 的退出,用q或者 w
其中 q是 不保存退出,w是保存退出
Command (m for help): w

Command (m for help): q

到这里磁盘一些经常使用
五、磁盘操做的后续工做

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

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

[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

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

二、系统重读硬盘分区信息的方法有几种,这里只对几个命令作出一些简单说明解释。如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系统也不例外。

六、磁盘分区的格式化

一、在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.

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

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

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

 

三、若是对格式化的分区不满意,还能够经过tune2fs:从新设定ext系统文件系统可调整参数的值。这样可以很好的知足要求。

-j:将ext2升级为ext3

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

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

-L:'label'修改卷标

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

-U UUID:修改UUID号;

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

七、挂载磁盘分区,在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

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


一、在对文件系统检查以前,先要把须要检查的文件系统进行卸载。否则不可以进行检查,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

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

相关文章
相关标签/搜索