Linux系统使用超详细(八)~磁盘管理

news2024/12/24 11:27:39

目录

一、认识磁盘

二、磁盘运行机制

三、磁盘检查

3.1查找设备名称和分区号

3.1.1使用lsblk命令:

3.1.2使用fdisk命令:

3.1.3使用blkid命令:

3.2检查方向

3.2.1文件系统完整性:

3.2.2磁盘健康状态:

3.2.3磁盘空间

①df 命令:

②du 命令:

3.2.4RAID阵列状态检查

3.2.5性能监测

①iostat命令:

②iotop命令:

四、磁盘分类

4.1机械硬盘

4.2固态硬盘

五、磁盘分区

5.1认识磁盘分区

5.2磁盘分区作用

5.3磁盘分区类型

5.4磁盘分区步骤

5.4.1fdisk命令

5.4.2注意事项

5.4.3分区步骤

5.4.4分区示例

六、磁盘格式化

6.1认识磁盘格式化

6.2磁盘格式化作用

6.3磁盘格式化类型

6.4磁盘格式化命令

6.5磁盘格式化步骤示例

七、磁盘挂载

7.1认识磁盘挂载

7.2磁盘挂载作用

7.3磁盘挂载命令

7.4磁盘挂载步骤

7.5磁盘挂载示例


一、认识磁盘

      在Linux中,磁盘(Disk)是指用于存储数据的物理设备,通常是硬盘(Hard Disk Drive,HDD--传统的机械硬盘)或固态硬盘(Solid State Drive,SSD)。磁盘是计算机系统中重要的存储介质,用于永久性地保存操作系统、应用程序和用户数据。固态硬盘相对于机械硬盘具有更快的读写速度和更高的耐久性。磁盘可以连接到计算机的主板上,通过磁盘控制器进行数据传输。

     磁盘由一个或多个碟片(platters)组成,每个碟片都有一个或多个磁道(track),而每个磁道又被划分为若干个扇区(sector)。每个扇区通常有固定的大小(如512字节或4KB),并且每个扇区都有一个唯一的地址。文件系统在磁盘上组织数据并跟踪每个文件的位置和大小。

     磁盘通过磁头读写数据,这些磁头位于盘片上方和下方的磁头臂上。这些碟片旋转并通过磁头(head)进行读写操作。磁盘的容量通常以字节(Bytes)表示,常见的单位有GB(Gigabytes)和TB(Terabytes)。

    磁盘可以被分为一个或多个分区,每个分区可以包含一个文件系统。这样可以将磁盘空间划分为不同的逻辑单元,以便更好地组织和管理数据。通过磁盘管理工具,如fdisk、parted、lsblk等,可以查看和管理磁盘的分区表、分区和文件系统。

总之,Linux中的磁盘是指物理存储设备,用于存储操作系统、应用程序和用户数据,并通过分区和文件系统进行管理和访问。

二、磁盘运行机制

磁盘运行机制可以从以下几个方面分析:

  1. 块设备驱动程序:Linux操作系统通过块设备驱动程序与硬盘进行交互。这些驱动程序负责处理底层硬件接口和通信协议,以及将读写请求传递给硬盘。

  2. 文件系统管理:Linux使用文件系统来组织和管理磁盘上的数据。常见的文件系统包括ext4、XFS、Btrfs等。文件系统负责在磁盘上安排文件的存储位置,并提供读写文件的接口。

  3. 缓存和缓冲区:为了提高磁盘访问速度,Linux使用缓存和缓冲区来临时存储读取和写入的数据。缓存可以减少对物理磁盘的访问次数,从而加快文件读写操作的执行速度。

  4. 调度器:磁盘调度器是负责管理磁盘I/O请求的组件。它根据一定策略对待处理的读写请求进行排序和调度,以优化磁盘访问的效率。Linux是使用I/O调度算法来管理磁盘上的读写请求顺序,以最大程度地提高磁盘的性能。常见的调度算法有CFQ(完全公平调度器)、Deadline和NOOP。

  5. DMA(直接内存访问):DMA是一种技术,允许硬盘直接与系统内存进行数据传输,减少了CPU的负载。利用DMA,磁盘可以通过总线控制器直接与内存交换数据,提高了数据传输的效率。

  6. TRIM支持:对于固态硬盘(SSD),Linux支持TRIM命令,该命令用于告知固态硬盘哪些数据已经被删除,以便让固态硬盘进行垃圾回收和性能优化。

三、磁盘检查

3.1查找设备名称和分区号

检查磁盘需要确定要检查的磁盘或分区的设备名称和分区号。以下是一些确定设备名称和分区号的方法:

3.1.1使用lsblk命令:

执行lsblk命令可以列出系统上的所有块设备及其分区情况。可以查找您要检查的磁盘或分区,并确定其设备名称和分区号。

语法格式:

lsblk [选项] [设备]

常用选项包括:

  • -a:显示所有设备,包括空设备。
  • -l:以简洁的方式显示输出。
  • -h:以人类可读的方式显示大小(例如GB、MB)。
  • -o <字段>:指定要显示的字段,多个字段之间用逗号分隔,默认显示所有字段。

可以使用lsblk命令来查看系统上的块设备信息。如果不指定任何参数,则会显示所有可用的块设备。例如: 

以下是对 lsblk 命令输出的详细解释:

  • NAME: 设备名称,该列显示了系统中已连接的设备的名称。
  • MAJ:MIN: 设备主次编号,表示设备的主要和次要编号。
  • RM: 可删除标志,如果值为 0,则表示设备是固定设备(如硬盘),如果值为 1,则表示设备是可移动设备(如光驱)。
  • SIZE: 设备大小,以字节(B)为单位显示设备的总容量。
  • RO: 只读标志,如果值为 1,则表示设备是只读的;如果值为 0,则表示设备是可读写的。
  • TYPE: 设备类型,显示设备的类型,例如 disk 表示磁盘设备,part 表示分区设备,rom 表示只读存储设备。
  • MOUNTPOINT: 挂载点,显示设备当前挂载的路径。

根据我的 lsblk 输出,可以看到以下设备和分区信息:

  • /dev/sda 是一个磁盘设备,大小为 100G。
  • /dev/sda1 是一个大小为 200M 的分区,挂载在 /boot 目录下。
  • /dev/sda2 是一个大小为 4G 的分区,用作交换空间。
  • /dev/sda3 是一个大小为 95G 的分区,挂载在根目录 / 下。
  • /dev/sr0 是一个光驱设备,容量为 1024M。

以下是一些示例:

lsblk -a             # 显示所有设备(包括空设备)的信息
lsblk -l             # 以简洁的方式显示块设备信息
lsblk -h             # 以人类可读的方式显示块设备大小
lsblk -o NAME,SIZE   # 仅显示设备名称和大小两个字段的信息
lsblk /dev/sda       # 显示/dev/sda设备的信息
lsblk -p             # 以设备路径的形式显示设备

注意:

lsblk命令默认使用树状结构显示块设备及其挂载点信息。只能显示块设备的信息,如硬盘、分区和逻辑卷等,并不适用于其他类型的设备。

如果大家想查看更多关于lsblk命令的详细信息和其他选项,请使用man lsblk命令。

3.1.2使用fdisk命令:

执行fdisk -l命令可以显示系统上的磁盘分区表信息。可以在输出中找到您要检查的磁盘或分区,并确定其设备名称和分区号。--常用命令

详细用法在下面磁盘分区章节中描述!

对 fdisk -l 命令进行分析使用: 

以下是对fdisk -l命令输出的详细解释:

  • /dev/sda: 设备名称,表示硬盘设备。
  • 107.4 GB, 107374182400 字节:硬盘的容量为107.4GB,以字节为单位也是107374182400字节。
  • 209715200 个扇区:硬盘有209715200个扇区。
  • Units = 扇区 of 1 * 512 = 512 bytes:这指示每个扇区大小为512字节。
  • 扇区大小(逻辑/物理):512 字节 / 512 字节:显示逻辑和物理扇区的大小均为512字节。
  • I/O 大小(最小/最佳):512 字节 / 512 字节:指示输入/输出操作的最小和最佳大小均为512字节。
  • 磁盘标签类型:dos:此硬盘使用的分区表类型为DOS分区表。
  • 磁盘标识符:0x000c85db:硬盘的唯一标识符为0x000c85db

接下来是每个分区的详细信息:

  • /dev/sda1:第一个分区,起始扇区为2048,结束扇区为411647,占用了204800个扇区(大小为100MB),文件系统类型为Linux,启动标志为*。
  • /dev/sda2:第二个分区,起始扇区为411648,结束扇区为8800255,占用了4194304个扇区(大小为2GB),文件系统类型为Linux Swap(用于交换空间)。
  • /dev/sda3:第三个分区,起始扇区为8800256,结束扇区为208029695,占用了99614720个扇区(大小为48GB),文件系统类型为Linux。

 注意:

