Linux磁盘

Linux磁盘

Linux磁盘分区

  • Linux 磁盘分区机制是操作系统管理磁盘空间的核心部分。通过分区,可以将一块物理磁盘划分为多个逻辑部分,每个部分可以独立管理、格式化和挂载。

  • 磁盘分区的基本概念

    • 分区:将一块物理磁盘划分为多个逻辑部分,每个部分称为一个分区。
    • 分区表:记录磁盘分区信息的结构,存储在磁盘的特定位置。
    • 分区类型
      • 主分区(Primary Partition):最多 4 个,可以直接用于安装操作系统或存储数据。
      • 扩展分区(Extended Partition):一种特殊的主分区,用于创建更多逻辑分区。
      • 逻辑分区(Logical Partition):在扩展分区内创建,数量不限。
  • Linux中万物皆文件,磁盘在Linux也是一个个的文件

  • 通过将磁盘进行分区,再将这些分区挂载到Linux系统中的不同文件中,就可以操作这些文件来操作磁盘以及对应的磁盘分区

  • 查看磁盘信息

    • 使用 lsblkfdisk -l、 查看磁盘信息:

    • lsblk
      lsblk -f #查看详细信息
      fdisk -l #需要管理员权限
      
    • [root@learn /]# lsblk -f
      NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
      sda                                                      
      ├─sda1 xfs          b04e153e-0078-445f-8fff-cf840f33eb9c /boot
      ├─sda2 xfs          9aa009ed-b2d0-4cda-b5a6-f8e515f32a62 /
      └─sda3 swap         3a951480-b797-4f0c-a69a-d779f2c8db25 [SWAP]
      sr0
      
      • sda代表这是sd类型的第一块磁盘,如果在添加一块sd类型的磁盘则为sdb
      • sda1为磁盘的第一块分区,这个分区挂载在Linux系统下的/boot目录
        • 真正存放文件的位置是在该磁盘的分区位置,Linux下只是一个目录用来操作磁盘

