当前位置:首页 » 存储配置 » linux网络存储方案

linux网络存储方案

发布时间: 2023-03-13 08:53:21

Ⅰ 什么是ISCSI,及linux下怎么样通过ISCSI实现共享存储

iSCSI(iSCSI
=
internet
Small
Computer
System
Interface
)小型计算机接口。是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用,
ISCSI能够在LAN、WAN甚至internet上进行数据传送,使得数据的存储不再受地域的现在。
ISCSI技术的核心是在TCP/IP网络上传输SCSI协议,是指用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输。

Ⅱ Linux文件系统-ISCSI存储和Multipathd

iscsi是由scsi协议发展而来,简单来讲,iscsi是对scsi的封装,并通过以太网来进行scsi指令的传输. 传统的scsi存储设备,通过总线连接到主机,供主机使用. 通过iscsi,主机可以直接通过以太网(TCP/IP)连接使用scsi存储设备,这也是通常所说的NAS存储的一种,它提供的是块级存储服务.

通过iscsi连接的存储设备,由于中间经过了交换机等网络设备,从主机到同一个存储设备,可能会存在多条路径. 每条路径在linux系统上都会被识别成一个设备,如果把每条路径都当成独立设备去处理的话,不同路径之间的读写操作就可能会造成数据的紊乱.

multipathd可以解决上述的多路径问题,其主要原理包括:
a. 每一个scsi设备都有唯一的scsi_id,multipathd通过探测scsi_id来判断不同路径后面是不是同一个存储设备.
b. 通过内核device-mapper功能,将多条路径映射为单一的块设备,提供给文件系统使用.
c. 由于多路径的存在,multipathd可以提供负载均衡和高可用的服务.

整个环境通过两台虚拟机搭建,一台虚拟机作为iscsi存储服务器,另一台作为客户端. 两台虚拟机都配置了两张网卡,从客户端到iscsi服务器,可以形成两条路径.

通过openfiler搭建iscsi存储服务器,openfiler镜像包及部署手册,具体参考openfiler官网.
https://www.openfiler.com/community/download

部署完成后,创建了2个iscsi target:

需要安装如下软件包:
iscsi-initiator-utils:提供iscsid服务,及iscsi管理工具iscsiadm
device-mapper-multipath&device-mapper-multipath-libs:提供multipathd服务及multipath管理工具

通过iscsiadm命令探测openfiler服务器上的iscsi target,具体如下:

可以看到,openfiler返回了2个target,每个target 2条路径. 执行命令后,在/var/lib/iscsi/目录生成了如下文件:

对iscsi target执行login操作后,系统才能识别到设备并使用,login命令如下:

执行login命令后,识别到了sda、sdb、sdc、sdd 4个设备,查看它们的scsi_id;可以看到sda、sdc是同一设备的不同路径,sdb、sdd是同一设备的不同路径.

启动multipathd服务后,multipathd会自动识别多路径,并自动在/dev/mapper/目录下创建多路径映射后的设备.

查看multipathd工作模式,命令multipath -ll

从上面输出可以看到,multipathd默认的策略是两条路径一主一备.

使用dd往/dev/mapper/mpathb中写入数据,数据从sda写入,sdc处于备用状态

将sda网络断开,过几秒后,切换到sdc写数据

再查看sda、sdc主备情况如下:

修改multipathd path_grouping_policy、path_selector(路径选择策略),在/etc/multipath.conf配置文件中,加入如下配置修改mpathb的工作模式.

重启multipathd服务后,查看multipathd工作模式,可以看到sda sdc都处于active状态:

dd测试mpathb写入数据时的情况如下,sda sdc轮询写入,所以吞吐量一样:

Ⅲ 如何利用Linux和GFS打造集群存储