以上的分区信息仅作为示例,实际情况可能因硬盘上的分区配置而有所不同。

在输出中,Id 列代表了每个分区的标识符。这些标识符用于表示分区的类型。 83 表示第一个和第三个分区的 Id,而 82 表示第二个分区的 Id。这是根据 DOS 分区表规范所定义的分区类型代码。

具体来说:

  • 83 表示 Linux 文件系统(通常为 ext2、ext3 或 ext4)。
  • 82 表示 Linux Swap 分区,用于交换空间。

标识符有助于操作系统正确地识别和处理不同类型的分区。 

3.1.3使用blkid命令:

执行blkid命令可以显示系统上的块设备及其相关信息,包括设备名称、分区号和文件系统类型。您可以在输出中找到您要检查的磁盘或分区,并确定其设备名称和分区号。

 

以下是对 blkid 命令输出中的详细解释:

  • /dev/sda1: 设备名称,表示第一个分区。

  • UUID="807d49f3-adc6-433c-a342-e504227c9e6d": Universally Unique Identifier (UUID),用于唯一标识分区。每个分区都会有一个唯一的 UUID。

  • TYPE="xfs": 文件系统类型,指示该分区使用的文件系统为 XFS。

  • /dev/sda2: 设备名称,表示第二个分区。

  • UUID="75b1c86c-a61e-4f6b-aac9-b8e0583f6248": 分区的 UUID。

  • TYPE="swap": 文件系统类型,指示该分区被用作交换空间。

  • /dev/sda3: 设备名称,表示第三个分区。

  • UUID="2f64efe8-ce85-4dc7-b1f2-117104a67b64": 分区的 UUID。

  • TYPE="xfs": 文件系统类型,指示该分区使用的文件系统为 XFS。

 UUID 是用于唯一标识分区的字符串,而文件系统类型确定了在分区上使用的文件系统格式。在这种情况下,第一和第三个分区采用 XFS 文件系统,而第二个分区用作交换空间。

注意:

具体的 UUID 和文件系统类型可能因大家的系统配置而有所不同,大家根据自己查询的结果进行分析。

3.2检查方向

在Linux中,磁盘的检查能从以下几个方面出发: 

3.2.1文件系统完整性:

文件系统可能会遭受损坏或不一致的情况,导致数据丢失或无法访问。因此,定期进行文件系统一致性检查是很重要的。检查文件系统的完整性可以确保文件系统数据没有损坏或错误。常见的命令有:

  • fsck:用于检查和修复文件系统。可以在启动时自动执行,或手动运行以检查指定的文件系统。可以扫描并修复文件系统上的错误。

可以使用以下命令来检查根分区(/): 

sudo fsck /dev/sdaX

其中,/dev/sdaX是根分区的设备路径。如果需要检查其他分区,将设备路径替换为相应的分区。当运行 sudo fsck /dev/sdaX 命令后,文件系统检测工具(fsck)会扫描指定设备(/dev/sdaX)上的文件系统,并显示相应的结果。以下是一些结果示例(可做参考,系统配置不同,输出并不一样):

  • "File system appears to be clean":这表示文件系统没有发现任何错误或损坏。
  • "File system was modified":此消息表示文件系统中存在问题,并且已经进行了修复。文件系统可能已被更改以解决问题。
  • "File system errors were corrected":这表示文件系统中存在一些错误,并且已经成功修复。
  • "Inode xxxxxx, i_blocks is invalid":此消息表示发现了一个无效的inode(索引节点),它可能指向一个已损坏的数据块。文件系统可能需要进一步的修复。

注意:

  • ①请确保在运行 fsck 命令之前先卸载相应的分区(如果已经挂载)。同时,请谨慎操作,避免对错误的分区进行操作导致数据丢失。 
  • ②要替换 /dev/sdaX 中的设备名称和分区号,请将 X 替换为实际的分区号,并将 sda 替换为正确的设备名称。例如,如果目标设备是 /dev/sdb2,则替换后的命令为:
    sudo fsck /dev/sdb2
    

    确保在替换之前仔细核对设备名称和分区号,以免对错误的设备进行操作导致数据丢失或其他问题。

 例如,如果我要自己系统检查 / 分区的文件系统,则应该运行以下命令:

sudo fsck /dev/sda3

执行结果:

结果显示:fsck 版本是 2.23.2,如果要检查 XFS 文件系统的一致性或修复已损坏的文件系统,请使用 xfs_repair(8) 命令。 

经过查找得知原因:

因为我的Linux使用的是CentOS 7.0,CentOS 7.0 版本默认使用的是 xfs 文件系统,而不是传统的 ext4 文件系统。因此,fsck 命令在 CentOS 7.0 上可能无法用于检查和修复文件系统。

对于 xfs 文件系统,建议使用 xfs_repair 命令来检查和修复文件系统的完整性。xfs_repair 是用于 XFS 文件系统的特定工具,用于检查和修复 XFS 文件系统的完整性。

建议:

如果大家想要使用 fsck 命令来检查和修复文件系统,我认为可以尝试更新到 CentOS 的较新版本(如 CentOS 7.1 或更高版本),或者使用支持 ext4 文件系统的其他 Linux 发行版。

然后使用以下命令运行 xfs_repair

sudo xfs_repair /dev/sda3

结果如下:

分析输出信息,xfs_repair 命令报告了两个错误:

  • xfs_repair: /dev/sda3 contains a mounted filesystem:这个错误表示 /dev/sda3 分区已经被挂载,无法进行修复操作。在运行 xfs_repair 前,您需要卸载该分区,以确保没有其他进程正在使用它。可以使用以下命令卸载 /dev/sda3 分区:
    sudo umount /dev/sda3
    
  • xfs_repair: /dev/sda3 contains a mounted and writable filesystem:这个错误表明 /dev/sda3 分区处于挂载和可写状态。在运行 xfs_repair 之前,需要将文件系统设为只读状态,以防止数据损坏。可以使用以下命令将 /dev/sda3 分区设置为只读:
    sudo mount -o remount,ro /dev/sda3
    
  • 关于错误消息中的 fatal error -- couldn't initialize XFS library,查找认为可能是由于缺少或损坏的 XFS 库文件导致的。(如果有知道的朋友可以评论留言)

提示:

在检查文件系统完整性时,使用 sudo fsck /dev/sdaX  命令,首先,确保要检查的分区没有挂载。如果分区已经挂载,请使用umount命令卸载分区。然后执行该命令检查和修复文件系统,并替换 /dev/sdaX 中的设备名称和分区号。

3.2.2磁盘健康状态:

检查磁盘的健康状态旨在发现硬件问题。对于机械硬盘(HDD),可以使用工具如smartctl来检查盘片的健康状态,包括温度、错误率、剩余寿命等。对于固态硬盘(SSD),可以使用工具如nvme-cli或smartctl来获取相应的信息。这里常见的命令有:

  • smartctl:用于显示和监测硬盘的S.M.A.R.T.(自监测、分析与报告技术)信息。可以检查硬盘是否存在故障或可能的故障。

 使用smartctl命令显示硬盘的S.M.A.R.T.信息。

①首先安装smartmontools软件包:

sudo yum install smartmontools

②比如运行以下命令以检查主硬盘(/dev/sda):

sudo smartctl -a /dev/sdX
--/dev/sdX是要检查的硬盘的设备名称。

--示例:
sudo smartctl -a /dev/sda

如果有其他硬盘,根据实际情况更改设备路径。

3.2.3磁盘空间

通过检查磁盘空间,可以了解文件系统中剩余的可用空间量。这对于确定是否还有足够的空间来存储新文件、应用程序或数据非常重要。磁盘空间不足可能导致磁盘溢出。当磁盘没有足够的空间来存储新的数据时,系统可能会出现错误或故障,甚至导致应用程序崩溃。通过定期检查磁盘空间,就可以预防磁盘溢出问题,可以识别并清理不再需要的文件、日志或其他占用大量空间的数据。这有助于优化磁盘使用并释放被浪费的空间。

磁盘空间的变化也可以用作监控文件系统健康状态的指标之一。通过检查磁盘空间使用情况的变化,可以识别潜在的问题,如未预期的空间占用增长或某些目录下的异常文件。

使用df和du命令来检查磁盘空间的使用情况

①df 命令:

检查磁盘分区的空间使用情况,用于显示磁盘空间使用情况和文件系统的统计信息。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法格式:

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

