【Linux入门】磁盘与文件系统管理以及配置实例

磁盘基础

磁盘简述与分类

磁盘是计算机中用于存储数据的重要硬件设备,它能够长期保存数据,并在需要时快速读取或写入数据。磁盘的发展经历了从早期的软盘、硬盘驱动器(HDD)到现在的固态硬盘(SSD)等多个阶段,每种磁盘都有其独特的特点和用途。

1. 软盘(Floppy Disk)

软盘是最早的可移动存储介质之一,因其柔软的盘片而得名。它通常被封装在一个方形的塑料外壳中,通过磁盘驱动器进行读写操作。软盘的存储容量较小,常见的有3.5英寸1.44MB和5.25英寸360KB/1.2MB等规格。随着其他存储介质的兴起,软盘已经逐渐退出市场。

2. 硬盘驱动器(Hard Disk Drive, HDD)

硬盘驱动器是目前最常见的磁盘类型,它是计算机中的主要存储设备。HDD通过磁头在旋转的磁盘表面读写数据,实现数据的长期保存和快速访问。HDD的存储容量从几十GB到几TB不等,且价格相对便宜,因此在很长一段时间内都是计算机存储的主流选择。不过,HDD的读写速度相对较慢,且容易受到震动和磁场的影响。

3. 固态硬盘(Solid State Drive, SSD)

固态硬盘是近年来兴起的新型存储设备,它采用闪存芯片作为存储介质,没有机械结构,因此具有更快的读写速度、更低的能耗、更强的抗震能力和更小的噪音。SSD的容量也在不断增加,价格逐渐下降,正在逐步取代HDD成为计算机和数据中心的主流存储方案。不过,SSD的价格通常比同容量的HDD要高一些。

磁盘的主要特点

  • 存储容量大:现代磁盘的存储容量已经可以达到TB级别,能够存储大量的数据。
  • 读写速度快:尤其是SSD,其读写速度远高于HDD,能够大幅提升计算机的整体性能。
  • 持久性:磁盘能够长期保存数据,即使断电也不会丢失。
  • 可移动性:部分磁盘(如移动硬盘、U盘等)具有可移动性,方便用户在不同设备之间传输数据。

磁盘的结构

磁盘的物理结构

盘片:硬盘有多个盘片,每篇两面
磁头:每面一个磁头

磁盘的数据结构

扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。一个block块由多个扇区组成
磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
在这里插入图片描述

磁盘分区表示

MBR与磁盘分区表示

主引导记录(MBR:Master Boot Record)

定义与位置
MBR位于硬盘的第一个物理扇区(即0柱面0磁头1扇区,也被称为MBR扇区),它是一段引导程序,用于检测磁盘的分区合法性和加载操作系统。MBR并不属于任何操作系统,而是在操作系统安装时写入硬盘的。
MBR由三个部分组成

  • 主引导程序:占用主引导扇区的前446字节,用于引导操作系统启动。
  • 分区表(DPT):紧随主引导程序之后的64字节,记录了硬盘的分区信息,包括分区的起始位置、结束位置、类型等。由于每个分区的信息占用16字节,因此分区表只能定义4个分区记录。
  • 结束标志:最后两个字节恒为55AA,表示MBR的结束。

作用
MBR的主要作用是识别活动分区(即启动分区),并引导操作系统启动。当计算机启动时,BIOS会加载并执行MBR中的主引导程序,该程序会检查分区表,找到活动分区,并加载该分区上的操作系统引导程序,从而启动操作系统。
补充

  • MBR位于硬盘第一个物理扇区处
  • MBR中包含硬盘的主引导程序和硬盘分区表
  • 分区表有4个分区记录区,每个分区记录区占16个字节,1-2047
  • Linux中将硬盘、分区等设备均表示为文件
磁盘分区

