在Linux中,磁盘是通过分区来使用的。分区是将一个硬盘划分成几个逻辑部分来使用,在每个分区中可以存储不同的文件系统。因此,在挂载磁盘之前,我们需要先对磁盘进行分区。磁盘分区的过程可以通过命令行工具或图形界面工具来完成。
常用的磁盘分区工具有:
cfdisk:命令行工具,适用于创建主分区和扩展分区,支持MBR和GPT分区表。
fdisk:命令行工具,适用于创建主分区和扩展分区,支持MBR分区表。
gdisk:命令行工具,适用于创建主分区、扩展分区和逻辑分区,支持GPT分区表。
gparted:图形界面工具,适用于创建主分区、扩展分区和逻辑分区,支持MBR和GPT分区表。
分区的目的是将一个硬盘划分成多个逻辑部分,每个部分可以单独使用和管理。当然,分区并不是必需的,我们也可以直接将整个硬盘作为一个单一的分区进行挂载。
我们在后续用到的是fdisk命令工具
在Linux中,文件系统是挂载磁盘的重要概念。文件系统是指一种组织数据的方式,可以帮助我们在磁盘上存储和管理文件。常见的Linux文件系统有ext2、ext3、ext4、XFS等。
(1)ext2(第二扩展文件系统):是 Linux 最早引入的日志文件系统之一。它使用索引节点(inode)来管理文件和目录,并使用位图来管理磁盘块的分配。然而,ext2 没有日志功能,这使得在发生意外掉电或系统崩溃时恢复文件系统变得较慢。
(2)ext3(第三扩展文件系统):是 ext2 文件系统的升级版本。它引入了日志功能,使用日志记录(journaling)来跟踪文件系统操作。这样,在系统异常关机后可以更快地进行恢复,减少数据丢失的风险。与 ext2 相比,ext3 提供了更好的可靠性和性能。
(3)ext4(第四扩展文件系统):是 ext3 文件系统的进一步改进和扩展。它增强了文件系统的大小和性能,并支持更大的文件和分区。ext4 引入了多块分配、延迟分配和其他改进,以提高文件系统的性能和可靠性。它是目前最常用的 Linux 文件系统之一。
(4)XFS:是一个高性能的日志文件系统,最初由 SGI 开发。它设计用于处理大型文件和大容量存储,并针对高吞吐量的工作负载进行了优化。XFS 支持快速分配和回收磁盘空间,并具有出色的可扩展性和鲁棒性。它被广泛用于服务器环境和高性能计算领域。
在挂载磁盘之前,我们需要先在磁盘上创建文件系统。创建文件系统的命令为mkfs。
上述中我们可以看到vda磁盘挂载的是根目录并且已经有了一个分区为vda1,而vdb磁盘暂时还没有挂载任何目录并且没有分区信息,所以vdb就是系统空闲的磁盘。
包括磁盘设备名称、分区表类型、起始扇区、结束扇区、总扇区数等。
sudo fdisk /dev/vdb
输入m可以查看命令选项
DOS (MBR)
a toggle a bootable flag 切换引导标志,使分区可启动
b edit nested BSD disklabel 编辑嵌套的 BSD 磁盘标签
c toggle the dos compatibility flag 切换 DOS 兼容性标志Generic
d delete a partition 删除一个分区
F list free unpartitioned space 列出未分区的空闲空间
l list known partition types 列出已知的分区类型
n add a new partition 添加一个新分区
p print the partition table 打印分区表
t change a partition type 更改分区类型
v verify the partition table 验证分区表
i print information about a partition 打印有关分区的信息Misc
m print this menu 显示此菜单
u change display/entry units 更改显示/输入单位
x extra functionality (experts only) 额外功能(仅供专家使用)Script
I load disk layout from sfdisk script file 从 sfdisk 脚本文件加载磁盘布局
O dump disk layout to sfdisk script file 将磁盘布局转储到 sfdisk 脚本文件Save & Exit
w write table to disk and exit 将表写入磁盘并退出
q quit without saving changes 退出而不保存更改Create a new label
g create a new empty GPT partition table 创建一个新的空 GPT(GUID 分区表)磁盘分区表。
G create a new empty SGI (IRIX) partition table 创建一个新的空 SGI(IRIX)磁盘分区表。
o create a new empty DOS partition table 创建一个新的空 DOS(MBR)磁盘分区表。
s create a new empty Sun partition table 创建一个新的空 Sun 磁盘分区表。
直接按照如下操作进行分区
说明:
n: 创建新分区。出现选择分区类型的提示时,默认选择主分区(primary)。
p: 选择分区类型为 "p",即主分区。
1: 输入分区号码为 "1",表示创建第一个分区,如果不选默认就是1。
First sector: 输入第一个扇区的起始位置,默认值为 2048。你可以保持默认值(按 Enter 键),这样分区将从第一个可用扇区开始。
Last sector: 输入最后一个扇区的位置,可以输入结束位置或者分区大小。默认值为设备的最大扇区数。你可以输入具体的扇区数或者可选的单位表示分区大小(如 "300G" 表示 300GB)。根据你的输入,分区大小将为 300 GiB。
t: 更改分区类型。选择分区编号为 1 的分区。
83: 设置分区类型为 83,表示 Linux 文件系统类型。
w: 保存并写入分区表更改。
最后几行提示分区表已经被修改,并且正在同步磁盘。
sudo mkfs -t ext4 /dev/vdb1
· mkfs:表示创建文件系统的意思。
· -t ext4:指定要创建的文件系统类型为 ext4。
· /dev/vdb:指定磁盘路径,即要在哪个磁盘上创建文件系统。
sudo mkdir /data
/data : 挂载的目录
注意:不能挂载当前目录下已经存在数据的目录,一定要是空目录,否则可能会导致已存在目录下的文件和子目录被隐藏。
对于已经有数据的磁盘的目录我们应该怎么办呢,首先备份某个目录(data)数据,然后更改目录名称(data-test),然后再创建一个和之前一样名称的空目录(data),使用这个目录挂载,成功之后,将之前的那个目录(data-test)名称改为data即可。
sudo mount /dev/vdb1 /data
sudo df -h
出现如下图所示:即成功的将/dev/vdb1的分区挂载到/data目录下
永久挂载:通过修改 /etc/fstab文件,实现永久挂载。防止重启的时候挂在的目录失效。
vim /etc/fstab
添加如下一行:
/dev/vdb1 /data ext4 defaults 0 0
解释含义:
dev/vdb1: 这是要挂载的设备的名称。在 Linux 中,设备通常以 /dev 目录下的文件表示,例如硬盘分区、光盘驱动器等。/dev/vdb1 表示第一个硬盘 vdb 的第一个分区。
/data: 这是指定的挂载点,也就是将设备挂载到文件系统中的哪个目录下。在这个例子中,设备 /dev/vdb1 将会被挂载到 /data 目录。
ext4: 这是设备的文件系统类型,表示该设备采用 ext4 文件系统格式。
defaults: 这里列出了用于挂载的选项。defaults 表示使用默认的挂载选项,包括读写权限等。
0: 表示是否对该文件系统执行磁盘检查。0 表示不执行,1 表示引导时执行。
0: 表示是否进行备份。一般情况下也是0,表示不进行备份。