磁盘分区管理
# 1. 挂载文件系统(mount)
mount
命令在Linux系统中用于将文件系统挂载到指定的目录,从而可以访问该文件系统中的文件和目录。这是管理Linux文件系统的核心命令之一,尤其重要当涉及到添加新的存储设备或访问不同类型的文件系统时。
# 1. 基本语法
mount [选项] [设备] [挂载点]
[设备]
:指的是要挂载的设备或文件系统,通常是一个设备文件名,如/dev/sdb1
。[挂载点]
:是一个目录,用于访问挂载后的文件系统。这个目录应该是存在的,如果不存在需要先创建。
# 2. 常用命令和选项
- 显示已挂载的文件系统:
mount
不带任何参数时,mount
命令会列出当前系统中所有已挂载的文件系统。
- 挂载文件系统:
mount /dev/sdb1 /mnt
这个命令将/dev/sdb1
设备挂载到/mnt
目录。在执行挂载命令之前,应确保/mnt
目录已经存在。
- 自动挂载:
在/etc/fstab
文件中添加一行配置可以实现设备的自动挂载。这对于希望在系统启动时自动挂载某些文件系统的情况非常有用。
/dev/sdb1 /u01 ext2 defaults 0 2
这里,/dev/sdb1
是要挂载的设备,/u01
是挂载点,ext2
是文件系统类型,defaults
代表默认挂载选项,0 2
是dump
和fsck
的相关设置。
- 指定文件系统类型
-t
:
mount -t <文件系统类型> [设备] [挂载点]
使用-t
选项可以指定要挂载的文件系统类型,如ext4
、ntfs
等。
- 指定挂载选项
-o
:
mount -o <选项> [设备] [挂载点]
使用-o
选项可以指定挂载的额外选项,例如ro
(只读挂载)、rw
(读写挂载)等。
# 2. 磁盘分区基础
磁盘分区就像是把你的硬盘分成若干个独立的部分,每个部分可以独立使用。这有点像把一块大饼干分成几个小块,每个人可以拿一块吃。
在 Linux 中,我们有三种类型的分区:
主分区(Primary Partition):主分区就像是你的主卧室,你可以在这里放你最重要的东西。一个硬盘最多可以有四个主分区。
扩展分区(Extended Partition):在一个硬盘上,你最多可以创建四个主分区。但如果你需要更多的分区,可以选择不使用全部的主分区,而是将其中一个主分区位置设定为扩展分区。扩展分区本身并不直接存储数据,而是作为一个容器,可以包含多个逻辑分区。
逻辑分区(Logical Partition):逻辑分区就是扩展分区里的小房间,你可以在扩展分区里创建很多个逻辑分区。
- 每个逻辑分区都是独立的,就像硬盘上的主分区一样。你可以在每个逻辑分区上创建文件系统,然后将其挂载到系统的目录树中,就像挂载主分区一样。
- 虽然逻辑分区是在扩展分区内部,但在使用上,它们和主分区没有太大的区别。
- 例如,你可以创建三个主分区和一个扩展分区。在这个扩展分区内部,你可以创建多个逻辑分区。这样,你就可以拥有超过四个可以使用的分区。
# 3. 文件系统
文件系统就像是你房间里的柜子,用来放你的东西。不同的文件系统就像是不同类型的柜子,有的大有的小,有的有抽屉有的没有。 在 Linux 中,我们常用的文件系统有:
ext4:这是 Linux 中最常用的文件系统,它支持大文件和大容量硬盘,还有很多其他的特性。
XFS:这是一个高性能的文件系统,适合用在大容量和高并发的环境中。
Btrfs:这是一个新型的文件系统,它支持很多高级特性,如快照、数据压缩和数据校验等。
# 4. 磁盘分区命令
在 Linux 中,我们有很多命令可以用来进行磁盘分区。以下是一些常用的命令:
1. fdisk:这是一个用来管理磁盘分区的工具。你可以用 fdisk 来查看你的磁盘信息,创建新的分区,删除已有的分区等。
- 例如,你可以使用
fdisk -l
来查看你的磁盘和分区信息。这就像是查看你的房子有多少个房间,每个房间有多大。- 你也可以使用
fdisk /dev/sda
来对/dev/sda
这个磁盘进行分区。这就像是在你的房子里添加或删除房间。
2. mkfs:这是一个用来创建文件系统的工具。你可以用 mkfs 来在一个分区上创建一个新的文件系统。
- 例如,你可以使用
mkfs.ext4 /dev/sda1
来在/dev/sda1
这个分区上创建一个 ext4 文件系统。这就像是在你的房间里安装一个新的柜子。mkfs
命令会清除分区上的所有数据,并设置新的文件系统的参数,这个过程我们通常称之为格式化,如果一个分区上已经有数据,你应该在运行mkfs
命令之前备份这些数据,因为格式化操作会删除所有的数据
3. mount 和 umount:这两个命令分别用来挂载和卸载文件系统。挂载文件系统就像是打开柜子的门,你可以看到里面的东西。卸载文件系统就像是关上柜子的门,你看不到里面的东西。
- 例如,你可以使用
mount /dev/sda1 /mnt
来把/dev/sda1
这个分区挂载到/mnt
这个目录。这就像是把柜子的门打开,你可以通过/mnt
这个目录来访问柜子里的东西。- 你也可以使用
umount /mnt
来卸载/mnt
这个目录。这就像是把柜子的门关上,你不能再通过/mnt
这个目录来访问柜子里的东西。
# 5. 挂载的疑问解答
当你在挂载的目录(也称为挂载点)中写入文件时,这些文件实际上被写入了挂载的分区中。如果你卸载(umount)这个分区,文件不会被删除,它们仍然存储在分区中。
- 当你将一个分区挂载到某个目录后,该目录就成为了访问分区内容的窗口。然而,这个目录本身并不存储任何数据,所有的文件实际上都存储在分区上。当你卸载这个分区时,挂载点(即目录)会恢复到原来的状态,显示挂载之前该目录中的内容。
- 所以,卸载分区并不会影响分区中的文件,它们会被永久保存在磁盘上,除非你手动删除它们,或者对分区进行格式化操作。
如果一个目录在被用作挂载点之前已经包含了一些数据(例如文件或子目录),那么当你把一个文件系统(例如一个分区)挂载到这个目录后,原有的数据将会被隐藏,也就是说你无法访问到这些数据。此时,当你查看这个目录时,你看到的将是挂载的文件系统中的数据,而不是目录原有的数据。
- 然而,这并不意味着原有的数据被删除或者丢失了。实际上,这些数据仍然存储在磁盘上,只是被挂载的文件系统覆盖了。当你卸载这个文件系统后,原有的数据将会再次出现,你又可以访问到这些数据了。
- 所以,一般来说,我们会选择一个空的目录作为挂载点,以避免挂载操作覆盖目录中的数据。如果一个目录已经包含了一些数据,你应该在挂载之前将这些数据移动到其他地方,以防止数据被隐藏。
# 6. 示例:分区挂载
假设我们有一个新的磁盘 /dev/sdb
,我们想在这个磁盘上创建一个新的分区,然后在这个分区上创建一个 ext4
文件系统,最后把这个分区挂载到 /mnt/data
这个目录。以下是具体的步骤:
查看新磁盘:我们可以使用
fdisk -l
命令来查看新磁盘的信息。fdisk -l
1创建新分区:我们可以使用
fdisk /dev/sdb
命令来创建一个新的分区。fdisk /dev/sdb
1在
fdisk
的交互式命令行界面,我们可以输入n
来创建一个新的分区,然后按照提示完成分区的创建。fdisk 命令创建新分区的详细步骤
当你输入
fdisk /dev/sdb
并回车后,你会进入fdisk
的交互式命令行界面。在这个界面,你可以输入不同的命令来进行分区操作。以下是创建新分区的步骤:- 输入
n
并回车,开始创建新的分区。 - 系统会询问你要创建的是主分区(primary)还是扩展分区(extended),输入
p
创建主分区,或输入e
创建扩展分区,然后回车。 - 接着,系统会询问你新分区的编号。如果是主分区,编号可以是 1 到 4;如果是扩展分区,编号可以是 1 到 16。输入你选择的编号,然后回车。
- 系统会询问新分区的起始扇区,你可以直接回车选择默认的起始扇区。
- 然后,系统会询问新分区的结束扇区,你可以直接回车选择默认的结束扇区,或者输入
+size
指定分区大小,例如+2G
创建一个 2GB 的分区。 - 最后,输入
w
并回车,将新的分区表写入磁盘。
这样,你就在
/dev/sdb
磁盘上创建了一个新的分区。- 输入
创建文件系统 / 格式化:我们可以使用
mkfs.ext4 /dev/sdb1
命令来在新分区上创建一个ext4
文件系统。mkfs.ext4 /dev/sdb1
1创建挂载目录:挂载分区之前,需要确保挂载点(也就是你打算挂载到的目录)已经存在
# 这里的 `-p` 选项会让 `mkdir` 命令创建所有需要的父目录。 mkdir -p /mnt/data
1
2挂载新分区:我们可以使用
mount /dev/sdb1 /mnt/data
命令来把新分区挂载到/mnt/data
这个目录。mount /dev/sdb1 /mnt/data
1设置开机自动挂载:为了确保新分区在每次启动时自动挂载,你需要编辑
/etc/fstab
文件来添加相应的挂载条目。/etc/fstab
文件是在 Linux 系统启动时由系统自动读取的,用于定义磁盘驱动器和分区的挂载和使用情况。# 编辑 /etc/fstab 文件 sudo vim/etc/fstab # 在文件的末尾添加一行,指定分区和挂载点 /dev/sdb1 /mnt/data ext4 defaults 0 2
1
2
3
4- 这里
/dev/sdb1
是分区名称,/mnt/data
是挂载点,ext4
是文件系统类型,defaults
是挂载选项,0 和 2 是用于磁盘检查的优先级设置。 - 确保在编辑
/etc/fstab
时非常小心,因为错误的配置可能会影响系统的启动。在修改之前,建议备份原始的/etc/fstab
文件。
- 这里
重启确认是否挂载成功:使用
lsblk -f
命令 用来确认分区是否已经成功挂载,以及它们挂载的位置。
使用
lsblk
命令可以帮助你了解你的系统中的磁盘和分区的布局和状态。