磁盘运作方式及分区,挂载等操作

磁盘运作方式及分区,挂载等操作

磁盘是我们存储数据的空间,而为了方便我们对数据的管理,我们需要对磁盘进行分区。而在我们创建过分区之后 ,我们为了能

够访问磁盘 ,需要对磁盘进行挂载 。文件系统通过为每个文件在分区上分配文件块的方式把数据存储在硬盘上。所以,就是使用文件系统在

硬盘分区上对数据块的各种信息的操作。这样就需要我们了解磁盘的运作方式,学会磁盘的分区,挂载,格式化等。

硬盘,分区,文件系统,块的关系.png

1.什么是硬盘分区?

分区其实就是硬盘的段落,如果用户希望在计算机上安装多个的操作系统,那么将需要更多的分区。原因是不同的操作系统原则上采用

不同的文件系统。如果几个操作系统都支持相同的文件系统,通常为了避免在一个分区下有相同的目录,也将它们安装在不同的磁盘分区。

2.分区类型

硬盘的分区有三种情况:主分区,扩展分区,逻辑分区。扩展分区只是逻辑分区的容器,实际上只有主分区还有逻辑分区才能够进行数据的存储。

在一块硬盘上最多只能有4个主分区,另外可以建立一个扩展分区来代替一个主分区。也就是说扩展分区必须小于等于一个;主分区+扩展分区必须小于

等于四个;然后可以在扩展分区下建立多个的逻辑分区。

3.分区和格式化

不同的操作系统具有不同的硬盘分区工具,windows下非常有名的分区工具是fdisk,在linux系统下进行分区可以使用fdisk,或者使用相同功能的图形

界面程序。

每个主分区和逻辑分区都会被存储为一个识别文件系统的附加信息,草制品系统能通过这些信息非常容易地识别和确认应该使用那个分区,不能识别的

操作系统将会被忽略。通过分区当然不能产生任何的文件系统,在分区之后只是对硬盘上的磁盘空间进行了保留,还不能直接使用。在此之后分区必须

要进行格式化在windows下可以是通过资源管理器下的文件菜单或者format程序来执行,在linux下通常使用mkfs命令来完成,linux支持不同的文件系统。

格式化是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。简单说,就是把

一张空白的盘划分成一个个小区域并编号,供计算机储存,读取数据。没有这个工作,计算机就不知在哪写,从哪读。格式化是在磁盘中建立磁道和扇区,

磁道和扇区建立好之后,电脑才可以使用磁盘来储存数据。

4.文件系统

文件系统定义了把文件存储与磁盘时所必须的数据结构以及磁盘数据的管理方式。我们知道,磁盘是由很多个扇区组成的,如果扇区之间不建立任何的联

系,写入其中的文件就无法访问,因为无法知道文件是从哪个扇区开始,文件占多少个扇区,文件是什么属性。为了访问磁盘中的数据,就必须在扇区之

间建立联系,也就是需要一种逻辑上的数据存储结构,建立这种逻辑结构就是文件系统要做的事情,在磁盘上建立文件系统的过程通常称为格式化。

一般来说,文件系统和操作系统是紧密联系在一起的,不同的操作系统也使用不同的文件系统,但是有为了兼容,不同操作系统也使用相同的文件系统。

# 进行任何磁盘分区或者大小的改动,都会丢失之前的数据,因此,在分区之前一定要对重要的数据进行备份。

使用fdisk进行磁盘的分区

linux系统使用fdisk命令能将磁盘划分为若干个分区,同时也能为每个分区指定分区的文件系统,比如ext3,ext4,FAT32 ,SWAP,FAT 16以及其他类UNIX

操作系统的文件系统等。使用fdisk命令进行磁盘的分区一种交互式的创建,我们可以根据系统的提示信息进行创建。

fdisk命令可以对磁盘进行分区:

命令语法:

fdisk [-b<分区大小>][-uv][磁盘设备名]

