fstab参数详解

作者: 前浪浪奔浪流 | 来源:发表于2022-07-10 11:23 被阅读0次

    fstab配置详解

    fstab :这个文件描述系统中各种文件系统的信息。一般而言,应用程序仅读取这个文件,而不对它进行写操作。对它的维护是系统管理员的工作。在这个文件中,每个文件系统用一行来描述,在每一行中,用空格或TAB符号来分隔各个字段,文件中以#开头的行是注释信息。Fstab文件中的纪录的排序十分重要。因为fsck,mount或umount等程序在做它们的工作时会按此顺序进行。

    接下来整理一下它的配置语法:
    fs_spec fs_file fs_type fs_options fs_dump fs_pass 
    /dev/hda1 /   ext2  defaults   1    1

    fs_spec :该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdXN,X是IDE设备通道(a, b或者c),N代表分区号;SCSI设备一描述为/dev/sdXN。对于procfs,使用`proc’来定义。对文件系统的定义(fsspec),它描述了将被装载的块设备或远程文件系统。对于通常的mount操作而言,这个字段应该包括一个将被装载的块设备的设备结点(通过mknod命令来创建)或指向这类结点的连接(例如/dev/cdrom或/dev/sdb),对于NFSmount操作,这个字段应该包含host:dir格式的信息,对于进程文件系统procfs,使用proc。除了显示的使用设备名,你可以使用设备的UUID或设备的卷标签,例如,你可以在这个字段写成“LABAL=root”或“UUID=3e6be9de-8139-11d1-9106-a43f08d823a6”,这将使系统更具伸缩性。例如,如果你的系统添加或移除了一个SCSI硬盘,这有可以改变你的设备名,但它不会修改你的卷标签。
    fs_file: 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。描述文件系统的载入点,对于交换分区(swap),这个字段定义为none,如果在载入点的路径中包含空格符,可以用“\040”来替代空格符。
    fs_type: 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等.文件系统类型(fsvfstype),主要用来定义文件系统的类型。Linux系统支持大量的文件类型,包括sdfs,affs,autofs,jfs,minix,msdos, ncpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs,,smbfs,sysv, tmpfs, udf, ufs, umsdos, vfat, xenix,xfs等等。如果想了解你的kernel目前支持哪些文件系统,可以查看/proc/filesystems的内容。如果这个字段定义为swap,这条纪录将关联到一个用于交换目的的文件或分区。如果这个字段定义为ignored,这行将被忽略。这对于显示目前没有使用的分区非常有用。
    fs_options: 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。文件系统选项(fsmntops)在装载文件系统时使用的装载选项。多个选项之间用逗号做分隔符,这些选项列表包括了装载类型以及对于该文件系统合适的其它装载选项。对于非NFS系统可用的装载选项可以参看mount命令的说明,对于nfs系统的选项可以查看关于nfs的文档。对于所有文件系统都适用的选项有noauto(当使用mount–a命令时不载入),user(允许用户进行装载),owner(允许设备所有人装载),_netdev(设备需要网络),后两个选项是linux系统所特有的。
    对于大多数系统使用"defaults"就可以满足需要。其他常见的选项包括:
    选项              含义
    ro    以只读模式加载该文件系统
    sync   不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度
    user   允许普通用户加载该文件系统
    quota   强制在该文件系统上进行磁盘定额限制
    noauto  不再使用mount -a命令(例如系统启动时)加载该文件系统
    fs_dump: 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0.文件系统频率(fs_freq),被dump程序使用来确定哪个文件系统需要dump,如果最后一个字段没有设置,系统将认为其值为0,而dump程序则认为此文件系统无需dump。
    fs_pass: 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0.被fsck程序所使用来确定进行在系统重启进行文件系统检查时的顺序,对于根系统/这个值应设为1,其它文件系统可以设为2,在同一个物理硬盘内的文件系统应该被顺序检测,而不同硬盘中的文件系统则应该同时检测以充分利用系统的并行性。如果最后一个字段值为0或没有设置,fsck程序装跳过此文件系统的检测。在linux编程中可以用getmntent过程来访问这个文件的内容。

    其中fs_options参数值得一提,这个参数在mount的目标文件时nfs文件时,参数可以是:

    HARD:
    NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT
    上。
    SOFT:
    会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
    例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
    rsize和wsize:
    文件传输尺寸设定:wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
    bg:
    在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设
    定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
    fg:
    和bg正好相反,是默认的参数
    nfsvers=n:
    设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
    mountport:
    设定mount的端口
    port:
    根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
    timeo=n:
    设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
    intr:允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
    udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
    tcp:使用tcp作为nfs的传输协议
    namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255
    acregmin=n:设定最小的在文件更新之前cache时间,默认是3
    acregmax=n:设定最大的在文件更新之前cache时间,默认是60
    acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
    acdirmax=n:设定最大的在目录更新之前cache时间,默认是60
    actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。
    retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
    noac: 关闭cache机制。
    同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
    请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式 mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。

    下面给出公司生产换几个的fstab配置文件样板:
    LABEL=/ / xfs defaults 1 1
    LABEL=SWAP swap swap defaults 0 0
    tmpfs /dev/shm tmpfs defaults 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0
    /dev/lewa/data /data ext4 defaults 0 0
    /dev/lewa/web /web ext4 defaults 0 0
    /dev/lewa/Hadoop_data /hadoop_data ext4 defaults 0 0
    web-storage-1:/data/www/static/discuz/xwb/log /web/bbs/htdoc/xwb/log nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    web-storage-1:/data/www/static/discuz/uc_server/data /web/bbs/htdoc/uc_server/data nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    web-storage-1:/data/www/static/discuz/static /web/bbs/htdoc/static nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    web-storage-1:/data/www/static/discuz/xwb/cache /web/bbs/htdoc/xwb/cache nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    web-storage-1:/data/www/static/discuz/data /web/bbs/htdoc/data nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    web-storage-1:/data/fcfiles/theme /web/theme/htdoc/theme nfs rsize=8192,nfsvers=4,wsize=8192,timeo=14,intr,bg,retry=100,nofail 0 0
    ————————————————
    版权声明:本文为CSDN博主「写bug的人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43484225/article/details/101542064

    服务器的配置,配置文件/etc/exports:

    ro 该主机对该共享目录有只读权限

    rw 该主机对该共享目录有读写权限

    root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

    no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

    all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

    anonuid 将客户机上的用户映射成指定的本地用户ID的用户

    anongid 将客户机上的用户映射成属于指定的本地用户组ID

    sync 资料同步写入到内存与硬盘中

    async 资料会先暂存于内存中,而非直接写入硬盘

    insecure 允许从这台机器过来的非授权访问

    例子

    / zhang (rw) wang (rw,no_root_squash)

    表示共享服务器上的根目录(/)只有zhang和wang两台主机可以访问,且有读写权限;

    zhang主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;

    wang主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目

    /root/share/ 192.168 . 1.20 (rw,insecure, sync ,all_squash)

    表示共享服务器上的/root/share/目录只有192.168.1.20主机可以访问,且有读写权限;

    此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

    /home/ljm/ *.gdfs.edu.cn (rw,insecure, sync ,all_squash)

    表示共享/home/ljm/目录,*.gdfs.edu.cn域中所有的主机都可以访问该目录,且有读写权限

    /home/share/ .gdfs.edu.cn (ro, sync ,all_squash,anonuid=student,anongid=math)

    表示共享目录/home/share/,*.gdfs.edu.cn域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为student、gid为math的用户

    启动nfs后又修改了/etc/exports,不用重启该服务,使用exports命令即可:

    exports [-aruv]

    -a 全部mount或umount文件/etc/exports中的内容

    -r 重新mount文件/etc/exports中的共享内容

    -u umount目录

    -v 在export的时候,将详细的信息输出到屏幕上

    例:

    [root@localhost ~]# /usr/sbin/ exportfs -rv
    全部重新export一次
    [root@localhost ~]# /usr/sbin/exportfs -au
    全部卸载

    nfs客户端的配置:

    若是临时使用可直接执行mount命令:mount servername(or IP): 共享目录 本地挂载目录

    若客户机启动就自动挂载服务器的共享目录,则需修改客户机上的/etc/fstab文件

    /etc/fstab格式:

    (192.168.233.139:/share /mnt nfs defaults 0 2)

    fs_spec fs_file fs_type fs_options fs_dump fs_pass

    fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录

    fs_file:本地挂载点

    fs_type:挂载类型

    fs_options:挂载参数

    fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0

    fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0

    [root@localhost ~]#vi /etc/hosts.allow Portmap:192.168.5.123:allow
    [root@localhost ~]#vi /etc/hosts.deny Portmap:ALL:deny

    安全提醒:确保网络安全,使用nfs时结合tcp_wrappers来限制使用范围(如只想192.168.5.123主机可挂载nfs服务器上的共享目录),另外还可结合iptables来加强
    关机时若nfs server上有client联机时,先关掉portmap与nfs两个系统服务。若无法正确将此2项服务关掉,用netstat –utlp找出PID,然后用kill杀掉进程才关机

    nfsstat查看NFS的运行状态,调整NFS运行大有帮助
    rpcinfo查看rpc执行信息,用于检测rpc运行情况

    挂载格式:

    mount -t nfs hostname (or IP):/directory / mount point

    卸载:

    umount /本地挂载目录(本地client卸载方法,但用exports -au为server卸载)

    showmount -e IP(查看NFS服务器上共享了那些目录)
    showmount -a IP(用于nfs server上,显示已经mount上本机NFS服务器的client(客户机))

    相关文章

      网友评论

        本文标题:fstab参数详解

        本文链接:https://www.haomeiwen.com/subject/brawbrtx.html