常用选项包括:

  • -h:以人类可读的方式显示磁盘空间大小(例如GB、MB)。
  • -T:显示文件系统类型。
  • -i:显示节点信息,而不是磁盘块信息。
  • -a:显示所有文件系统,包括虚拟文件系统。
  • -x <文件系统类型>:排除指定类型的文件系统。
  • -t <文件系统类型>:仅显示指定类型的文件系统。
  • --help:显示帮助信息。
  • -P:以POSIX标准的输出格式显示结果。

  • -B <单位>:指定块大小的单位,例如-B 1K表示以1KB为单位显示。

文件系统参数可以指定具体的文件系统进行查询,也可以不指定,此时df命令会显示所有已挂载的文件系统的磁盘使用情况,从而查看系统的磁盘空间使用情况,或者指定特定的文件或目录进行查询。

示例应用:

运行以下命令可以显示所有挂载的文件系统及其可用空间、已用空间等详细信息:

df -h

结果如下: 

 添加 -h 选项将以人类可读的格式显示磁盘空间大小

更多命令应用请在终端执行查询查看,这里仅罗列:

df                         # 显示所有已挂载文件系统的磁盘使用情况
df -h /home                # 显示/home目录的磁盘空间使用情况
df -T                      # 显示文件系统类型和磁盘空间使用情况
df -i /var/log             # 显示/var/log目录的节点信息
df -x tmpfs                # 排除tmpfs类型的文件系统
df -t ext4                 # 仅显示ext4类型的文件系统
df /dev/sda1               # 显示指定文件系统的磁盘使用情况

注意:

df命令默认显示的是磁盘使用情况,而不是磁盘容量。如果想要查看磁盘容量,请考虑使用du命令。使用man df命令可以查看更多关于df命令的详细信息和其他选项。 

②du 命令:

用于估算文件或目录的磁盘空间使用量。

语法格式:

du [选项] [文件或目录]

常用选项包括:

  • -h:以人类可读的方式显示磁盘使用量(例如GB、MB)。
  • -s:仅显示总体使用量,而不显示子目录的细节。
  • -c:显示所有目录和文件的总体使用量。
  • -a:显示每个文件的详细使用量,包括隐藏文件。
  • -d <深度>:指定要显示的目录层级的深度。
  • --exclude=<模式>:排除符合指定模式的文件或目录。
  • --max-depth=<深度>:限制显示目录层级的最大深度。
  • --help:显示帮助信息。

文件或目录参数可以指定要计算磁盘空间的文件或目录的路径。如果没有指定参数,则默认为当前目录。

示例应用:

运行以下命令可以显示指定路径下的磁盘空间使用情况:

du -sh /path/to/directory

/path/to/directory 替换为实际的目录路径。添加 -s 选项将只显示总体汇总信息,而不会递归显示子目录的使用情况。添加 -h 选项将以人类可读的格式显示磁盘空间大小。

比如:

查看/dev/sda3 的磁盘空间使用情况:

它的输出为 0,表示该设备没有使用任何磁盘空间。 

想要检查文件系统中的文件或目录的磁盘空间使用情况,提供一个实际的文件路径或目录路径作为参数,而不是设备文件路径。

例如,用以下命令来检查/dev目录的磁盘空间使用情况: 

更多命令应用请在终端执行查询查看,这里仅罗列:

du                         # 显示当前目录的磁盘空间使用情况
du -h                      # 显示当前目录及其子目录的磁盘使用情况,以人类可读的方式
du -h /var/log             # 显示/var/log目录及其子目录的磁盘使用情况
du -sh /home               # 仅显示/home目录的总体磁盘使用量
du -c /tmp                 # 显示/tmp目录中每个文件和子目录的磁盘使用量,并显示总体使用量
du -d 2 /var               # 仅显示/var目录下的两级子目录的磁盘使用情况
du --exclude="*.txt"       # 排除所有以.txt为扩展名的文件
du --max-depth=3 /usr      # 限制显示/usr目录及其子目录的最大深度为3级
du -a /path/to/directory   # 显示指定目录下所有文件和子目录的磁盘空间使用情况

# 查找最大的 10 个目录
du -hm --max-depth=2 | sort -nr | head -10

注意:

du命令默认会递归计算目录中所有文件和子目录的磁盘空间使用情况。如果不指定任何参数,则会显示当前目录的磁盘使用情况。使用man du命令可以查看更多关于du命令的详细信息和其他选项。 

3.2.4RAID阵列状态检查

如果大家需要使用软件RAID,可以检查 dmraid 是否已经安装,运行以下命令来检查 dmraid 是否安装在您的系统上:

which dmraid

如果没有输出结果,则说明 dmraid 未安装。那么可以尝试执行以下命令以安装 dmraid(使用适合的包管理器):

  • 在 Debian/Ubuntu 上:
sudo apt-get install dmraid
  •  在 CentOS/RHEL 上:
sudo yum install dmraid

提示:

确认你的系统是否支持软件 RAID:某些 Linux 发行版可能不支持或未默认启用软件 RAID 功能。在使用 dmraid 之前,请确保你的系统支持并已配置了软件 RAID 

如果使用了软件RAID(例如RAID 1)或硬件RAID,可以使用相应的工具来检查RAID阵列的状态。 以下是示例:

①使用mdadm命令检查软件RAID阵列的状态:

sudo mdadm --detail /dev/mdX

②使用dmraid命令检查硬件RAID阵列的状态:

sudo dmraid -s

③使用dmraid命令检查当前系统上所有阵列的详细信息

sudo mdadm --detail --scan

以下是对 dmraid 命令输出的一般解释:

  • 如果命令返回空白或没有任何输出,表示没有配置任何软件 RAID 阵列。
  • 如果命令返回有关已配置的 RAID 阵列的信息,通常会提供阵列名称、RAID 级别、设备路径和状态等。

注意:

dmraid 是一个针对某些 Linux 发行版的软件 RAID 管理工具,而不是通用的 RAID 控制器管理工具。如果使用的是硬件 RAID 控制器,建议大家参考相关厂商提供的命令行工具或管理界面来检查 RAID 阵列的状态。 

3.2.5性能监测

iostat命令:

iostat 是一个常用的命令行工具,它可以提供磁盘I/O的统计信息,包括读取和写入速率、延迟、服务时间等。通过定期运行iostat命令,可以监测磁盘的性能指标,并查看磁盘的运行情况。

以下是使用iostat命令查看磁盘I/O性能统计信息的步骤:

1)打开终端并使用root或具有sudo权限的用户登录到系统。

2)运行以下命令以查看磁盘I/O性能统计信息:

iostat -d -x
  • -d选项表示只显示磁盘设备的统计信息。

  • -x选项表示显示详细的磁盘I/O统计信息。

3) iostat将会显示每个磁盘设备的统计信息,包括:

  • 设备名称(Device)

  • 每秒读取的数据量(tps)

  • 每秒写入的数据量(tps)

  • 平均每次读取的扇区数(rd_sec/s)

  • 平均每次写入的扇区数(wr_sec/s)

  • 每次读取的平均延迟(await)

  • 每次写入的平均延迟(await)

  • 每次读取的平均服务时间(svctm)

  • 每次写入的平均服务时间(svctm)

注意:

iostat命令默认每隔一段时间更新一次统计信息。

如果希望连续显示统计信息,请使用以下命令: 

iostat -d -x 1

其中,1表示更新间隔的秒数,大家可以根据需要调整该值。

②iotop命令:

iotop命令可以实时显示磁盘I/O的情况,包括每个进程的读取和写入速率。它可以帮助我们快速定位哪些进程对磁盘进行了大量的读取和写入操作,从而监测磁盘的性能使用情况。 它提供了一个交互式的界面,显示正在进行的进程以及它们的磁盘I/O使用情况。

以下使用 iotop 命令的示例:

1)以root或具有sudo权限的用户身份打开终端,运行 iotop 命令以启动 iotop 工具。

2)默认情况下,iotop 将显示进程列表,按照磁盘I/O使用量(读写速率)进行排序。您可以看到每个进程的PID、用户、读取和写入速率等信息。

3)iotop 的界面会随着时间的推移自动刷新,并根据磁盘I/O活动的变化进行更新。

4)可以使用键盘上的一些快捷键进行操作,例如:

  • r:反转排序顺序。
  • o:更改排序字段(例如,按照进程名或磁盘I/O使用量排序)。
  • p:仅显示相关的进程。
  • q:退出 iotop

如果系统中没有安装 iotop,大家可以尝试使用适合的包管理器来安装它。例如,在 Debian/Ubuntu 中,可以运行以下命令进行安装:

sudo apt-get install iotop

在 CentOS/RHEL 中,可以使用以下命令进行安装:

sudo yum install iotop

注意:

某些发行版可能需要添加额外的软件源才能安装 iotop

运行iotop命令:

sudo iotop

 iotop将显示一个类似于类似于顶部(top)的实时界面,其中包含以下信息:

  • TID:线程ID

  • PRIO:进程优先级

  • USER:进程所属用户

  • DISK READ:每秒读取的数据量

  • DISK WRITE:每秒写入的数据量

  • SWAPIN:每秒从交换空间读取的数据量

  • IO:总的每秒I/O大小

  • COMMAND:进程的命令行

汇总:

iotop需要root权限才能运行,这是因为它需要对系统的磁盘I/O进行监测。如果没有root权限,可以尝试使用sudo命令以管理员身份运行iotop

iotop可以帮助我们快速识别磁盘I/O的高负载进程,以及了解系统磁盘的使用情况。它对于调试和优化磁盘性能问题非常有用。

四、磁盘分类

在章节一中讲到磁盘通常是硬盘(Hard Disk Drive,HDD--传统的机械硬盘)或固态硬盘(Solid State Drive,SSD)。

4.1机械硬盘

它是一种传统的和常见的磁盘存储设备,使用旋转的磁盘和移动的磁头来读取和写入数据。它们通常由机械和电子组件组成,具有较低的读写速度和较高的能耗。机械硬盘提供较大的存储容量,但相对较慢。

常见的机械硬盘类型包括SATA、SCSI和SAS。

4.2固态硬盘

它是一种基于闪存存储技术的非机械式存储设备。它们使用集成电路来存储数据,具有更快的读写速度、更低的访问延迟和较低的能耗,不含任何移动部件。相比机械硬盘,SSD具有更快的数据访问速度、更低的延迟和较高的耐用性,但通常容量较小且价格更高。

常见的固态硬盘类型包括SATA、NVMe和部分USB接口上的闪存驱动器。

注意:

SATA、SCSI和SAS是接口标准,而不是磁盘类型本身。这些接口可以用于连接机械硬盘(HDD)或固态硬盘(SSD)。

  • 机械硬盘(HDD)一般使用SATA、SCSI或SAS接口。
  • 固态硬盘(SSD)则通常使用SATA、SCSI、SAS或NVMe接口。

总结起来,SATA、SCSI和SAS接口均可用于连接机械硬盘(HDD)或固态硬盘(SSD),而NVMe接口主要用于连接高性能的固态硬盘(SSD)。

以下对这几种接口硬盘分析:

  1. SATA(Serial ATA)磁盘:SATA是目前最常见的磁盘类型,广泛用于个人电脑和服务器。它具有高带宽、较低成本和易于使用的特点。

  2. SCSI(Small Computer System Interface)磁盘:SCSI是一种通用的接口标准,支持高性能和多设备连接。SCSI磁盘在服务器和高性能存储系统中常见。

  3. SAS(Serial Attached SCSI)磁盘:SAS是一种用于连接存储设备的高性能接口。它结合了SATA和SCSI的优点,同时提供高速传输和高可靠性。

  4. NVMe(Non-Volatile Memory Express)磁盘:NVMe是一种基于PCI Express总线的高性能存储接口,专为固态硬盘(SSD)设计。它具有低延迟、高吞吐量和并行访问的特点。

  5. USB(Universal Serial Bus)磁盘:USB磁盘是通过USB接口连接到计算机的便携式存储设备。它们通常用于数据传输和备份。

  6. FireWire(IEEE 1394)磁盘:FireWire是一种高速串行接口标准,可用于连接外部设备,如硬盘驱动器和摄像机。

  7. 光学存储媒体:包括CD、DVD和蓝光(Blu-ray)光盘,用于音频、视频和数据存储。

这只是一些常见的磁盘类型,其实还有其他一些特殊类型的磁盘,如RAID(冗余磁盘阵列)磁盘、SAN(存储区域网络)磁盘等,它们用于特定的存储需求和配置。

注意:

随着技术的不断发展,出现了一些新的存储技术,如基于3D XPoint的Intel Optane存储器。这种技术介于传统硬盘和固态硬盘之间,具有高速读写能力和较低的延迟,但在市场上并不常见。

五、磁盘分区

5.1认识磁盘分区

磁盘分区是将物理磁盘划分为逻辑部分的过程。它将一个大容量的物理磁盘划分为多个较小的分区,每个分区被视为独立的逻辑驱动器,每个分区被视为一个独立的逻辑存储设备,并可以在操作系统中进行单独管理。

5.2磁盘分区作用

进行磁盘分区的主要原因包括以下几点:

  1. 管理数据:磁盘分区可以帮助组织和管理数据,将不同类型的数据分开存储在不同的分区中,使其更容易管理和维护。不同分区可以用于存储不同类型的数据、应用程序或操作系统文件。

  2. 提高性能:分区可以在不同的分区上分配不同的文件系统和存储参数,以优化性能。例如,将操作系统和程序文件放在一个分区上,用户文件放在另一个分区上,可以提高系统的响应能力。再例如,可以将频繁访问的文件放置在较快的分区上,提高读写速度。

  3. 增加安全性:将不同类型的数据存储在不同的分区中可以增加数据的安全性。例如,将系统文件和用户数据分开存储,可以降低系统文件被破坏的风险。

  4. 多操作系统支持:通过将磁盘分成多个区域,可以安装和运行多个操作系统在同一台计算机上。每个操作系统可以位于不同的分区上,彼此独立且互不干扰。

5.3磁盘分区类型

常见的磁盘分区包括:

  1. 主分区(Primary partition):主分区是最基本的磁盘分区,用于存储文件系统和数据。通常用于安装操作系统或作为数据存储区域。一个硬盘最多可以有四个主分区。由于主分区的分区表(Partition Table)只有四个条目的空间可用,每个主分区占用一个条目。如果需要在一个硬盘上创建更多的分区,可以使用扩展分区和逻辑分区的组合。

  2. 扩展分区(Extended partition):扩展分区是一个特殊的主分区,它可以被划分为逻辑分区,扩展分区通常用于创建更多的逻辑分区。一个硬盘只能存在一个扩展分区。扩展分区只占用一个主分区的条目,但可以容纳多个逻辑分区,从而允许在一个硬盘上创建更多的分区。

  3. 逻辑分区(Logical partition):逻辑分区是在扩展分区内创建的,用于扩展可用的存储空间。一个扩展分区可以包含多个逻辑分区。

 一些新的分区方案(如GPT)支持更大数量和更灵活的分区。此外,还有其他特殊类型的分区,如EFI系统分区、交换分区等,这些分区类型具有特定的功能和用途。

注意:

根据主引导记录(MBR)分区表的限制,一个硬盘最多可以有四个主分区或三个主分区和一个扩展分区。

具体而言,MBR分区表允许使用以下分区组合:

  1. 最多四个主分区。
  2. 三个主分区加一个扩展分区。
  3. 两个主分区加两个逻辑分区(在扩展分区内创建)。

扩展分区是一种特殊类型的主分区,它可以进一步划分为逻辑分区。每个主分区或逻辑分区都可以包含一个文件系统,并用于存储数据或安装操作系统。

这些限制只适用于基于MBR的分区方案。新的分区方案,如GUID分区表(GPT),不受这些限制,并且允许更大数量的分区。

因此,在一个硬盘上分区,这样可以提供更大的灵活性来管理磁盘空间和组织数据。

5.4磁盘分区步骤

进行磁盘分区的操作可以使用各种分区工具来完成,如fdisk、parted、GParted等。这里以fdisk为例进行描述。

5.4.1fdisk命令

fdisk命令是一个用于分区硬盘的命令行工具,常用于在Linux系统中创建、删除、调整磁盘分区。

语法格式:

fdisk [选项] <设备>

常用选项包括:

  • -l:列出所有可用的磁盘设备和分区信息。
  • -u:以扇区而不是柱面为单位显示分区信息。
  • -s <分区号>:显示指定分区的大小(以扇区为单位)。
  • -t <分区类型>:更改指定分区的类型。
  • -n:创建一个新分区。
  • -d <分区号>:删除指定分区。
  • -p:打印分区表的内容。

可以使用fdisk命令来操作硬盘上的分区。需要指定要操作的设备路径作为参数。设备参数指定要操作的磁盘设备,如硬盘 /dev/sda 或设备的分区 /dev/sda1

示例应用:

fdisk -l /dev/sda        # 列出/dev/sda磁盘的分区信息
fdisk -u /dev/sdb        # 以扇区为单位显示/dev/sdb磁盘的分区信息
fdisk -s /dev/sda2       # 显示/dev/sda2分区的大小(以扇区为单位)
fdisk -t 83 /dev/sdb1    # 将/dev/sdb1分区的类型更改为Linux
fdisk -n /dev/sdc        # 在/dev/sdc磁盘上创建一个新分区
fdisk -d 3 /dev/sda      # 删除/dev/sda上的第3个分区
fdisk -p /dev/sdb        # 打印/dev/sdb磁盘的分区表内容