fdisk [-l][-b<分区大小>][-uv][磁盘设备名]

fdisk [-s <分区编号>]

命令中各选项的含义如下:

-b :制定每个分区的大小

-l :列出制定硬盘的分区表信息

-s :将制定的分区大小输出到便准输出上,单位为区块

-u :搭配“-l”参数列表,用分区数目取代柱面数目,表示每个分区的起始地址。

-v :显示版本信息。

在fdisk的交互式操作方式下有许多的子命令:

说几种其中比较常用的参数:p:显示硬盘分区信息;n :创建新的分区;e:创建扩展分区

p:创建主分区(使用n创建分区会显示是创建主分区还是扩展分区);t:更改分区文件系统;

d:删除硬盘分区;q:推出fdisk,不保存硬盘分区设置;w:保存硬盘分区设置并推出fdisk。

fdisk1.png

对磁盘进行分区之后,使用fdisk -l查看的话会显示出来,但是在mount 或者/proc/partition上面查看

是没有显示出来的。用过的磁盘如果再分区就需要重启系统才会显示出来。而服务器是不能来回重启的,

这时候,我们需要进行手动的更新加载,通知内核强制重读磁盘分区表,使用partx -a [device]  ;partprobe也可以强制内核读取磁盘分区表,但是在centos 6版本上会出现错误,这个bug是一直没有修复的,在7版本和5以下的版本是没有问题的。

2.使用mkfs创建文件系统

对一个新的硬盘进行分区以后,还要对这些分区进行格式化并创建文件系统。一个分区只有创建了

某种文件系统之后才能被使用。建立文件系统的过程就是用相应格式化工具格式化分区的过程。

如果需要使用某个文件系统存放数据,一般需要经过以下操作步骤:

1.)使用fdisk命令进行在硬盘上创建分区

2.)使用mkfs命令在分区上创建文件系统

3.)使用mount命令挂载文件系统,或是修改/etc/fstab文件使得开机自动挂载文件系统。

4.)使用unmount卸载文件系统。

  1. 使用mkfs命令创建文件系统

    命令语法:

    mkfs -t [文件系统类型(ext3,etx4,fat 32等)] [磁盘设备名]

   说明:mkfs命令本身并不执行建立文件系统的工作,而是调用相关的程序来执行。这里的文件系统

类型是需要指定具体的类型的。磁盘设备可以是一个硬盘的分区,软盘,和光驱。

    命令中选项的含义如下:

    -t:指定要建立哪一种文件系统。

1)查看当前磁盘上的分区情况,该磁盘的设备是/dev/sda

fdisk2.png

2)格式化/dev/sda3分区,创建ext4文件系统

使用mkfs -text 4 /dev/sda3  或者mkfs.ext4 /dev/sda3 或者mke2fs -t ext3 /dev/sda3  

这三种写法是等价的。

mkfs1.png

当然也可以把分区格式化为其他的文件系统,比如可以把/dev/sda2格式化为ext3,vfat等,使用mkfs. tab键进行补全可以查看当前支持的文件系统。

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

-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'

-j: 相当于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 

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

-N #:为数据空间创建个多少个inode
-I 一个inode记录大小128—4096 

-m #: 默认5%,为管理人员预留空间占总空间的百分比 

-O FEATURE[,…]:启用指定特性
-O ^FEATURE:关闭指定特性

说明:-o参数里的codepage选项指定文件系统的代码页,简体中文中文代码是:936;iocharset指定字符集,简体中文一般用cp936或gb2312.

blkid:块设备属性信息查看
blkid [OPTION]… [DEVICE] 

    -U UUID: 根据指定的UUID来查找对应的设备 

    -L LABEL:根据指定的LABEL来查找对应的设备
 

    e2label:管理ext系列文件系统的LABEL
# e2label DEVICE [LABEL]
 

    findfs :查找分区
