Linux磁盘管理与文件系统

计算机硬件与存储

image-20191202091130718

image-20191202091202818

image-20191202091234474

磁盘知识体系

Linux磁盘存储的经典描述

磁盘要放入计算机且被Linux系统识别,到可以使用磁盘存储数据,过程如下:
1.磁盘要存数据,相当于人盖房子
2.磁盘要分区后才能够存储数据,相当于房子改好了,需要隔断分出卧室,厨房,卫生间等区域
3.磁盘分区完成后,还得格式化后才能使用,且创建文件系统后才可以存储数据,相当于家里得装修后才能开始住人,不同的文件系统相当于不同的装修风格
4.磁盘分区,格式化,创建文件系统后,还得进行挂载到不同的文件夹,才能存放数据,相当于房子还得安装门、窗,才能和外界通信,进出

image-20191105121818940

机械硬盘原理

机械硬盘由坚硬金属材料制成的涂以磁性介质的盘片,盘片两面称为盘面或扇面,都可以记录信息,由磁头对盘面进行操作,一般用磁头号区分。

结构特性决定了机械硬盘如果受到剧烈冲击,磁头与盘面可能产生的哪怕是轻微撞击都有可能报废。

image-20191202104831397

磁头不动,硬盘旋转,磁头就会在磁盘表面画出一个圆形轨迹且磁化,数据就保存在磁化区域中,称之为磁道。

每个磁道分段,一个弧就是一个扇区。

一个硬盘表面可以有多个扇面,每个扇面磁道数相同,具有相同周长的磁道形成的圆柱称之为柱面,柱面数与磁道数相等。

磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。

而每一个磁道又按512个字节(0.5 KB)为单位划分为等分,叫做扇区。

文件数据存储在硬盘上,硬盘中最小的存储单位是扇区(sector)

磁头读取扇区数据是按照连续的多个扇区,称之为块(block)

操作系统文件存取的最小单位是块,且单位是4kb,也就是8个扇区。

磁盘常见概念


image-20191202113021739

磁盘管理的名词解释