#使用`n`命令创建新分区,然后按照提示输入分区类型、分区起始扇区和分区大小等信息。
#使用`d`命令删除指定分区,然后按照提示输入要删除的分区号。
fdisk /dev/sda

注意:

使用fdisk命令需要谨慎操作,因为它直接操作硬盘分区表。

使用man fdisk命令可以查看更多关于fdisk命令的详细信息和其他选项。 

5.4.2注意事项

进行磁盘分区时有一些重要的注意事项:

  1. 数据备份:在进行磁盘分区前,请务必备份重要的数据。因为分区操作可能导致数据丢失或破坏。

  2. 选择正确的分区类型:根据你的需求选择适当的分区类型,如主分区、扩展分区或逻辑分区。在分区过程中,一定确保选择正确的磁盘,并小心避免对不正确的磁盘进行操作,以防止数据丢失。

  3. 空闲空间:确保有足够的空闲磁盘空间来创建分区。可以通过运行fdisk -l /dev/sda命令来查看当前分区布局。如果已存在四个主分区,则无法直接创建另一个主分区。如果磁盘已经有四个主分区,你可能需要删除一个或使用扩展分区来创建更多的逻辑分区(注意:这将导致分区中的数据丢失),然后释放出空间来创建新的分区。请务必备份重要数据并小心操作。另一种方法是将其中一个主分区转换为扩展分区,以便在扩展分区中创建更多的逻辑分区。但请注意,将主分区转换为扩展分区也会导致分区中的数据丢失

  4. 确定分区的大小和位置:在创建分区时,确保正确指定分区的起始位置和大小。错误的分区大小或位置可能导致数据不可访问。

  5. 慎重操作:在进行磁盘分区时,要仔细检查和确认分区操作,以免意外删除或修改了错误的分区。

5.4.3分区步骤

这里汇总下一般情况下的磁盘分区步骤: 

  1. 打开磁盘分区工具:使用适合自己操作系统的磁盘分区工具,例如 fdiskpartedDisk Management(Windows)或 Disk Utility(macOS)等。

  2. 选择目标磁盘:从可用磁盘列表中选择要进行分区的目标磁盘。一定要仔细选择正确的磁盘,以免错误地分区。

  3. 创建分区:根据需求创建分区。可以按照提示或菜单选项执行以下操作:

    a. 对于 MBR 分区表:

    • 创建主分区:选择 "Create Primary Partition" 或类似选项,并指定分区大小,通常以兆字节(MB)或千兆字节(GB)为单位。
    • 创建扩展分区:如果已经有四个主分区,您可以选择 "Create Extended Partition" 或类似选项来创建扩展分区,然后指定其大小。
    • 在扩展分区内创建逻辑分区:在扩展分区上选择 "Create Logical Partition" 或类似选项,并指定逻辑分区的大小。

    b. 对于 GPT 分区表:

    • 直接创建分区:选择 "Create Partition" 或类似选项,并指定分区大小和类型。
  4. 设置分区属性:可以为每个分区设置不同的属性,如文件系统类型、分区标签等。这些设置通常可在分区工具的相应选项中完成。

  5. 应用分区更改:确认分区设置无误后,将更改应用到磁盘上,以创建分区。

  6. 格式化分区:对于新创建的分区,需要格式化以创建文件系统。根据操作系统和分区工具,可以通过右键点击分区并选择 "Format"(格式化)选项或使用命令行工具(如 mkfs 命令)来完成。

  7. 挂载分区:如果需要,在操作系统中挂载已经格式化的分区,以便可以在文件系统中访问它们。这可以通过编辑 /etc/fstab 文件(在Linux中)或使用图形界面工具(如 Windows 的“磁盘管理”或 macOS 的“磁盘工具”)来完成。

如果分区使用fdisk命令,执行以下命令:

fdisk /dev/sdX

这里的sdX代表你要分区的磁盘设备,如sda、sdb等。

①创建分区

  • 对于fdisk:按下n键创建新分区,然后根据提示选择分区类型、起始和结束扇区等。

②删除分区: 

  • 对于fdisk:按下d键选择要删除的分区,然后根据提示删除。

③修改分区属性

  • 对于fdisk:按下t键选择要修改的分区,然后根据提示修改分区类型,输入分区类型的十六进制代码,例如83表示Linux文件系统。

④ 完成分区操作后,使用w命令保存分区表并退出工具

提示:

在传统的主引导记录(MBR)分区表中,常见的分区类型包括:

  1. Linux 分区(类型代码:83):用于安装 Linux 操作系统或存储 Linux 特定的文件系统。

    • 创建 Linux 主分区:在 fdisk 中使用 n 命令选择 p 选项来创建主分区。
    • 创建 Linux 扩展分区:在 fdisk 中使用 n 命令选择 e 选项来创建扩展分区。
    • 创建 Linux 逻辑分区:在 fdisk 中使用 n 命令选择 l选项来创建扩展分区。
  2. Windows 分区(类型代码:7):用于安装 Windows 操作系统或存储 Windows 特定的文件系统。

    • 创建 Windows 主分区:在 fdisk 中使用 n 命令选择 p 选项来创建主分区
    • 创建 Windows 扩展分区:在 fdisk 中使用 n 命令选择 e 选项来创建扩展分区
  3. EFI 系统分区(类型代码:ef02 或 ef00):用于存储 EFI 引导程序和相关数据,适用于使用 EFI/UEFI 启动的系统。

    • 创建 EFI 系统分区:在 fdisk 中使用 n 命令选择 e 选项来创建扩展分区,并在提示中选择相应的类型代码。
  4. 交换分区(类型代码:82):用于作为虚拟内存空间,支持系统将内存中的数据交换到磁盘以增加可用内存。

    • 创建交换分区:在 fdisk 中使用 n 命令选择 p 选项来创建主分区。 

除此之外,在创建分区时,还有以下几项内容:

  • 起始扇区:选择分区的起始位置,默认情况下可以直接按下Enter键以使用默认值
  • 结束扇区:选择分区的结束位置,默认情况下可以直接按下Enter键以使用整个可用空间
  • 分区大小:可以选择指定分区的大小,也可以直接按下Enter键以使用整个可用空间。

注意:

请确保扇区单位与磁盘容量单位一致(通常为512字节扇区)。

上述扇区标记内容在分区时有涉及!!!

附加:

如果大家分区使用parted命令,那么可以执行以下命令:

parted /dev/sdX

①创建分区

  • 对于parted:使用mkpart命令创建新分区,然后指定分区类型和起始、结束位置等。

②删除分区: 

  • 对于parted:使用rm命令选择要删除的分区。

③修改分区属性

  • 对于parted:使用set命令选择要修改的分区,然后设置分区属性。

④ 完成分区操作后,使用w命令保存分区表并退出工具

关于parted命令的更多详细使用方法,大家可以参考此文章:http://t.csdnimg.cn/7ZxfD

5.4.4分区示例

以我使用的centos7.0系统为例,创建一个500M的分区。

批注:

本章节 磁盘的分区/格式化/挂载 示例的操作用例参考文章http://t.csdnimg.cn/aQ6FZ

1)查看磁盘目前的分区情况

fdisk -l

结果如下:

根据结果显示,该磁盘/dev/sda总共有三个分区。以下是对每个分区的简要说明:

  1. /dev/sda1:这是一个Linux分区,起始扇区为2048,结束扇区为411647。它的大小为204800个块。如果需要创建一个用于安装操作系统或存储引导文件的分区,可能是合适的选择。

  2. /dev/sda2:这是一个Linux swap / Solaris分区,起始扇区为411648,结束扇区为8800255。它的大小为4194304个块。这个分区通常用作交换空间,用于虚拟内存扩展,但它不适合存储数据。

  3. /dev/sda3:这是一个Linux分区,起始扇区为8800256,结束扇区为208029695。它的大小为99614720个块。如果需要创建一个用于存储数据或将其他文件系统挂载的分区,可能是一个合适的选择。

备注: 

① /dev/sda1后面的*表示该分区被标记为“引导”分区。这意味着该分区包含引导加载程序(bootloader),该程序负责启动操作系统。引导分区通常是在计算机启动时首先读取的分区,用于确定要加载的操作系统和系统启动过程。在这种情况下,*表示该分区是活动的(active),也就是说,它被选为引导分区。只有一个活动的引导分区可以存在于整个磁盘上。当计算机启动时,BIOS或UEFI会查找活动的引导分区,并从该分区加载引导加载程序。因此,在/dev/sda1分区后面的*表示该分区是活动的引导分区

