在 Linux 中,挂载(Mount) 是将外部存储设备(如硬盘、U 盘、光盘等)或文件系统(如 ISO 镜像、网络共享)连接到系统目录树的过程。通过挂载,用户可以像访问本地文件一样访问外部设备中的数据。
/mnt/usb
目录后,访问 /mnt/usb
即可查看 U 盘内容。# 将 U 盘设备 /dev/sdb1 挂载到新建目录 /mnt/usb
sudo mount /dev/sdb1 /mnt/usb
Linux 支持的文件系统类型可分为以下几类:
ntfs-3g
驱动才能读写。.iso
文件。# 创建空目录作为挂载点
sudo mkdir /mnt/new_disk
/usr
、/var
等,避免影响系统正常运行。/mnt/usb
、/mnt/nfs_share
)。/mnt
或 /media
下创建子目录,便于管理。操作 | 作用 | 命令 | 注意事项 |
---|---|---|---|
挂载 | 将设备连接到目录树,使其可访问 | mount |
挂载点需存在,设备路径需正确。 |
卸载 | 断开设备与目录树的连接,释放资源 | umount |
确保无进程使用设备,否则需强制卸载(-f )。 |
# 卸载已挂载的 U 盘
sudo umount /mnt/usb
mount: /mnt/usb: no such file or directory
sudo mkdir /mnt/usb
# 使用 lsblk 确认设备路径
lsblk
mount: permission denied
# 使用 sudo 提升权限
sudo mount /dev/sdb1 /mnt/usb
mount: unknown filesystem type 'ntfs'
# 安装对应驱动(以 NTFS 为例)
sudo apt install ntfs-3g # Debian/Ubuntu
sudo yum install ntfs-3g # CentOS/RHEL
mount [选项] [设备] [挂载点]
/dev/sdb1
)、网络共享路径(如 nfs-server:/export
)或文件(如 ISO 镜像)。# 挂载本地硬盘分区到 /mnt/data
sudo mount /dev/sdb1 /mnt/data
选项 | 说明 |
---|---|
-t type |
指定文件系统类型(如 ext4 、ntfs 、nfs )。 |
-o options |
设置挂载选项(如 ro 只读、rw 读写)。 |
-l |
列出所有已挂载的文件系统。 |
-a |
挂载 /etc/fstab 中所有配置的设备。 |
# 挂载 NTFS 格式的移动硬盘为只读模式
sudo mount -t ntfs -o ro /dev/sdc1 /mnt/ntfs_disk
选项 | 说明 |
---|---|
ro |
只读挂载,防止数据被修改。 |
rw |
读写挂载(默认)。 |
user |
允许普通用户挂载(需配合其他权限设置)。 |
nouser |
仅允许 root 用户挂载(默认)。 |
# 允许普通用户挂载设备
sudo mount -o user /dev/sdd1 /mnt/usb
选项 | 说明 |
---|---|
noatime |
不更新文件访问时间,减少硬盘写入。 |
async |
异步写入,提升速度(但可能增加数据丢失风险)。 |
sync |
同步写入,数据实时写入硬盘。 |
# 挂载分区并启用性能优化
sudo mount -o noatime,async /dev/sdb1 /mnt/data
选项 | 说明 |
---|---|
noexec |
禁止在挂载点执行可执行文件。 |
nodev |
禁止访问设备文件(如 /dev 下的节点)。 |
nosuid |
禁止 setuid/setgid 权限生效。 |
# 挂载分区并禁用执行权限
sudo mount -o noexec /dev/sdc1 /mnt/sensitive_data
# 挂载 NFS 共享目录,启用无锁和异步写入
sudo mount -t nfs -o nolock,async 192.168.1.100:/export/share /mnt/nfs
# 将已挂载的 /mnt/data 重新挂载为只读模式
sudo mount -o remount,ro /mnt/data
步骤 1:查看设备信息
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
└─sda1 8:1 0 465.8G 0 part
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
假设要挂载 /dev/sdb1
。
步骤 2:创建挂载点
sudo mkdir /mnt/data
步骤 3:挂载设备
sudo mount /dev/sdb1 /mnt/data
步骤 4:验证挂载
mount | grep /mnt/data
输出示例:
/dev/sdb1 on /mnt/data type ext4 (rw,relatime)
步骤 1:创建挂载点
sudo mkdir /mnt/cdrom
步骤 2:挂载 ISO
sudo mount -t iso9660 -o loop /path/to/disk.iso /mnt/cdrom
-t iso9660
:指定文件系统类型为光盘镜像。-o loop
:将文件视为块设备挂载。步骤 1:安装 NFS 客户端
# Debian/Ubuntu
sudo apt install nfs-common
# CentOS/RHEL
sudo yum install nfs-utils
步骤 2:挂载共享目录
sudo mount -t nfs 192.168.1.100:/export/share /mnt/nfs
192.168.1.100:/export/share
:NFS 服务器共享路径。错误提示:
mount: /mnt/data: cannot find device /dev/sdb1
原因:设备名称错误或未插入设备。
解决方法:
lsblk
确认设备名称。错误提示:
mount: /mnt/data: no such file or directory
解决方法:
sudo mkdir /mnt/data
错误提示:
mount: permission denied
解决方法:
sudo mount /dev/sdb1 /mnt/data
错误提示:
mount: unknown filesystem type 'ntfs'
解决方法:
ntfs-3g
): # Debian/Ubuntu
sudo apt install ntfs-3g
# CentOS/RHEL
sudo yum install ntfs-3g
作用:将一个目录映射到另一个位置,实现跨文件系统的数据共享。
示例:
# 将 /var/log 目录绑定挂载到 /mnt/log
sudo mount --bind /var/log /mnt/log
示例:
# 将 /mnt/data 目录以只读模式绑定挂载到 /mnt/readonly_data
sudo mount -o bind,ro /mnt/data /mnt/readonly_data
作用:控制子挂载点的传播行为,适用于容器和多命名空间场景。
示例:
# 将 /mnt/data 设置为共享子树
sudo mount --make-shared /mnt/data
mount
命令mount
输出示例:
/dev/sdb1 on /mnt/data type ext4 (rw,relatime)
findmnt
命令findmnt /mnt/data
输出示例:
TARGET SOURCE FSTYPE OPTIONS
/mnt/data /dev/sdb1 ext4 rw,relatime
df
命令df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 450G 100G 320G 24% /mnt/data
步骤 1:创建挂载点并设置权限
sudo mkdir /mnt/usb
sudo chown user:user /mnt/usb
sudo chmod 755 /mnt/usb
步骤 2:允许普通用户挂载
sudo mount -o user /dev/sdd1 /mnt/usb
sudo mount -o remount,ro /mnt/data
设备 挂载点 文件系统类型 挂载选项 dump fsck
/dev/sdb1 /mnt/data ext4 defaults 0 0
defaults
表示默认选项(rw、suid、dev、exec、auto、nouser、async)。步骤 1:获取设备 UUID
sudo blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="12345678-9abc-def0-1234-56789abcdef0" TYPE="ext4"
步骤 2:编辑 /etc/fstab
sudo nano /etc/fstab
添加:
UUID=12345678-9abc-def0-1234-56789abcdef0 /mnt/data ext4 defaults 0 0
步骤 3:测试配置
sudo mount -a
步骤 1:查看设备信息
使用 lsblk
命令列出系统中的所有存储设备:
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 465.3G 0 part /
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
NAME
列显示设备名称(如 /dev/sdb1
),MOUNTPOINT
列显示已挂载的设备路径。步骤 2:创建挂载点
选择一个空目录作为挂载点(建议在 /mnt
下创建):
sudo mkdir /mnt/data
mkdir
创建目录,sudo
提升权限。步骤 3:挂载设备
使用 mount
命令将分区挂载到挂载点:
sudo mount /dev/sdb1 /mnt/data
/dev/sdb1
是设备路径,/mnt/data
是挂载点。步骤 4:验证挂载
使用 mount
或 df -h
命令检查挂载状态:
mount | grep /mnt/data
输出示例:
/dev/sdb1 on /mnt/data type ext4 (rw,relatime)
type ext4
表示文件系统类型,rw
表示读写权限。若设备未分区或未格式化,需先执行以下操作:
步骤 1:分区(以 fdisk 为例)
sudo fdisk /dev/sdb
n
:新建分区p
:主分区w
:保存并退出步骤 2:格式化分区
sudo mkfs.ext4 /dev/sdb1
mkfs.ext4
将分区格式化为 ext4 文件系统。步骤 1:创建挂载点
sudo mkdir /mnt/cdrom
步骤 2:挂载 ISO
sudo mount -t iso9660 -o loop /path/to/disk.iso /mnt/cdrom
-t iso9660
:指定文件系统类型为光盘镜像。-o loop
:将文件视为块设备挂载。步骤 3:访问镜像内容
ls /mnt/cdrom
使用 systemd
的自动卸载功能:
sudo mount --bind /mnt/cdrom /mnt/cdrom && systemd-run --scope --user [email protected] umount /mnt/cdrom
步骤 1:安装 NFS 客户端
# Debian/Ubuntu
sudo apt install nfs-common
# CentOS/RHEL
sudo yum install nfs-utils
步骤 2:挂载共享目录
sudo mount -t nfs 192.168.1.100:/export/share /mnt/nfs
192.168.1.100:/export/share
是 NFS 服务器共享路径。步骤 3:验证挂载
df -h | grep /mnt/nfs
sudo mount -t nfs -o vers=4,async,hard 192.168.1.100:/export/share /mnt/nfs
vers=4
:使用 NFSv4 协议。async
:异步写入提升性能。hard
:挂载失败时持续重试。步骤 1:安装 CIFS 工具
sudo apt install cifs-utils
步骤 2:创建凭据文件
sudo nano /etc/smb_credentials
内容示例:
username=admin
password=123456
sudo chmod 600 /etc/smb_credentials
步骤 3:挂载共享目录
sudo mount -t cifs -o credentials=/etc/smb_credentials //192.168.1.100/share /mnt/smb
//192.168.1.100/share
是 Samba 服务器共享路径。编辑 /etc/fstab
添加:
//192.168.1.100/share /mnt/smb cifs credentials=/etc/smb_credentials,vers=3.0,uid=1000,gid=1000 0 0
vers=3.0
:使用 SMB3 协议。uid=1000,gid=1000
:指定挂载目录的用户和组。步骤 1:插入 U 盘并查看设备
lsblk
/dev/sdb1
、/dev/sdc1
等。步骤 2:创建挂载点
sudo mkdir /mnt/usb
步骤 3:挂载设备
sudo mount /dev/sdb1 /mnt/usb
步骤 4:访问 U 盘内容
ls /mnt/usb
若 U 盘为 NTFS 格式,需安装驱动:
sudo apt install ntfs-3g
挂载命令:
sudo mount -t ntfs-3g /dev/sdb1 /mnt/usb
步骤 1:创建源目录和目标目录
mkdir /data/source
mkdir /data/target
步骤 2:绑定挂载
sudo mount --bind /data/source /data/target
/data/source
映射到 /data/target
,两者内容实时同步。sudo mount --bind -o ro /data/source /data/target
-o ro
限制目标目录为只读。设备 挂载点 文件系统类型 挂载选项 dump fsck
/dev/sdb1 /mnt/data ext4 defaults 0 0
设备
:设备路径、UUID 或标签。挂载选项
:defaults
表示默认选项(rw、suid、dev、exec、auto、nouser、async)。步骤 1:获取设备 UUID
sudo blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="12345678-9abc-def0-1234-56789abcdef0" TYPE="ext4"
步骤 2:编辑 /etc/fstab
sudo nano /etc/fstab
添加:
UUID=12345678-9abc-def0-1234-56789abcdef0 /mnt/data ext4 defaults 0 0
步骤 3:测试配置
sudo mount -a
错误提示:
mount: /mnt/data: cannot find device /dev/sdb1
解决方法:
lsblk
确认设备名称。错误提示:
mount: permission denied
解决方法:
sudo mount /dev/sdb1 /mnt/data
错误提示:
mount: unknown filesystem type 'ntfs'
解决方法:
sudo apt install ntfs-3g # Debian/Ubuntu
sudo yum install ntfs-3g # CentOS/RHEL
错误提示:
umount: /mnt/data: target is busy
解决方法:
fuser -km /mnt/data
sudo umount -f /mnt/data
设备 挂载点 文件系统类型 挂载选项 dump fsck
/dev/sdb1 /mnt/data ext4 defaults 0 0
defaults
表示默认选项。sudo blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="12345678-9abc-def0-1234-56789abcdef0" TYPE="ext4"
/etc/fstab
sudo nano /etc/fstab
添加:
UUID=12345678-9abc-def0-1234-56789abcdef0 /mnt/data ext4 defaults 0 0
sudo mount -a
mount: /mnt/data: cannot find device /dev/sdb1
/dev/sdb1
应为 /dev/sdc1
)。步骤 1:确认设备路径
使用 lsblk
命令列出所有存储设备:
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
└─sda1 8:1 0 465.8G 0 part /
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
NAME
列显示设备路径(如 /dev/sdb1
)。步骤 2:检查设备状态
使用 dmesg
命令查看系统日志:
dmesg | grep -i "sd"
步骤 3:处理未分区设备
若设备未分区,使用 fdisk
或 parted
工具分区:
sudo fdisk /dev/sdb
n
:新建分区p
:主分区w
:保存并退出步骤 4:格式化设备
sudo mkfs.ext4 /dev/sdb1
mkfs.ext4
将分区格式化为 ext4 文件系统。mount: permission denied
sudo
提升权限。user
参数(适用于普通用户挂载)。方法 1:使用 sudo 挂载
sudo mount /dev/sdb1 /mnt/data
方法 2:配置普通用户权限
编辑 /etc/fstab
添加 user
选项:
/dev/sdb1 /mnt/data ext4 defaults,user 0 0
user
允许普通用户挂载和卸载设备。sudo mount -a
mount: unknown filesystem type 'ntfs'
步骤 1:安装驱动程序
# Debian/Ubuntu
sudo apt install ntfs-3g
# CentOS/RHEL
sudo yum install ntfs-3g
步骤 2:指定文件系统类型
sudo mount -t ntfs-3g /dev/sdb1 /mnt/data
-t ntfs-3g
强制使用 NTFS 驱动挂载。umount: /mnt/data: target is busy
步骤 1:查找占用进程
fuser -km /mnt/data
-k
:终止占用进程。-m
:指定挂载点。步骤 2:强制卸载
sudo umount -f /mnt/data
-f
强制卸载,即使设备繁忙(可能导致数据丢失,谨慎使用)。mount: /mnt/data: can't find in /etc/fstab
/etc/fstab
中设备标识符错误(如 UUID 或标签错误)。步骤 1:检查 fstab 条目
sudo nano /etc/fstab
UUID=12345678-9abc-def0-1234-56789abcdef0 /mnt/data ext4 defaults 0 0
步骤 2:创建挂载点
sudo mkdir -p /mnt/data
-p
递归创建目录(若父目录不存在)。步骤 3:测试配置
sudo mount -a
/etc/fstab
重新挂载所有设备,检测配置错误。mount.nfs: access denied by server while mounting
步骤 1:检查服务器配置
编辑 /etc/exports
添加共享目录:
/export/share 192.168.1.0/24(rw,sync,no_root_squash)
rw
:读写权限。sync
:同步写入。no_root_squash
:允许 root 用户访问。步骤 2:刷新 NFS 配置
sudo exportfs -ra
-ra
重新导出所有共享目录。步骤 3:开放防火墙端口
# Debian/Ubuntu
sudo ufw allow nfs
# CentOS/RHEL
sudo firewall-cmd --add-service=nfs --permanent
sudo firewall-cmd --reload
步骤 4:指定 NFS 版本
sudo mount -t nfs -o vers=4 192.168.1.100:/export/share /mnt/nfs
vers=4
使用 NFSv4 协议。lsblk: /dev/sdb1: No such file or directory
步骤 1:重新插拔设备
步骤 2:检查文件系统
sudo fsck /dev/sdb1
y
修复错误。步骤 3:自动挂载配置(udev 规则)
创建 udev 规则文件:
sudo nano /etc/udev/rules.d/99-usb.rules
添加内容:
KERNEL=="sd*[0-9]", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="USB_DISK", RUN+="/bin/mount /dev/%k /mnt/usb"
KERNEL
:匹配设备名称。ENV{ID_FS_LABEL}
:根据标签匹配设备。RUN+
:自动执行挂载命令。步骤 4:应用规则
sudo udevadm control --reload-rules
mount: permission denied (SELinux)
方法 1:临时禁用 SELinux
sudo setenforce 0
方法 2:调整 SELinux 策略
sudo semanage fcontext -a -t mountpoint_t "/mnt/data(/.*)?"
sudo restorecon -Rv /mnt/data
semanage
:管理 SELinux 策略。mountpoint_t
:设置挂载点安全上下文。mount: /dev/sdb1: can't read superblock
步骤 1:卸载设备
sudo umount /dev/sdb1
步骤 2:检查并修复文件系统
sudo fsck.ext4 /dev/sdb1
fsck.ext4
针对 ext4 文件系统进行检查。步骤 3:恢复数据(可选)
使用 debugfs
工具恢复文件:
sudo debugfs /dev/sdb1
debugfs: recover_file filename
mount: /mnt/data: cannot allocate memory
步骤 1:查看内存使用情况
free -h
free
列显示可用内存。步骤 2:释放内存
sudo sync && echo 3 > /proc/sys/vm/drop_caches
步骤 3:扩展交换空间(临时)
sudo fallocate -l 2G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
-l 2G
创建 2GB 交换文件。命令格式:
umount [选项] 设备或挂载点
参数解释:
/dev/sdb1
、/dev/cdrom
。/mnt/usb
、/media/disk
。示例 1:通过挂载点卸载
umount /mnt/data
/mnt/data
的文件系统。mount | grep /mnt/data # 无输出表示卸载成功
示例 2:通过设备路径卸载
umount /dev/sdb1
步骤 1:同步数据
sudo sync
步骤 2:检查设备是否被占用
fuser -m /mnt/data
/mnt/data: 9341c
9341
是占用进程的 PID,c
表示当前目录被占用。步骤 3:执行卸载
sudo umount /mnt/data
命令格式:
sudo umount -f 设备或挂载点
示例:
sudo umount -f /mnt/data
方法 1:使用 fuser
fuser -m /mnt/data
-m
:指定挂载点。-k
:终止进程(慎用): sudo fuser -km /mnt/data
方法 2:使用 lsof
lsof /mnt/data
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 9341 francois cwd DIR 8,17 4096 2 /mnt/data
场景:当前目录在挂载点内无法卸载。
cd / # 切换到根目录
sudo umount /mnt/data
命令格式:
sudo umount -l 挂载点
示例:
sudo umount -l /mnt/data
命令格式:
sudo umount -a
/etc/mtab
中列出的所有文件系统。/
)无法卸载。命令格式:
sudo umount -t 文件系统类型 设备或挂载点
示例:
sudo umount -t ext4 /mnt/data
ext4
、ntfs
)。普通卸载:
sudo umount /mnt/nfs
强制卸载:
sudo umount -f /mnt/nfs
普通卸载:
sudo umount /mnt/smb
延迟卸载:
sudo umount -l /mnt/smb
错误提示:
umount: /mnt/data: not mounted
解决方法:
ls -ld /mnt/data
mount | grep /mnt/data
错误提示:
umount: permission denied
解决方法:
sudo
提升权限: sudo umount /mnt/data
/etc/fstab
是否配置 user
选项: sudo nano /etc/fstab
# 添加 "user" 选项后重新加载配置
sudo mount -a
错误提示:
umount: /mnt/data: target is busy
解决方法:
fuser -m /mnt/data
sudo fuser -km /mnt/data
sudo umount -f /mnt/data
错误提示:
umount: /dev/sdb1: device is busy
解决方法:
sudo fsck.ext4 /dev/sdb1
sudo fsck.ext4 -y /dev/sdb1
umount /mnt/data # 优于 umount /dev/sdb1
步骤 1:卸载前检查
df -h | grep /mnt/usb
步骤 2:执行卸载
sudo umount /mnt/usb
步骤 3:物理移除设备
sudo eject /dev/sdb
示例脚本:
#!/bin/bash
# 安全卸载设备
MOUNT_POINT="/mnt/data"
# 同步数据
sync
# 检查是否被占用
if fuser -m -s $MOUNT_POINT; then
echo "Device is busy. Terminating processes..."
fuser -km $MOUNT_POINT
fi
# 执行卸载
if umount $MOUNT_POINT; then
echo "Unmounted successfully."
else
echo "Unmount failed. Trying force unmount..."
umount -f $MOUNT_POINT
fi
sync
)→ 2. 检查占用(fuser
/lsof
)→ 3. 普通卸载(umount
)→ 4. 强制卸载(-f
)或延迟卸载(-l
)。-f
:强制卸载(风险高)。-l
:延迟卸载(安全但需等待)。-a
:卸载所有挂载点。通过系统学习 umount
命令的使用方法和故障排除技巧,你可以更高效地管理 Linux 系统中的文件系统,确保数据安全和系统稳定性。建议结合具体场景反复练习,逐步掌握安全卸载的核心技能。
Linux 的 mount
命令支持丰富的挂载选项,用于控制文件系统的行为。以下是按功能分类的常用选项及实战示例:
选项 | 说明 | 示例 |
---|---|---|
ro |
只读挂载,禁止对设备进行写入操作(保护重要数据或只读介质)。 | sudo mount -o ro /dev/sdb1 /mnt/readonly |
rw |
读写挂载(默认选项,允许正常读写操作)。 | sudo mount -o rw /dev/sdc1 /mnt/data (可省略 -o rw ,默认生效) |
user |
允许普通用户挂载设备(需挂载点权限配合,如 chown user:user /mnt/usb )。 |
sudo mount -o user /dev/sdd1 /mnt/usb |
nouser |
仅允许 root 用户挂载(默认选项,增强系统安全性)。 | 无需额外参数,默认禁用普通用户挂载 |
选项 | 说明 | 示例 |
---|---|---|
noatime |
不更新文件的最后访问时间(atime ),减少磁盘 I/O 操作,提升性能。 |
sudo mount -o noatime /dev/sdb1 /mnt/data |
async |
异步写入:数据先缓存到内存,再批量写入磁盘(速度快,但可能丢失数据)。 | sudo mount -o async /dev/sdc1 /mnt/log |
sync |
同步写入:数据实时写入磁盘(安全性高,但性能较低,用于日志类设备)。 | sudo mount -o sync /dev/sda3 /mnt/journal |
选项 | 说明 | 示例 |
---|---|---|
noexec |
禁止执行挂载点内的可执行文件(防止病毒或恶意程序运行)。 | sudo mount -o noexec /dev/sdb1 /mnt/sensitive |
nodev |
禁止访问挂载点内的设备文件(如 /dev 下的硬件节点)。 |
sudo mount -o nodev /dev/sdc1 /mnt/usb |
nosuid |
禁用 setuid/setgid 特殊权限(防止普通用户获取管理员权限)。 |
sudo mount -o nosuid /dev/sda5 /mnt/public |
选项 | 说明 | 示例 |
---|---|---|
bind |
绑定挂载:将一个目录映射到另一个路径,实现跨文件系统数据共享。 | sudo mount --bind /var/log /mnt/log_backup |
loop |
将文件视为块设备挂载(如 ISO 镜像、虚拟磁盘文件)。 | sudo mount -o loop /path/to/disk.iso /mnt/cdrom |
remount |
重新挂载已挂载的设备(修改挂载选项,无需先卸载再挂载)。 | sudo mount -o remount,ro /mnt/data (将已挂载目录改为只读) |
# 挂载分区为只读模式,禁用访问时间更新和执行权限
sudo mount -o ro,noatime,noexec /dev/sdb1 /mnt/secure_data
# 绑定挂载系统日志目录到独立分区,启用异步写入
sudo mount --bind -o async /var/log /mnt/log_partition
CIFS(Common Internet File System)是 SMB(Server Message Block)协议的标准化版本,用于访问 Windows 共享目录。以下是详细操作步骤:
步骤 1:安装 CIFS 工具
# Debian/Ubuntu 系统
sudo apt install cifs-utils
# CentOS/RHEL 系统
sudo yum install cifs-utils
步骤 2:创建挂载点
sudo mkdir /mnt/smb_share
语法:
sudo mount -t cifs //服务器IP/共享名 挂载点 -o username=用户名,password=密码,选项
示例:挂载 Windows 共享目录
sudo mount -t cifs //192.168.1.100/public /mnt/smb_share -o username=admin,password=123456,vers=3.0
vers=3.0
:指定 SMB 协议版本(推荐使用最新版本提升兼容性)。domain=WORKGROUP
:若需要指定域名,可添加此参数(默认值为 WORKGROUP
)。rw/ro
:设置读写权限(默认 rw
,可显式添加 ro
设为只读)。步骤 1:创建凭证文件(避免密码明文写入 fstab)
sudo nano /etc/smb_credential
内容格式:
username=admin # 共享目录用户名
password=123456 # 共享目录密码
设置文件权限(仅 root 可读):
sudo chmod 600 /etc/smb_credential
步骤 2:编辑 /etc/fstab
sudo nano /etc/fstab
添加配置:
//192.168.1.100/public /mnt/smb_share cifs credentials=/etc/smb_credential,vers=3.0,uid=1000,gid=1000 0 0
credentials=/etc/smb_credential
:指定凭证文件路径。uid=1000,gid=1000
:设置挂载目录的用户和组(对应本地用户权限)。nobrl
:禁用文件锁(解决部分 Windows 共享兼容性问题)。步骤 3:测试配置
sudo mount -a # 加载 fstab 所有配置
df -h | grep smb # 验证是否挂载成功
NTFS 是 Windows 主流文件系统,Linux 需借助 ntfs-3g
驱动实现读写支持。以下是详细操作流程:
步骤 1:确认设备路径
lsblk # 找到目标设备(如 /dev/sdb1)
步骤 2:查看文件系统类型
sudo blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="A2B3C4D5" TYPE="ntfs" PARTLABEL="Windows Data" PARTUUID="12345678"
TYPE="ntfs"
表示该设备为 NTFS 格式。步骤 1:安装驱动程序
# Debian/Ubuntu 系统
sudo apt install ntfs-3g
# CentOS/RHEL 系统(需启用 EPEL 源)
sudo dnf install ntfs-3g
语法:
sudo mount -t ntfs-3g 设备路径 挂载点 [选项]
示例 1:读写模式挂载
sudo mount -t ntfs-3g /dev/sdb1 /mnt/ntfs_disk
示例 2:只读模式挂载(保护数据)
sudo mount -t ntfs-3g -o ro /dev/sdb1 /mnt/ntfs_disk
步骤 1:获取设备 UUID
sudo blkid /dev/sdb1 | grep UUID # 复制 TYPE="ntfs" 对应的 UUID
步骤 2:编辑 /etc/fstab
sudo nano /etc/fstab
添加配置(推荐使用 UUID 避免设备名变更问题):
UUID=A2B3C4D5-1234-5678-90AB-CDEF01234567 /mnt/ntfs_disk ntfs-3g defaults,nofail 0 0
defaults
:包含 rw,user,auto
等默认选项(普通用户可手动挂载)。nofail
:允许挂载失败不影响系统启动(设备未连接时忽略错误)。rw
模式挂载,或尝试添加 uid=当前用户ID,gid=当前用户组ID
选项: sudo mount -t ntfs-3g -o rw,uid=1000,gid=1000 /dev/sdb1 /mnt/ntfs_disk
sudo ntfsfix /dev/sdb1 # 修复简单错误
sudo fsck.ntfs -f /dev/sdb1 # 强制检查并修复(需卸载设备)
作用:将一个目录的内容映射到另一个目录,实现跨文件系统的数据共享(原目录修改会实时同步到目标目录)。
# 示例:将 /var/log 目录映射到 /mnt/log_backup
sudo mkdir /mnt/log_backup
sudo mount --bind /var/log /mnt/log_backup # 临时绑定挂载
场景:挂载 .img
、.vhd
等虚拟磁盘文件。
# 示例:挂载 QCOW2 格式的虚拟机磁盘
sudo mount -o loop,offset=512 /path/to/vm_disk.qcow2 /mnt/vm_disk
offset=512
表示跳过磁盘引导扇区(根据实际分区情况调整)。ro/noatime
用于只读存储,async
提升日志写入速度)。ntfs-3g
驱动,优先使用 UUID 配置自动挂载。loop
选项支持虚拟文件挂载,remount
可动态修改挂载选项。通过掌握这些拓展知识,你可以更灵活地应对不同存储设备和网络环境的挂载需求,提升 Linux 系统管理的专业性和效率。