负载均衡是一项困难的任务。我们经常需要通过NFS(网络文件系统)或其他机制来为数据提供中心地址,从而共享文件系统。虽然你的安全机制可能可以让你免于Web服务器节点的故障,但是你仍然需要通过中央存储节点来共享数据。
通过GFS(全局文件系统)——Linux的一个免费集群文件系统——你可以创建一个不需要依赖其他服务器的真正稳定的集群。在这篇文章中,我们将展示如何正确地设置GFS.
从概念上来说,一个集群文件系统可以允许多个操作系统载入同一个文件系统并可以在同一时间内向同一文件系统写入数据。现在有许多集群文件系统,包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系统),以及Linux的GFS.
有许多方法可以让一个块设备同时被多个服务器所使用。你可以分区出一个对多个服务器都可视的SAN(存储局域网)LUN(逻辑单元号),设置好相应的iSCSI(互联网小型计算机系统接口),或使用DRBD(分布式复制块设备)在两台服务器之间复制一个分区。在使用DRBD的时候,你将需要在主/主节点中设置好DRBD以使用GFS.
GFS要求
运行GFS意味着你在运行一个集群。目前为止,运行GFS的最简单的手段就是使用Red Hat Cluster Suite(RHCS:Red Hat集群套件)。这个套件在CentOS中就有。此外,还需要下面这些包:cman——集群管理器;lvm2-cluster——使LVM(逻辑卷管理器)可以支持集群的CLVM(集群逻辑卷管理器)包;kmod-gfs——GFS内核模块;最后是gfs-utils.
集群管理器(cman)包含必要的工具,比如分布式锁管理器。除非你希望花时间来确认各种不同的分发版本是如何采用cman的,否则我们强烈推荐使用CentOS或RHEL.同时,你还将获得RH(Red Hat)所维护的各种最新版本的集群服务,此外你还可以获得一个比较稳定的环境。
Fencing(阻绝)机制是绝对必要的。一些指导性文章建议将阻绝模式设定成"手动",因为阻绝设置有可能比较复杂。阻绝意味在集群中进行隔离,或马上中断某些危险节点的运作。如果集群无法阻绝某个发生故障的节点,那么你的GFS将会出现很多问题,因此不要跳过这个步骤。
创建集群设置
你可以通过/etc/cluster/里面的cluster.conf完成大部分的集群设置。我不建议使用各种集群管理应用程序来创建这个设置文件。即使是完全支持的RHEL应用程序,比如两个月前发布的Conga,也经常会创建一些无效的cluster.conf文件,并且无法被必要的服务所解析。
下面是一个cluster.conf文件的例子。这个设置文件采用漂亮的XML格式,其内容非常直接。首先,我们对集群进行命名,我们将这个集群称作"Web.1".
先跳过fence daemon选项,下一个部分就是集群主体的设置内容。你需要在clusternodes部分定义两个节点。设置文件将同时存放在两个节点上,这样这两个节点就都知道彼此的情况。
集群内的每个节点都声明其阻绝方式的名称是独一无二的。在clusternames结束标签下面,我们看到fencedevice部分定义了每个节点如何阻绝其他节点的方式。使用一个支持IPMI(智能平台管理接口)的服务器是最好的方式,而且其设置也是相当简单。你只要将IPMI的地点以及登录方式告诉IP就可以了。为了避免在cluster.conf中留下密码,你可以将它指向一个由根所拥有的脚本并由这个脚本来返回密码。
我们还要指出的是我们在设置中定义了两个节点。这是必须的,因为通常来说,除非大部分节点都同意自己的状态,否则集群无法达到"Quorate"状态。如果只有两个节点的话,没有肯定多数,因此这种方式让集群只能在两个节点下工作,而不能只在只有一个节点的情况下工作。这是设置基本集群的必要方式。
在每个节点上运行"service cman start",系统应该可以开始正常运作。你可以检查"clustat"或"cman nodes"来确认节点是否良好运行。如果有哪个必要的部分没有启动,那么集群将不会显示"Quorate"状态。
GFS设置
首先,我们需要设置CLVM,这样我们才可以通过GFS使用LVM.激活CLVM只要在lvm.conf中设定"locking type=3"就可以了。
然后,就像平常一样创建一个LVM卷组和卷,但是使用的是共享的块设备。如果你使用的是DRBD,你将有可能使用/dev/drbd0.我创建了一个物理卷,然后创建一个名为vg01的卷组,然后创建一个名为web1的逻辑卷,这个卷在:/dev/vg01/web1.
最后,我们需要创建文件系统:
gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1
-t中给定的名称必须是集群的名称,然后后面是你给这个文件系统所起的名字。只有web1集群的成员才可以载入这个文件系统。然后,设定分布式锁管理器的锁钥类型,指明你需要两份journal(因为这是一个双节点集群)。如果你预计未来要增加更多的节点,那么你需要在这时设定足够高的journal数量。
总结
我们现在可以开始使用这个文件系统了。在两个节点上启动"clvmd"和"gfs"服务。现在你就可以通过"-t gfs"来将类型指定为GFS,从而载入文件系统。
在开始启动之前,一定要设定好cman,clvmd和gfs服务。你最好能熟悉clustat和gfs_tool命令,因为在系统出现问题的时候,你可以用这些命令来查找问题所在。
不要指望GFS能很快。如果有一个节点在进行大量的写入操作的话,那么在访问文件系统的时候出现停顿是很正常的。对于一个数据读取操作比数据写入操作多得多的Web集群来说,这倒不是什么问题。如果出现明显延迟,那么首先要检查一下所有组件的状况,然后评估正在写入的数据。防止延迟现象的最常见措施就是确保HTTP对话中的数据不是写入GFS卷。