②"Start"表示分区的起始扇区号,即分区在磁盘上的起始位置

③"End"表示分区的结束扇区号,即分区在磁盘上的结束位置

④"Blocks"表示分区的大小,以块为单位。每个块的大小可以根据文件系统和磁盘设置而变化。

⑤"Id"表示分区的标识符或类型。它指示了分区所属的文件系统类型或用途。常见的标识符包括:

  • 83: Linux 文件系统
  • 82: Linux swap 分区(用于虚拟内存)
  • fd: Linux RAID 分区
  • 07: NTFS 分区(Windows 文件系统)
  • 0b: FAT32 分区(Windows 文件系统)

⑥"System"表示分区所属的操作系统或文件系统类型

提示:

在标准的MS-DOS分区方案下,引导分区是主分区之一。通常情况下,引导分区不应该被进一步分区。

对于/dev/sda1这个引导分区,如果尝试对其进行再分区,会破坏引导加载程序和系统启动过程。这可能导致系统无法正常引导,从而导致数据丢失或系统无法启动。

因此,不建议对已经作为引导分区的/dev/sda1进行再分区。如果需要更多的分区空间或者想要重新规划磁盘布局,最好备份重要数据后,重新进行分区操作,并确保正确配置引导加载程序以保证系统的正常引导。

2)让硬盘进入分区模式,使用以下命令:

fdisk /dev/sda

 结果如图:

此时命令栏提示输入m来寻求帮助,那么我们输入m,来看一下都有哪些选项。

 

上图中:标记为经常会用到的,部分命令在上问已经提及,这里再来解释一下其中的一些选项。 

n添加一个新分区q不保存就退出p打印分区表m打印选项菜单
d删除一个分区w保存退出t改变系统id号

3)开始创建分区,输入n,然后回车【enter】如下图 

输出结果显示的是3个主要分区,0个扩展分区,还有1个闲置分区。
绿色光标前的default e表示的是默认为扩展分区。我们除了直接回车【enter】进入下一步,也可以输入e进入下一步。 

①此时光标所在的位置表示选择输入起始位置,也就是起始扇区。当然,我们不用输入,直接回车【enter】就好进入下一步。它就是为了能够将后面的所有可用扇区充分的利用上,而默认选择可用扇区的起始最小扇区。(5.4.3注意事项有提及)

回车【enter】后进入下一步,如下:

②此时光标所在的位置表示选择输入终了位置,也就是结束扇区。当然,我们不用输入,直接回车【enter】就可以把上面剩余的全部空间充分的利用上。(5.4.3注意事项有提及) 

回车【enter】后如下:

 

③到这里我们创建的扩展分区已经创建好了,我们在命令行界面输入p查看一下分区情况:

图中标记的信息就是刚创建的扩展分区,以及它的起始,终止扇区位置信息;块信息;id编号信息,分区信息。 

④有了扩展分区,那么我们才可以创建逻辑分区。
我们在命令行输入n添加一个新分区,此时添加的分区就是逻辑分区。

这时它询问设置逻辑分区的起始扇区,为了充分利用,我们选择默认值,然后回车【enter】。 

到这里它在询问扇区结束位置,说白了就是我们在设置逻辑分区大小。输入格式为:+扇区 或者 +数值大小{单位}
然后我们输入:+500M  表示设置大小为的500M的逻辑空间。回车【enter】之后就完成了新的分区的设置。
紧接着我们输入p打印分区表查看分区信息。

上图中标记的文字为提示信息:提示分区5大小为500M且已经创建。

提示:

如果我们创建的分区过大,而系统磁盘存储不够时,就会给出提示,如下图所示:

⑤此时不要着急,我们一定要记住要保存,在命令行输入w保存分区信息。我们通过w保存并退出后,使用   fdisk -l  可以查看到磁盘的分区信息。


⑥但是当你在格式化的时候,有可能找不到这个分区。这是因为Linux没有把分区信息读到内核来,我们需要输入partprobe这个命令,来使我们内核重读一下我们的分区信息。

到这里其实已经成功地创建了一个500M大小的分区,但是我们能用吗?不能,因为我们要对磁盘进行格式化后才可以进行数据的存储。 

六、磁盘格式化

6.1认识磁盘格式化

      在Linux中,磁盘格式化指的是对磁盘分区进行文件系统的创建和初始化过程。格式化后,文件系统将能够在磁盘分区上存储和组织文件和目录,并提供文件的访问和管理。格式化操作会在存储设备上创建文件系统结构、分配索引节点和数据块等元数据信息,以便操作系统可以管理和访问存储设备上的数据。

6.2磁盘格式化作用

磁盘格式化的作用主要有以下几点:

  1. 准备文件系统:格式化是为了在磁盘分区上创建一个文件系统,以便在该分区上存储文件和数据。

  2. 清除数据:格式化会清除存储设备上的所有数据,包括文件和目录,将其恢复为初始状态。这对于重用磁盘分区或确保数据被彻底删除非常重要。

  3. 错误检查和修复:格式化过程还会对磁盘分区进行错误检查和修复。这有助于确保文件系统的完整性,并修复任何潜在的损坏。

6.3磁盘格式化类型

Linux中常见的磁盘格式化类型包括:

  1. ext4:是Linux上最常用的文件系统类型,具有较好的性能和稳定性。它支持大容量存储设备,并提供了许多高级特性,如日志记录、快照和扩展属性。

  2. ext3:是ext4的前身,也是一种常用的文件系统类型。与ext4相比,它的某些功能和性能略有限制,但仍然可以在许多Linux系统中找到。

  3. XFS:是一种高性能的日志文件系统,适用于大型存储设备和高负载环境。它支持快速格式化和在线扩容,适合处理大文件和大量文件的工作负载。

  4. Btrfs:是一种先进的文件系统,提供了许多新的特性,如快照、数据压缩、数据校验和动态子卷管理。它适用于需要高级功能和灵活性的特定用例。

  5. NTFS:是Windows操作系统上常用的文件系统类型,它具有对大文件和大容量存储设备的良好支持。在Linux中,可以使用ntfs-3g工具来格式化和访问NTFS分区。

  6. FAT32:是一种简单的文件系统类型,广泛用于移动存储设备和跨平台兼容性要求。它具有广泛的操作系统支持,包括Linux、Windows和macOS。

大家可以使用命令:mkfs. 然后用按TAB、TAB来查看都有哪些文件类型。如下所示:

在Linux中,可以使用命令行工具如mkfs、mkfs.ext4、mkfs.xfs等来格式化磁盘分区。具体的命令和选项会根据所选择的文件系统类型而有所不同。在进行磁盘格式化之前,请确保选择了正确的文件系统类型,并备份重要数据。 

6.4磁盘格式化命令

在Linux中,磁盘格式化可以使用不同的命令,但磁盘格式化的命令通常是mkfs(make filesystem)命令,具体取决于所选择的文件系统类型。以下是常见的磁盘格式化命令:

①ext4 文件系统

  • 格式化主分区:
#(其中 /dev/sdXY 是要格式化的分区设备路径,例如 /dev/sda1)
mkfs.ext4 /dev/sdXY
  • 格式化整个磁盘:
#(其中 /dev/sdX 是要格式化的磁盘设备路径,例如 /dev/sda)
mkfs.ext4 /dev/sdX

XFS 文件系统

  • 格式化主分区:
mkfs.xfs /dev/sdXY
  • 格式化整个磁盘:
mkfs.xfs /dev/sdX

③Btrfs 文件系统

  • 格式化主分区:
mkfs.btrfs /dev/sdXY
  • 格式化整个磁盘:
mkfs.btrfs /dev/sdX

④NTFS 文件系统(需要安装 ntfs-3g 软件包):

  • 格式化主分区或整个磁盘:
mkfs.ntfs /dev/sdXY

 注意:

进行磁盘格式化操作时,请谨慎选择磁盘分区设备,并确保你具有足够的权限。如果没有足够的权限,你可能需要使用sudo命令或管理员权限来执行格式化命令。

6.5磁盘格式化步骤示例

对刚才创建的逻辑分区5进行格式化。

1)格式化根下的 sda5分区,格式化类型为.ext3,执行以下命令:

mkfs.ext3 /dev/sda5

 注意:

mkfs.ext3 命令和设备路径之间不应该有多余的空格。

结果如图:当最后一行出现完成或者done,意味着格式化已经进行完毕。

2)查看格式化完毕后的分区的文件类型信息,执行以下命令:

ll /dev/sda5

结果如图:

