NFS --- Network File System

What is NFS?

The Network File System (NFS) is a mechanism for storing files on a network. It is a distributed file system that allows users to access files and directories located on remote computers and treat those files and directories as if they were local.

How does the Network File System work?

NFS is a client-server protocol. An NFS server is a host that meets the following requirements:

  • has NFS server software installed;
  • has at least one network connection for sharing NFS resources; and
  • is configured to accept and respond to NFS requests over the network connection.

An NFS client is a host that meets the following requirements:

  • has NFS client software installed;
  • has network connectivity to an NFS server;
  • is authorized to access resources on the NFS server; and
  • is configured to send and receive NFS requests over the network connection.

The process of setting up NFS service includes the following three steps, whether on an enterprise file server or on a local workstation:

  1. Verify that rpc.mountd or just mountd is installed and working. This is the NFS daemon -- the program that listens to the network for NFS requests.
  2. Create or choose a shared directory on the server. This is the NFS mount point. Using the mount point and the server host name or address uniquely identifies the NFS resource.
  3. Configure permissions on the NFS server to enable authorized users to read, write and execute files in the file system.

Setting up an NFS client machine to access an NFS server can be done manually, using the mount command or using an NFS configuration file -- /etc/exports. Each line in the NFS config file contains a mount point, an IP address or a host domain name and any configuration metadata needed to access the file system.

network file system (网络文件系统)
可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS可以将远程的计算机磁盘挂载到本地,读写文件像访问本地磁盘一样操作

1、安装
   yum  install  nfs-utils
2、修改配置文件
首先创建/opt/www目录, 在这下面创建index.html文件  文件内容"this is test nfs"
再添加exports配置,nfs的配置:vim  /etc/exports
添加如下行:
/opt/www  192.168.98.0/24(rw,no_root_squash)
表示共享/opt/www目录,192.168.98.0/24这个网段的主机都可以通过nfs来访问我本地的/opt/www目录
括号()里面的表示选项,rw表示读写。

