Linux 挂载新磁盘教程

Linux 挂载新磁盘教程

在 Linux 系统中添加新磁盘并正确挂载是系统管理员的基本技能。本教程将详细介绍如何分区、格式化、挂载新磁盘,并设置开机自动挂载。

前提条件

  • 具有 root 或 sudo 权限的 Linux 系统
  • 已经安装的新磁盘(虚拟机或物理磁盘)
  • 基本的命令行操作知识

步骤概览

  1. 检测新磁盘
  2. 分区磁盘
  3. 格式化分区
  4. 创建挂载点
  5. 临时挂载磁盘
  6. 获取磁盘 UUID
  7. 配置 /etc/fstab 实现开机自动挂载
  8. 验证挂载

详细步骤

1. 检测新磁盘

首先,检查系统中可用的磁盘设备:

# 列出所有磁盘和分区
sudo fdisk -l

# 或者使用 lsblk 查看树状结构
lsblk

假设新磁盘为 /dev/sdb(请根据实际情况替换)。

2. 分区磁盘

使用 fdiskparted 对磁盘进行分区。这里以 fdisk 为例:

sudo fdisk /dev/sdb

在 fdisk 交互界面中:

  • 输入 n 创建新分区
  • 选择分区类型(通常选择 p 主分区)
  • 选择分区号(如 1)
  • 接受默认起始扇区
  • 指定大小(如 +100G 为 100GB,或直接回车使用全部空间)
  • 输入 w 写入分区表并退出

3. 格式化分区

格式化新分区为所需的文件系统(这里以 ext4 为例):

sudo mkfs.ext4 /dev/sdb1

其他常用文件系统:

  • XFS: sudo mkfs.xfs /dev/sdb1
  • NTFS: sudo mkfs.ntfs /dev/sdb1 (需要先安装 ntfs-3g)
  • Btrfs: sudo mkfs.btrfs /dev/sdb1

4. 创建挂载点

决定磁盘挂载的目录位置,常见位置如 /mnt/media 下:

sudo mkdir -p /mnt/newdisk

5. 临时挂载磁盘

手动挂载以测试是否成功:

sudo mount /dev/sdb1 /mnt/newdisk

验证挂载:

df -h | grep newdisk
# 或者
mount | grep newdisk

6. 获取磁盘 UUID

为了实现可靠的开机自动挂载,我们需要获取分区的 UUID(通用唯一标识符):

sudo blkid /dev/sdb1

输出类似:

/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8" TYPE="ext4"

记录下 UUID 值(包括引号内的内容)。

7. 配置 /etc/fstab 实现开机自动挂载

编辑 /etc/fstab 文件,添加新磁盘的挂载信息:

sudo nano /etc/fstab

在文件末尾添加一行:

UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8  /mnt/newdisk  ext4  defaults  0  2

字段说明:

  • UUID=a1b2c3d4-...:分区的 UUID
  • /mnt/newdisk:挂载点
  • ext4:文件系统类型
  • defaults:挂选项(包含 rw, suid, dev, exec, auto, nouser, async)
  • 0:dump 功能(通常为 0)
  • 2:fsck 检查顺序(根分区为 1,其他为 2)

保存并退出编辑器。

8. 验证配置

卸载临时挂载,然后使用 mount -a 测试 fstab 配置:

sudo umount /mnt/newdisk
sudo mount -a

再次验证挂载:

df -h | grep newdisk

如果没有错误信息,则配置成功。重启系统后磁盘应该会自动挂载。

常见问题及解决方案

问题1:磁盘未被识别

  • 确认磁盘已经正确安装(特别是虚拟机)
  • 检查 BIOS/UEFI 设置是否启用了磁盘
  • 重新扫描 SCSI 总线:echo "- - -" > /sys/class/scsi_host/host0/scan

问题2:挂载失败提示“未知文件系统类型”

  • 确认已正确格式化分区
  • 检查内核是否支持该文件系统(如需要安装额外的文件系统驱动)

问题3:开机自动挂载失败

  • 检查 /etc/fstab 语法是否正确
  • 使用 sudo mount -a 测试是否有错误
  • 确认 UUID 没有写错
  • 检查磁盘是否在引导时就可用(有些 USB 磁盘可能需要延迟挂载)

问题4:权限问题

  • 挂载后目录所属用户通常为 root
  • 可以修改挂载选项添加 uid=1000,gid=1000 让普通用户拥有权限
  • 或者在挂载后使用 chown 更改目录所有权

高级技巧

使用卷标(Label)而非 UUID

有些人更喜欢使用卷标:

# 设置卷标(ext4 示例)
sudo e2label /dev/sdb1 mydata

# 在 fstab 中使用
LABEL=mydata  /mnt/newdisk  ext4  defaults  0  2

挂载选项说明

  • ro:只读挂载
  • rw:读写挂载(默认)
  • noexec:禁止在文件系统上执行二进制文件
  • nosuid:禁止 SUID/SGID 位
  • nodev:禁止解释字符或块特殊设备
  • noatime:不更新访问时间(提高性能)
  • nodiratime:不更新目录访问时间

自动格式化和挂载脚本

对于经常需要添加磁盘的环境,可以创建自动化脚本:

#!/bin/bash
DISK=$1
MOUNT_POINT=$2
FS_TYPE=${3:-ext4}

# 分区
echo -e "n\np\n1\n\n\nw" | sudo fdisk $DISK

# 等待分区表更新
sleep 2
PARTITION=${DISK}1

# 格式化
case $FS_TYPE in
    ext4) sudo mkfs.ext4 $PARTITION ;;
    xfs) sudo mkfs.xfs $PARTITION ;;
    *) echo "Unsupported filesystem type"; exit 1 ;;
esac

# 获取 UUID
UUID=$(sudo blkid -s UUID -o value $PARTITION)

# 创建挂载点
sudo mkdir -p $MOUNT_POINT

# 添加到 fstab
echo "UUID=$UUID  $MOUNT_POINT  $FS_TYPE  defaults  0  2" | sudo tee -a /etc/fstab

# 挂载
sudo mount -a

echo "Disk $DISK partitioned, formatted, and mounted at $MOUNT_POINT"

保存为 auto-mount.sh,使用 sudo ./auto-mount.sh /dev/sdb /mnt/newdisk ext4 运行。

安全注意事项

  1. 在生产环境中, sempre 备份重要数据后再进行分区操作
  2. 测试 fstab 更改时,可以先使用 sudo mount -av 进行干运行
  3. 考虑使用 nofail 选项,让系统在磁盘不可用时仍能启动:
   UUID=...  /mnt/newdisk  ext4  defaults,nofail  0  2
  1. 对于热插拔设备(如 USB 磁盘),考虑使用 udev 规则或 autofs

结论

通过以上步骤,你已经成功在 Linux 系统中添加、分区、格式化、挂载新磁盘,并配置了开机自动挂载。这不仅扩展了系统的存储容量,还确保了在重启后磁盘仍然可用。

记得定期检查磁盘健康状况(使用 smartctl 工具),并根据实际需求调整挂载选项以获得最佳性能和安全性。

提示:如果是添加虚拟机磁盘,可能需要在虚拟机管理软件中先添加磁盘设备,然后在客户机中按照以上步骤操作。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容