从结果中可以看出来sda5为一个块设备文件。8表示主设备号,5表示的为从设备号。 所有者为 root 用户,所属组为 disk,文件权限设置为读写权限只有 root 用户和 disk 组可访问。

到这里已经格式化好的sda5能用吗?答案是不能,要想用这个磁盘我们还需要挂载。 

七、磁盘挂载

7.1认识磁盘挂载

    在Linux中,磁盘挂载是指将一个文件系统连接到文件系统树的指定目录上,以便操作系统可以访问该文件系统中的文件和目录。挂载使得磁盘上的数据可以在文件系统层次结构中显示,并能够通过指定的挂载点进行读取和写入。

从5.4.4示例磁盘查看中得知,我存储的所有文件都在sda3下存放着,sda3也就是我的根。那我要在sda5中写入文件时,首先要sda5要与sda3先建立一个联系,这个联系就是一个目录。建立联系的过程叫做挂载

当我访问sda3底下的这个目录的时候,实际上我访问的才是sda5这个设备文件。这个目录相当于一个访问sda5的入口,可以理解为一个接口,有了这个接口才可以访问这个磁盘。

7.2磁盘挂载作用

磁盘挂载的作用主要有以下几点:

  1. 访问存储设备数据:通过挂载分区或存储设备,操作系统可以直接访问磁盘上的文件和目录。这样,用户可以读取、写入和执行存储设备中的数据。

  2. 扩展文件系统:通过挂载新的磁盘分区或存储设备,可以将其添加到文件系统树中,从而扩展了可用的存储空间。这使得管理员可以灵活地管理文件系统的容量,并根据需要增加或减少存储空间。

  3. 实现数据隔离:通过将不同的文件系统挂载到不同的目录上,可以实现数据的隔离和管理。这对于多用户环境或多个应用程序之间的数据隔离是非常重要的。

  4. 优化性能:挂载可以使用不同的文件系统选项来优化磁盘操作的性能。例如,可以使用 noatime 选项禁用文件的最后访问时间更新,从而减少对磁盘的写操作,提高性能。

  5. 保护系统安全:通过挂载只读文件系统,可以防止对关键系统文件进行未经授权的修改。这有助于保护系统免受恶意软件或非法访问的影响。

7.3磁盘挂载命令

在Linux中,可以使用 mount命令 进行磁盘挂载。以下是一些常见的磁盘挂载命令及其用法:

①挂载磁盘分区:

mount /dev/sdX /mnt/mydisk
  • /dev/sdX代表你要挂载的磁盘分区设备
  • /mnt/mydisk是你的挂载点,指定要将分区挂载到文件系统树的哪个目录上

②挂载文件系统使用特定的文件系统类型: 

mount -t ext4 /dev/sdX /mnt/mydisk
  • ext4代表你要挂载的文件系统类型,
  • /dev/sdX是磁盘分区设备,
  • /mnt/mydisk是挂载点 

③以只读方式挂载磁盘分区: 

mount -o ro /dev/sdX /mnt/mydisk

④通过UUID挂载磁盘分区: 

mount UUID="xxx" /mnt/mydisk
  • xxx代表磁盘分区的UUID,
  • /mnt/mydisk是挂载点。 

⑤挂载光盘或ISO镜像文件: 

mount /dev/cdrom /mnt/cdrom
或
mount -o loop path/to/iso/image.iso /mnt/cdrom
  • /dev/cdrom:光盘设备路径,表示物理光驱设备。
  • path/to/iso/image.iso:ISO镜像文件的路径。
  • /mnt/cdrom:挂载点路径,指定要将光盘或ISO镜像文件挂载到文件系统树的哪个目录上。

 ⑥挂载网络共享目录(使用 NFS 协议):

mount -t nfs server:/shared/directory /mnt/nfs
  • server:NFS 服务器的主机名或 IP 地址。
  • /shared/directory:共享目录在服务器上的路径。
  • /mnt/nfs:挂载点路径,指定要将网络共享目录挂载到文件系统树的哪个目录上。

⑦卸载挂载的磁盘分区:

umount /mnt/mydisk
  • /mnt/mydisk:要卸载的挂载点路径。

 注意:

在进行挂载操作时,请确保选择了正确的磁盘分区和挂载点,并具有足够的权限执行挂载和卸载命令。如果没有足够的权限,可能需要使用sudo命令或管理员权限来执行这些操作。

另外,还可以通过编辑/etc/fstab文件来设置系统启动时自动挂载磁盘分区。这样可以避免手动挂载每个分区的步骤,确保系统正常启动后,分区能够正确挂载到指定的挂载点。

7.4磁盘挂载步骤

磁盘挂载是通过在Linux系统中使用mount命令来实现的。以下是挂载的基本步骤:

①创建挂载点:

选择一个目录作为挂载点,通常位于/mnt/media目录下。可以使用mkdir命令创建挂载点,例如:

mkdir /mnt/mydisk

②挂载设备:

使用mount命令将磁盘分区或存储设备挂载到目标目录上,例如: 

mount /dev/sdX /mnt/mydisk
  • /dev/sdX代表你要挂载的磁盘分区设备
  • /mnt/mydisk是你的挂载点

③访问文件系统:

挂载成功后,可以通过挂载点来访问磁盘分区上的文件和数据,例如: 

cd /mnt/mydisk
ls

7.5磁盘挂载示例

以我创建的磁盘为例

1)挂载点目录:将磁盘切到根目录, media 和 mnt 这两个目录被叫做挂载点目录。除此之外,我们也可以自己创建一个目录作为一个挂载点目录 

2)临时挂载:将指定的一个目录作为挂载点目录时,如果挂载点的目录有文件,那么文件会被隐藏。因此当我们需要挂载目录时,最好新建一个空文件夹来作为挂在点目录。(重启后失效
①首先在根下创建一个test目录用于测试,在test目录中创建一个文件file,和一个目录directory。

 

②然后 挂载sda5,使用命令:

mount /dev/sda5 /test

意思就是说将/dev/sda5挂载到test目录中,然后刷新一下切出去,重新进到这个目录。(当然也可以不刷新直接使用  ll命令  看看会出现什么) 

③现在在test目录下的操作就相当于在sda5中进行操作,在里面写一个文件,执行命令:

echo white > colour

ll

cat colour

结果如下: 

 

④按照上一步,colour文件是在sda5中,那么将挂载的sda5给卸载掉。再进入test查看里面的文件有什么。

注意:

卸载时一定要退出目录,不然无法进行卸载。

执行卸载的命令:

umount /dev/sda5
或者
umount /test 

结果如下:

 

⑤同理根据第③步的操作,在sda5里面写入一个文件。那么这次将这个sda5直接挂载到新建的一个目录test2。同理应该能想到,挂载后这个空文件夹也能够读到colour这个文件。(当然也要刷新一下)

到这里就能说明colour这个文件是属于磁盘里的而非目录里的。
现在回到开头,在之前说过,我们这种挂载方式为临时挂载,因此你在命令行中输入reboot重启Linux后,进入test2中是看不到任何文件的。这里不再演示。 

3)怎样查看到当前系统上所有磁盘的挂载信息?
①使用mount命令,但读起来较费劲,标记可以告诉我们在哪里挂载的,磁盘的格式类型,读写权限,等其他信息。 如图所示:

根据输出中显示的挂载信息得知:

  1. /dev/sda3 分区被挂载到根目录 / 上,使用 XFS 文件系统。
  2. /dev/sda1 分区被挂载到 /boot 目录上,也使用 XFS 文件系统。
  3. /dev/sda5 分区被挂载到 /test2 目录上,使用 Ext3 文件系统。

②使用命令df -h这更易于我们对磁盘的信息的了解。包括文件的大小,已经使用的分区大小,总共可用分区的大小,使用率,以及挂载的位置。(推荐)

注意:

我当时为sda5分配了500M的大小,但由于格式化后,要存储一些记录格式化的类型的信息。所以会占用一些空间,导致实际空间会比我预先分配的空间要小。 

4)命令:blkid:查看对应分区的UUID(编号)。UUID唯一标识每一个分区,防止错误的挂载。除此之外,还会显示分区的类型。(建议先复制一下sda5的UUID,一会儿会用到) 

 

5)永久挂载:使用永久挂载,就意味着它开机会自动挂载。
①使用vim编辑 /etc/fstab  在命令行直接输入vim /etc/fstab 就可以编辑,实现开机自动挂载。

 

②在将光标移到UUID行,在命令模式下按o键进入插入模式,同时换行。将4)步骤中复制好的sda5的UUID编号,粘贴进来。/test挂载点目录,ext3文件系统类型,第一个0表示不备份,第二个0表示不检查。注意格式一定要正确,可以不用对齐,最好的判断依据是依照颜色。
写完之后  :wq 保存退出。