/etc/exports 文件控制哪些文件系统被导出到远程主机,并指定选项。它遵循以下语法规则:

  • 空白行将被忽略。
  • 要添加注释,以井号(#)开始一行。
  • 您可以使用反斜杠(\)换行长行。
  • 每个导出的文件系统都应该独立。
  • 所有在导出的文件系统后放置的授权主机列表都必须用空格分开。
  • 每个主机的选项必须在主机标识符后直接放在括号中,没有空格分离主机和第一个括号。

导出的文件系统的每个条目都有以下结构:

export host(options)

您还可以指定多个主机以及每个主机的特定选项。要做到这一点,在同一行中列出主机列表(以空格分隔),每个主机名带有其相关的选项(在括号中),如下所示:

export host1(options1) host2(options2) host3(options3)

在这个结构中:

export    导出的目录

host   导出要共享的主机或网络

options   用于主机的选项

生效配置:
exportfs  -a

 或者重启服务

3、启动nfs服务:
[root@b www]# service nfs start

4、在另外一台机器上测试:
[root@C ~]# showmount -e 192.168.98.133
Export list for 192.168.98.133:
/opt/ww 192.168.98.0/24

出现返回结果,表示ok。


5、挂载网络文件
[root@kafka-3 ~]# mkdir /mnt2
[root@kafka-3 ~]# mount -t nfs 192.168.98.133:/opt/ww /mnt2
[root@kafka-3 ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 7460784 10350672   42% /
devtmpfs                  919504       0   919504    0% /dev
tmpfs                     931624       0   931624    0% /dev/shm
tmpfs                     931624   18032   913592    2% /run
tmpfs                     931624       0   931624    0% /sys/fs/cgroup
/dev/sda1                1038336  148548   889788   15% /boot
tmpfs                     186328       0   186328    0% /run/user/0
192.168.98.133:/opt/ww  17811456 7462656 10348800   42% /mnt2

===================================================

软链接  vs  硬链接

软链接相当于快捷方式,原文件为实际的文件,没了,软链接也找不到文件
硬链接是在原文件的基础上,使i_nlink+1,没有占用实际的空间
硬链接+1

每个文件创建号之后都会维护两个计数器,i-count(记录有多少个程序在使用这个文件)
i-nlink(记录这个文件的硬链接数)

硬链接不能跨文件系统(跨分区),也不能对目录(文件夹)进行硬链接

软链接就是创建了一个新的文件,文件本身就是源文件的文件名,可以跨文件系统(分区)

为什么目录不能进行硬链接,因为目录在创建时,被系统分给了一个固定的硬链接.在目录内
还有一个硬链接..指向上一层目录,而目录的硬链接如果在另一文件,则..文件会相互冲突,形成循环

软链接只认文件名,硬链接则只认inode号

软链接和硬链接的区别?
从文件系统的角度,文件有:1.目录项 2.inode 3.block
链接数:inode被目录项链接的次数

软链接有自己的目录项,自己的inode和block,block里存放的是原文件的文件名
硬链接有自己的目录项,但指向的是源文件的inode和block。

ln命令新建软和硬链接---》表面现象
    软链接:删除原文件,链接文件不可使用
    硬链接:删除原文件,链接文件可以继续使用
              不能给文件夹建立硬链接,文件可以

为什么?
    文件=目录项+inode+block

    看创建文件的时候,是否有新的目录项,新的inode使用,新的block使用
底层原理:
    硬链接:不同的目录项,相同的inode和block
    软链接:不同的目录项,不同的inode和block,但是软链接的block里存放的是链接的文件名

============================
为什么linux文件系统的使用空间和剩余空间之和不是总的空间大小
答案是linux有一种策略,它会默认为root用户保留5%的容量作为应急使用,比如某些关键性的应用如数据库突然占满空间,这部分预留的空间能保证数据库不会立即crash.

===========================
用户态和内核态是操作系统的两种运行状态

内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,比如网卡,硬盘等,处于内核态CPU可以从一个程序切换到另一个程序,并且占用CPU不会发生抢占情况,一般处于特权级0的状态我们称之为内核态。

用户态:处于用户态的CPU只能受限的访问内存,并且不允许访问外围设备,用户态的CPU不允许独占,也就是说CPU能够被其他程序获取。


内存里被划分成了两块空间,用户空间(user space)和内核空间(kernel space)
操作系统的进程在内核空间里运行,它们称作内核态(进程的一种状态)
用户运行应用程序的进程在用户空间里,它们称为用户态

正常来说,用户空间要比内核空间大的,

用户态的进程如何切换为内核态?
在系统调用,中断和异常时,会切换
共同点:运行的内核里的代码


为什么要有用户态和内核态呢?

主要是访问能力限制的考量,计算机中有一些比较危险的操作,比如设置时钟,内存清理,这些都需要在内核态下完成,如果随意进行危险操作,极容易导致系统崩坏。
============================
用户进行文件读写操作时,操作系统做了什么?
1、用户输入命令,shell解释器会解析这条命令
2、shell会去PATH变量里面,也就是磁盘里面查找里面的命令,
3、shell告诉内核命令的位置,让内核去创建进程运行这条命令
4、内核运行:
    1.查看内存是否有足够的空间
    2.创建PCB(进程控制块),加载代码,整个进程进入就绪队列
5、进行cpu上下文切换,一个进程进cpu,一个进程出cpu。
6、进程进行读写操作时,比如cat命令,找到文件对应的文件描述符,
7、根据文件名查找目录项,找到inode号,找到block,找到对应的数据块
8、将数据读入内存,返回结果给shell解释器
9、解释器展示最终结果


nginx,热升级,不重启,如何版本升级?

nginx热启动:
nginx.conf -->修改了配置文件后,重载生效,nginx -s reload
master会起新的worker去接受新的链接,旧的worker服务完当前的客户后自动关闭

nginx热升级:
修改旧的nginx二进制程序的名字,拷贝新的nginx二进制程序进旧的目录下
检查新版nginx是否能运行
进行一次nginx -s reload 重载一次配置
 

数据一致性问题:
    使用nfs,让backend服务器都到nfs服务器里获取数据,这样就可以达到数据一致性,随便访问那台后端服务器看到的内容都是一样的
    1.搭建nfs服务器
    yum install nfs-utils -y
    service nfs restart
    vim  /etc/exports
    [root@nfs ~]# mkdir /data
[root@nfs ~]# cat /etc/exports
/data  192.168.2.0/24(rw,no_root_squash,no_all_squash,sync)
[root@nfs ~]# 
[root@nfs ~]# exportfs  -r
nfs的工作原理
        nfs没有自己去监听某个端口,而是外包给rpcbind相关的服务的
        rpc是什么?
        说说用户是如何去访问nfs服务的,重点是过程?

[root@web1 yum.repos.d]# yum install nfs-utils   -y
root@web1 yum.repos.d]#  mount -t nfs  192.168.2.155:/data  /usr/local/sclilin99/html/    


    2.backend服务器挂载到nfs共享的目录获取数据


nfs来解决数据一致性问题,是否是最佳的?
    1.速度
        IOPS--》磁盘是否快的指标
    2.稳定性--》是否容易丢失数据
    3.高可用--》冗余,备份
    4.成本
NFS是在传统的tcp/ip的协议的网络里使用的
FC
ISISC

一体机:200万台 --》有钱的公司

一台廉价的服务器+nfs-utils软件 + 100Mb/s--》文件共享NFS
    cpu、内存、磁盘、网络带宽

    SAN/NAS

IOPS(Input/Output Operations Per Second)是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数。和其他性能测试一样,存储设备制造商提出的IOPS不保证就是实际应用下的性能。

存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构,要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。

HBA卡: 光纤接口卡

NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。
        比较便宜使用tcp/ip网络协议,在日常的生活和工作里使用,例如:可以将所有手机,电脑里的图片集中存储。
        小型带系统的存储设备


99.9999%

高可用 High Availability --->HA: 不会出现单点故障,有备份,高度可用 --》稳定性

灾备的代价: 有备份,多花钱--》花钱消灾


 

你可能感兴趣的:(服务器,linux,运维)