一、磁盘管理概述
磁盘介绍
无论是磁盘扩容,还是磁盘分区、磁盘故障、磁盘挂载排查等问题我们时时刻刻都离不开对磁盘管理,正因为有了对磁盘的精准把控,我们才能更好的利用磁盘空间。
那么首先对于磁盘的基础知识首先简要概括一下!!!(了解)
- 磁盘作为计算机物理存储介质,主要是由磁道、柱面、扇区、磁头等这几部分组成,目前比较常用的有机械硬盘和固态硬盘两类。
- 在Linux系统中,其硬盘相关的配置文件通常保存在/dev目录下,例如 /dev/sda、/dev/vcsa.....
- 针对不同硬盘接口(SCSI、SAS,SATA),分别会保留在不同的文件目录下存储。
- 针对磁盘分区,其最小存储单位叫做Sector(扇区),每个扇区都会能存储512字节,一个块(block)中能存储多个扇区(Sector),对于不同block数据块都会有着不同的inode编号,这样也便于我们后期对文件进行查找
磁盘构成
按照分类可以分为:MBR(主引导记录)、 GPT(GUID分区表)
MBR(主引导分区) | GPT分区 |
由主分区、扩展分区、逻辑分区构成 | |
主要由4个分区组成,一般情况下通常会设置为3个主分区和一个扩展分区(无法单独成立一块空间,必须建立在逻辑分区基础上) | 包含多块分区,分区构成与MBR分区类似 |
如果想要跟形象进行描述的话?
好比我们有一栋房子(主分区),如果需要对其进行装修他就会有多个小房间(扩展分区),然后针对每个小房子都会有一块区域用于其他修建的打算(阳台),那么就比如这个阳台就是我们的逻辑分区。
磁盘分区目的
1.隔离系统与用户数据:防止系统崩溃,影响用户文件
2.提高性能与效率:根据文件类型不同来选择不同类型的文件系统
3.I/O负载均衡:防止频繁数据读写(例如log文件、数据库文件),避免磁盘占用
二、软链接和硬链接
硬链接(链接目录)
- 如果不加-s,那么就会以硬链接的方式创建,而如果加了-s就会以软链接的方式进行创建,硬链接好比可以看作windows文件的临时拷贝,但是并不占用临时内存空间
ln [-s] [来源文件] [目的文件]
- 硬链接产生文件inode编码是一样的
- 硬链接要求是一定要处于同一文件系统
由于inode是文件系统的约束,但是不同文件系统(/dev/sda、/dev/sdb)inode编号可能重复(系统读取文件时会默认先读取不同块区域的数据,而创建硬链接过程其实再次创建了一个inode),因此是无法跨文件系统工作的,而软链接不会受到限制
inode存储的是元数据,不包含文件名,所以inode是共享关系,本质上来说就是同一文件的多个别名
软链接(不能链接目录)
用windows表达也叫“快捷方式”,它是一个独立性文件(有属于自己的inode),存储着目标文件的路径
软链接inode值并不相同,适用于跨文件系统
三、磁盘使用常见命令
-
查看目录及其文件所占空间
使用du(disk usage)命令用于查看目录和文件所占空间大小
命令格式:du [-abckmsh] [文件或目录]
-a:全部文件和目录都会显示出来
-b选项:所占空间大小会以B为单位进行输出
-k选项:所占空间大小会以KB为单位进行输出
-m选项:所占空间大小会以MB为单位进行输出
-h选项: 自动调整条件单位
-
fdisk磁盘分区命令
查看磁盘信息,这里我用-l选项列出了所有磁盘文件信息使用情况
使用fdisk 虚拟硬盘文件对硬盘文件进行扩容
fdisk /dev/sdd (由于我扩容的虚拟硬盘是/dev/sdd)
菜单中常用的命令:
命令 | 解释 |
p | 打印分区表内容 |
n | 创建新分区 |
w | 将分区表写入磁盘并退出 |
q | 退出但不保存改变 |
d | 删除分区情况 |
针对功能命令详细解释;
---p选项与n选项的操作:
---新建一定分区大小
---最终磁盘分区情况:
输入wq选项保存并退出
-
主分区和扩展分区区别
特性 | 主分区 | 扩展分区 |
数量限制 | 最多4个分区(受MBR分区限制) | 1个磁盘最多只能有一个 |
直接使用 | 格式化后能直接使用 | 无法直接使用,需划分逻辑分区 |
用途 | 安装系统、存储数据 | 仅作为逻辑分区容器 |
分区表记录 | 直接在MBR分区表中 | 占用1个主分区位置,内部维护逻辑分区 |
一般情况下在BIOS/MBR模式下,我们所需的GRUB引导程序必须安装在主分区(/boot)下,那么既然需要对简单存储我们就需要直接格式化为文件系统(ext4/NTFS)即可使用
一般采用的分区格式会有以下两种方案
方案一 (主分区全套方案) | 方案二(扩展分区+逻辑分区) |
/dev/sda1 (主分区,/boot分区) /dev/sda2(主分区,/分区) /dev/sda3(主分区,/home) /dev/sda4(主分区,交换分区) | /dev/sda1(主分区,/boot) /dev/sda2(主分区,/) /dev/sda3(扩展分区,/var) ---/dev/sda5(逻辑分区,/home) ---/dev/sda6(逻辑分区,/var) ---/dev/sda7(逻辑分区,交换分区) |
-
格式化磁盘分区
常见的格式化分区格式包括ext,ext2,ext3,ext4和xfs格式,我们常用mke2fs和mkfs格式来对磁盘分区表中的数据进行格式化,但是针对xfs格式的文件,我们是无法使用mke2fs格式进行格式化的
常见的选项类型包括
选项 | 解释 |
-b | 表示分区时数据块区域所占的大小,每个数据块大小一般支持1024B,2048B以及4096B |
-i | 设定inode的大小 |
-N | 设定inode的数量 |
-c | 格式化前校验磁盘所存在的问题 |
-L | 预定分区所设置的标签 |
-t | 指定文件系统类型为ext2、ext3、ext4 |
-j | 建立ext3格式分区,如果是mkfs.ext3命令,就无需指定该选项 |
格式化sdd分区类型为ext4,指定硬盘标签为TEST
mke2fs -L TEST -t ext4 /dev/sdd1
这里e2label用于查看格式化/dev/sdd硬盘的标签名
e2label /dev/sdd1
-t指定硬盘的分区类型
mke2fs -t ext3 /dev/sdd2
只能通过mkfs命令设置xfs格式,mke2fs不行
mkfs.xfs /dev/sdd3
Linux操作系统在进行ext4类型格式化时默认情况下数据块大小为4096B,格式化时指定大小只能是成倍的增加(1024B、2048B、4096B),但是值得注意的是一旦块大小超过4096B时,就无法进行正常的挂载
mke2fs -t ext4 -b 8192 /dev/sdd4
【扩展】
所谓块大小是存储和读取数据的基本单位,它主要分为两种类型(物理块和文件系统块),物理块则是硬盘实际读写的最小单位,而文件系统块则是系统管理文件的最小单位
-
磁盘的挂载
定义:磁盘挂载(mount)将存储设备(硬盘分区、光驱、U盘)的文件系统连接到目录树中的特定位置的过程
那么我们为何需要进行磁盘挂载?
- 作为文件访问的入口
- 权限管理:通过挂载能够控制不同用户对存储设备的访问权限
- 通过挂载能识别并加载设当文件系统驱动
- 可以更灵活添加,移除和转存存储资源
其挂载的基本要素包括:
- 设备文件:在linux中所有的设备文件可以表示为/dev 目录下的文件,例如/dev/sdb1(第一块硬盘分区)
- 挂载点:一个普通文件的目录,可以作为设备的挂载目录
- 文件系统:组织数据的形式(ext4,fat32,ntfs)
- 挂载表:保存在/etc/fstab中,记录了文件系统的挂载信息
挂载方式1
这里使用到了lsblk命令查看了硬盘的挂载情况,并且使用了mount命令完成磁盘文件的挂载
mount /dev/sdd1 dir/
使用lsblk再次查看时磁盘挂载的最终情况如图:
同时还能通过umount命令来解除挂载
umount dir/
挂载方式2
根据磁盘标签名完成了磁盘的挂载
挂载方式3
通过/etc/fstab文件中硬盘的uuid值完成磁盘的挂载
其文件的分析情况如下
当我们解除了磁盘的挂载那我们假如要采用这种方式进行挂载(mount -a)
通过blkid查看每个磁盘的uuid信息
通过uuid值完成相应磁盘信息的挂载
-
虚拟内存分区
一般情况下在进行磁盘分区的时候都会指定虚拟内存大小为实际大小的,然而这也就是我们常常说的swap分区
swap分区究竟有什么作用呢?
- 扩展可用内存:让系统能够运行比物理内存更大的工作负荷
- 提供休眠支持:保存了休眠时内存的状态
- 内存溢出的保护:防止了系统因为内存耗尽而崩溃
- 优化内存的使用:能够灵活将不活跃数据迁移至物理内存
这里加入我们如果需要对虚拟内存进行扩展
首先我们模拟对虚拟磁盘存入1024M数据
它在很大程度上将数据进行擦除(即创建的一个文件为空文件)
四、小结
- 针对磁盘硬件构成以及为何分区有了一个初步的了解
- 由磁盘的访问引入了软链接和硬链接知识,发现它的原理与inode值的变化息息相关,并分析其使用场景
- 提出磁盘分区中主分区,扩展分区,逻辑分区概念,区别,并能够熟练使用磁盘进行分区,还提出了关于磁盘分区常用方案,以及mbr和gpt格式采用不同方案
- 熟悉了格式化分区的常见流程以及了解了磁盘挂载的一些常用方式
- 对虚拟内存分区有了进一步了解
如果觉得对大家有帮助的,可以收藏下来哦!!!如果对文章内容有疑问的,大家可以在评论区指出,看到了小编会进行回复的哈。