一篇文章弄懂Linux磁盘和磁盘分区

前言

Linux 系统中所有的硬件设备都是通过文件的方式来表现和使用的,我们将这些文件称为设备文件,硬盘对应的设备文件一般被称为块设备文件。

本文介绍磁盘设备在 Linux 系统中的表示方法以及如何创建磁盘分区。

为什么要有多个分区?

防止数据丢失:如果系统只有一个分区,那么这个分区损坏,用户将会丢失所的有数据。

增加磁盘空间使用效率:可以用不同的区块大小来格式化分区,如果有很多1K的文件,而硬盘分区区块大小为4K,那么每存储一个文件将会浪费3K空间。这时我们需要取这些文件大小的平均值进行区块大小的划分。

数据激增到极限不会引起系统挂起:将用户数据和系统数据分开,可以避免用户数据填满整个硬盘,引起的系挂起。

磁盘分类

比较常见的磁盘类型有服务器中使用的 SCSI 硬盘和消费类市场中的 SATA 硬盘,当然还有当下大热的各种固态硬盘。

SCSI 硬盘

SCSI 硬盘即采用 SCSI 接口的硬盘。它由于性能好、稳定性高,因此在服务器上得到广泛应用。同时其价格也不菲,正因它的价格昂贵,所以在普通PC上很少见到它的踪迹。SCSI 硬盘使用 50 针接口,外观和普通硬盘接口有些相似(下图来自互联网):

SATA 硬盘

SATA(Serial ATA)口的硬盘又叫串口硬盘,Serial ATA 采用串行连接方式,串行 ATA 总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点(下图来自互联网):

固态硬盘

固态硬盘(Solid State Disk),一般称之为 SSD 硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。其主要特点是没有传统硬盘的机械结构,读写速度非常快(下图来自互联网):

磁盘设备在 Linux 下的表示方法

在 Linux 系统中磁盘设备文件的命名规则为:

主设备号 + 次设备号 + 磁盘分区号

对于目前常见的磁盘,一般表示为:

sd[a-z]x

主设备号代表设备的类型,相同的主设备号表示同类型的设备。当前常见磁盘的主设备号为 sd。

次设备号代表同类设备中的序号,用 "a-z" 表示。比如 /dev/sda 表示第一块磁盘,/dev/sdb 表示第二块磁盘。

x 表示磁盘分区编号。在每块磁盘上可能会划分多个分区,针对每个分区,Linux 用 /dev/sdbx 表示,这里的 x 表示第二块磁盘的第 x 个分区。

如下图所示:

该系统中一共有四块磁盘 /dev/sda,/dev/sdb,/dev/sdc 和 /dev/sdd。其中的 /dev/sda 上创建了三个分区,分别是 /dev/sda1,/dev/sda2,/dev/sda5;/dev/sdb 上只有一个分区 /dev/sdb1。而 /dev/sdc 和 /dev/sdd 则尚未分区(也肯能是只有一个分区,分区的名称和磁盘的名称相同)。

磁盘分区

创建磁盘分区大概有下面几个目的:

  • 提升数据的安全性(一个分区的数据损坏不会影响其他分区的数据)
  • 支持安装多个操作系统
  • 多个小分区对比一个大分区会有性能提升
  • 更好的组织数据

磁盘的分区由主分区、扩展分区和逻辑分区组成。在一块磁盘上,主分区的最大个数是 4,其中扩展分区也是一个主分区,并且最多只能有一个扩展分区,但可以在扩展分区上创建多个逻辑分区。因此主分区(包括扩展分区)的范围是 1-4,逻辑分区从 5 开始。对于逻辑分区,Linux 规定它们必须建立在扩展分区上,而不是建立在主分区上。

主分区的作用是用来启动操作系统的,主要存放操作系统的启动或引导程序,因此建议操作系统的引导程序都放在主分区,比如 Linux 的 /boot 分区,最好放在主分区上:

扩展分区只不过是逻辑分区的 "容器"。实际上只有主分区和逻辑分区是用来进行数据存储的,因而可以将数据集中存放在磁盘的逻辑分区中。

我们可以通过 fdisk 命令来查看磁盘分区的信息:

$ sudo fdisk -l /dev/sda

输出中的前几行是磁盘的基本信息,比如总大小为 80G,一共有多少个扇区(sector),每个扇区的大小等等。红框中的则是我们比较关注的分区信息:

  • 第一列 Device 显示了磁盘分区对应的设备文件名。
  • 第二列 Boot 显示是否为引导分区,上图中的 /dev/sda1 就是引导分区。
  • 第三列 Start 表示磁盘分区的起始位置。
  • 第四列 End 表示磁盘分区的结束位置。
  • 第五列 Sectors 表示分区占用的扇区数目。
  • 第六列 Size 显示分区的大小。
  • 第七列和第八列显示的内容相同,分别是数值 ID 及其文字描述。 Id 列显示了磁盘分区对应的 ID,根据分区的不同,分区对应的 ID 号也不相同。Linux 下用 83 表示主分区和逻辑分区,5 表示扩展分区,8e 表示 LVM 分区,82 表示交换分区,7 表示 NTFS 分区。