findfs [options] LABEL=

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

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

    super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比 

    -j: 将ext2升级为ext3 

    -O: 文件系统属性启用或禁用, –O ^has_journal 

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

    -U UUID: 修改UUID号
 dumpe2fs: 

    -h:查看超级块信息(分组信息),分区用分组管理

3.在我们创建完成文件系统之后,我们需要对文件系统进行挂载,这样用户可以使用相应的设备存储数据。

mount 挂载 ,unmount 卸载

命令语法:

mount [选项][设备名称][挂载点]

命令中各个选项的含义:

-t :制定设备的文件系统类型

auto:自动检测文件系统

-o:自动挂载文件系统的选项,有些可在/etc/fstab中,常用的有6种:

    codepage:代码页

    iocharset:字符集

    ro:以只读方式进行挂载

    rw:以读写方式进行挂载

    nouser:使一般用户无法挂载,只有root才能使用

    user:可以让普通的用户进行挂载 #是一个比较危险的操作

挂载方法:

mount DEVICE MOUNT_POINT
 

mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
 

mount [-fnrsvw] [-t vfstype] [-o options] device dir 

device:指明要挂载的设备; 

    (1) 设备文件:例如/dev/sda5 

    (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA' 

    (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-
45e7-85c0-a126711d406e' 

    (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在;建议使用空目录
进程正在使用中的设备无法被卸载

1)挂载

将光盘放入光驱,挂载光盘到/testdir/cdrom

先在/testdir/目录下创建好一个目录cdrom

使用mount -t ext4 /dev/sda3 /testdir/cdrom 目录下,这样挂载之后,挂载命令会将这些存储介质指定成系统中的某个目录下,以后访问相应目录即可读写存储介质上的数据.

mount1.png

4.卸载

查看挂载情况:
#findmnt MOUNT_POINT
 

查看正在访问指定文件系统的进程: 

#lsof MOUNT_POINT 

#fuser -v MOUNT_POINT
 

终止所有在正访问指定的文件系统的进程: 

# fuser -km MOUNT_POINT
 

卸载:
# umount DEVICE 

# umount MOUNT_POINT

原创文章,作者:zhong,如若转载,请注明出处:http://www.178linux.com/40151

(1)
zhongzhong
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • 每天一个Linux命令

        程序管理:      程序的组成部分:二进制程序文件,库文件,配置文件,帮助文件。                      二进制和库文件可执行,库文件不能独立执行,只能被调用时执…

    Linux干货 2017-04-08
  • httpd2.2基础安装

    编译安装前,首先要确认开发包组已经装上。 开发包组: Developments tools server platform development(centos 7) 并且将apr 与 apr-unil 装上。这是httpd 可移植运行所必须用到的组件.这里举例说明的是httpd2.2版本。 若是安装httpd2.4以上版本的话,还要安装pcre库。pcre…

    2017-04-24
  • bash基础 if elif 多条件判断 for循环

    bash基础 if elif 多条件判断 for循环

    Linux干货 2017-10-31
  • 给linux系统添加新的磁盘

    虚拟化环境中,我们经常会遇到需要增加磁盘容量的情况,通常有两种方式,第一种是添加一块新的硬盘,另一种是扩容原有磁盘,以下是添加新磁盘至linux系统的操作规范。注:具体磁盘信息可能有所不同。 ##查看新增加磁盘/dev/sdb的信息 [root@CentOS7 ~]# fdisk -l /dev/sdb   Disk /dev/sdb: 5368 …

    Linux干货 2016-11-11
  • PHP字符串的编码问题

        大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。     PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。     使用substr截取中…

    Linux干货 2015-10-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 15:25

    文章写的很详细,对一些专有名词,通过自己查询资料进行了详细介绍,这是值得提倡的。但是对磁盘分区工具使用部分缺少了一些具体操作,希望作者课后能多加练习,做到理论和实践相结合。