扇区(sector)是磁盘最小的物理存储单元,单位是512字节
操作系统无法对数目众多的扇区进行寻址,因此操作系统将相邻的扇区组合在一起,形成了块(8个扇区,4k大小)
在Linux文件系统中多个连续的扇区称之为block,块,也是在系统中被认为是最小的存储单位  du -h /tmp/*
在windows文件系统中多个连续的扇区称作簇
操作系统规定,一个block只能存放一个文件的内容,因此文件占用空间,只能是block的整数倍 du -h /etc/*
即使文件大小,小于一个block,也就是小于4k,同样占用一个block的大小

image-20191216150730571

硬盘中最小的存储单位是扇区(sector),扇区大小是512B,而硬盘在文件读写操作的时候并非以扇区为单位,是以为单位,一个包含了多个扇区。

在Windows下如NTFS等文件系统中叫做簇;

在Linux下如Ext4等文件系统中叫做块(block)

image-20191202113857466


磁盘分区

硬盘分区是就使用分区编辑器(partition editor)将一个硬盘上划分几个独立的逻辑部分,盘片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。

越多分区,也就有更多不同的地方,可以将文件的性质区分得更细,按照更为细分的性质,存储在不同的地方以管理文件;但太多分区就成了麻烦。

硬盘分区就像给一间空荡的房子划分出卧室,厨房,客厅等相互隔离的空间一样。主要是为了方面用户的使用。

另一方面,通过合理的硬盘分区,有效保护系统盘空间,确实能够提高系统运行速度,再者,硬盘分区也可以有效地对数据进行保护。

image-20191202104627585

你当然可以不分区,只不过,当你面对越来越多的子目录,或者是越来越慢的Windows,不得不费功夫去管理你的文件,或者重装Windows的时候,恐怕会悔不当初。

image-20191202104150773

mbr原理

MBR:Master Boot Record,主分区引导记录。

磁盘的每块扇区都被分配了一个逻辑块地址,引导扇区是每个分区的第一扇区,主引导扇区是整个硬盘的第一扇区。

MBR就保存在主引导扇区中,且扇区还保存了硬盘分区表DPT(Disk Partition Table),和结束标志字(Magic number)。扇区总计512字节,MBR占446字节(0000H - 01BDH),DPT占据64个字节(01BEH - 01FDH),最后的magic number占2字节(01FEH – 01FFH)。

MBR分区缺点是,硬盘容量最大2T

image-20191202111635462

GPT原理

GPT分区:全称为Globally Unique Identifier Partition Table,也叫做GUID分区表,由于MBR限制在2TB容量,GPT诞生了,优点如下

  • GPT分区的硬盘容量几乎无限制
  • 分区个数无限制
  • 自带磁盘数据保险机制

文件系统

格式化文件系统

image-20191202114100218

  • FAT16/FAT32,最早期的windows文件系统,缺点单个文件不能超过2G/4G大小,现在一部蓝光电影十几G肯定不行
  • NTFS,支持文件加密,采用日志式文件系统,详细记录磁盘读写操作,提高数据和系统安全性,突破了4GB单个文件大小,对于flash闪存设备,过多读写造成磁盘寿命较短
  • exFAT,单个文件支持16GB,适合于flash闪存设备使用(ssd,u盘)

平均寻道时间

平均寻道时间,它是了解硬盘性能至关重要的参数之一。它是指硬盘在接收到系统指令后,磁头从开始移动到数据所在的磁道所花费时间的平均值,它在一定程度上体现了硬盘读取数据的能力,是影响硬盘内部数据传输率的重要参数。

image-20191129180938703

读写头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间(seek time)。

通过盘片的旋转,使得要读取的扇区转到读写头的下方,这段时间称为旋转延迟时间(rotational latency time)

磁盘转速

image-20191129181808032

RPM(revolutions per minute)它是指硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。

image-20191129182249126

电脑刚诞生初期,几乎所有硬盘都是3600RPM,这是由于美国的交流电是60Hz

1分=60s
60Hz * 1转/Hz * 60s/分钟 = 3600转/分钟

市场如今主流的5400、7200转速

3600RPM * 1.5 = 5400 RPM
3600RPM * 2 = 7200RPM

5400和7200转速比较

情况一

image-20191202092035768

情况二

image-20191202092231040

总结

image-20191202092535785

Linux磁盘分区

image-20191202104411361

  • 主分区,primary partition
  • 扩展分区,extended
    • 逻辑分区

linux一切接文件,磁盘设备在系统中也以文件形式展示

image-20191202141327282

  • /dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名
/dev/sda–第一个SCSI磁盘或简单的硬盘。。

/dev/sdb–第二个SCSI磁盘。

/dev/sdc–第三个SCSI磁盘。

/dev/hda–IDE主控制器上的主磁盘。

/dev/hdb–IDE主控制器上的从磁盘。

注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]

分区类型

在系统上的/dev/sda1、/dev/sda2又是何物?答:代表分区(Partition)

/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
/dev/sda5

一个硬盘的结构如下:

系统默认分区1~4留给了主分区和扩展分区

  • 主分区1 * (星号代表是引导分区,引导分区装在这里)
  • 主分区2
  • 主分区3
  • 主分区4(extended)
    • 逻辑分区n

fdisk命令

分区管理命令fdisk,命令危险,慎重使用

fdisk - manipulate disk partition table 用来管理磁盘分区表,修改、查看
fdisk -l [-u] [device...]
fdisk -l /dev/sda

image-20191202143848679

[root@luffycity ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   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)

命令(输入 m 获取帮助):

                n:创建新分区
                d:删除已有分区
                t:修改分区类型
                l:查看所有已经ID
                w:保存并退出
                q:不保存并退出
                m:查看帮助信息
                p:显示现有分区信息

新加一块硬盘进行磁盘分区

我们添加了/dev/sdb新硬盘

[root@local-pyyu ~]# fdisk -l |grep sd[a-c]
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区


fdisk磁盘分区命令

-v 打印 fdisk 的版本信息并退出.
-l 列出指定设备的分区表信息并退出。
-u 以扇区数而不是以柱面数的形式显示分区表中各分区的信息.
-s 分区 将分区的 大小 (单位为块)信息输出到标准输出

分区命令步骤图解

image-20191202161032664


检查系统识别了新的分区

有时候删除文件,系统仍然提示占用空间,或内核未能读取到新创建的分区,可以用如下命令重读分区

[root@local-pyyu ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1    1048576 sda1
   8        2   19921920 sda2
   8       16   20971520 sdb
   8       17     262144 sdb1
   8       18          1 sdb2
   8       21   10485760 sdb5
   8       22   10220544 sdb6
  11        0    1048575 sr0
 253        0   17821696 dm-0
 253        1    2097152 dm-1

partprobe命令

centos 5系列:

partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

有时候使用fdisk命令对磁盘分区后,内核找不到新分区,得重启机器才能识别新分区,使用partprobe可以不重启重读新的分区表。

[root@localhost ~]# partprobe   /dev/sdb          #重读磁盘分区表

partx

partx命令告用来诉内核当前磁盘的分区情况

#让内核重读分区表
# partx -a /dev/sdb

针对超过2TB的磁盘分区

parted命令

-l 显示所有分区信息

小于2TB的磁盘都可以用fdisk分区,但是大于2TB的磁盘,只能用parted命令分区,且转换磁盘为GPT格式

#超哥这里删除了/dev/sdb磁盘的所有分区,使用的是20G的硬盘模拟,同学们可以自己添加新硬盘

[root@local-pyyu ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb1271efc

   设备 Boot      Start         End      Blocks   Id  System

Parted开始分区,针对/dev/sdb磁盘,GPT分区表没有extend类型

[root@local-pyyu ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? Yes
(parted) mkpart primary 0 500
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     标志
 1      17.4kB  500MB  500MB               primary

(parted) mkpart logical 501 10000
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     标志
 1      17.4kB  500MB   500MB                primary
 2      501MB   10.0GB  9499MB               logical

(parted) q
信息: You may need to update /etc/fstab.

[root@local-pyyu ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2
[root@local-pyyu ~]#

image-20191203114830228

用fdisk命令检查sdb磁盘情况

[root@local-pyyu ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 24DA7CEB-EAD9-4540-A5C6-B9F7D566D388


#         Start          End    Size  Type            Name
 1           34       976562  476.8M  Microsoft basic primary
 2       978944     19531775    8.9G  Microsoft basic logical

更换gpt表为mbr

fdisk命令是针对MBR分区格式的,虽然能用g命令把磁盘格式化为GPT,但是无法再重新格式化为MBR格式,因为fdisk命令无法操作GPT格式的磁盘。
可以使用parted命令更换磁盘分区格式

[root@chaoge /]# parted /dev/sdb    //选中要转换到的磁盘
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable
New disk label type? msdos               
// 按照习惯MBR格式一般在linux下称作dos,如果在New disk label type?后输入dos或者mbr会提示无效命令,这时候要用help mktable查看
//帮助信息,可以看到parted命令中MBR分区被称作msdos,其它分区如下: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
posted @ 2022-07-05 23:09  xiaohaoge  阅读(254)  评论(0编辑  收藏  举报