Ⅰ、写完之后,使用mount命令,是看不到test挂载信息的,只有开机时才会读取那个文件。你只需reboot然后打开相应的目录去查找我们之前创建的colour文件是否存在来判断自己是否挂载成功。

Ⅱ、如果你着急的就想查看test的挂载分区存储的信息。由于内核还没有读取这个命令,我们使用mount -a 这个命令来让内核读取这个文件。然后用mount | grep /test来过滤信息,查看是否挂上。要么直接省去上一步,直接到test目录下去找colour文件是否存在。(如果失败了不要着急,很有可能你没有重新进这个区哦)

🆗!有关Linux磁盘管理的内容总结就先到此为止了,肝了一夜终于把这点梳理汇总完毕。

在此特别感谢博主 :Slash · Young  的精彩文章,经过学习和实际练习学到了很多东西!再次为大家奉上示例原文链接:http://t.csdnimg.cn/aQ6FZ

本文总结多多少少会存在一些问题,希望广大网友发现后留言评论指导,本人十分感谢!如果觉得本文对您有帮助的话,麻烦点个关注/收藏,感谢支持!!!爱你们!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#,深度优先搜索(DFS)、广度优先搜索(BFS)算法的源代码与数据可视化

概述 下载源代码&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1sLxMT78LVg2dWyXXFvM--w?pwd2kwl 提取码&#xff1a;2kwl --来自百度网盘超级会员V5的分享https://pan.baidu.com/s/1sLxMT78LVg2dWyXXFvM--w?pwd2kwl 深度优先搜索&#xff08;亦称深度优先遍历&a…

uniapp选择android非图片文件的方案踩坑记录

这个简单的问题我遇到下面6大坑&#xff0c;原始需求是选择app如android的excel然后读取到页面并上传表格数据json 先看看效果 uniapp 选择app excel文件读取 1.uniapp自带不支持 uniapp选择图片和视频非常方便自带已经支持可以直接上传和读取 但是选择word excel的时候就出现…

红外传感器(含代码注释)

一.引言 红外传感器是一种能够检测和测量红外光的传感器。由于红外光的特性&#xff0c;红外传感器在许多领域中得到了广泛的应用&#xff0c;如军事、航空航天、医疗、环保、工业控制等。本文将详细介绍红外传感器的原理、应用以及未来发展趋势。 二.红外传感器的工作原理 红外…

Vue3-41-组件- 动态组件 component 标签 和 is 属性 的使用

说明 <component> 标签 有一个 is 属性&#xff0c; 可以给这个 is属性 赋值为一个 组件对象&#xff0c; 这样这个<component> 标签就可以渲染指定的组件对象了。 使用案例 本案例中会 准备两个简单的组件&#xff0c; 在 App.vue 中导入这两个组件&#xff0c;并…

Thonny开发ESP32点灯

简介 ESP32是一款功能强大的低功耗微控制器&#xff0c;由乐鑫&#xff08;Espressif&#xff09;公司开发。它集成了Wi-Fi和蓝牙功能&#xff0c;适用于各种物联网应用。Thonny是一款基于Python的开源集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为MicroPython设计…

SpringBoot学习(六)-SpringBoot整合Shiro

12、Shiro 12.1概述 12.1.1简介 Apache Shiro是一个强大且易用的Java安全框架 可以完成身份验证、授权、密码和会话管理 Shiro 不仅可以用在 JavaSE 环境中&#xff0c;也可以用在 JavaEE 环境中 官网&#xff1a; http://shiro.apache.org/ 12.1.2 功能 Authentication…

【Leetcode】230. 二叉搜索树中第K小的元素

一、题目 1、题目描述 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例1: 输入:root = [3,1,4,null,2], k = 1 输出:1示例2: 输入:root = [5,3,6,2,4,null,null,1], k = 3 输出:3提示: 树中…

Supershell反溯源配置

简介 项目地址&#xff1a;https://github.com/tdragon6/Supershell Supershell是一个集成了reverse_ssh服务的WEB管理平台&#xff0c;使用docker一键部署&#xff08;快速构建&#xff09;&#xff0c;支持团队协作进行C2远程控制&#xff0c;通过在目标主机上建立反向SSH隧…

1389 蓝桥杯 二分查找数组元素 简单

1389 蓝桥杯 二分查找数组元素 简单 //C风格解法1&#xff0c;lower_bound(),通过率100% //利用二分查找的方法在有序的数组中查找&#xff0c;左闭右开 #include <bits/stdc.h> using namespace std;int main(){int data[200];for(int i 0 ; i < 200 ; i) data[i] …

Android 15即将到来,或将推出5大新功能特性

Android15 OneUI电池优化 三星最近完成了对其所有设备的稳定版 One UI 6.0 更新的推出&#xff0c;引起了用户的极大兴奋。据新出现的互联网统计数据显示&#xff0c;即将发布的基于 Android 15 的 One UI 7 将通过优化电池和功耗来重新定义用户体验&#xff0c;这是一项具有突…

听GPT 讲Rust源代码--compiler(19)

File: rust/compiler/rustc_target/src/spec/mips_unknown_linux_gnu.rs 该文件&#xff08;rust/compiler/rustc_target/src/spec/mips_unknown_linux_gnu.rs&#xff09;是Rust编译器针对MIPS架构上的Linux系统的目标描述文件。它的作用是定义了在这个目标上编译时的一些配置…

商品砍价系统设计原理与实践:技术解析与注意事项

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

Java序列化篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是java序列化,如何实现java序列化?二、保存(持久化)对象及其状态到内存或者磁盘三、序列化对象以字节数组保持-静态成员不保存四、序列化用户远程对象传输前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

第16课 播放rtsp流

在现实生活中有许多rtsp摄像头&#xff0c;这些摄像头如果能充分利用起来可以生成很多有趣、有用的应用&#xff1a;比如户外互动大屏等。在第4课&#xff0c;我们实现了一个播放器&#xff0c;当时来用它播放rtmp流和mp4时它好象工作的很好。这节课我们就用它来播放rtsp流试试…

物联网产品中,终端、网关、协议、PaaS、SaaS之间的关系

在互联网产品中&#xff0c;经常提到的终端、网关、协议、PaaS、SaaS之间&#xff0c;到底有什么关系呢&#xff1f; 一、基本概念 在百度/其他地方搜集的信息中&#xff0c;对于终端、网关、协议、PaaS、SaaS的解释各有不同&#xff0c;整理如下&#xff1a; 终端&#xff1…

CMU15-445-Spring-2023-Project #1 - Buffer Pool

前置知识&#xff0c;参考上一篇博客&#xff1a;CMU15-445-Spring-2023-Project #1 - 前置知识&#xff08;lec01-06&#xff09; 在存储管理器中实现缓冲池。缓冲池负责将物理页从主内存来回移动到磁盘。它允许 DBMS 支持大于系统可用内存量的数据库。缓冲池的操作对系统中的…

【书生·浦语大模型实战营01】《书生·浦语大模型全链路开源体系》

《书生浦语大模型全链路开源体系》 1. 大模型成为热门关键词 LLM发展时间轴 2. 书生浦语全链条开源开放体系 微调&#xff1a;XTuner 支持全参数微调支持LoRA等低成本微调 评测&#xff1a;OpenCompass 全方位评测&#xff0c;性能可复现80套评测集&#xff0c; 40万道题目…

【大数据】Zookeeper 数据写入与分布式锁

Zookeeper 数据写入与分布式锁 1.数据是怎么写入的2.基于 Zookeeper 实现分布式锁 1.数据是怎么写入的 无论是 Zookeeper 自带的客户端 zkCli.sh&#xff0c;还是使用 Python&#xff08;或者其它语言&#xff09;实现的客户端&#xff0c;本质上都是连接至集群&#xff0c;然…

Linux 上 Nginx 配置访问 web 服务器及配置 https 访问配置过程记录

目录 一、前言说明二、配置思路三、开始修改配置四、结尾 一、前言说明 最近自己搭建了个 Blog 网站&#xff0c;想把网站部署到服务器上面&#xff0c;本文记录一下搭建过程中 Nginx 配置请求转发的过程。 二、配置思路 web项目已经在服务器上面运行起来了&#xff0c;运行的端…

Qt pro文件

1. 项目通常结构 2.pri文件 pri文件可定义通用的宏&#xff0c;例如创建一个COMMON.pri文件内容为 COMMON_PATH D:\MyData 然后其它pri或者pro文件如APPTemplate.pro文件中通过添加include(Common.pri) &#xff0c;QtCreator就会自动在项目结构树里面创建对应的节点 3.变量…