Linux挂载文件系统(NFS、CIFS)
前两篇说到磁盘分区、逻辑卷相关的基础,所以这里说下挂载,顺道当做笔记。
其实之前开始博主刚接触linux的时候,就想,向移动硬盘,在windows下直接插上USB,就可以直接使用了,为啥LInux下这么麻烦,一会分区,一会格式化,还要挂载后才能使用。
现在想来,其实就是windows简化了这个过程(比较一个有UI的系统,一个是服务器版命令行,不能对比,如果是Linux的桌面版,应该不需要这个过程):
对于分区,硬盘连接后,windows直接创建了一个分区,不是没有分区。
对于格式化,本质上就是创建文件系统,文件系统定义了磁盘上储存文件的方法和数据结构。所以你的硬盘换个不同的系统可能就读不出来了。
对于挂载,就是从哪个地方去访问硬盘,windows自动分配一个盘符,linux则是指定目录,本质是一样的,都是指定硬盘的挂载点
对于格式化,就是创建文件系统,顺道提一下,这里有个参数,叫分配单元大小,它表示系统对磁盘进行读写的最小单位,在格式化过程中,选择合适的分配单元大小会影响存储设备的读写速度和空间利用率。较大的分配单元可以减少磁盘寻道次数,提高读写速度,但可能会浪费空间;较小的分配单元则能更有效地利用空间,但可能会降低读写速度。
Windows下常用的文件系统是NTFS,可以在UI界面上选择分配单元大小,默认4096字节
Linux下常用的文件系统是XFS、EXT4,格式化时,可以通过-b参数指定分配单元大小,默认4096字节(单位是字节)
# XFS
mkfs.xfs -b size=4096 /dev/sdx1
# EXT4
mkfs.ext4 -b 4096 /dev/sdx1
好了,现在说说挂载,前面两篇文章中有说到过,当我们格式化一个文件系统后,我们可以使用mount命令挂载,使用umount命令卸载,比如:
# 挂载:mount [分区] [目录]
sudo mount /dev/sdb1 /mnt/sdb1
# 卸载
sudo umount /mnt/sdb1
注意,挂载文件系统后,原目录下的内容就看不到了。
上面这个是对分区的挂载,但是mount命令很强大,我们还是用用来挂载远程文件系统,比如NFS(网络文件系统)、CIFS(网络文件系统)。
挂载NFS
Linux下挂载NFS,个人常用命令:
# 挂载: mount -t nfs -o [options] [nfs_addr] [mountpoint]
sudo mount -t nfs -o noexec,nosuid,nodev,rw,tcp,bg,soft,intr,vers=3,retry=3,timeo=30,rsize=102400,wsize=102400 192.168.139.128:/data /mnt/data
参数说明:
-t:文件系统类型,nfs
192.168.139.128:/data: nfs地址
/mnt/data: 挂载点
-o:选项内容,可以理解为是-t指定文件系统的配置信息,对于nfs的上面这些信息:
exec/noexec: 允许/不允许执行可执行文件
suid/nosuid: 允许/不允许普通用户以超过自己权限来执行
dev/nodev: 保留/不保留设备文件的特殊功能,例如分区等
rw/ro: 读写权限/只读权限
udp/tcp: 选择通过TCP来传输,默认选择udp
fg/bg: fg在前台挂载,挂载失败会重新尝试(或者超时),前台阻塞,bg在后台挂载,挂载失败会重新尝试(或者超时),不阻塞
hard/soft: 对于hard模式,当连接断开时,会重新连接,并阻塞访问nfs的访问,直至连接成功放行,
对于soft模式,当连接断开时,会重新连接,并对试图访问nfs的访问抛出异常
intr: 常和hard模式配合使用,hard模式一直导致阻塞,可能中断都中断不了,intr运行在hard模式下中断
vers=3/vers=4: 选择nfs的版本
retry=3: 连接断开后放弃mount前重试的次数
timeo=30: 设置请求的超时时间(0.1s为单位)
rsize=102400: 设置读取数据的缓冲区大小,单位字节
wsize=102400: 设置写入数据的缓冲区大小,单位字节
mountport=[port]: nfs的端口,一般不需要指定,除非修改了默认端口(默认111)
如果要开机自动挂载,可以在/etc/fstab
中添加配置:
# 格式:[nfs_addr] [mountpoint] [type] [options] [dump] [fsck]
192.168.139.128:/data /mnt/data nfs noexec,nosuid,nodev,rw,tcp,bg,soft,intr,vers=3,retry=3,timeo=30,rsize=102400,wsize=102400 0 0
挂载CIFS
Linux下挂载CIFS,个人常用命令:
# 挂载: mount -t cifs -o [options] [cifs_addr] [mountpoint]
sudo mount -t cifs -o username=feng,password=123456 //192.168.139.128:/data /mnt/data
参数说明:
-t:文件系统类型,cifs
//192.168.139.128:/data: cifs地址,格式://{服务器地址或IP}/{共享名称}
/mnt/data: 挂载点
-o:选项内容,可以理解为是-t指定文件系统的配置信息,对于nfs的上面这些信息:
username: 用于访问CIFS共享的用户名
password: 用于访问CIFS共享的密码
domain: 可选,如果CIFS共享位于Windows域中,则指定域名
file_mode: 可选,设置挂载后文件的权限模式,例如file_mode=0777
dir_mode: 可选,设置挂载后目录的权限模式,dir_mode=0777
如果要开机自动挂载,可以在/etc/fstab
中添加配置:
# 格式:[cifs_addr] [mountpoint] [type] [options] [dump] [fsck]
//192.168.139.128/data /mnt/data cifs username=feng,password=123456 0 0
总结
本篇就写完了,就当做个笔记好了,后续要使用直接复制修改下就可以了
一个专注于.NetCore的技术小白
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库