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

 

  总结

  本篇就写完了,就当做个笔记好了,后续要使用直接复制修改下就可以了

posted @   没有星星的夏季  阅读(522)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示