定义
磁盘分区是将硬盘分割成若干个逻辑部分的过程,每个部分可以独立使用和管理。分区后的硬盘区域被称为磁盘分区,它们可以存储不同类型的文件和目录。
类型
在传统的磁盘管理中,一个硬盘通常被分为两大类分区:主分区和扩展分区。

  • 主分区:是能够安装操作系统、进行计算机启动的分区。一个硬盘上最多可以有4个主分区(受MBR分区表容量的限制)。
  • 扩展分区:不能直接使用,必须进一步划分为逻辑分区。逻辑分区的数量没有限制(但实际上受限于操作系统的支持)。

文件系统
分区上的数据和文件通过文件系统来组织和管理。不同的操作系统支持不同的文件系统类型,如Windows常用的NTFS、FAT32等,Linux常用的EXT4、XFS等。

MBR与磁盘分区的关系

MBR是磁盘分区信息的存储载体之一,它包含了硬盘的分区表,记录了分区的起始位置、结束位置、类型等关键信息。因此,MBR的状态直接影响到磁盘分区的识别和操作系统的启动。如果MBR被损坏或覆盖,可能会导致计算机无法识别硬盘分区,从而无法启动操作系统。
总的来说,MBR是磁盘分区系统中的重要组成部分,它负责引导操作系统启动并管理硬盘的分区信息。而磁盘分区则是硬盘存储和管理数据的基本单位,通过不同的分区和文件系统来组织和保护数据。

/dev/sdb5

hd 表示IDE设备
sd 表示SCSI设备
硬盘的顺序号以字母a、b、c…表示
分区的顺序号以数字1、2、.3…表示。主分区从1-4,第一个逻辑分区始终从5开始
示例

  • 第1个主分区/dev/hda1
  • 第2个主分区Idev/hda2
  • 第1块IDE硬盘设备Idev/hda

扩展分区

  • 第1个逻辑分区Idev/hda5
  • 第2个逻辑分区Idev/hda6

补充

硬盘存储容量=磁头数x磁道(柱面)数x每道扇区数x每扇区字节数(512字节)
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
磁盘接口类型:IDE、SATA、SCSI、SAS、光纤通道

文件系统

文件系统是操作系统中用于明确存储设备(如磁盘、固态硬盘等)或分区上的文件的方法和数据结构。它是操作系统中负责管理和存储文件信息的软件机构,通过文件系统,用户可以方便地创建、删除、读写文件,并对文件的存储空间进行管理。

一、文件系统的定义与组成

  • 定义:文件系统是操作系统中用于组织和存取文件数据的结构、方法和接口的总称。它为用户和程序提供了一个统一的、层次化的文件视图,使得用户可以方便地存取数据。
  • 组成:文件系统通常由文件系统的接口、对对象操纵和管理的软件集合、对象及属性三部分组成。其中,接口是用户与文件系统交互的桥梁,软件集合负责文件的具体管理操作,而对象及属性则描述了文件的实际存储结构和内容。

二、文件系统的功能

  1. 文件管理:能够按照用户要求创建新文件、删除老文件、对指定的文件进行读写操作等。
  2. 目录管理:根据用户要求创建或删除目录文件,对用户指定的文件进行检索和权限验证,更改工作目录等。
  3. 文件存储空间的管理:由文件系统对文件存储空间进行统一管理,包括分配和回收存储空间等。
  4. 文件的共享和保护:在系统控制下使一个用户可共享其它用户的文件,同时提供可靠的保护和保密措施,确保文件的安全性和完整性。
  5. 提供方便的接口:为用户提供统一的文件方式,实现“按名存取”,简化用户操作。

