linux的挂卸载
挂卸载操作
在 Linux 系统中,挂载(mount)和卸载(umount)是管理文件系统和存储设备的核心操作。通过这两个操作,我们可以将设备(如硬盘、光盘、U盘等)或网络文件系统的内容集成到系统的目录树中,或者在不再需要访问时断开它们的连接。
1. 挂载(Mount)操作详解
**挂载(mount)**是将外部设备或文件系统与 Linux 系统中的一个目录关联起来,使得该设备或文件系统中的文件能够在 Linux 系统中进行访问。
挂载基本命令:
mount <设备或文件系统> <挂载点>
- 设备或文件系统:可以是物理设备(如硬盘、U盘等),也可以是网络共享(如 NFS 或 CIFS)或其他挂载的文件系统。
- 挂载点:是文件系统在 Linux 系统中访问的路径。通常是一个空的目录,挂载后,该目录就代表了设备中的文件系统。
1.1 常见挂载方式
-
挂载本地硬盘:
mount /dev/sda1 /mnt
这里
/dev/sda1
是硬盘的第一个分区,/mnt
是挂载点。挂载后,可以在/mnt
目录下访问/dev/sda1
中的文件。 -
挂载 CD-ROM 或光盘:
mount /dev/cdrom /mnt/cdrom
将光盘或虚拟光驱(如 ISO 文件)挂载到
/mnt/cdrom
目录。 -
挂载 NFS 文件系统(网络文件系统):
mount -t nfs 192.168.1.100:/exported/dir /mnt/nfs
将远程 NFS 服务器
192.168.1.100
上的/exported/dir
目录挂载到本地的/mnt/nfs
目录。
1.2 常用挂载选项
-
-t
:指定文件系统类型,如ext4
、ntfs
、nfs
等。mount -t ext4 /dev/sda1 /mnt
-
-o
:指定挂载的选项,如读写权限、只读、自动挂载等。常见选项包括:ro
:只读挂载。rw
:读写挂载。noexec
:禁止执行挂载目录下的程序。user
:允许普通用户挂载。auto
:系统启动时自动挂载。defaults
:使用默认选项。
例如,使用
rw
选项将硬盘挂载为可读写:mount -o rw /dev/sda1 /mnt
-
挂载的目标位置:挂载点必须是一个空的目录。例如,如果要挂载
/dev/sda1
,首先需要确保/mnt
目录为空。
1.3 查看已挂载的文件系统
mount
:不带参数时,列出当前系统中所有已挂载的文件系统。mount
df
:显示所有挂载的文件系统及其磁盘空间使用情况。df -h
1.4 自动挂载(/etc/fstab)
通过编辑 /etc/fstab
文件,可以让系统在启动时自动挂载某些文件系统。该文件定义了系统启动时如何挂载设备和文件系统。
格式:
<设备> <挂载点> <文件系统类型> <挂载选项> <转储> <检查>
示例:
/dev/sda1 /mnt ext4 defaults 0 2
这表示系统启动时会自动将 /dev/sda1
挂载到 /mnt
,使用 ext4
文件系统,挂载选项为 defaults
。
2. 卸载(Umount)操作详解
**卸载(umount)**是将已经挂载的文件系统从目录树中移除,断开该文件系统与系统的连接。卸载操作会使得文件系统不可访问。
卸载基本命令:
umount <挂载点或设备>
-
你可以通过指定设备或挂载点来卸载文件系统。比如:
umount /mnt
这会卸载
/mnt
目录挂载的文件系统。 -
如果要卸载特定设备,也可以使用设备路径:
umount /dev/sda1
2.1 常见卸载问题
-
设备忙(device is busy):当试图卸载一个正在使用的设备时,可能会出现“设备忙”的错误。常见原因包括:
- 当前目录或子目录中有文件正在被使用。
- 当前目录或子目录有进程正在访问。
解决办法:
- 使用
lsof
或fuser
命令查看哪个进程在使用该设备:lsof /mnt
- 或者使用:
fuser -m /mnt
-
强制卸载:如果设备正在被使用且无法正常卸载,可以使用
-l
(延迟卸载)或-f
(强制卸载)选项:umount -f /mnt
2.2 查看卸载情况
可以通过 mount
或 df
命令确认文件系统是否已成功卸载。
mount
:没有挂载的文件系统不会列出。mount
df
:卸载后该文件系统不会出现在输出中。df -h
3. 挂载和卸载的注意事项
- 挂载点必须为空:挂载点(目录)必须是空的,否则挂载操作会失败。
- 卸载前确保没有进程占用:卸载之前必须确保没有任何进程在使用该设备。如果有,可以通过
lsof
或fuser
查看并终止相关进程。 - 卸载顺序:对于挂载在其他挂载点下的文件系统(例如嵌套的文件系统),需要按相反的顺序卸载。
- 先卸载子文件系统,后卸载父文件系统。
4. 总结
- 挂载(mount):将一个文件系统或存储设备连接到 Linux 系统的某个目录下,使得该文件系统的内容可以访问。
- 卸载(umount):断开文件系统与 Linux 系统的连接,使得该文件系统不可访问。
- 使用
mount
和umount
命令时,要注意文件系统的类型、挂载点的状态以及设备是否被占用。
新建文件系统并挂载
在 Linux 系统中,创建新文件系统并将其挂载到指定目录,涉及以下几个步骤:创建分区、格式化分区、创建挂载点、挂载文件系统、以及修改 fstab
文件以便系统启动时自动挂载。
步骤 1: 创建分区
首先,你需要一个磁盘或一个未分配的存储设备来创建新文件系统。如果你的磁盘没有分区,或者你想重新分区,可以使用 fdisk
(对于 MBR 分区表)或 parted
(对于 GPT 分区表)等工具来创建分区。
使用 fdisk
创建分区(MBR 分区表)
sudo fdisk /dev/sdX
/dev/sdX
是你要分区的磁盘(如 /dev/sda
)。命令执行后进入交互式界面,使用以下命令:
- 输入
n
创建新分区。 - 输入
p
选择主分区(或e
选择扩展分区)。 - 输入分区的起始和结束位置(默认设置一般可以直接按回车)。
- 输入
w
保存更改并退出。
使用 parted
创建分区(GPT 分区表)
sudo parted /dev/sdX
进入交互模式后,使用以下命令:
- 输入
mklabel gpt
创建一个 GPT 分区表。 - 输入
mkpart primary ext4 0% 100%
创建一个ext4
格式的分区,大小为磁盘的 100%。 - 输入
quit
退出。
步骤 2: 格式化分区
创建分区后,下一步是将该分区格式化成一个文件系统。常用的文件系统格式有 ext4
、xfs
、btrfs
等,这里以 ext4
为例。
sudo mkfs.ext4 /dev/sdX1
/dev/sdX1
是新创建的分区,例如/dev/sda1
。- 如果你选择其他文件系统类型(如
xfs
),可以将mkfs.ext4
替换为mkfs.xfs
或其他命令。
步骤 3: 创建挂载点
挂载点是你用来访问该文件系统的目录。通常,挂载点会在 /mnt
或 /media
目录下创建,但你也可以选择任何路径。
sudo mkdir /mnt/mydata
- 这里我们在
/mnt
目录下创建了一个名为mydata
的挂载点。
步骤 4: 挂载文件系统
使用 mount
命令将新格式化的分区挂载到刚刚创建的挂载点。
sudo mount /dev/sdX1 /mnt/mydata
/dev/sdX1
是新创建并格式化的分区。/mnt/mydata
是挂载点。
此时,你可以通过访问 /mnt/mydata
来操作该文件系统中的文件。
步骤 5: 配置开机自动挂载
为了确保每次系统启动时自动挂载该文件系统,需要将其添加到 /etc/fstab
文件中。
首先,获取分区的 UUID:
sudo blkid /dev/sdX1
这将输出类似以下的信息:
/dev/sda1: UUID="xxxx-xxxx" TYPE="ext4" PARTUUID="yyyyyyyy"
然后编辑 /etc/fstab
文件:
sudo nano /etc/fstab
在文件的最后添加一行,格式如下:
UUID=xxxx-xxxx /mnt/mydata ext4 defaults 0 2
UUID=xxxx-xxxx
是你从blkid
命令中获得的 UUID。/mnt/mydata
是挂载点。ext4
是文件系统类型。defaults
是挂载选项,表示使用默认选项。0
表示不需要备份。2
表示文件系统检查的顺序,根文件系统通常设置为1
,其他文件系统通常设置为2
。
保存并退出编辑器。
步骤 6: 验证挂载
最后,检查挂载是否成功:
sudo mount -a
该命令会根据 /etc/fstab
中的配置尝试挂载所有未挂载的文件系统。
你还可以使用 df
或 mount
命令确认挂载:
df -h
mount | grep /mnt/mydata
如果显示挂载信息,说明新文件系统已经成功挂载。
总结
- 使用
fdisk
或parted
创建分区。 - 使用
mkfs
格式化新分区。 - 创建挂载点并使用
mount
命令挂载分区。 - 修改
/etc/fstab
以便开机自动挂载。
按照这些步骤,你就可以创建并挂载新的文件系统了。
在 Linux 系统中,df
命令用于显示文件系统的磁盘空间使用情况,通常用于检查挂载的文件系统、可用空间、已用空间等。df -h
和 df -ah
都是 df
命令的变种,它们的区别在于输出的内容和单位的不同。
查询挂载点详情
1. df -h
命令
df -h
显示文件系统的磁盘空间使用情况,并使用 人类可读 的格式(即自动选择适当的单位,例如 KB、MB、GB),使得输出结果更容易理解。
-h
选项表示 “human-readable”,即以易于理解的单位(KB、MB、GB 等)显示空间。
示例
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 43% /
/dev/sdb1 100G 10G 85G 11% /mnt/data
解释:
Filesystem
: 文件系统的名称或设备。Size
: 文件系统的总大小。Used
: 已用空间。Avail
: 可用空间。Use%
: 已用空间的百分比。Mounted on
: 文件系统的挂载点。
2. df -ah
命令
df -ah
也是 df
命令的变种,其中:
-a
选项表示显示所有文件系统,包括系统文件、虚拟文件系统和挂载的tmpfs
等。-h
选项表示以人类可读的格式显示磁盘空间。
因此,df -ah
会显示更多的挂载点信息,包括虚拟文件系统(如 tmpfs
),而不仅仅是常规的磁盘分区。
示例
df -ah
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 28G 43% /
tmpfs 1.9G 1.3M 1.9G 1% /dev/shm
/dev/sdb1 100G 10G 85G 11% /mnt/data
解释:
tmpfs
是一个虚拟文件系统,通常用来在内存中创建临时文件系统。/dev/shm
是 Linux 系统中的一个临时内存挂载点。/dev/sda1
和/dev/sdb1
仍然是实际的磁盘分区。
总结
df -h
:显示常规磁盘分区的使用情况,并以人类可读的格式(KB、MB、GB)显示大小。df -ah
:除了显示常规磁盘分区外,还会显示所有文件系统的使用情况,包括虚拟文件系统(如tmpfs
和devtmpfs
),并以人类可读的格式显示。
如果你希望查看系统中的所有挂载点(包括虚拟文件系统等),使用 df -ah
;如果只关心实际磁盘分区的使用情况,则使用 df -h
。