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

linux存储共享

发布时间: 2023-04-05 02:00:02

A. 探讨一下 linux 共享内存的 N 种方式

关于 Linux 共享内存,写得最好的应该是宋宝华的 《世上最好的共享内存》 一文。

本文可以说是对这篇文章的学习笔记,顺手练习了一下 rust libc —— shichaoyuan/learn_rust/linux-shmipc-demo

按照宋宝华的总结,当前有四种主流的共享内存方式:

前两种方式比较符合传统的用法,共享内存做为进程间通信的媒介。
第三种方式更像是通过传递内存“句柄”进行数据传输。
第四种方式是为设备间传递数据设计,避免内存拷贝,直接传递内存“句柄”。

这里尝试了一下第二种和第三种方式。

这套 API 应该是最普遍的 —— shm_open + mmap,本质上来说 Aeron 也是用的这种方式(关于 Aeron 可以参考 我之前的文章 )。

看一下 glibc 中 shm_open 函数的实现就一清二楚了:

shm_open 函数就是在 /dev/shm 目录下建文件,该目录挂载为 tmpfs,至于 tmpfs 可以简单理解为存储介质是内存的一种文件系统,更准确的理解可以参考官方文档 tmpfs.txt 。

然后通过 mmap 函数将 tmpfs 文件映射到用户空间就可以随意操作了。

优点:
这种方式最大的优势在于共享的内存是有“实体”(也就是 tmpfs 中的文件)的,所以多个进程可以很容易通过文件名这个信息构建共享内存结构,特别适合把共享内存做为通信媒介的场景(例如 Aeron )。

缺点:
如果非要找一个缺点的话,可能是,文件本身独立于进程的生命周期,在使用完毕后需要注意删除文件(仅仅 close 是不行的),否则会一直占用内存资源。

memfd_create 函数的作用是创建一个匿名的文件,返回对应的 fd,这个文件当然不普通,它存活在内存中。更准确的理解可以参考官方文档 memfd_create(2) 。

直观理解,memfd_create 与 shm_open 的作用是一样的,都是创建共享内存实体,只是 memfd_create 创建的实体是匿名的,这就带了一个问题:如何让其它进程获取到匿名的实体?shm_open 方式有具体的文件名,所以可以通过打开文件的方式获取,那么对于匿名的文件怎么处理呢?

答案是:通过 Unix Domain Socket 传递 fd。

rust 的 UDS 实现:
rust 在 std 中已经提供了 UDS 的实现,但是关于传递 fd 的 send_vectored_with_ancillary 函数还属于 nightly-only experimental API 阶段。所以这里使用了一个三方 crate —— sendfd ,坦白说可以自己实现一下,使用 libc 构建好 SCM_RIGHTS 数据,sendmsg 出去即可,不过细节还是挺多,我这里就放弃了。

这套 API 设计更灵活,直接拓展了我的思路,本来还是受限于 Aeron 的用法,如果在这套 API 的加持下,是否可以通过传递数据包内存块(fd)真正实现零拷贝呢?

优点:
灵活。

缺点:

B. 如何在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就该这么学》。

C. linux查看共享内存命令

共享内存查看
使用ipcs命令,不加如何参数时,会把共享内存、信号量、消息队列的信息都打印出来,如果只想显示共享内存信息,使用如下命令:
[root@localhost ~]# ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 1867776 root 600 393216 2 dest
0x00000000 1900545 root 600 393216 2 dest
0x00030021 1703938 zc 666 131104 1
0x0003802e 1736707 zc 666 131104 1
0x00030004 1769476 zc 666 131104 1
0x00038002 1802245 zc 666 131104 1
0x00000000 1933318 root 600 393216 2 dest
0x00000000 1966087 root 600 393216 2 dest
0x00000000 1998856 root 600 393216 2 dest
0x00000000 2031625 root 600 393216 2 dest
0x00000000 2064394 root 600 393216 2 dest
0x0014350c 2261003 cs 666 33554432 2
0x00000000 2129932 root 600 393216 2 dest
0x00000000 2162701 root 600 393216 2 dest
0x00143511 395837454 root 666 1048576 1
其中:
第一列就是共享内存的key;
第二列是共享内存的编号shmid;
第三列就是创建的用户owner;
第四列就是权限perms;
第五列为创建的大小bytes;
第六列为连接到共享内存的进程数nattach;
第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。