三、文件系统的类型

  • ext2/ext3/ext4:Linux系统中常用的文件系统,其中ext3是ext2的升级版,增加了日志功能以提高系统恢复能力;ext4是ext3的后续版本,提供了更多的性能和可靠性改进。
  • NTFS:Windows NT/XP/Vista/7/8/10等操作系统采用的文件系统,支持大文件、长文件名、数据恢复和安全性等特性。
  • FAT/FAT32:早期Windows操作系统中常用的文件系统,简单易用但性能有限,不支持大文件和长文件名等特性。
  • ISO9660:大部分光盘所采用的文件系统,主要用于存储和读取光盘上的数据。
  • NFS(网络文件系统):由SUN公司发明,主要用于远程文件共享,支持多用户同时访问和修改文件。

检测并确认新硬盘

1. 查看所有连接的硬盘

  • 使用lsblk

    lsblk
    

    这个命令会列出所有可用的存储设备及其分区,以树状图的形式显示。

  • 使用fdisk -l

    fdisk -l
    

    这个命令会列出所有硬盘的分区表,包括硬盘的大小、类型、分区等信息。注意,fdisk可能需要管理员权限来查看所有硬盘。

2. 确认新硬盘

通过比较硬盘的序列号、大小或设备名(如/dev/sda/dev/sdb等),你可以识别出新添加的硬盘。如果之前你已经知道硬盘的型号或序列号,那么这个过程会更容易。

规划硬盘中的分区

1. 格式化硬盘&创建文件系统

如果新硬盘尚未分区或格式化,你可能需要先对其进行分区和格式化。这可以通过fdiskpartedgparted(图形界面)等工具来完成。

  • 使用fdisk进行分区:
    sudo fdisk /dev/sdx
    
    其中/dev/sdx是你的新硬盘的设备名。然后,按照提示进行分区操作。
    x可为a/b/c/d
  • 格式化分区:
    分区后,你需要对每个分区进行格式化。例如,使用mkfs.ext4来格式化分区为ext4文件系统:
    mkfs.ext4 /dev/sdxn
    
    /dev/sdxn是具体的分区设备名
    x可为a/b/c/d
    n可为1/2/3/4/..
    /dev/sdb1

磁盘分区工具 fdisk

fdisk是一个在Linux系统中广泛使用的磁盘分区工具,全称是“Partition table manipulator for Linux”,即Linux分区表操作工具。

一、功能与作用
  • 分区管理:fdisk允许用户对硬盘进行分区操作,包括创建新的分区、删除分区、修改分区大小等。
  • 兼容性强:它兼容DOS类型的分区表、BSD或SUN类型的磁盘列表,为用户提供了灵活的分区选项。
  • 维护分区表:fdisk不仅可以用于分区操作,还可以用来维护和修改分区表。
二、常用参数与命令
常用选项含义
-l列出指定设备的分区表。这是fdisk最常用的参数之一,用于查看当前硬盘的分区情况。
-v显示版本信息。
m在fdisk的主操作界面中,输入m可以显示菜单和帮助信息。
n新建分区。用户可以选择创建主分区、扩展分区或逻辑分区。
d删除分区。在分区表中选择要删除的分区编号并执行。
p显示分区表信息。这个命令会显示当前硬盘的所有分区信息。
w保存并退出。在确认分区操作无误后,使用这个命令将分区表写入磁盘并退出fdisk。
q不保存退出。如果在分区过程中遇到问题或想要取消分区操作,可以使用这个命令退出fdisk而不保存任何更改。
三、操作流程
  1. 启动fdisk:在终端中输入fdisk [设备名],例如fdisk /dev/sda,来启动fdisk并对指定的硬盘设备进行分区操作。
  2. 查看分区表:使用-l参数或p命令来查看当前硬盘的分区情况。
  3. 新建分区:使用n命令来创建新的分区。根据需要选择创建主分区、扩展分区或逻辑分区,并设置分区的大小和位置。
  4. 删除分区:如果需要删除某个分区,可以使用d命令并选择要删除的分区编号。
  5. 保存并退出:在确认分区操作无误后,使用w命令将分区表写入磁盘并退出fdisk。

创建文件系统-mkfs(make filesystem)