Ⅳ 关于linux挂载nas网络存储

NAS 的中文名称是网络附加存储,是基于硬盘的专业存储技术。它可以直接接入计算机网络,为各种操作系统的客户端提供集中式的数据存取服务。
NAS支持NFS协议,Linux操作系统也是支持NFS协议的,可以直接在Linux里面挂载NAS共享出来的NFS目录,把数据直接拷贝到NAS上。
比如NAS服务器的地址是10.0.0.111,在Linux上:
# mount 10.0.0.111:/sharefolder /mnt
# cp -r /des /mnt

Ⅳ linux网络存储存放1g数据哪个软件适用

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。

Ⅵ Linux里面raid和lvm区别是什么

LVM:主要侧重动态磁盘扩容

全称逻辑卷管理,是一个动态扩展磁盘分区容量的功能性工具,对于测试环境,可以用来管理磁分区满了,扩容,但是在大规模环境性能低下,尽量不要使用它。

RAID:主要侧重磁盘性能和数据安全

磁盘阵列可以把多个磁盘驱动器通过不同的连接方式连接在一起协同工作,大大提高了读取速度,同时把磁盘系统的可靠性提高到接近无错的境界,使其可靠性极高。

用RAID最直接的好处是:

1)提升数据安全性。2)提升数据读写性能。3)提供更大的单一逻辑磁盘数据容量存储。

Ⅶ 详解Linux系统内存知识及调优方案

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。对于整个操作系统来说,内存可能是最麻烦的的设备。而其性能的好坏直接影响着整个操作系统。

我们知道CPU是不能与硬盘打交道的,只有数据被载入到内存中才可以被CPU调用。cpu在访问内存的时候需要先像内存监控程序请求,由监控程序控制和分配内存的读写请求,这个监控程序叫做MMU(内存管理单元)。下面以32位系统来说明内存的访问过程:

32位的系统上每一个进程在访问内存的时候,每一个进程都当做自己有4个G的内存空间可用,这叫虚拟内存(地址),虚拟内存转化成物理内存是通过MMU来完成的。为了能够从线性地址转换成物理地址,需要page table(页表)的内存空间,page table要载入到MMU上。为了完成线性地址到物理地址的映射,如果按照1个字节1个字节映射的话,需要一张非常大的表,这种转换关系会非常的复杂。因此把内存空间又划分成了另外一种存储单元格式,通常为4K。在不同的硬件平台上,它们的大小一般是不一样的,像x86 32位的有4k的页;而64位的有4k页,2M页,4M页,8M页等等,默认都是4k的。每一个进程一般而言都有自己的页路径和页表映射机制,不管那一个页表都是由内核加载的。每一个进程只能看到自己的线性地址空间,想要增加新的内存的时候,只能在自己的线性地址空间中申请,并且申请后一定是通过操作系统的内核映射到物理地址空间中去找那么一段空间,并且告诉线性地址空间准备好了,可以访问,并且在page table中增加一条映射关系,于是就可以访问物理内存了,这种叫做内存分配。但是新的申请一定是通过操作的内核到物理内存中去找那么一段空间,并且告诉线性地址空间好了,可以建设映射关系,最终page table建立映射关系。

