Category: linux

  • centos7 nfs

    来源

    http://cn.linux.vbird.org/linux_server/0330nfs.php#rpcinfo

    安装与配置

     # install on centos7
     yum install nfs-utils 
    
     # nfs config
     /etc/sysconfig/nfs
    
    # nfs share path config
    /etc/exports 
    
    cat /etc/exports
    
    #设置要分享的目录,分享给谁,定义相关属性权限
    /home/sharefiles 192.168.8.60 (rw,sync,all_squash,anonuid=45,anongid=45)
    /home/sharefiles * (rw,sync,all_squash,anonuid=45,anongid=45)
    
    • 分享目标可以是完整IP或IP域192.168.100.0/24表示一个网段主机,支持通配符* 表示所有主机
    • 权限:rw读写权限、ro只读
    • sync数据同步写入内存硬盘生产环境使用、async异步先写入内存后再写入硬盘
    • 客户端可以使用的身份权限
      • no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用
      • root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
      • all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
      • anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。

    rpcinfo

    显示出指定主机的 RPC 状态

    rpcinfo -p 192.168.8.61
       program vers proto   port  service
        100000    4   tcp    111  portmapper
        100000    3   tcp    111  portmapper
        100000    2   tcp    111  portmapper
        100000    4   udp    111  portmapper
        100000    3   udp    111  portmapper
        100000    2   udp    111  portmapper
        100024    1   udp  30004  status
        100024    1   tcp  30004  status
        100005    1   udp  30003  mountd
        100005    1   tcp  30003  mountd
        100005    2   udp  30003  mountd
        100005    2   tcp  30003  mountd
        100005    3   udp  30003  mountd
        100005    3   tcp  30003  mountd
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100227    3   tcp   2049  nfs_acl
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100227    3   udp   2049  nfs_acl
        100021    1   udp  30002  nlockmgr
        100021    3   udp  30002  nlockmgr
        100021    4   udp  30002  nlockmgr
        100021    1   tcp  30002  nlockmgr
        100021    3   tcp  30002  nlockmgr
        100021    4   tcp  30002  nlockmgr
    

    exportfs

    查看指定nfs server的共享情况

    选项与参数:
    -a :全部挂载(或卸除) /etc/exports 档案内的设定
    -r :重新挂载 /etc/exports 里面的设定,此外,亦同步更新 /etc/exports
         及 /var/lib/nfs/xtab 的内容!
    -u :卸除某一目录
    -v :在 export 的时候,将分享的目录显示到屏幕上!
    
    exportfs -arv
    

    showmount

    showmount [-ae] [hostname|IP]
    选项与参数:
    -a :显示目前主机与客户端的 NFS 联机分享的状态;
    -e :显示某部主机的 /etc/exports 所分享的目录数据。
    
    showmount -e 192.168.8.61
    Export list for 192.168.8.61:
    /data/share            *
    /media/pool0/snapshots *
    
  • ssh隧道端口转发

    打开vpn之后,直接访问只能连接到特定10.10.0.2这台机器。但是服务都部署在10.10.0.5.通过ssh 隧道,进行端口转发。

    ssh -L 10.10.0.2:60000:10.10.0.5:80 -L 10.10.0.2:60001:10.10.0.5:8599  -L 10.10.0.2:60002:10.10.0.5:8600 root@10.10.0.5
    
    1. 访问10.10.0.2 60000 可以转发到10.10.0.5 80端口
    2. 访问10.10.0.2 60001 可以转发到10.10.0.5 8599端口
    3. 访问10.10.0.2 60002 可以转发到10.10.0.5 8600端口
  • NPTL引起linux系统无法分配内存

    linux系统出现

    -bash: fork: Cannot allocate memory

    查看系统内存

    可用内存充足, 交互分区没被使用,

    -bash: fork: Cannot allocate memory
    -bash: fork: Cannot allocate memory
    -bash: fork: Cannot allocate memory
    [root@node1 ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:            31G         18G        956M        133M         11G         11G
    Swap:           15G         78M         15G
    

    (more…)

  • 进程 线程 协程

    来源: 协程

    协程

    协程从go语言的routine来看,单个线程运行多个routine,这些routine都在单个线程中,通过逻辑cpu调度器执行。共同分割一个cpu的时间片。如果有routine阻塞了,就给它起个新的线程进行阻塞等待。

    协程(英语:coroutine)是计算机程序的一类组件,推广了协作式多任务的子程序,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、无限列表和管道。

    协程可以通过yield(取其“让步”之义而非“出产”)来调用其它协程,接下来的每次协程被调用时,从协程上次yield返回的位置接着执行,通过yield方式转移执行权的协程之间不是调用者与被调用者的关系,而是彼此对称、平等的。

    var q := 新建队列
    
    coroutine 生产者
        loop
            while q 不满载
                建立某些新产品
                向 q 增加这些产品 
            yield 给消费者
    
    coroutine 消费者
        loop
            while q 不空载
                从 q 移除某些产品
                使用这些产品
            yield 给生产者
    

    协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源

    (more…)

  • TCP粘包和拆包_笔记

    TCP 协议

    TCP协议是一种流协议。

    不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

    • 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。
    • 之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
    • 然后接收端实体对已成功收到的包发回一个相应的确认(ACK);
    • 如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

    (more…)