当前位置:首页 » 存储配置 » linux配置共享存储

linux配置共享存储

发布时间: 2022-11-28 17:29:22

Ⅰ 如何设置linux的共享内存

我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。
通过修改/proc/sys/kernel/shmmax参数可以达到此目的。
[root@neirong root]# echo 1073741824 > /proc/sys/kernel/shmmax
[root@neirong root]# more /proc/sys/kernel/shmmax
1073741824这里设为1G。
对于shmmax文件的修改,系统重新启动后会复位。可以通过修改 /etc/sysctl.conf 使更改永久化。
在该文件内添加以下一行 kernel.shmmax = 1073741824 这个更改在系统重新启动后生效.
1、设置 SHMMAX
SHMMAX
参数定义共享内存段的最大尺寸(以字节为单位)。在设置 SHMMAX 时,切记 SGA 的大小应该适合于一个共享内存段。 SHMMAX 设置不足可能会导致以下问题:
ORA-27123:unable to attach to shared memory segment
您可以通过执行以下命令来确定 SHMMAX 的值:
# cat /proc/sys/kernel/shmmax
33554432
SHMMAX 的默认值是 32MB 。我一般使用下列方法之一种将 SHMMAX 参数设为 2GB :
通过直接更改 /proc 文件系统,你不需重新启动机器就可以改变 SHMMAX 的默认设置。我使用的方法是将以下命令放入 /etc/rc.local 启动文件中:
# >echo "2147483648" > /proc/sys/kernel/shmmax
您还可以使用 sysctl 命令来更改 SHMMAX 的值:
# sysctl -w kernel.shmmax=2147483648
最后,通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,您可以使这种更改永久有效:
# echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf
2、设置 SHMMNI
我们现在来看 SHMMNI 参数。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。这一数值已经足够,通常不需要更改。
您可以通过执行以下命令来确定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096
3、设置 SHMALL
最后,我们来看 SHMALL 共享内存内核参数。该参数控制着系统一次可以使用的共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:
ceil(SHMMAX/PAGE_SIZE)
SHMALL 的默认大小为 2097152 ,可以使用以下命令进行查询:
# cat /proc/sys/kernel/shmall
2097152
SHMALL 的默认设置对于我们的 Oracle9 i RAC 安装来说应该足够使用。
注意: 在 i386 平台上 Red Hat Linux 的 页面大小 为 4096 字节。但是,您可以使用 bigpages ,它支持配置更大的内存页面尺寸。

Ⅱ 共享内存 linux下怎么跑

linux 共享内存实现

说起共享内存,一般来说会让人想起下面一些方法:
1、多线程。线程之间的内存都是共享的。更确切的说,属于同一进程的线程使用的是同一个地址空间,而不是在不同地址空间之间进行内存共享;
2、父子进程间的内存共享。父进程以MAP_SHARED|MAP_ANONYMOUS选项mmap一块匿名内存,fork之后,其子孙进程之间就能共享这块内存。这种共享内存由于受到进程父子关系的限制,一般较少使用;
3、mmap文件。多个进程mmap到同一个文件,实际上就是大家在共享文件pagecache中的内存。不过文件牵涉到磁盘的读写,用来做共享内存显然十分笨重,所以就有了不跟磁盘扯上关系的内存文件,也就是我们这里要讨论的tmpfs和shmem;

tmpfs是一套虚拟的文件系统,在其中创建的文件都是基于内存的,机器重启即消失。
shmem是一套ipc,通过相应的ipc系统调用shmget能够以指定key创建一块的共享内存。需要使用这块内存的进程可以通过shmat系统调用来获得它。
虽然是两套不同的接口,但是在内核里面的实现却是同一套。shmem内部挂载了一个tmpfs分区(用户不可见),shmget就是在该分区下获取名为"SYSV${key}"的文件。然后shmat就相当于mmap这个文件。
所以我们接下来就把tmpfs和shmem当作同一个东西来讨论了。

tmpfs/shmem是一个介于文件和匿名内存之间的东西。
一方面,它具有文件的属性,能够像操作文件一样去操作它。它有自己inode、有自己的pagecache;
另一方面,它也有匿名内存的属性。由于没有像磁盘这样的外部存储介质,内核在内存紧缺时不能简单的将page从它们的pagecache中丢弃,而需要swap-out;(参阅《linux页面回收浅析》)