这反映了上述描述过程的大体情况。可以看到每一个用户程序都会有自己的页表,并且映射到对应的主存储器上去。

根据上述文字和图表的描述可以发现2个问题:

1.每个进程如果需要访问内存的时候都需要去查找page table的话,势必会造成服务器的性能底下

2.如果主存储器的内存满了以后,应用程序还需要调用内存的时候怎么办

对于第一个问题,我们就需要借助TLB(Translation Lookaside Buffer)翻译后备缓冲器。TLB是一个内存管理单元,它可以用于改进虚拟地址到物理地址转换速度的缓存。这样每次在查找page table的时候就可以先去TLB中查找相应的页表数据,如果有就直接返回,没有再去查找page table,并把查找到的结果缓存中TLB中。TLB虽然解决了缓存的功能,但是在那么page table中查找映射关系仍然很慢,所以又有了page table的分级目录。page table可以分为1级目录,2级目录和偏移量

但是一个进程在运行的时候要频繁的打开文件,关闭文件。这就意味着要频繁的申请内存和释放内存。有些能够在内存中缓存数据的那些进程,他们对内存的分配和回收更多,那么每一次分配都会在页表中建立一个对应项。所以,就算内存的速度很快,大量频繁的同一时间分配和释放内存,依然会降低服务器的整体性能。当然内存空间不够用的时候,我们称为oom(out of memory,内存耗尽)。当内存耗尽的时候,,整个操作系统挂了。这种情况下我们可以考虑交换分区,交换分区毕竟是由硬盘虚拟出来的内存,所以其性能与真正的内存相比,差了很多,所以要尽力避免使用交换分区。有物理内存空间的时候尽量保证全部使用物理内存。cpu无论如何是不能给交换内存打交道的,它也只能给物理内存打交道,能寻址的空间也只能是物理内存。所以当真正物理内存空间不够用的时候,会通过LRU算法把其中最近最少使用的内存放到交换内存中去,这样物理内存中的那段空间就可以供新的程序使用了。但是这样会引发另外的一个问题,即原来的进程通过page table寻找的时候,那一段空间的数据已经不属于它了。所以此刻cpu发送通知或者异常告诉这个程序,这个地址空间已不属于它,这个时候可能会出现2种情况:

1.物理内存有可用的空间可用:这个时候cpu会根据以前的转换策略会把交换分区中的那段内存重新送到物理内存中去,但是转换过来的空间地址不一定会是以前的那一段空间地址,因为以前的那一段空间地址可能已经被别人使用了。

2.物理内存没有可用的空间可用:这个时候依然会使用LRU算发把当前物理地址空间上最近最少使用的空间地址转换到交换内存中去,并把当前进程需要的这断在交换空间中的内存送到物理内存空间中去,并且重新建立映射关系。

上述通知或者异常出现的情况,通常叫做缺页异常。缺页异常也分为大异常和小异常两种。大异常就是访问的数据内存中没有,不的不去硬盘上加载,无论是从交换内存中还是直接从磁盘的某个文件系统上,反正需要从硬盘上去加载,这种异常加载需要很长时间。小异常就是进程之间通过共享内存,第二个进程访问的时候,查看本地的内存映射表没有,但是其它进程已经拥有了这个内存页,所以可以直接映射,这种异常加载需要的时间一般很短。