mkfs 是一个在Unix和类Unix系统中用于在设备上创建文件系统的命令。它的全名是 “make filesystem” 的缩写,意思是创建文件系统。这个命令允许用户指定设备(如硬盘分区、USB驱动器、SD卡等)和要创建的文件系统类型(如ext2、ext3、ext4、xfs、btrfs、vfat等)。

使用方法

基本的 mkfs 命令格式如下:

mkfs -t [文件系统类型] [设备名]

或者,对于某些文件系统类型,可以直接使用特定于该类型的格式化命令,如 mkfs.ext4mkfs.xfs 等。

示例
  1. /dev/sdb1 分区格式化为ext4文件系统
    mkfs.ext4 /dev/sdb1
    
    或者,使用 mkfs 并指定文件系统类型:
    mkfs -t ext4 /dev/sdb1
    
  2. /dev/sdc 整个磁盘格式化为FAT32文件系统(常用于USB驱动器或SD卡)
    mkfs.vfat /dev/sdc
    
    注意:格式化整个磁盘时(而不是分区),请确保没有挂载任何分区,并且你确实想要格式化整个磁盘。
注意
  • 数据丢失:格式化设备会删除该设备上的所有数据。在执行此操作之前,请确保已备份所有重要数据。
  • 设备名称:在指定设备名称时,请确保你正在格式化正确的设备。错误的设备名称可能导致数据丢失或系统损坏。
  • 文件系统类型:根据你的需求和设备的用途,选择适当的文件系统类型。例如,对于现代Linux系统,ext4是一个流行的选择,因为它提供了良好的性能和兼容性。而FAT32或NTFS则常用于与Windows系统兼容的USB驱动器或SD卡。
  • 权限:通常,你需要root权限来执行 mkfs 命令。你可以使用 sudo 命令来获取必要的权限。

挂载、卸载文件系统

1. 挂载硬盘

格式化后,你需要挂载硬盘才能访问它。

mkdir /mnt/newdisk
mount /dev/sdxn /mnt/newdisk

/dev/sdxn替换为你的分区设备名,/mnt/newdisk挂载点,可根据需要选择或创建挂载点。

2. 验证挂载

df -hT命令用于显示文件系统的磁盘空间占用情况。这个命令通过结合-h和-T选项,以更易读的方式(人类可读的格式)展示磁盘空间的使用情况,并同时显示文件系统的类型。
-h 选项:表示以人类可读的格式(如KB、MB、GB)显示文件大小,使得输出的结果更加直观易懂。
-T 选项:表示在输出中显示文件系统的类型。这对于了解不同分区或磁盘使用的文件系统类型非常有用。

df -hT

附加:自动挂载硬盘(可选)

Linux 操作系统在每次开机时,会自动读取/etc/fstab文件的内容,自动挂载所指定的文件系统。

vim /etc/fstab
/dev/sdb1      /opt        xfs   	 defaults   0  0
/dev/sr0       /mnt        iso9660   defaults   0  0
  • 第1字段/dev/sdb1:分区名或设备卷标名。
  • 第2字段/opt :文件系统的挂载点目录的位置。
  • 第3字段xfs:文件系统类型,如 xfs、swap 等。
  • 第4字段defaults:挂载参数,即mount命令“-o”选项后可使用的参数。例如,defaults(默认参数)、rw(可读写)、ro(只读)、noexec(禁用执行程序)。
  • 第5字段0:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为1时表示需要,设为0时将被dump 忽略。
  • 第6字段0:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区应设为 1,其他分区设为 2。
检查挂载
mount -a

卸载文件系统

解挂载

umount [选项] 挂载点/设备

强制解挂载:

umount -f 挂载点/设备

swap - 交换分区

交换分区(Swap Partition)是Linux系统中的一个重要功能,它类似于Windows系统的虚拟内存(pagefile.sys),用于在物理内存(RAM)不足时,将暂时不使用的数据或进程从RAM转移到硬盘上的特定区域,从而扩展系统的可用内存空间。