对tmpfs/shmem内存的读写,就是对pagecache中相应位置的page所代表的内存进行读写,这一点跟普通的文件映射没有什么不同。
如果进程地址空间的相应位置尚未映射,则会建立到pagecache中相应page的映射;
如果pagecache中的相应位置还没有分配page,则会分配一个。当然,由于不存在磁盘上的源数据,新分配的page总是空的(特别的,通过read系统调用去读一个尚未分配page的位置时,并不会分配新的page,而是共享ZERO_PAGE);
如果pagecache中相应位置的page被回收了,则会先将其恢复;

对于第三个“如果”,tmpfs/shmem和普通文件的page回收及其恢复方式是不同的:
page回收时,跟普通文件的情况一样,内核会通过prio_tree反向映射找到映射这个page的每一个pagetable,然后将其中对应的pte清空。
不同之处是普通文件的page在确保与磁盘同步(如果page为脏的话需要刷回磁盘)之后就可以丢弃了,而对于tmpfs/shmem的page则需要进行swap-out。
注意,匿名page在被swap-out时,并不是将映射它的pte清空,而是得在pte上填写相应的swap_entry,以便知道page被换出到哪里去,否则再需要这个page的时候就没法swap-in了。
而tmpfs/shmem的page呢?pagetable中对应的pte被清空,swap_entry会被存放在pagecache的radix_tree的对应slot上。

等下一次访问触发pagefault时,page需要恢复。
普通文件的page恢复跟page未分配时的情形一样,需要新分配page、然后根据映射的位置重新从磁盘读出相应的数据;
而tmpfs/shmem则是通过映射的位置找到radix_tree上对应的slot,从中得到swap_entry,从而进行swap-in,并将新的page放回pagecache;

这里就有个问题了,在pagecache的radix_tree的某个slot上,怎么知道里面存放着的是正常的page?还是swap-out后留下的swap_entry?
如果是swap_entry,那么slot上的值将被加上RADIX_TREE_EXCEPTIONAL_ENTRY标记(值为2)。swap_entry的值被左移两位后OR上RADIX_TREE_EXCEPTIONAL_ENTRY,填入slot。
也就是说,如果${slot}&RADIX_TREE_EXCEPTIONAL_ENTRY!=0,则它代表swap_entry,且swap_entry的值是${slot}>>2;否则它代表page,${slot}就是指向page的指针,当然其值可能是NULL,说明page尚未分配。
那么显然,page的地址值其末两位肯定是0,否则就可能跟RADIX_TREE_EXCEPTIONAL_ENTRY标记冲突了;而swap_entry的值最大只能是30bit或62bit(对应32位或64位机器),否则左移两位就溢出了。

最后以一张图说明一下匿名page、文件映射page、tmpfs/shmempage的回收及恢复过程:

Ⅲ 如何在linux系统里访问windows的磁盘共享文件

1、首先,通过DB server将SAN存储中开辟一个10T的存储空间,并将其格式化为NTFS的文件系统。此时,这个10T的存储区域相当于这个DB server的一个磁盘,并且文件系统为NTFS。
2、下面就是如何谈论的就是如何在linux系统中,访问windows的磁盘?
这里采用的方案是通过在linux上安装samba和mount。以下是具体的实现方法:
(1)首先,需要Windows上对磁盘进行网络映射。将Windows的磁盘共享即可(属性-共享-高级共享,增加一个共享名即可)
在这里我们是将Window下的F盘进行共享,通过增加一个共享名称为Share。
(2)然后,在Linux下安装一些小的功能:

yum install mount
yum install samba
(3)mount -t cifs -o username=administrator,password=Passw0rd! //192.168.2.246/Share /mnt/share

其中,//192.168.2.246/Share代表网络映射位置(就是你windows机器的ip地址和共享文件夹名), /mnt/share代表Linux下的文件夹位置(需要实现创建一个空的文件夹)。

(4)如果每次开机就希望该分区已经加载了,那么可以执行如下的步骤:

编辑文件:gedit /etc/fstab 或者 vi /etc/fstab
在文件末尾添加一行:
//192.168.2.246/Share /mnt/share cifs defaults,auto,username=administrator,password=Passw0rd!
其中username和password就是Linux的用户名密码
然后重启或者输入sudo mount -a即可~
(5)最后可以通过执行:df -h 来查看是否加载成功。更多Linux介绍可查看《Linux就该这么学》。