在操作系统开机的时候,每一个io设备都会像cpu申请一些列的随机端口,这种端口叫做io端口。在IBM PC体系结构中,I/O地址空间一共提供了65,536个8位的I/O端口。正是这些io端口的存在,cpu可以与io设备进行读写交互的过程。在执行读写操作时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传送数据。I/O端口还可以被映射到物理地址空间:因此,处理器和I/O设备之间的通信就可以直接使用对内存进行操作的汇编语言指令(例如,mov、and、or等等)。现代的硬件设备更倾向于映射I/O,因为这样处理的速度较快,并可以和DMA结合起来使用。这样io在和内存传数据的时候就不需要通过cpu,cpu把总线的控制权交给DMA,每次io传数据的时候就调用DMA一次,就把cpu给解放了出来。当数据传输完了以后,DMA通知给cpu中断一次。DMA在运行的时候对整个总线有控制权限,当cpu发现有其它进程需要使用总线的时候,二者就会产生争用。这个时候,在总线控制权的使用上,CPU和DMA具有相等的权限。只要CPU委托给了DMA,就不能随意的收回这个委托,就要等待DMA的用完。

如果没有其它进程可以运行,或者其它进程运行的时间非常短,这个时候CPU发现我们的IO仍然没有完成,那就意味着,CPU只能等待IO了。CPU在时间分配里面有个iowait的值,就是CPU在等待IO花费的时间。有些是在同步调用过程中,CPU必须要等待IO的完成;否者CPU可以释放IO的传输在背后自动完成,CPU自己去处理其它的事情。等硬盘数据传输完成以后,硬盘只需要像CPU发起一个通知即可。CPU外围有一种设备,这个设备叫做可编程中断控制器。每一个硬件设备为了给CPU通信,在刚开机的时候,在BIOS实现检测的时候,这个设备就要到可编程中断控制器上去注册一个所谓的中断号。那么这个号码就归这个硬件使用了。当前主机上可能有多个硬件,每一个硬件都有自己的号码,CPU在收到中断号以后,就能够通过中断相量表查找到那个硬件设备进行中断。并且就由对应的IO端口过来处理了。

CPU正在运行其它进程,当一个中断请求发过来的时候,CPU会立即终止当前正在处理的进程,而去处理中断。当前CPU挂起当前正在处理的进程,转而去执行中断的过程,也叫做中断切换。只不过,这种切换在量级别上比进程切换要低一些,而且任何中断的优先级通常比任何进程也要高,因为我们指的是硬件中断。中断还分为上半部和下半部,一般而言,上半部就是CPU在处理的时候,把它接进来,放到内存中,如果这个事情不是特别紧急(CPU或者内核会自己判断),因此在这种情况下,CPU回到现场继续执行刚才挂起的进程,当这个进程处理完了,再回过头来执行中断的下半部分。

在32位系统中,我们的内存(线性地址)地址空间中,一般而言,低地址空间有一个G是给内核使用的,上面3个G是给进程使用的。但是应该明白,其实在内核内存当中,再往下,不是直接这样划分的。32位系统和64位系统可能不一样(物理地址),在32位系统中,最低端有那么10多M的空间是给DMA使用的。DNA的总线宽度是很小的,可能只有几位,所以寻址能力很有限,访问的内存空间也就很有限。如果DMA需要复制数据,而且自己能够寻址物理内存,还可以把数据直接壮哉进内存中去,那么就必须保证DMA能够寻址那段内存才行。寻址的前提就是把最低地址断M,DA的寻址范围内的那一段给了DMA。所以站在这个角度来说,我们的内存管理是分区域的。

在32位系统上,16M的内存空间给了ZONE_DMA(DMA使用的物理地址空间);从16M到896M给了ZONE_NORMAL(正常物理地址空间),对于Linux操作系统来说,是内核可以直接访问的地址空间;从896M到1G这断空间叫做"Reserved"(预留的物理地址空间);从1G到4G的这段物理地址空间中,我们的内核是不能直接访问的,要想访问必须把其中的一段内容映射到Reserved来,在Reserved中保留出那一段内存的地址编码,我们内核才能上去访问,所以内核不直接访问大于1G的物理地址空间。所以在32位系统上,它访问内存当中的数据,中间是需要一个额外步骤的。