D. 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有关)那么我能否手动释放掉这些内存呢?回答是可以的!

E. 虚拟机linux共享文件夹在哪

虚拟机linux共享文件夹在设置保存的文件家中,查看虚拟机linux共享文件夹的操作步骤如下:

1、首先,打开一个的VMware软件,并是已经安装好一个虚拟的系统,点击编辑虚拟机设置。

F. vmware虚拟化怎么给两台linux虚拟机做共享存储

使用windows的CMD程序操作,进入vmware的安装目录,然后执行:

CMD> vmware-vdiskmanager.exe # 不加任何参数会显示完整的帮助信息。
CMD> vmware-vdiskmanager.exe -c -s 200Mb -a ide -t 0 disk.vmdk

这样就生成了一个新的(-c参数),200Mb大小(-s 200Mb),IDE接口(-a ide)的名为'disk.vmdk'磁盘。
关于'-t 0'的含义,请参考该命令的帮助信息。

G. 如何设置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 ,它支持配置更大的内存页面尺寸。

H. linux共享凭据保存在哪里

linux共享凭据保存在共享库。在Linux下,共享库的寻找和加载是由lib/ld.so实现的。(在机器里找到了/lib/ld-2.22.so,是这个)ld.so在标凯野巧准路径。直接在用户@unbuntu输入:/mnt/hgfs/cd/mnt/hgfs/share就可以看脊型见一个share的文盯键件,在windows里面放的文件,可以直接在里面显示出来。

I. linux 怎样建立所有使用者共享资料夹

linux 怎样建立所有使用者共享资料夹

Linux下给新使用者建立档案和目录许可权,只需要新增该使用者到希望他建立档案和目录的使用者组里即可,案例如下:案例:希望新建使用者admin,能在/目录下建立档案和目录。1.在/目录下用ls命令检视目录的组使用者许可权
1
2
ls -l
#检视所属的使用者和组,并可以检视组使用者的许可权
2.修改使用者admin对资料夹的许可权
1
2
3
chmod 777
gpasswd -a admin admin
#可以将使用者admin新增到使用者组里
这样新建的使用者admin,便能在/这个目录下拥有建立档案和目录的许可权了。

怎样建立共享资料夹

右击要共享的资料夹,选择“共享和安全”,然后点选共享,进行必要的设定就可以了。

怎样建立局网共享资料夹

首先保证你的区域网是通的!
然后选择需要共享的资料夹或磁盘,右键--共享与安全。。。。这样就搞定了。。
切记:一定要开启GUEST使用者的许可权,不然可能需要密码才能访问比较麻烦!·

