第一步:在虚拟机平台中添加硬盘
此步骤在虚拟机管理软件中完成,而非在Linux系统内部,无论是VMware, VirtualBox, KVM还是Hyper-V,基本原理相似。
- 关闭虚拟机:为了安全地添加硬件,请务必先完全关闭正在运行的虚拟机。
- 进入虚拟机设置:在虚拟机管理界面中,选中目标虚拟机,进入“设置”或“配置”菜单。
- 添加新硬件:找到“添加”或“新增”硬件的选项,然后选择“硬盘”。
- 配置硬盘属性:
- 硬盘类型:通常推荐选择SCSI或SATA,它们在现代Linux系统中拥有良好的性能和广泛的支持。
- 存储位置:可以选择创建一个新的虚拟磁盘文件(
.vmdk
,.vdi
,.qcow2
等),或者使用一个已有的磁盘文件。 - 分配容量:根据你的需求指定硬盘大小,例如50GB。
- 完成并启动:确认所有设置无误后,保存配置并启动虚拟机,Linux系统尚未识别到这块新的硬件。
第二步:在Linux系统中识别新硬盘
当虚拟机启动后,Linux内核会在启动过程中检测到新添加的硬件,我们需要在终端中找到它。
最直观的命令是 lsblk
,它会以树状结构列出所有可用的块设备。
lsblk
在添加新硬盘前后分别执行此命令,你会很容易发现新增的设备,系统中的第一块硬盘是 sda
,第二块便是 sdb
,以此类推,一块全新的、未分区的硬盘会显示类似如下信息:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
└─vg0-root 254:0 0 17G 0 lvm /
sdb 8:16 0 50G 0 disk <-- 这就是我们的新硬盘
这里,sdb
就是我们新添加的50GB虚拟硬盘,它下面没有任何分区(没有 sdb1
这样的子项),请记下这个设备名(本例中为 /dev/sdb
),后续所有操作都将基于它。
第三步:对新硬盘进行分区
识别到硬盘后,需要在其上创建分区。fdisk
是一个经典且强大的交互式分区工具。
sudo fdisk /dev/sdb
进入 fdisk
的交互界面后,按照以下步骤操作(输入字母后按回车):
- 输入
n
:创建一个新分区。 - 输入
p
:选择主分区,对于大多数情况,主分区足够使用。 - 输入
1
:设置分区号为1。 - 按回车:设置起始扇区,直接使用默认值即可,它通常是2048,以获得最佳对齐。
- 按回车:设置结束扇区,直接使用默认值会使用整个硬盘的所有剩余空间。
- 输入
p
:打印当前的分区表,检查新创建的分区(/dev/sdb1
)信息是否正确。 - 输入
w
:将分区表写入磁盘并退出fdisk
。
操作完成后,再次运行 lsblk
,你会看到 sdb
下面多了一个 sdb1
分区。
第四步:格式化分区
分区创建后,它还仅仅是一个“容器”,需要格式化为特定的文件系统才能被Linux用来存储文件。ext4
是目前最通用、稳定的Linux文件系统。
sudo mkfs.ext4 /dev/sdb1
此命令会将 /dev/sdb1
分区格式化为 ext4
文件系统,过程会持续几秒到几十秒,取决于硬盘大小,执行完毕后,一个可用的文件系统就准备就绪了。
第五步:挂载文件系统
我们需要将这个新文件系统“连接”到Linux的目录树中,这个过程称为挂载。
-
创建挂载点:选择一个空目录作为挂载点,我们为它创建一个
/data
目录。sudo mkdir /data
-
执行挂载命令:
sudo mount /dev/sdb1 /data
-
验证挂载结果:使用
df -h
命令可以查看已挂载的文件系统及其空间使用情况。df -h
在输出中,你应该能看到一行关于
/dev/sdb1
挂载到/data
的信息,这表明挂载成功了,现在你可以向/data
目录中读写文件,这些数据实际上都存储在新添加的虚拟硬盘上。
第六步:实现开机自动挂载
上述挂载是临时的,重启虚拟机后会失效,要让系统每次启动时都自动挂载这个分区,需要编辑 /etc/fstab
文件。
/etc/fstab
文件定义了系统启动时要挂载的文件系统,为了安全起见,建议先获取分区的UUID(通用唯一标识符),使用UUID比设备名(如 /dev/sdb1
)更可靠,因为它不会因硬件插拔顺序的改变而改变。
sudo blkid /dev/sdb1
输出会包含类似 UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef"
的信息,复制这串UUID。
使用文本编辑器(如 nano
或 vim
)打开 /etc/fstab
文件:
sudo nano /etc/fstab
在文件末尾添加一行,格式如下:
<UUID> <挂载点> <文件系统类型> <挂载选项> <dump> <pass>
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /data ext4 defaults 0 2
下表解释了各字段的含义:
字段 | 含义 | 示例值/说明 |
---|---|---|
<设备文件或UUID> |
要挂载的设备 | UUID=... 或 /dev/sdb1 |
<挂载点> |
挂载到的目录 | /data |
<文件系统类型> |
分区的文件系统 | ext4 |
<挂载选项> |
挂载时的参数 | defaults (包含rw, suid, dev, exec, auto, nouser, async) |
<dump> |
是否使用dump备份 | 0 (不备份) |
<pass> |
开机时磁盘检查的顺序 | 0 (不检查), 1 (根分区), 2 (其他分区) |
保存并关闭文件后,执行 sudo mount -a
命令,该命令会重新挂载 /etc/fstab
中定义的所有文件系统,如果没有报错,说明配置无误,至此,新添加的虚拟硬盘已经完全集成到系统中,并能在每次重启后自动可用。