在64位系统上,ZONE_DAM给了低端的1G地址空间,这个时候DMA的寻址能力被大大加强了;ZONE_DAM32可以使用4G的空间;而大于1G以上给划分了ZONE_NORMAL,这段空间都可以被内核直接访问。所以在64位上,内核访问大于1G的内存地址,就不需要额外的步骤了,效率和性能上也大大增加,这也就是为什么要使用64位系统的原因。

在现在的PC架构上,AMD,INTER都支持一种机制,叫做PEA(物理地址扩展)。所谓PAE。指的是在32位系统的地址总线上,又扩展了4位,使得32位系统上的地址空间可以达到64G。当然在32为系统上,不管你的物理内存有多大,单个进程所使用的空间是无法扩展的。因为在32位的系统上,线性地址空间只有4个G,而单个进程能够识别的访问也只有3个G。

linux的虚拟内存子系统包含了以下几个功能模块:

slab allocator,zoned buddy allocator,MMU,kswapd,bdflush

slab allocator叫做slab分配器

buddy allocator又叫做buddy system,叫做伙伴系统,也是一种内存分配器

buddy system是工作在MMU之上的,而slab allocator又是工作在buddy system之上的。

设置为小于等于1G,在数据库服务器应该劲量避免使用交换内存

3.在应用服务器上,可以设置为RAM*0.5,当然这个是理论值

如果不的不使用交换内存,应该把交换内存放到最靠外的磁道分区上,因为最外边的磁盘的访问速度最快。所以如果有多块硬盘,可以把每块硬盘的最外层的磁道拿一小部分出来作为交换分区。交换分区可以定义优先级,因此把这些硬盘的交换内存的优先级设置为一样,可以实现负载均衡的效果。定义交换分区优先级的方法为编辑/etc/fstab:

/dev/sda1 swap swap pri=5 0 0

/dev/sdb1 swap swap pri=5 0 0

/dev/sdc1 swap swap pri=5 0 0

/dev/sdd1 swap swap pri=5 0 0

四.内存耗尽时候的相关调优参数

当Linux内存耗尽的时候,它会杀死那些占用内存最多的进程,以下三种情况会杀死进程:

1.所有的进程都是活动进程,这个时候想交换出去都没有空闲的进程

2.没有可用的page页在ZONE_NORMAL中

3.有其它新进程启动,申请内存空间的时候,要找一个空闲内存给做映射,但是这个时候找不到了

一旦内存耗尽的时候,操作系统就会启用oom-kill机制。

在/proc/PID/目录下有一个文件叫做oom_score,就是用来指定oom的评分的,就是坏蛋指数。

如果要手动启用oom-kill机制的话,只需要执行echo f>/proc/sysrq-trigger即可,它会自动杀掉我们指定的坏蛋指数评分最高的那个进程

可以通过echo n > /proc/PID/oom_adj来调整一个进程的坏蛋评分指数。最终的评分指数就是2的oom_adj的值的N次方。假如我们的一个进程的oom_adj的值是5,那么它的坏蛋评分指数就是2的5次方。

如果想禁止oom-kill功能的使用可以使用vm.panic_on_oom=1即可。

五.与容量有关的内存调优参数:

overcommit_memory,可用参数有3个,规定是否能够过量使用内存:

0:默认设置,内核执行启发式的过量使用处理

1:内核执行无内存的过量使用处理。使用这个值会增大内存超载的可能性

2:内存的使用量等于swap的大小+RAM*overcommit_ratio的值。如果希望减小内存的过度使用,这个值是最安全的

overcommit_ratio:将overcommit_memory指定为2时候,提供的物理RAM比例,默认为50

六.与通信相关的调优参数

常见在同一个主机中进行进程间通信的方式:

1.通过消息message;2.通过signal信号量进行通信;3.通过共享内存进行通信,跨主机常见的通信方式是rpc

以消息的方式实现进程通信的调优方案:

msgmax:以字节为单位规定消息队列中任意消息的最大允许大小。这个值一定不能超过该队列的大小(msgmnb),默认值为65536

msgmnb:以字节为单位规定单一消息队列的最大值(最大长度)。默认为65536字节

msgmni:规定消息队列识别符的最大数量(及队列的最大数量)。64位架构机器的默认值为1985;32位架构机器的默认值为1736

以共享内存方式实现进程通信的调优方案:

shmall:以字节为单位规定一次在该系统中可以使用的共享内存总量(单次申请的上限)

shmmax:以字节为单位规定每一个共享内存片段的最大大小

shmmni:规定系统范围内最大共享内存片段。在64和32位的系统上默认值都是4096

七.与容量相关的文件系统可调优参数:

file-max:列出内核分配的文件句柄的最大值

dirty_ratio:规定百分比值,当脏数据达到系统内存总数的这个百分比值后开始执行pdflush,默认为20

dirty_background_ratio:规定百分比值,当某一个进程自己所占用的脏页比例达到系统内存总数的这个百分比值后开始在后台执行pdflush,默认为10

dirty_expire_centisecs:pdlush每隔百分之一秒的时间开启起来刷新脏页,默认值为3000,所以每隔30秒起来开始刷新脏页

dirty_writeback_centisecs:每隔百分之一秒开始刷新单个脏页。默认值为500,所以一个脏页的存在时间达到了5秒,就开始刷新脏

八.linux内存常用的观察指标命令:

Memory activity

vmstat [interval] [count]

sar -r [interval] [count]

Rate of change in memory

sar -R [interval] [count]

frmpg/s:每秒释放或者分配的内存页,如果为正数,则为释放的内存页;如果为负数,则为分配的内存页

bufpg/s:每秒buffer中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页

campg/s:每秒cache中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页

Swap activity

sar -W [interval] [count]

ALL IO

sar -B [interval] [count]

pgpgin/s:每秒从磁盘写入到内核的块数量

pgpgout/s:每秒从内核写入到磁盘的块数量

fault/s:每秒钟出现的缺页异常的个数

majflt/s:每秒钟出现的大页异常的个数

pgfree/s:每秒回收回来的页面个数

Ⅷ 如何自己在linux上搭建类似云盘的分布式云存储

我们常用的系统大多数是Windows和Mac,但是相比较来说在Linux上部署云盘更稳定。楼主的想要的是如何从0到1,一步步开发、搭建云存储,但相对于大众来说,难度系数太高,毕竟不是人人都有IT技术,也不是每个公司都有IT人员能够完成开发、搭建、部署、运维的。

楼上已经有答案说到开发的层面,那我就来说说更适合大众的搭建方式,那就是拿成熟的云盘产品直接搭建。

现在云盒子企业私有云盘的官网上提供了云盒子Linux服务器安装包,大家有服务器或者闲置电脑的话,可以直接进入下载板块下载适用,为方便大家搭建,云盒子还附上了使用帮助,根据提示轻松部署。

Linux搭建云存储

关于运维也不用担心,云盒子配备了实施工程师,排查、解决、更新都不用你操心。

有兴趣的朋友可以试试

热点内容
求阶乘的c语言 发布:2025-05-19 21:15:20 浏览:964
话唠安卓哪里下载 发布:2025-05-19 20:27:04 浏览:165
疯狂android讲义光盘 发布:2025-05-19 20:12:31 浏览:153
安卓手机怎么下载圈点 发布:2025-05-19 20:08:11 浏览:473
文件夹粉碎不了 发布:2025-05-19 20:05:41 浏览:249
安卓怎么把软件放进全局 发布:2025-05-19 20:03:55 浏览:688
安卓手机如何看最真实的型号 发布:2025-05-19 19:58:59 浏览:12
U盘超级加密2008 发布:2025-05-19 19:44:32 浏览:457
灯带编程软件 发布:2025-05-19 19:32:30 浏览:288
如何判断服务器被多少人访问 发布:2025-05-19 19:27:45 浏览:126