一、交换分区的作用

  1. 虚拟内存扩展:当RAM被充分利用时,操作系统会将不常访问的数据或进程临时存储在交换分区中,以增加系统的虚拟内存,允许用户同时运行更多应用程序。
  2. 提高系统稳定性:如果系统耗尽物理RAM,可能会导致系统变得不稳定甚至崩溃。交换分区作为RAM的溢出空间,有助于防止这种情况的发生。
  3. 优化繁重工作负载处理:对于需要大量内存资源的任务,交换分区可以帮助系统更有效地处理这些工作负载,提高系统的响应能力和性能。

二、交换分区的创建与管理

在Linux系统中,创建和管理交换分区通常需要root权限,并遵循以下步骤:

  1. 检查磁盘空间:确保硬盘上有足够的可用空间来创建交换分区。
  2. 使用fdisk或parted等工具创建分区:将一部分硬盘空间划分为交换分区。在分区过程中,需要选择适当的分区类型(对于交换分区,通常是Linux swap类型)。
  3. 格式化交换分区:使用mkswap命令对新建的交换分区进行格式化。
  4. 启用交换分区:使用swapon命令启用交换分区,使其在系统运行时可用。
  5. 配置自动挂载:将交换分区的信息添加到/etc/fstab文件中,以便在系统启动时自动挂载交换分区。

三、交换分区的优缺点

优点

  • 提高系统稳定性和响应能力。
  • 允许系统同时运行更多应用程序。
  • 优化繁重工作负载处理。
    缺点
  • 过度使用交换分区(即“抖动”)会降低系统性能。
  • 在固态硬盘(SSD)上频繁写入交换分区会增加SSD的磨损,缩短其使用寿命(尽管SSD的寿命通常很长,但频繁写入仍是一个潜在问题)。
  • 管理交换分区可能比管理交换文件更复杂。
  • 交换分区可能随着时间的推移而变得碎片化,影响系统性能。

四、注意事项

  • 在决定是否需要交换分区以及交换分区的大小时,应根据系统的实际内存大小、使用场景和性能需求来综合考虑。
  • 对于具有大量内存的现代系统来说,可能不需要或只需要较小的交换分区。
  • 定期检查交换分区的使用情况,并根据需要进行调整和优化。

综上所述,交换分区是Linux系统中一个非常重要的功能,它对于提高系统稳定性、响应能力和处理繁重工作负载具有重要作用。然而,在使用交换分区时也需要注意其潜在的缺点和限制。

创建交换文件系统(详细版)

创建swap之前,目标分区应先通过fdisk 工具将分区类型ID 号设为 82

fdisk /dev/sdb
-->t
	-->5
		-->82
mkswap /dev/sdb5

启用新增加的交换分区:

swapon /dev/sdb5

停用指定的交换分区:

swapoff /dev/sdb5

查看每个分区的swap状态信息:

swapon -s

查看总的swap状态信息:

free -m

挂载 mount命令

mount命令是Linux和类Unix系统中用于挂载文件系统的重要命令。通过mount命令,用户可以将存储设备(如硬盘分区、CD-ROM、USB驱动器或网络共享)的文件系统关联到当前文件系统的某个目录上,从而通过该目录访问存储设备中的数据。

基本语法

mount命令的基本语法如下:

mount [-选项] 设备名 挂载点
或
mount -t 文件系统类型 [-选项] 设备名 挂载点

常用选项

常用选项含义
-a挂载/etc/fstab文件中定义的所有未挂载的文件系统。
-f不实际执行挂载操作,通常与-v一起使用来测试或调试挂载命令。
-F结合-a使用时,对于每一个挂载动作产生一个子进程执行挂载,有助于加快大量挂载操作的速度。
-h显示帮助信息。
-n不将挂载信息写入/etc/mtab文件,这个选项在某些特殊情况下,例如没有可写文件系统时有用。
-r以只读模式挂载文件系统。
-t vfstype指定文件系统的类型,例如ext4、xfs、nfs、cifs等。如果不指定,mount命令会自动选择正确的类型。
-o options设置挂载选项,可以是多个选项,用逗号分隔,比如rw表示读写权限,noatime表示不更新文件的访问时间戳,defaults表示使用默认选项等。

