15. 在 Ubuntu Server 上管理存储和磁盘:简明指南

简介

在 Ubuntu Server 上管理存储和磁盘是管理员的一项关键技能,尤其是在云平台(AWS、Azure、Google Cloud)或虚拟化平台(VMware、Hyper-V、Proxmox)等动态环境中。扩展操作系统磁盘、初始化数据磁盘或优化存储配置等任务都是常见场景。虽然自动化工具通常可以简化这些流程,但扎实理解底层步骤对于有效排查故障和手动干预至关重要。

在本指南中,我们将探讨 Ubuntu Server 上的存储和磁盘管理,包括文件系统类型、分区、格式化和磁盘优化。通过针对物理环境和虚拟化环境量身定制的实用示例,本指南将为你提供高效处理存储管理任务的知识。


往期文章:

01. Ubuntu Server 简介 – SysOSX: AI & Cloud

02. 如何搭建你的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud

04. Ubuntu Server 用户与权限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 网络基础:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud

07. 修补和更新 Ubuntu Server:全面指南 – SysOSX: AI & Cloud

08. 保护你的 Ubuntu Server:加固与防护的实用步骤 – SysOSX: AI & Cloud

09. Ubuntu 服务器审计与日志记录

10. Ubuntu Server 系统监控工具:全面指南 – SysOSX: AI & Cloud

11. Ubuntu 服务器集中式日志记录:必读指南 – SysOSX: AI & Cloud

12. Ubuntu Server 审计与合规:最佳实践 – SysOSX: AI & Cloud

13. 搭建用于托管和 Web 应用的 Ubuntu Server:终极指南 – SysOSX: AI & Cloud

14. 在一台 Ubuntu Server 上托管多个网站:实用技巧 – SysOSX: AI & Cloud



了解文件系统类型

文件系统定义了数据在磁盘上的存储和访问方式。选择合适的文件系统对于性能、可靠性和兼容性至关重要。以下是 Ubuntu 服务器最常见的文件系统:

Ubuntu 的常见文件系统

  1. Ext4(第四代扩展文件系统)
    • Ubuntu 服务器的默认文件系统。
    • 具有日志功能、支持大文件,性能出色。
    • 非常适合通用工作负载。
    • 格式化命令:sudo mkfs.ext4 /dev/sdX1
  2. XFS
    • 专为大文件和高 I/O 工作负载设计的高性能日志文件系统。
    • 常用于企业和云环境。
    • 格式化命令:sudo mkfs.xfs /dev/sdX1
  3. Btrfs(B 树文件系统)
    • 提供快照支持、数据压缩和 RAID 功能的高级文件系统。
    • 适用于复杂工作负载和需要频繁备份的环境。
  4. NTFS
    • 主要用于与 Windows 环境兼容。
    • 适用于双启动系统或 Linux 与 Windows 之间的共享磁盘。
  5. FAT32 和 exFAT
    • 用于可移动驱动器和跨平台兼容的轻量级文件系统。

选择合适的文件系统

  • Ext4:通用工作负载。
  • XFS:企业或云环境中的高性能工作负载。
  • Btrfs:快照和压缩等高级功能。
  • NTFS/FAT32:跨平台兼容性。

在 Ubuntu Server 上对磁盘进行分区

分区将物理磁盘划分为逻辑部分,从而更好地组织和管理数据。这对于分离系统文件、备份和应用数据尤其有用。

在 Ubuntu Server 上对磁盘进行分区的步骤

  • 识别磁盘:
    使用lsblk 命令列出所有可用磁盘及其分区:lsblk
  • 创建分区:
    使用fdisk或parted创建新分区。例如,使用fdisk: sudo fdisk /dev/sdX
    • 按n创建新分区。
    • 指定分区大小和类型。
    • 按w将更改写入磁盘。
  • 验证分区:
    再次运行lsblk 以确认新分区已创建。

在 Ubuntu Server 上格式化数据磁盘

格式化通过创建文件系统来为分区的使用做好准备。

