分类: 云服务器

  • Linux磁盘与文件系统管理

    Linux磁盘与文件系统管理

    磁盘分类与设备命名

    Linux如何识别和命名磁盘是所有磁盘管理操作的基础

    分类 设备名 描述
    IDE / ATA (PATA) 硬盘 /dev/hda, /dev/hdb 较早的硬盘接口标准,现在已不常见。a, b 代表主/从设备。分区名为 /dev/hda1, /dev/hda2
    SATA/SAS/SCSI 硬盘 /dev/sda, /dev/sdb 最常见的硬盘类型。a, b 代表第一块、第二块磁盘。分区名为 /dev/sda1, /dev/sda2。
    NVMe 固态硬盘 /dev/nvme0n1 高速 M.2 接口的SSD。nvme0是控制器,n1是命名空间(磁盘)。分区名为 /dev/nvme0n1p1。
    虚拟化磁盘 (VirtIO) /dev/vda, /dev/vdb 在KVM等虚拟化环境中常见的设备名。分区名为 /dev/vda1, /dev/vda2
    分区方案 MBR vs GPT MBR是传统方案,最大2TB,最多4主分区。GPT是现代方案,支持大容量,分区数多

    分区管理 (fdisk & gdisk)

    分区是将一块物理磁盘划分成多个逻辑区域的过程

    # 列出所有磁盘及其分区信息
    fdisk -l
    
    # 以树状结构清晰显示
    lsblk
    

    • 使用 fdisk (用于MBR分区),fdisk 是一个交互式的磁盘分区工具

    例如对新磁盘 /dev/sdb 进行分区

    # 启动fdisk交互模式,目标是/dev/sdb
    fdisk /dev/sdb
    

    格式化分区 (mkfs)

    分区后,必须创建文件系统 (格式化),才能存储数据。

    常用文件系统类型:

    • ext4: Linux最常用的日志文件系统,稳定可靠。

    • xfs: 高性能的日志文件系统,适合大文件和高性能计算

    # 将 /dev/sdb1 分区格式化为 xfs 文件系统
    mkfs.xfs /dev/sdb1
    
    #查看格式化类型
    blkid /dev/sdb1
    
    # 将 /dev/sdc1 分区格式化为 ext4 文件系统
    mkfs.ext4 /dev/sdc1
    

    逻辑卷管理 (LVM)

    LVM (Logical Volume Management) 提供了比传统分区更灵活的磁盘管理方式,可以动态调整大小。

    物理卷 (PV) -> 卷组 (VG) -> 逻辑卷 (LV),(将物理分区加入到存储池,再从存储池中划分出可用的逻辑分区)

    例如:将 /dev/sdb1 和 /dev/sdc1 组合成LVM

    # 1. 创建物理卷 (PV)
    pvcreate /dev/sdb1 /dev/sdc1
    
    # 2. 创建卷组 (VG),命名为 my_vg
    vgcreate my_vg /dev/sdb1 /dev/sdc1
    
    # 3. 从卷组 my_vg 中创建一个名为 my_lv 的逻辑卷 (LV),大小为15GB
    lvcreate -n my_lv -L 15G my_vg
    
    # 4. 格式化创建好的逻辑卷
    mkfs.ext4 /dev/my_vg/my_lv
    
    # 5. LVM逻辑卷可以被挂载和使用
    mkdir /mnt/lvm_data
    mount /dev/my_vg/my_lv /mnt/lvm_data
    

    挂载与卸载 (mount & umount)

    挂载 (mount)

    # 将 /dev/sdb1 分区挂载到 /data 目录
    mkdir /data
    mount /dev/sdb1 /data
    

    卸载 (umount)

    # 通过挂载点卸载
    umount /data
    # 或者通过设备名卸载
    umount /dev/sdb1
    

    永久挂载 (/etc/fstab) 为了系统启动时能自动挂载,需要修改 /etc/fstab 文件 fstab 文件格式: <设备> <挂载点> <文件系统类型> <挂载选项>

    # 首先获取 /dev/sdb1 的UUID
    blkid /dev/sdb1
    # 将获取到的UUID写入 /etc/fstab
    # 假设UUID为 "a1b2c3d4-..."
    # 在 /etc/fstab 文件末尾添加一行:
    UUID="a1b2c3d4-..."  /data  ext4  defaults  0  2
    

    验证 fstab 配置: sudo mount -a

    检查磁盘空间 (df & du)

    查看文件系统空间 (df)

    # 以易读格式显示所有挂载的文件系统的空间使用情况
    df -h
    

    查看文件/目录大小 (du)

    # 只显示 /var/log 目录的总大小
    du -sh /var/log