Linux CentOS 8(磁盘设备与硬盘设备的概述与管理)
目录
- 一、项目介绍
- 二、相关概念
- 2.1 磁盘设备
- 2.2 磁盘的接口
- 2.3 硬盘的设备名称
- 2.4 文件系统
- 2.5 RAID独立冗余磁盘阵列
- 三、任务操作
- 任务1- 添加硬盘设备
- 任务2- fdisk命令
一、项目介绍
本节将介绍Linux(Centos8)中磁盘设备与硬盘设备的概述与管理。
二、相关概念
2.1 磁盘设备
应包括磁盘驱动器、适配器及盘片,它们既可以作为输入设备,也可作为输出设备或称载体。控制软盘读和写,即输入或输出是由磁盘驱动器及其适配器来完成的,从功能上来说,一台磁盘设备与一台录放机的作用是相同的,一盘录音带可反复地录音,那么软盘片或硬盘片,或称信息载体,也可以反复地被改写。
2.2 磁盘的接口
现在磁盘最常用的可简单分为普通的机械盘和SSD(Solid-state drive或Solid-state disk)两种,他们都以不同的接口协议和主板链接,在了解命令之前,我们先来看下,现在服务器磁盘的接口协议。这样可以更好的了解磁盘。现阶段磁盘的接口主要有以下几种:
- ATA
全称Advanced Technology Attachment,是用传统的40-pin并口数据线连接主板与硬盘的,接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利计算机内部散热,已逐渐被SATA所取代。 - SATA
全称Serial ATA,也就是使用串口的ATA接口,特点是抗干扰性强,对数据线的要求比ATA低很多,且支持热插拔等功能。SATA-II的接口速度为300MiB/s,而新的SATA-III标准可达到600MiB/s的传输速度。SATA的数据线也比ATA的细得多,有利于机箱内的空气流通,整理线材也比较方便。 - SCSI
全称Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的SCSI-II,到当前的Ultra320 SCSI以及Fiber-Channel(光纤通道),接口型式也多种多样。SCSI硬盘广为工作站级个人计算机以及服务器所使用,因此会使用较为先进的技术,如碟片转速15000rpm的高转速,且资料传输时CPU占用率较低,但是单价也比相同容量的ATA及SATA硬盘更加昂贵。 - SAS
此外,由于SAS硬盘可以与SATA硬盘共享同样的背板,因此在同一个SAS存储系统中,可以用SATA硬盘来取代部分昂贵的SAS硬盘,节省整体的存储成本。但SATA存储系统并不能连接SAS硬盘。 - FC
全称Fibre Channel(光纤通道接口),拥有此接口的硬盘在使用光纤联接时具有热插拔性、高速带宽(4Gb/s或10Gb/s)、远程连接等特点;内部传输速率也比普通硬盘更高。但其价格高昂,因此FC接口通常只用于高端服务器领域。现在,普通机械盘接口多为SATA,固态盘接口多为SAS。
2.3 硬盘的设备名称
Linux的硬盘设备SCSI/SATA/U盘,它的文件名称为【/dev/sd[a-p]】,系统采用a-p来表示16块不同的硬盘,硬盘的分区也是有讲究的,主分区或扩展分区为编号1-4,逻辑分区是从编号5开始。(如图1)如:/dev/xd*
当x=s,/dev/sd*,代表sata硬盘,或者iscsi网络存储;
当x=v,/dev/vd*,代表虚拟硬盘,一般出现在虚拟机里;
当x=h,/dev/hd*,代表IDE硬盘,一般出现在老式电脑中;
如/dev/sda1,就是系统中第一块sata硬盘的第一个分区,而/dev/cdrom,/dev/sr[0-…]则是系统中的光驱。
图1
2.4 文件系统
在Linux系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。Linux 系统支持数十种的文件系统,而最常见的文件系统如下所示。
- Ext3:
是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。 - Ext4:
Ext3的改进版本,作为 RHEL6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配 block块,从而极大地提高了读写效率 - XFS:
是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。
然而计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux 内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。如图2所示为 VFS 的架构示意图,从中可见,实际文件系统在 VFS下隐藏了自己的特性和细节,这样用户在日常使用时会觉得“文件系统都是一样的”,也就可以随意使用各种命令在任何文件系统中进行各种操作了(比如使用 cp 命令来复制文件)。
图2
2.5 RAID独立冗余磁盘阵列
1988年,美国加利福尼亚大学伯克利分校首次提出并定义了Redundant Array of Independent Disks技术的概念,中文名是磁盘冗余阵列,简称RAID。RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
任何事物都有它的两面性。RAID技术确实具有非常好的数据冗余备份功能,但是它也相应地提高了成本支出。就像原本我们只有一个电话本,但是为了避免遗失,把联系人号码信息写成了两份,自然要为此多买一个电话本,这也就相应地提升了成本支出。RAID技术的设计初衷是减少因为采购硬盘设备带来的费用支出,但是与数据本身的价值相比较,现代企业更看重的则是RAID技术所具备的冗余备份机制以及带来的硬盘吞吐量的提升。也就是说,RAID不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度,所以它在绝大多数运营商或大中型企业中得以广泛部署和应用。
出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案。目前已有的RAID磁盘阵列的方案至少有十几种,其中RAID 0、RAID 1、RAID 5与RAID 10这4种最常见的方案,这四种方案的对比如图3所示,其中n代表硬盘总数。
图3
三、任务操作
任务1- 添加硬盘设备
添加硬盘设备的操作思路:首先需要在虚拟机中模拟添加入一块新的硬盘存储设备,然后再进行分区、格式化、挂载等操作,最后通过检查系统的挂载状态并真实地使用硬盘来验证硬盘设备是否成功添加。
1.1 首先把虚拟机系统关机,稍等几分钟会自动返回到虚拟机管理主界面,然后单击“编辑虚拟机设置”选项,在弹出的界面中单击“添加”按钮,新增一块硬件设备,如图4所示。
图4
1.2 选择想要添加的硬件类型为“硬盘”,然后单击“下一步”按钮,如图5所示。
图5
1.3 选择虚拟硬盘的类型为SCSI(默认推荐),并单击“下一步”按钮,这样虚拟机中的设备名称过一会儿后为/dev/sdb,如图6所示。
图6
1.4 选中“创建新虚拟磁盘”单选按钮,而不是其他选项,再次单击“下一步”按钮,如图7所示。
图7
1.5 将“最大磁盘大小”设置为默认的20GB。这个数值是限制这台虚拟机所使用的最大硬盘空间,而不是立即将其填满,因此默认20GB就很合适了。单击“下一步”按钮,如图8所示。
图8
1.6 设置磁盘文件的文件名和保存位置(这里采用默认设置即可,无需修改),直接单击“完成”按钮,如图9所示。
图9
任务2- fdisk命令
在Linux系统中,管理硬盘设备最常用的方法就当属fdisk
命令了。fdisk
命令用于管理磁盘分区,格式为“fdisk [磁盘名称]
”,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。
2.1 查看“fdisk”的选项
[root@localhost~]# fdisk -h //使用选项“-h”进行查看
Usage:
fdisk [options] <disk> change partition table
fdisk [options] -l [<disk>] list partition table(s)
Display or manipulate a disk partition table.
Options:
-b, --sector-size <size> physical and logical sector size
-B, --protect-boot don't erase bootbits when creating a new label
-c, --compatibility[=<mode>] mode is 'dos' or 'nondos' (default)
-L, --color[=<when>] colorize output (auto, always or never)
colors are enabled by default
-l, --list display partitions and exit
-o, --output <list> output columns
-t, --type <type> recognize specified partition table type only
-u, --units[=<unit>] display units: 'cylinders' or 'sectors' (default)
-s, --getsz display device size in 512-byte sectors [DEPRECATED]
--bytes print SIZE in bytes rather than in human readable format
-w, --wipe <mode> wipe signatures (auto, always or never)
-W, --wipe-partitions <mode> wipe signatures from new partitions (auto, always or never)
-C, --cylinders <number> specify the number of cylinders
-H, --heads <number> specify the number of heads
-S, --sectors <number> specify the number of sectors per track
-h, --help display this help
-V, --version display version
列出fdisk命令常用选项,如表1所示。
表1 fdisk命令常用选项的用法
选项 | 说明 |
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区表信息 |
w | 保存并退出 |
q | 不保存直接退出 |
2.2 先使用fdisk
命令来尝试管理/dev/sdb
硬盘设备,输入参数p
来查看硬盘设备内已有的分区信息,其中包括了硬盘的容量大小、扇区个数等信息。
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-Linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
The old ext4 signature will be removed by a write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xb25f7430.
Command (m for help): p
Disk /dev/sda1: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb25f7430
2.3 输入参数n
尝试添加新的分区。系统会要求您是选择继续输入参数p
来创建主分区,还是输入参数e
来创建扩展分区。这里输入参数p
来创建一个主分区:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
2.4 输入主分区的编号,默认为1即可,接下来系统会提示定义起始的扇区位置,这不需要改动,我们敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,定义整个分区的大小是多少,此处输入+1G即可创建出一个容量为1G的硬盘分区。
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 此处回车即可
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
2.5 再次使用参数p
来查看硬盘设备中的分区信息。
Command (m for help):p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc38174c9
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
2.6 最后,输入w
后回车,分区信息才真正的写入成功。
Command (m for help):w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
2.7 输入partprobe
命令手动将分区信息同步到内核,可以使用file
命令查看该文件的属性。
[root@localhost ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@localhost ~]# file /dev/sdb
/dev/sdb: block special (8/16)
2.8 格式化
[root@localhost ~]# mkfs //敲击tab键2次,可看到常用的文件系统名称
mkfs mkfs.ext2 mkfs.ext4 mkfs.xfs
mkfs.cramfs mkfs.ext3 mkfs.minix
[root@localhost ~]# mkfs.xfs /dev/sdb1 //格式分区为XFS的文件系统
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
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
制作成员: 杨佳佳
排版: 裕新
初审: 何嘉愉
复审: 二月二