上图中的信息表明:/dev/sda1 是一个主分区并且被用作引导分区;/dev/sda2 是扩展分区,其中只有一个逻辑分区,即 /dev/sda5,这点可以通过两个分区相同的大小证明。

利用 fdisk 划分磁盘分区

fdisk 是 Linux 系统中一款功能强大的磁盘分区管理工具,可以观察硬盘的使用情况,也可以用来管理磁盘分区。本文仅介绍如何使用 fdisk 创建新的磁盘分区。

假设我们的 Linux 系统中增加了一块新的磁盘,系统对应的设备名为 /dev/sdd,下面我们通过 fdisk 命令对这个磁盘进行分区。

$ sudo fdisk /dev/sdd

输入命令 n 来创建新分区:

根据上面的提示,我们选择 p 来创建主分区,然后提示我们输入分区的编号:

主分区的编号为 1- 4,这里我们输入了 1。接下来是设置分区的大小:

分区的大小是通过设置分区开始处的扇区和结束处的扇区设置的。这里如果回车两次会把整个磁盘划分为一个分区,也就是整个磁盘的容器都分给了一个分区。这样一个简单的分区就差不多完成了,注意此时的分区信息还没有写入到磁盘中,在这里还可以反悔,如果确认执行上面的分区,执行 w 命令就行了:

这时分区操作已经完成了,我们可以通过下面的命令查看分区的结果:

$ sudo fdisk -l /dev/sdd

如果嫌上面的执行过程麻烦,可以用下面的一行命令起到相同的效果:

$ (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdd

更改分区的类型

上面创建的分区类型默认为 83(Linux),如果想要一个 8e(Linux LVM)类型的分区该怎么办?我们可以继续使用 fdisk 命令修改分区的类型,这次输入 t 命令来修改分区的类型:

接下来可以选择要修改的分区号,我们只有一个分区,所以默认就是 1。

下面我们可以通过 L 命令来查看 fdisk 命令支持的分区类型:

我们需要创建 LVM,因此我们使用 LVM 的类型代码 8e:

最后输入 w 命令确认变更。再次查看 /dev/sdd 的分区信息,此时分区类型已经变成了 Linux LVM:

总结

分区是使用磁盘的基础,在分区完成后还需要对分区进行格式化,并把格式化后的文件系统挂载到 Linux 系统之后才能存储文件。

时间: 2018-12-11

详解Linux 虚拟机根分区磁盘扩充空间记录

博主:Centos6.5 64 位 VM 11 起因:想让VM11里的Linux虚拟机全屏显示,想支持虚拟机与物理机之间的无缝复制粘贴功能.安装vmware tools 导致空间不足,出现如下 网上查找后发现解决方法: yum remove gnome-power-manager yum install gnome-power-manager 执行后出现: 提示是空间不足 进行查看: 果然,空间利用100% 问题转向: 1.为何使用如此之快? 2.如何扩充? 问题1: 此为根目录,安装的东西都在

LINUX磁盘分区、格式化、挂载、卸载详细过程

1.一切皆文件 Linux系统有一个理念:"一切皆文件",所以计算机的硬件在linux中也是以"文件"的形式存在于/dev目录中. 图为CentOS 6.5系统中/dev目录的部分内容.不同的计算机显示的内容大同小异. 比如,光驱对应的文件是/dev/cdrom,CPU对应的文件是/dev/cpu.而硬盘对应的是/dev/sd*.第一块硬盘是/dev/sda,第二块磁盘是/dev/sdb. 但是一个磁盘通常又被分成多个分区,所以在磁盘文件的后面加上分区的序号来对应这

Linux磁盘分区实战案例(必看篇)

一.查看新添加磁盘 [root@localhost /]# fdisk -l 磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x0009f1d1 设备 Boot Start End Blocks Id System /dev/s

linux大于2T的磁盘使用GPT分区的方法分享

在linux我们可以先把大容量的磁盘进行转换,转换为GPT格式.由于GPT格式的磁盘相当于原来MBR磁盘中原来保留4个 partition table的4*16个字节只留第一个16个字节,其它的类似于扩展分区,真正的partition table在512字节之后,所以对GPT磁盘表来讲没有四个主分区的限制. 对GPT磁盘分区表进行操作,我们要使用功能强大的parted命令. 例:常用的parted命令 # parted /dev/sdb GNU Parted 1.8.1 Using /dev/s

Linux系统磁盘格式化以及手动增加swap分区

windows:支持NTFS ,fat linux支持文件格式: cat /etc/filesystems 查看Centos 7可支持的文件格式. xfs Centos 7 默认文件系统名称为xfs mount 查看 /dev/vda1 on / type ext4 (rw,relatime,data=ordered) 磁盘格式化 mke2fs -t exet4 指定格式化为什么格式的文件系统 mke2fs -b 指定块大小 例如:mke2fs -t ext4 -b 2048 /dev/sdb1

Linux磁盘挂载、分区、扩容操作的实现方法

基本概念 在操作前,首先要了解一些基本概念 磁盘 在Linux系统中所有的设备都会以文件的形式存储.设备一般保存在/dev目录下面,以sda.sda1.sda2 -,sdb.sdb1-,hda,hdb.现在的设备一般都是sd命名,以前的很老的硬盘是以ha命名. sda:第一块硬盘,如果对磁盘进行了分区会有sda1(第一个分区),sda2等. sdb:第二个硬盘,同样对硬盘分区后有sdb1,sdb2等. 分区 分区的目的就是便于管理,比如在Windows系统我们一般会分C盘,D盘,E盘等. Lin

linux下挂载VHD等虚拟磁盘文件的方法

1.RAW格式虚拟磁盘 linux下可以直接挂载raw格式的虚拟磁盘镜像文件. 例如,这里先用dd命令创建一个文件,然后将其格式化为ext4格式(只有一个分区),然后挂载到/mnt目录. 下面的raw.img磁盘镜像文件就一个分区,所以没有使用offset=来指定偏移.如果有多个分区,则可以通过指定偏移来挂载.具体的可以查阅mount命令的相关参数信息. > dd if=/dev/zero of=raw.img bs=1M count=512 记录了512+0 的读入 记录了512+0 的写出

linux磁盘顺序写、随机写的方法

一.前言 ● 随机写会导致磁头不停地换道,造成效率的极大降低:顺序写磁头几乎不用换道,或者换道的时间很短 ● 本文来讨论一下两者具体的差别以及相应的内核调用 二.环境准备 三.fio介绍 通过fio测试,能够反映在读写中的状态,我们需要重点关注fio的输出报告中的几个关键指标: slat :是指从 I/O 提交到实际执行 I/O 的时长(Submission latency) clat :是指从 I/O 提交到 I/O 完成的时长(Completion latency) lat :指的是从 fi

linux磁盘管理软RAID的实现原理分析和方法分享

1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. RAID分为几个不同的等级,各个不同的等级均在数据可靠性及读写性能做了不同的权衡.实际工作中根据自己的业务需求选择不同的RAID方案. 2 RAID的实现方式 外接式磁盘阵列:通过扩展卡提供适配能力内接式RAID:主板集成RAID控制器安装OS前在BIOS里配置软件RAID:通过OS实现 3 标准的R

关于Linux服务器磁盘空间占满问题的解决方法

下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望碰到此类问题的人能带来帮助. 今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件都删掉了,可硬盘空间依旧满.于是df -h查看了下各个挂载点的状况(如下图). /dev/sda3占用了100%,那么我们du -s -h ./*看下目录的占用情况(如下图). 在工作中,我们也许会遇到这样的问题,发现某个磁盘空间快满了,于是,找到一些无用的大文件将其删除后,发现磁盘空间还是没有释放掉,

Linux下挂载硬盘分区的几种方法

Linux下挂载硬盘分区的几种方法 1.使用Autofs自动挂载分区 2.修改/etc/fstab 3.编写shell脚本,开机自动运行mount命令 方法一.使用Autofs  1.Autofs的特点:Autofs与Mount/Umount的不同之处在于,它是一种看守程序(deamon).如果它检测到用户正试图访问一个尚未挂接的文件系统,它就会自动检测该文件系 统,如果该文件系统存在,那么Autofs会自动将其挂接.另一方面,如果它检测到某个已挂接的文件系统在一段时间内没有被使用,那么Auto

linux进行硬盘分区挂载的实现方法

linux 进行分区汇总.新电脑配置了一个固态256G的还有一个3T的硬盘.新公司要求自己进行安装.刚开始安装系统的时候没有注意到还有一块硬盘.导致在安装系统的时候没有进行把普通硬盘进行分区和挂载,那么没法了只能手动去操作把剩余的硬盘进行分区和挂载操作. 分区操作 我个人在操作linux分区的时候使用的是fdisk 命令 首先看下fdisk的命令学习下.使用fdisk --help 查看 fdisk.png 命令不用记住很多,大家不会使用的时候使用 --help可以看到这些.看怎么使用就好. 首

详解linux添加硬盘分区挂载教程

基本步骤:分区--格式化--挂载--写入文件 1.首先用fdisk -l命令查看添加的硬盘名称,可以看到sdb为新增的硬盘 [root@oracle ~]# fdisk -l Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physic