1.启用来宾帐户。 “控制面板-使用者帐户-启用来宾帐户” 2.安装NetBEUI协议。 检视“网路上的芳邻”属性——检视“本地连线”属性——点选“安装”——检视 “协议”——看其中NetBEUI协议是否存在,如果存在则安装这个协议,如果不存在则表明已经安装了该 协议,在Winxp系统预设的情况下该协议是已经安装好了的。 3.检视本地安全策略设定是否禁用了GUEST账号。 控制面板——管理工具——本地安全策略——使用者权利指派——检视“拒绝从网路访问这台计算机”项的属性——看里面是否有GUEST帐户,如果有就把它删除掉。 4.设定共享资料夹。 你如果不设定共享资料夹的话,网内的其它机器无法访问到你的机器。设定资料夹共享的方法有三种,第一种是:“工具--资料夹选项--检视--使用简单资料夹共享”。这样设定后,其他使用者只能以Guest使用者的身份访问你共享的档案或者是资料夹。第二种方法是:“控制面板--管理工具--计算机管理”,在“计算机管理”这个对话方块中,依次点选“资料夹共享--共享”,然后在右键中选择“新建共享”即可。第三种方法最简单,直接在你想要共享大游磨的资料夹上点选右键,通过“共享和安全”选项即可设定共享。 5.建立工作组。 在Windows桌面上用右滚斗键点选“我的电脑”,选择“属性”,然后单击“计算机名”选项卡,看看该选项卡中有没有出现你的区域网工作组名称,如“workgroup”等。然后单击“网路 ID”按钮,开始“网路标识向导”:单击“下一步”,选择“本机是商业网路的一部分,用它连线到其他工作着的计算机”;单击“下一步”,选择“公司使用没有域的网路”;单击“下一步”按钮,然后输入你的区域网的工作组名,这里我建议大家用“BROADVIEW”,再次单击“下一步”按钮,最后单击“完成”按钮完成设定。 重新启动计算机后,区域网内的计算机就可以互访了。 6.检视“计算机管理”是否启用来宾帐户。 控制面版——计算机管理——本地使用者和组——使用者——启用来宾帐户。机器重新启动后就可以了。 如果大家想提高访问别人机器的速度的话,还可以做一些相关操作:控制面版——管理工具——服务——Task Scheler——属性——启动方式改为手动,这样就可以了。 7.使用者权利指派。 “控制面板--管理工具--本地安全策略”,在“本地安全策略”对话方块中,依次选择“本地策略--使用者权利指派”,在右边的选项中依次对“从网路上访问这台计算机”和“拒绝从网路上访问这台计算机”这两个选项进行设定。 “从网路上访问这台计算机”选项需要将guest使用者和everyone新增进去;“拒绝从网路上访问这台计算机”需要将被拒绝的所有使用者删除掉,预设情况下guest是被拒绝访问的。 但是只要你的区域网出现了不能访问的现象,通过上述设定肯磨薯定能保证区域网的畅通

virtualbox怎么建立共享资料夹

关键字:VirtualBox 共享资料夹 设定 使用 与主机共享档案
用过vmware的都知道,vmware有个vmware tools增强工具,安装后可以鼠标键盘在主机与虚拟机器之间无缝切换,还能无缝拷贝档案,共享剪贴簿.但问题是有付费,价格还挺高...
VirtualBox的好处就是免费开源,但功能比之vmware着实要弱上不少,比如与主机共享档案能力就比较弱,这里介绍一种使用共享资料夹方式来达到主机及虚拟机器共享档案的目的.
windows系统电脑
VirtualBox
已安装好的虚拟作业系统
1
说明:我这里虚拟机器装的是Ubuntu14.04LTS,但据我观察换成其它不管是LINUX还是WINDOWS系统,操作都大同小异,95%是相同的.
2
开启VirtualBox虚拟机器,点选工具栏中"设定"按钮
3
在弹出的视窗中点选左边的"共享资料夹"标签
4
在"共享资料夹"标签页中,在"固定分配"项上右击,选择"新增共享资料夹"
5
弹出"共享资料夹"对话方块,按下图设定好(选择共享资料夹路径及名称,并勾选"自动挂载")
启动虚拟机器,点选"装置"选单,并选择"安装增强功能..."选单项
之后系统会将安装软体挂载到光盘机,并且光盘机会自动执行,弹出如下提示,请点选"Run",让它自动安装.
如果你的光盘机没有自动执行,或者自动安装出错,或者你想手动安装,可以在左侧快速启动栏点选光盘机图示,或者在档案管理器中点选Devices下的"VBOXADDITIO..."开启光盘,将其中内容复制到比如桌面某个资料夹,
光盘中的内容如下:
开启终端(快递键:CTRL+ALT+T),输入如图命令:
chmod 777 VBoxLinuxAdditions-x86.run
然后执行安装程式:
sudo sh ./VBoxLinuxAdditions-x86.run
安装成功后会有如下提示:
Installing graphics libraries and desk services ponents ...done.
把当前登入到ubuntu系统的使用者新增到vboxsf组,例如我的使用者名称是fiyang,在终端中执行以下命令:
sudo usermod -G vboxsf fiyang
之后进入/media目录,会发现之前设定 *** 享的资料夹赫然在列(前面会多出个sf_的字首)
在WIN7系统的主机中,在共享资料夹加新增一个档案
去虚拟机器UBUNTU系统中看下共享资料夹,
16
果然能看到主机中复制的档案了,至此,共享资料夹设定完成^_^