Ⅳ 两台linux配置连接共享存储后,fdisk -l的结果不一致该咋办

拔掉A机, 看看B机上的情况. 先确认 每台主机分别可以认到存储, 然后再一起接上去, 看看两台机器都存在的情况. 另外, multipath最后先别装. 有时候, 物理的链路要先确认工作正常, 再继续下一步.

Ⅳ linux怎样设置共享缓存

当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。
一、通常情况
先来说说free命令:
# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/Cache: 58 191
SWAP: 511 0 511
其中:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache (已用)的内存数:used - buffers - cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
有了这个基础后,可以得知,我现在used为163MB,free为86MB,buffer和cached分别为10MB,94MB。
那么我们来看看,如果我执行复制文件,内存会发生什么变化。
# cp -r /etc ~/test/
# free -m
total used free shared buffers cached
Mem: 249 244 4 0 8 174
-/+ buffers/cache: 62 187
Swap: 511 0 511
在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐,都被cached吃掉了。别紧张,这是为了提高文件读取效率的做法。
为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
那么有人说过段时间,linux会自动释放掉所用的内存。等待一段时间后,我们使用free再来试试,看看是否有释放?
# free -m
total used free shared buffers cached
Mem: 249 244 5 0 8 174
-/+ buffers/cache: 61 188
Swap: 511 0 511
似乎没有任何变化。(实际情况下,内存的管理还与Swap有关)那么我能否手动释放掉这些内存呢?回答是可以的!

Ⅵ 如何在Linux下用multipath给Oracle RAC数据库配置共享存储

multipath 只是个多路径软件。
配置文件:/etc/multipath.conf
查看磁盘:multipath -ll
扫描磁盘: multipath -v2
在使用时,一般用/etc/mapper/mpath{n}块设备。

Ⅶ linux服务器装了oracle,共享存储是什么意思简单举个例子说明下

共享存储主要用于RAC架构下的

单节点数据库,如果实例宕机了,如果一个业务、在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。

RAC不能够解决在数据的安全,尽管有多个实例,但是只有一份数据文件,这样只要数据文件损坏了,那么整个数据库就损坏了。

Ⅷ 什么是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连接共享存储区命令是什么

linux客户端:iscsi
#yum -y install iscsi*
发现iscsi存储
#iscsiadm -m discovery --type sendtargets --portal 192.168.1.200:3260
192.168.1.200:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
建立连接
#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.1.200:3260 -l
删除连接(所有)
iscsiadm -m node -U all

nfs:
mount 10.168.55.185:/alidata/www /alidata/www

Ⅹ 虚拟机是linux5.8,能配置rhcs么,有共享存储

这四种方式:

1.在选定磁盘上删除分区并创建默认分区结构:如果选用这种结构,硬盘会整个被linux占用,并将硬盘里的全部分区删除后一安装程序默认的方式重新分区。

2.在选定驱动上删除linux分区并创建默认的分区:在这块硬盘上,只要linux的分区会被删除,然后再以安装程序默认的方式重新创建分区。

3.使用选定驱动器中的空余空间并创建默认的分区结构:如果你的这款硬盘还有未被分区的空间,那么使用这个选项后,系统不会更改原有的分区,只是会在空余分区上创建默认分区。

4.建议自定义的分区:不是用安装程序默认的分区方式,自定义分区方式。这个一般就是我们需要的。

仔细看就回明白其中区别了。

热点内容
sqlsa默认密码 发布:2025-09-23 02:36:50 浏览:142
安卓什么手机地图好用 发布:2025-09-23 02:35:14 浏览:447
古老八字算法 发布:2025-09-23 02:32:15 浏览:653
mssql存储过程查询 发布:2025-09-23 02:30:43 浏览:869
androidtextview行数 发布:2025-09-23 02:29:59 浏览:23
aspnetmvc4上传文件 发布:2025-09-23 02:20:54 浏览:519
安卓pmu什么意思 发布:2025-09-23 02:12:54 浏览:658
天下霸图脚本 发布:2025-09-23 01:45:47 浏览:279
md5加密技术 发布:2025-09-23 01:45:07 浏览:510
c程序编译的目的是什么 发布:2025-09-23 01:45:06 浏览:48