添加磁盘和分区

  • 将新磁盘连接到服务器或计算机(物理连接或虚拟添加)。

  • 确保系统识别到新磁盘。

    • 使用lsblk命令

    • 新磁盘通常会显示为 /dev/sdb/dev/sdc 等(具体名称取决于系统配置)。

    • [root@learn ~]# lsblk -f
      NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
      sda                                                      
      ├─sda1 xfs          b04e153e-0078-445f-8fff-cf840f33eb9c /boot
      ├─sda2 xfs          9aa009ed-b2d0-4cda-b5a6-f8e515f32a62 /
      └─sda3 swap         3a951480-b797-4f0c-a69a-d779f2c8db25 [SWAP]
      sdb                                                      
      sr0   
      
  • 为磁盘添加分区

    • 使用 fdisk 创建分区(适用于 MBR 分区表)

    • 打开 fdisk:硬盘一般自动挂载到dev目录下

      • sudo fdisk /dev/sdb
        
    • 创建新分区:

      • 输入 n 创建新分区。
      • 选择分区类型(主分区 p 或扩展分区 e)。
      • 设置分区编号(默认即可)。
      • 设置起始扇区(默认即可)。
      • 设置分区大小(例如 +20G 或直接按回车使用全部空间)。
    • 保存分区表:

      • 输入 w 保存并退出。
    • [root@learn ~]# lsblk -f
      NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
      sda                                                      
      ├─sda1 xfs          b04e153e-0078-445f-8fff-cf840f33eb9c /boot
      ├─sda2 xfs          9aa009ed-b2d0-4cda-b5a6-f8e515f32a62 /
      └─sda3 swap         3a951480-b797-4f0c-a69a-d779f2c8db25 [SWAP]
      sdb                                                      
      └─sdb1                                                   
      sr0
      
    • 可以看到已经创建了分区,但是没有文件类型和挂载点

      • 使用 mkfs 命令格式化分区。将 /dev/sdb1 格式化为 ext4 文件系统:

      • sudo mkfs.ext4 /dev/sdb1
        
      • 格式化完分区后就有了文件类型和UUID,接下来需要进行挂载

    • 挂载分区(命令行)

      • 挂载点是一个空目录,用于访问分区中的文件系统,创建 /mnt/data 作为挂载点:

        • sudo mkdir /mnt/data
          
      • 使用 mount 命令挂载分区:

        • sudo mount /dev/sdb1 /mnt/data
          
      • 挂载点必须为空:挂载点目录不能包含文件或子目录。

      • 权限问题:确保挂载点目录的权限正确。

      • 文件系统类型:挂载时必须指定正确的文件系统类型。(已经格式化)

      • [root@learn mnt]# lsblk -f
        NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
        sda                                                      
        ├─sda1 xfs          b04e153e-0078-445f-8fff-cf840f33eb9c /boot
        ├─sda2 xfs          9aa009ed-b2d0-4cda-b5a6-f8e515f32a62 /
        └─sda3 swap         3a951480-b797-4f0c-a69a-d779f2c8db25 [SWAP]
        sdb                                                      
        └─sdb1 ext4         30e2c64a-b007-467e-98a2-157668c597c0 /mnt/data
        sr0 
        
      • 可以看到已经挂载完毕,操作data目录就是相当与操作该磁盘空间

    • 挂载分区(文件)

      • 命令行挂载分区重启系统后失效

      • 为了实现开机自动挂载,需要编辑 /etc/fstab 文件。

      • UUID=9aa009ed-b2d0-4cda-b5a6-f8e515f32a62 /                       xfs     defaults        0 0
        UUID=b04e153e-0078-445f-8fff-cf840f33eb9c /boot                   xfs     defaults        0 0
        UUID=3a951480-b797-4f0c-a69a-d779f2c8db25 swap                    swap    defaults        0 0
        ~                                                                                           
        
      • 可以通过UUID进行挂载,也可以通过文件名称进行挂载

      • UUID=a1b2c3d4-1234-5678-9101-112131415161  /mnt/data  ext4  defaults  0  2
        /dev/sdb1                                  /mnt/data  ext4  defaults  0  2
        
        • UUID:分区的唯一标识。
        • /mnt/data:挂载点。
        • ext4:文件系统类型。
        • defaults:挂载选项。
        • 0:是否备份(0 表示不备份)。
        • 2:是否检查文件系统(0 表示不检查,1 表示优先检查,2 表示次优先检查)。
    • 卸载挂载点

      • 使用 umount 命令卸载分区或通过设备卸载来卸载挂载点,不会删除分区:

        sudo umount /mnt/data
        sudo umount /dev/sdb1
        

查询磁盘情况

  • df 命令

    • 功能:用于显示文件系统的磁盘使用情况,包括总容量、已用空间、可用空间和挂载点等信息。

    • 常用选项

      • -h:以易读的格式显示(如 KB、MB、GB)。

      • -T:显示文件系统类型。

      • df -h
        
        Filesystem      Size  Used Avail Use% Mounted on
        /dev/sda1        50G   20G   30G  40% /
        tmpfs           2.0G     0  2.0G   0% /dev/shm
        
    • df 显示的是文件系统的整体使用情况。

    • 如果指定文件或目录,df 会显示该文件或目录所在文件系统的使用情况。

  • du 命令

    • 功能:用于显示目录或文件的磁盘使用情况,可以递归地计算目录中所有文件的大小。

    • 常用选项

      • -h:以易读的格式显示。
      • -s:显示总大小(汇总)。
      • --max-depth=N:限制显示的目录层级。
      • -a:显示所有文件的大小(包括普通文件)。
      • -c:显示总计信息。
    • # 显示目录的总大小:
      du -sh /path/to/directory
      1.2G    /path/to/directory
      
      # 显示目录中每个子目录的大小
      du -h --max-depth=1 /path/to/directory
      512M    /path/to/directory/subdir1
      700M    /path/to/directory/subdir2
      1.2G    /path/to/directory
      
    • du 显示的是目录或文件的实际磁盘使用情况。

    • 如果未指定目录,du 会显示当前目录的使用情况。

posted @ 2025-03-26 20:17  QAQ001  阅读(40)  评论(0)    收藏  举报