用VMware虚拟Linux时如何建立共享资料夹?

首先要有确定你装了samba服务器
然后确定linux和windows是可以ping通的,并且两者属于同一工作组
在windows中设定的共享资料夹linux下可以用 *** bclient命令进行访问
在samba服务器的主配置档案/etc/samba/ *** b.conf中定义要共享的小节即可

怎样建共享资料夹

右建要共享的资料夹,如果是XP系统,点共享和安全就行了。里面有设定的

共享是说在网上的所有使用者都能访问我的共享资料夹吗?

不是,是在同一个工作组或者域里面的使用者可以。

windows怎样访问linux共享资料夹

在Linux下访问Windows共享目录的配置方法
1、在Windows上设定一个共享目录
如:将d:RedHat_disk设定为共享目录
2、在Windows上建立一个使用者,如tommy,密码111111
3、将tommy使用者加入到共享目录d: edhat_disk的访问组中,并设定tommy
对该共享目录有完全控制权限(读、写)
4、在Linux下安装samba-client客户端
# yum install samba-client
5、安装cifs-utils软体包
# yum install cifs-utils
6、在Linux下建立一个挂载点
# mkdir /mnt/Windows
7、挂载Windows上的共享目录d: edhat_disk到Linux下的/mnt/Windows目录下
# mount -t cifs -o username=tommy 192.168.1.123/redhat_disk /mnt/Windows
Enter password: 111111
8、如果挂载成功,则可以进入/mnt/Windows下,新建一个档案,看看Windows上能否看见
9、在/etc/fstab档案中,加入该共享目录的挂载资讯
192.168.1.123/redhat_disk /mnt/Windows cifs username=tommy,password=111111 0 0
10、到此为止,Windows上的共享目录192.168.1.123/redhat_disk就被成功挂载到了Linux上面了,并且Linux重启后,会自动挂载该目录到/mnt/Windows目录下

怎样共享资料夹

设定如下:
控制面板→管理工具→本地安全策略→本地策略→安全选项,右边找到“网路访问: 不允许 SAM 帐户和共享的匿名列举”这个禁用,“网路访问: 本地帐户的共享和安全模型”选仅来宾,还有最下边的“账户:来宾账户状态”要启用,以及“帐户: 使用空白密码的本地帐户只允许进行控制台登入”禁用。然后切换到本地策略→使用者权利指派,右边找到“拒绝从网路访问这台计算机”,点选去,里面要是有guest,删掉,没有就算了。做完这些系统就开放共享了,但是要重启一下电脑来确保设定生效。重启之后就是看要共享哪些档案夹了,右键点要共享的资料夹,
选“共享与安全”就会看到相关选项。共享许可权很简单,开了共享之后就剩下是否允许修改了,楼主自行设定。
登陆共享主机的方法是在执行里面输入“\某某的电脑”或者是“\192.168.1.2”,这只是例子,相应的计算机名或IP自行填写。

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

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

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

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

热点内容
pid算法调速 发布:2025-02-13 21:20:31 浏览:686
脚本中new 发布:2025-02-13 21:00:11 浏览:741
什么配置的笔记本电脑能玩神武 发布:2025-02-13 20:54:40 浏览:178
挑选云服务器需要注意什么 发布:2025-02-13 20:53:31 浏览:98
加密滴胶卡 发布:2025-02-13 20:30:48 浏览:275
javalogin 发布:2025-02-13 20:25:48 浏览:427
智联招聘无法上传照片 发布:2025-02-13 20:16:03 浏览:529
python元素替换list 发布:2025-02-13 20:03:48 浏览:773
windows系统账户名和密码是多少 发布:2025-02-13 20:03:02 浏览:531
我的世界带有商店服务器好吗 发布:2025-02-13 20:02:50 浏览:616