使用示例

  1. 挂载USB驱动器
    假设你有一个USB驱动器,其设备文件名为/dev/sdb1,你想将其挂载到/mnt/usb目录上,可以使用以下命令:
    mount /dev/sdb1 /mnt/usb
    
    如果系统不能自动识别文件系统类型,你可以指定文件系统类型,例如:
    mount -t vfat /dev/sdb1 /mnt/usb
    
  2. 挂载光盘镜像文件
    如果你想挂载一个ISO光盘镜像文件,可以使用-o loop选项将其作为一个循环设备挂载。例如,将/path/to/image.iso镜像文件挂载到/mnt/cdrom目录上:
    mount -o loop /path/to/image.iso /mnt/cdrom
    
  3. 查看已挂载的文件系统
    要查看当前系统中已挂载的所有文件系统,可以不带任何参数运行mount命令:
    mount
    
    这将列出所有已挂载的文件系统,包括设备文件名、挂载点、文件系统类型和挂载选项等信息。

注意

  • 在使用mount命令之前,请确保挂载点目录已经存在。如果目录不存在,可以使用mkdir命令创建。
  • 如果挂载点目录中有重要数据,请确保在挂载前将其备份,因为挂载操作可能会隐藏或覆盖原有数据。
  • 在卸载设备时,应使用umount命令,并提供挂载点作为参数。例如,要卸载/mnt/usb目录上的设备,可以使用umount /mnt/usb命令。

检查文件系统的磁盘空间占用情况 df(disk free)

df(disk free)命令是Linux和类Unix系统中用于检查文件系统的磁盘空间占用情况的工具。它显示每个已挂载文件系统的总空间、已用空间、剩余空间、已用百分比和挂载点。这对于了解磁盘使用情况、规划磁盘空间以及诊断磁盘空间不足的问题非常有用。

基本语法

df [选项] [文件或目录...]

如果不指定任何文件或目录作为参数,df命令将显示所有已挂载文件系统的磁盘空间使用情况。

常用选项

常用选项含义
-h以人类可读的格式(如KB、MB、GB)显示文件大小。
-T显示文件系统的类型。
-a包括所有文件系统的磁盘空间使用情况,而不仅仅是已挂载的。
-i显示inode信息而非块大小信息。inode是Linux系统中用于存储文件元数据的数据结构。
--total在输出末尾添加总计行。

使用示例

  1. 查看所有已挂载文件系统的磁盘空间使用情况
    以人类可读的格式显示所有已挂载文件系统的磁盘空间占用情况。

    df -h
    
  2. 查看特定文件或目录所在的文件系统的磁盘空间使用情况

    df -h /path/to/file_or_directory
    
  3. 显示文件系统的类型和磁盘空间使用情况

    df -hT
    
  4. 包括所有文件系统的磁盘空间使用情况(包括未挂载的)
    使用-a选项将显示所有文件系统的磁盘空间使用情况,但请注意,未挂载的文件系统可能不包含有用的信息或可能以特殊方式显示。

   df -ah
  1. 显示inode信息
    df -i
    

注意

  • df命令报告的是已分配空间的大小,而不是磁盘上的实际数据大小。这意味着,即使删除了文件,如果它们所占用的空间尚未被其他文件重新使用,df报告的已用空间大小也不会立即减少。
  • 对于使用某些类型的文件系统(如NFS)的挂载点,df可能无法准确报告磁盘空间使用情况,因为这些文件系统的磁盘空间可能由远程服务器管理。
  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值