精华内容
下载资源
问答
  • nfs系统配置

    2012-11-30 10:12:14
    描述linux环境下如何配置nfs系统,包括linux系统的配置、开发板内核的配置以及一些问题的解决方法
  • linux下nfs系统详谈

    2011-09-10 21:33:47
    nfs实现Linux系统之间的分享。此文是linux 下的nfs系统详细介绍。
  • NFS系统注意事项

    2013-08-01 20:02:30
    NFS系统注意事项
  • 详谈介绍Fedora10 NFS系统内核设置
  • 个人关于Linux挂载NFS系统的一些总结
  • 基于RPC的简单NFS系统实现 代码实现,基于sunrpc 实现 目录创建,列取,删除,文件创建,列取,删除。
  • Linux:设置开发板启用并挂载NFS系统

    千次阅读 2018-10-22 15:02:34
    设置开发板启用并挂载NFS系统 在这里,实验过程使用的是九鼎提供的S5PV210开发板,实验内核同样来自其官方资料盘中Linux资料包中的的QT4.8中的相关源码,实验的NFS文件系统在虚拟中的Ubuntu14.04中建立. 设置内核...
    • 设置开发板启用并挂载NFS系统

    在这里,实验过程使用的是九鼎提供的S5PV210开发板,实验内核同样来自其官方资料盘中Linux资料包中的的QT4.8中的相关源码,实验的NFS文件系统在虚拟中的Ubuntu14.04中建立.

    • 设置内核支持NFS

    确保当前使用内核支持NFS相关的功能,使用"make menuconfig"命令,查看当前内核的配置情况,如果跟下面列出来的情况不一致,需要设置成一致并重新编译.

    第一步,配置网络部分,主要是使能网络功能,这样在第二部才能够看到"Root file system on NFS"选项:

    Networking support  --->	 
    	Networking options  --->	 
    		TCP/IP networking
    				IP: kernel level autoconfiguration
    					[*] IP: DHCP support
    					[*] IP: BOOTP support

    第二步,配置开启nfs服务: 

    File systems  --->	
    	Network File Systems  --->
    		<*> NFS client support 
    		[*] NFS client support for NFS version 3                                  
    			[*] NFS client support for the NFSv3 ACL protocol extension 
    		[*] NFS client support for NFS version 4 (EXPERIMENTAL) 
    			[*] NFS client support for NFSv4.1 (DEVELOPER ONLY) 
    		[*] Root file system on NFS  
    • 修改uboot启动参数

    在uboot中设置如下启动参数(IP根据实际使用更改):

    setenv bootargs root=/dev/nfs nfsroot=192.168.1.188:/root/s5pv210-qt/s5pv210-qt4.8/rootfs-self ip=192.168.1.88:192.168.1.188:192.168.1.1:255.255.255.0::eth0:off  init=/linuxrc console=ttySAC2,115200

    设置完成后,继续启动后发现NFS文件系统挂载成功,如果有需要搭建NFS文件系统和自制NFS文件系统的朋友请自行百度或者参考我的其他相关博客.

    展开全文
  • NFS系统write调用过程(二)

    千次阅读 2013-01-29 21:06:48
     nfs_file_write()是NFS系统中的写操作函数,这个函数将用户态缓冲区中的数据写入到内核态缓存页中。如果是同步写操作,则马上调用vfs_fsync()将缓存页中的数据刷新到服务器中。如果不是同步写操作,则客户端定期将...

    1.nfs_writepages

        nfs_file_write()是NFS系统中的写操作函数,这个函数将用户态缓冲区中的数据写入到内核态缓存页中。如果是同步写操作,则马上调用vfs_fsync()将缓存页中的数据刷新到服务器中。如果不是同步写操作,则客户端定期将缓存页中的数据刷新到服务器中。无论哪种情况,最终都需要调用address_space_operations结构中的writepages函数,NFS系统中这个函数是nfs_writepages(),这个函数的定义如下:

    // 这是NFS文件系统中的writepages()函数.

    // 将缓存中的数据刷新到NFS服务器中    wbc中记录了数据刷新范围
    int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
    {
    	struct inode *inode = mapping->host;        // 找到文件索引节点
    	unsigned long *bitlock = &NFS_I(inode)->flags;  // 一些标志位
    	struct nfs_pageio_descriptor pgio;
    	int err;
    
    	/* Stop dirtying of new pages while we sync */
    	// 等待标志位NFS_INO_FLUSHING复位,然后设置这个标志位. NFS_INO_FLUSHING表示正在刷新数据
    	err = wait_on_bit_lock(bitlock, NFS_INO_FLUSHING,
    			nfs_wait_bit_killable, TASK_KILLABLE);
    	if (err)
    		goto out_err;
    
    	nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES); // 增加事件计数
    
    	// nfs_pageio_init_write()    初始化nfs_pageio_descriptor结构     步骤(1)
    	// 这个函数主要设置下面两个参数
    	// desc->pg_ops = nfs_pageio_write_ops
    	// desc->pg_completion_ops = nfs_async_write_completion_ops
    	NFS_PROTO(inode)->write_pageio_init(&pgio, inode, wb_priority(wbc), &nfs_async_write_completion_ops);
    	// mm/page-writeback.c
    	// write_cache_pages在缓存中查找脏页,对查找到的脏页执行函数nfs_writepages_callback
    	// pgio是传递给nfs_writepages_callback的参数
    	// nfs_writepages_callback()将查找到的符合条件的缓存页面添加到pgio中    步骤(2)
    	// 现在pgio中就包含了大量的缓存页,这些缓存页需要处理.所有的缓存页添加到链表pgio->pg_list中了.
    	err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
    	// 这个函数根据pgio中的数据创建了一个nfs_pgio_header结构以及若干个nfs_write_data结构
    	// 每个nfs_write_data结构发起一次WRITE请求,将缓存页中的数据写到服务器中
    	nfs_pageio_complete(&pgio);	// 这个函数负责处理数据写请求    步骤(3)
    
    	// 数据刷新完毕,可以清除标志位NFS_INO_FLUSHING了,其他用户可以向服务器传输数据了
    	clear_bit_unlock(NFS_INO_FLUSHING, bitlock);
    	smp_mb__after_clear_bit();
    	wake_up_bit(bitlock, NFS_INO_FLUSHING);		// 唤醒其他进程
    
    	if (err < 0)
    		goto out_err;
    	err = pgio.pg_error;
    	if (err < 0)
    		goto out_err;
    	return 0;
    out_err:
    	return err;
    }

    这个函数的处理流程和read操作的处理流程相似,基本上分为三个步骤。

    步骤1:初始化一个nfs_pageio_descriptor结构,这个结构中包含了WRITE操作中的操作函数和错误处理函数。

    步骤2:查找文件中的脏缓存页,将脏缓存页添加到步骤1中创建的nfs_pageio_descriptor结构中。

    步骤3:根据nfs_pageio_descriptor结构中的数据量创建一个或者多个nfs_write_data结构,每个nfs_write_data结构表示一个WRITE请求,向服务器发起WRITE请求,将数据写到服务器中。


    2.初始化nfs_pageio_descriptor结构

    这个结构中设置了WRITE操作中的操作函数和错误处理函数,主要设置了下面两个操作函数集合

    static const struct nfs_pageio_ops nfs_pageio_write_ops = {
            // 这是一个简单的测试函数,保证了desc中的数据量不会超过wsize限制
            // 向desc中添加nfs_page请求时需要执行这个函数.
            .pg_test = nfs_generic_pg_test,
            // 根据desc中的数据创建一个nfs_pgio_header结构以及多个nfs_write_data结构,
            // 每个nfs_write_data结构发起一个WRITE请求,向服务器刷新数据.
            .pg_doio = nfs_generic_pg_writepages,
    };
    static const struct nfs_pgio_completion_ops nfs_async_write_completion_ops = {
            // 当创建nfs_write_header结构失败时调用这个函数,删除相关的nfs_page结构
            .error_cleanup = nfs_async_write_error,
            // 所有的写操作完毕后执行这个函数,做一些收尾工作,后面会讲解这个函数
            .completion = nfs_write_completion,
    };
    


    3.查找脏缓存页

    查找文件中脏缓存页的函数是write_cache_pages(),这是VFS层的通用函数,函数声明如下:

    int write_cache_pages(struct address_space *mapping,
                          struct writeback_control *wbc, writepage_t writepage,
                          void *data)
    这个函数包含四个参数:

    参数mapping:这是文件缓存的数据结构,查找这个文件中的脏缓存页

    参数wbc:这个结构中包含了查找范围,只查找这个范围内的脏缓存页

    参数writepage:这是一个处理函数,write_cache_pages查找指定返回内的脏缓存页,writepage对脏缓存页进行处理,每个脏缓存页都需要执行一次这个函数

    参数data:这是writepage使用的参数

    NFS系统中的writepage是nfs_writepages_callback(),这个函数将查找到的脏缓存页添加到前面定义的nfs_pageio_descriptor结构中,函数流程如下:

    参数page:查找到的一个脏缓存页

    参数wbc:这个结构中包含了查找范围

    参数data:这是一个nfs_pageio_descriptor结构的指针,将脏缓存页添加到这个结构中。

    // nfs_writepages函数调用write_cache_pages()查找脏的缓存页,对查找到的每个脏页执行函数nfs_writepages_callback
    static int nfs_writepages_callback(struct page *page, struct writeback_control *wbc, void *data)
    {
            int ret;
    
            // data是nfs_pageio_descriptor结构的指针,这个函数将缓存页page添加到data中
            ret = nfs_do_writepage(page, wbc, data);
            unlock_page(page);      
            return ret;
    }
    

    实际的处理函数是nfs_do_writepage。

    static int nfs_do_writepage(struct page *page, struct writeback_control *wbc, struct nfs_pageio_descriptor *pgio)
    {
        // 找到文件的索引节点
            struct inode *inode = page_file_mapping(page)->host;
            int ret;
    
            nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGE);      // 增加统计计数
            nfs_add_stats(inode, NFSIOS_WRITEPAGES, 1);
    
            // 检查缓存页page和pgio中的数据是否相连。如果不相连就需要先处理pgio中的数据,
            // 否则page没办法添加到pgio中。如果相连就不需要处理了。
            nfs_pageio_cond_complete(pgio, page_file_index(page));  
            // 将缓存页page添加到pgio中
            ret = nfs_page_async_flush(pgio, page, wbc->sync_mode == WB_SYNC_NONE);
            if (ret == -EAGAIN) {
                    redirty_page_for_writepage(wbc, page);
                    ret = 0;
            }
            return ret;
    }
    pgio中所有的数据必须是连续的,如果缓存页page和pgio中的数据不连续就需要先处理pgio中的数据(向服务器发送WRITE请求),处理完毕后再将缓存页page添加到pgio中,将新的缓存页添加到pgio的函数是nfs_page_async_flush()。

    static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio,
                                    struct page *page, bool nonblock)
    {
            struct nfs_page *req;
            int ret = 0;
    
            // 锁定这个写请求,req = page->private
            req = nfs_find_and_lock_request(page, nonblock);
            if (!req)
                    goto out;       // 还没有设置nfs_page.
            ret = PTR_ERR(req);
            if (IS_ERR(req))
                    goto out;
    
            // page需要写数据了,这个函数在设置标志位PG_writeback
            ret = nfs_set_page_writeback(page);
            BUG_ON(ret != 0);
            BUG_ON(test_bit(PG_CLEAN, &req->wb_flags));
    
            // 将请求添加到pgio中
            if (!nfs_pageio_add_request(pgio, req)) {
                    // 处理失败
                    // 将缓存页重新标记为脏,因为数据刷新请求失败了.
                    nfs_redirty_request(req);
                    ret = pgio->pg_error;
            }
    out:
            return ret;
    }


    4.将数据写入服务器中

    NFS客户端调用write_cache_pages()查找到了文件中的缓存页,并添加到了nfs_pageio_descriptor结构中,现在就可以向服务器写数据了,这是通过nfs_pageio_complete()实现>的,这个函数最终调用了nfs_generic_pg_writepages(),这个函数的定义如下:

    static int nfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
    {
            struct nfs_write_header *whdr;
            struct nfs_pgio_header *hdr;
            int ret;
    
            // 步骤1   创建一个nfs_write_header结构
            whdr = nfs_writehdr_alloc();
            if (!whdr) {
                    // 出错了,释放desc中所有的写请求,重新将缓存页面标记为脏.
                    // 处理函数是nfs_async_write_error()
                    desc->pg_completion_ops->error_cleanup(&desc->pg_list); 
                    return -ENOMEM;
            }
            hdr = &whdr->header;        // 这是nfs_pgio_header结构
            // 步骤2  初始化nfs_pgio_header结构,nfs_writehdr_free是释放nfs_write_header结构的函数
            nfs_pgheader_init(desc, hdr, nfs_writehdr_free);
            atomic_inc(&hdr->refcnt);       // 引用计数增加为1了
            // 步骤3  根据desc中的数据量创建一个或者多个nfs_write_data结构
            // 每个nfs_write_data代表一次WRITE请求
            ret = nfs_generic_flush(desc, hdr);
            if (ret == 0)
                    // 步骤4  发起WRITE请求
                    ret = nfs_do_multiple_writes(&hdr->rpc_list,
                                                 desc->pg_rpc_callops,
                                                 desc->pg_ioflags);
            // 步骤4  所有的数据处理完毕,进行收尾操作
            if (atomic_dec_and_test(&hdr->refcnt))
                    hdr->completion_ops->completion(hdr);
            return ret;
    }

        这个函数的处理流程和READ操作中nfs_generic_pg_readpages()的处理流程基本一致,根据desc中的数据量创建一个或者多个nfs_write_data结构,每个结构发起一次WRITE调用,就不详细讲解了。但是这里需要详细讲解步骤4中的收尾操作。READ操作中的收尾函数是nfs_read_completion(),这个函数的主要任务是删除nfs_page结构占用的内存。WRITE操作中的收尾函数是nfs_write_completion(),但是这个函数做的工作要多一些。当客户端向服务器发送数据时,这些数据可能保存在服务器磁盘中了,也可能只保存在服务器的缓存页中了,这种情况下数据还有丢失的风险。WRITE应答报文中会告诉客户端数据是刷新到磁盘中了还是在缓存页中。客户端解析应答报文,如果数据保存在缓存页中了,就暂时不能释放nfs_page占用的内存,而是将这些缓存页链接在文件索引节点的一个链表中。适当时候,客户端解析这个链表中的数据范围,向服务器发送COMMIT请求。

    展开全文
  • ubuntu16.04 NFS系统挂载

    千次阅读 2016-09-06 15:04:57
    系统:ubuntu16.10 服务器端: step1:关闭防火墙 指令: sudo ufw disable step2:安装nfs 指令:sudoapt-get install nfs-kernel-server step3: 打开/etc/exports文件,在末尾加入:/home/...

    系统:ubuntu16.10


    服务器端:


    step1:关闭防火墙

    指令: sudo ufw disable
    step2
    :安装nfs

    指令:sudoapt-get install nfs-kernel-server

    step3

    打开/etc/exports文件,在末尾加入:/home/daysmark/nfsdir*(rw,sync,no_root_squash)

    注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:

    /home/daysmark/nfsdir:要共享的目录

    *:允许所有的网段访问

    rw:读写权限

    sync:资料同步写入内在和硬盘

    no_root_squashnfs客户端共享目录使用者权限

    重启服务:
    #sudo/etc/init.d/nfs-kernel-server restart     
     //
    重启nfs服务
    #showmount-e                                                
     //
    显示共享出的目录



    客户端:

    nfsclient端安装和配置


    (1)安装nfsclient

    sudoapt-get install nfs-common


    2)查看nfsserver上共享的目录


    #sudomount -t nfs 192.168.0.149: /home/daysmark/nfsdir /mnt

    192.168.0.149为服务器端IP地址这样就把共享目录挂到了/mnt目录

    取消挂载用这个指令:
    #sudoumount /mnt


    展开全文
  • 基于sun rpc rpcgen 实现简单的NFS功能 能够列取远端目录文件,进行创建文件,创建目录,列取目录,删除空目录,删除文件操作。
  • 由于业务需要,学校要把考试系统移植到云平台,第一步所做的是先把老系统A的nfs存储平台mount到新系统B上。老考试系统A服役时间已经很长了,操作系统还是redhat4系列,版本还是linux 2.4.20。  问题 在B端mount的...

    背景简介

    由于业务需要,学校要把考试系统移植到云平台,第一步所做的是先把老系统A的nfs存储平台mount到新系统B上。老考试系统A服役时间已经很长了,操作系统还是redhat4系列,版本还是linux 2.4.20。 

    问题

    在B端mount的时候,出现一个问题,即输入

    mount  -t nfs 10.77.30.31:/opt/OJ/contests  /mnt/nfs
    超时报错

    A端的nfs服务,其他老系统可以mountA的nfs文件,但是linux 3.0以后的服务器还是mount不了。后来问了下其他人,原来他们也早就知道了,但一直没解决。

    追踪

    首先在B端showmount看看,发现一切正常

    root@ubuntu188:/mnt# showmount -e 10.77.30.31
    Export list for 10.77.30.31:
    /opt/OJ/contests (everyone)
    这说明B端的nfs服务是正常运行的,且防火墙没有拦截。

    然后在A端查找日志,发现一直循环报错,

    nfsd: unexporting all filesystems
    nfsd: last server has exited
    nfsd: unexporting all filesystems

    于是网上百度这个问题,都说是nfs服务器中/proc/fs/nfsd没有装载,于是看了下,发现确实A端没有这个东西

    于是尝试mount,发现不行,提示出错

    mount -t nfsd  nfsd  /proc/fs/nfsd 
    mount: mount point /proc/fs/nfsd does not exist
    而在B端或者其他较新的系统上进行此类mount,是一切正常的

    那么A端是不是没装nfsd服务呢,虽然基本不可能,但还是验证一下,果然A端nfsd的服务模块是加载了的,/proc里也有

    [root@cszjusrv3 contests]# lsmod|grep nfsd
    nfsd                   81104   8  (autoclean)
    lockd                  59536   1  (autoclean) [nfs nfsd]
    sunrpc                 87516   1  (autoclean) [nfs nfsd lockd]
    [root@cszjusrv3 contests]# ls /proc/net/rpc/nfsd 
    /proc/net/rpc/nfsd


    问题的解决

    到这个时候我已经确认了基本是A端nfs服务版本过老的问题了。但是由于A的操作系统过老,已经不适合安装新的nfs版本了,那么就没办法了么。

    我查找"nfsd: unexporting all filesystems"的问题过程中,搜到两个链接http://blog.csdn.net/zanget/article/details/6659314,http://www.233.com/Linux/Instructs/060210/172416755-2.html其中都提到nfsvers=x ,这我本能的感觉到问题所在。进一步阅读后发现是用来选择nfs版本做优化的。通过nfsstat查了下,A端只支持1-3的nfs版本,而现在默认都用4了,于是在B端尝试了下参数,发现成功了。

    root@ubuntu188:/mnt# mount  -t nfs 10.77.30.31:/opt/OJ/contests  /mnt/nfs -o nfsvers=3
    root@ubuntu188:/mnt# ls /mnt/nfs
    problems  problems.1  runs  work  working

    总结

    这类问题首先要找到问题的日志信息,但是不能光依赖网上的万能解答,而是应该了解其机理。最后感谢下两篇上述引用文章的作者: )


    展开全文
  • NFS系统write调用过程(一)

    千次阅读 2013-01-28 18:03:59
    NFS文件系统中write操作过程和read操作过程类似,区别在于read操作从服务器读取数据到客户端,write操作将数据从客户端写到服务器中。NFS文件系统中write操作的处理函数是nfs_file_write()。 ssize_t nfs_file_...
  • NFS系统read调用过程(一)

    千次阅读 2013-01-20 23:42:40
    NFS文件系统中,这个函数是do_sync_read(),这也是一个通用函数,调用了文件系统的aio_read()函数。NFS文件系统中的aio_read()是nfs_file_read()。 ssize_t nfs_file_read(struct kiocb *iocb, const st
  • NFS系统read调用过程(二)

    千次阅读 2013-01-21 01:04:22
    上一篇文章中我们讲解了NFS文件系统中读操作的主要流程。如果缓存页中的数据有效,直接将缓存页中的数据拷贝到用户态缓冲区中。如果缓存页中的数据无效,则需要调用nfs_readpages()更新缓存页中的数据。nfs_read...
  • NFS系统read调用过程(五)

    千次阅读 2013-01-22 12:23:13
    这篇文章接着讲解nfs_readpages()的流程。上篇文章中,我们讲到了read_cache_pages()将缓存页添加到文件缓存的radix树中,为每个缓存页创建了一个nfs_page结构,然后将这些缓存页链接到nfs_pageio_descriptor结构中...
  • NFS系统read调用过程(六)

    千次阅读 2013-01-22 19:14:59
    这篇文章详细讲解nfs_generic_pg_readpages()的流程。 1.创建一个nfs_read_header结构 rhdr = nfs_readhdr_alloc(); if (!rhdr) { // 创建rhdr失败了,不能处理desc中的缓存页了,需要释放这些缓存页 desc->...
  • 问题:当NFS Server重新启动后,重新对相应的挂载点从新进行挂载(也就是 umount/mount) 当执行umount /mnt/ 命令的时候,系统提示: Umount: /mnt/: device is busy Umount:/mnt/: device is busy 原因:
  • NFS系统write调用过程(三)

    千次阅读 2013-01-30 12:17:32
    NFS文件系统中WRITE操作比READ操作要复杂一些。READ操作中只需要将数据从服务器中读取到客户端的缓存页中就可以了,但是WRITE操作中客户端可能将数据写入到服务器的缓存页中,也可能写入到服务器的磁盘中。如果数据...
  • NFS系统read调用过程(四)

    千次阅读 2013-01-21 23:52:12
    接着前面的内容讲,这篇文章主要介绍了nfs_readpages()函数中的步骤4,步骤4中包含下面一条语句 ret = read_cache_pages(mapping, pages, readpage_async_filler, &desc); read_cache_pages()是一个通用函数...
  • NFS系统read调用过程(三)

    千次阅读 2013-01-21 23:03:42
    上一篇文章讲解了函数nfs_readpages()的整体流程,这个函数的作用是向服务器发起READ请求,用请求到的数据更新缓存页中的内容。这个函数分为六个步骤: 步骤1:获取用户信息。 步骤2:检查FS-Cache缓存是否...
  • [root@NW sd]# rm 123_123 -rf rm: can't remove '123_123/...NFS挂在的文件系统变成了只读的文件系统,我是把/home目录chmod 777 /home,然后系统就可以删除了.原因没有相同,难道NFS挂在后不是root权限了.
  • AT91SAM9261开发板挂载UBUNTU12.04主机上的nfs文件系统,提示:# mount -t nfs 192.168.1.125:/home/myhost/nfs /mnt rpcbind: server localhost not responding, timed out
  • NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘,这是使用Linux 作为开发经常使用的 方法 ,设置 目标 板启动模式跳线J1 为Nand Flash 启动,连接好电源,串口线,网线;打开串口...
  • 通过使用NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘,这是使用Linux 作为开发经常使用的方法,设置目标板启动模式跳线J1 为Nand Flash 启动,连接好电源,串口线,网线;...
  • NFS文件系统

    2012-04-08 18:51:24
    NFS文件系统是目前最为成功的网络文件系统,在文件共享领域有着出色的表现,特别是pNFS的出现,使得NFS文件系统在性能和规模上有了大幅提升,为其带了更为广阔的应用空间。同时,NFS之所以备受关注,还在于它在NAS...
  • 网络文件系统nfs文件系统使用;介绍与NFS相关的几个文件和命令;NFS安装;NFS配置;启动和停止NFS服务......
  • arm linux nfs 文件系统建立
  • NFS文件系统搭建

    千次阅读 2015-11-12 17:51:35
    NFS文件系统搭建Ubuntu主机IP地址:192.168.1.101 开发板Ip地址:192.168.1.6 参考网址:http://blog.chinaunix.net/uid-22030783-id-366815.html流程: 1、安装NFS文件系统: #sudo apt-get install nfs-...
  • NFS允许一个系统在网络上与他人共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,下面介绍linux系统之间通过nfs网络文件系统挂载的设置方法
  • linux操作系统-NFS文件系统管理 分享给大家学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 136,948
精华内容 54,779
关键字:

nfs系统