在 Ubuntu Server 上格式化数据磁盘的步骤

  • 安装必要的工具:
    确保你已安装mkfs 实用程序(大多数发行版默认包含)。
  • 格式化分区:
    使用mkfs命令格式化分区。示例: sudo mkfs.ext4 /dev/sdX1
  • 创建挂载点:
    重要提示:在云环境中,避免使用/mnt作为挂载点。/mnt目录通常在云平台(如 Azure 或 AWS)中保留给临时磁盘使用,可能会在重启或系统更新期间被清除。相反,请使用自定义目录,例如/data或/storage。例如:
sudo mkdir /data
  • 挂载分区:
    将格式化后的分区挂载到新创建的目录:
sudo mount /dev/sdX1 /data
  • 持久化挂载:
    为确保分区在启动时自动挂载,请将其添加到/etc/fstab文件:
echo '/dev/sdX1 /data ext4 defaults 0 2' | sudo tee -a /etc/fstab  

持久化挂载:在云环境中使用 UUID

为确保分区在启动时自动挂载,将其添加到/etc/fstab文件至关重要。然而,在云环境中,建议使用UUID(通用唯一标识符)来挂载磁盘,而不是直接引用设备名称(例如/dev/sdX1)。设备名称可能会在系统重启后发生变化,特别是在虚拟化或云环境中,这可能导致挂载失败。使用 UUID 可确保一致且可靠的挂载。

使用 UUID 持久化挂载的步骤

  • 查找分区的 UUID:
    使用blkid命令获取分区的 UUID:
sudo blkid
  • 示例输出:
/dev/sdX1: UUID="123e4567-e89b-12d3-a456-426614174000" TYPE="ext4"
  • 编辑/etc/fstab文件:
    在/etc/fstab文件中使用 UUID 而不是设备名称添加一个条目。
    示例:echo 'UUID=123e4567-e89b-12d3-a456-426614174000 /data ext4 defaults 0 2' | sudo tee -a /etc/fstab
  • 验证配置:
    通过卸载分区并使用mount -a命令重新挂载来测试配置:
sudo umount /data  
sudo mount -a  

  • 重启并确认:
    重启系统,以确保磁盘在启动期间正确挂载:sudo reboot

为什么要在云环境中使用 UUID?

  • 一致性:像/dev/sdX这样的设备名称可能会在重启后发生变化,这是由于云平台中的动态设备枚举所致。
  • 可靠性:UUID 对每个分区都是唯一的,并且保持不变,从而确保可靠的挂载。
  • 最佳实践:AWS、Azure 和 Google Cloud 等云提供商建议在生产环境中使用 UUID 或标签来挂载磁盘。

云和虚拟化场景:磁盘扩展与初始化

场景 1:操作系统磁盘扩展

在 AWS、Azure 或 Google Cloud 等云平台上,可以从物理层扩展操作系统磁盘。许多平台会自动检测并扩展操作系统磁盘。但是,可能需要手动干预来调整文件系统的大小,以利用新增空间。

在 Ubuntu Server 上扩展操作系统磁盘的步骤:

  1. 检查磁盘空间:
    验证扩展后的磁盘空间:lsblk: lsblk
  2. 调整文件系统大小:
    使用resize2fs 用于 Ext4 文件系统:sudo resize2fs /dev/sdX1

场景 2:数据磁盘初始化,请参阅上一节


监控和优化磁盘使用情况

监控磁盘使用情况

  1. 检查磁盘空间使用情况:
    使用df命令显示磁盘空间使用情况:df -h
  2. 分析目录使用情况:
    使用du命令检查特定目录的大小:du -sh /var/log
  3. 高级监控:
    安装ncdu以进行交互式磁盘使用情况分析:
sudo apt install ncdu 
ncdu /

优化磁盘使用情况

  • 删除临时文件:
sudo apt-get autoclean  
sudo apt-get clean  
sudo apt-get autoremove  

  • 查找占用磁盘空间的大文件
    find命令查找大文件:
sudo find / -type f -size +100M

参考资料

在下一篇文章中,我们将深入探讨数据库服务器的搭建 (在 Ubuntu 服务器上)。你将学到如何:

  • 安装并配置MySQL或MariaDB以供你的应用程序使用。
  • 保护你的数据库服务器,以保障敏感数据的安全。
  • 针对生产环境优化数据库性能。

无论你是在云端还是本地部署数据库,本指南都将提供可行的见解,帮助你有效管理数据库基础设施。

千万不要错过——敬请关注!