如何使用 NFS 或 CIFS 导出 RAW 设备以供数据库使用?
2 回答
我记得这样做是为了满足 Oracle 安装的一些神秘要求。我想出了如何做到这一点,但意识到在任何情况下我都不想真正实现这一点。
也就是说,如果你喜欢做出错误的选择:
创建一个您最终将作为原始设备公开的空文件:
dd if=/dev/zero of=/netapp/ocr/file bs=8k count=50000
制作原始设备:
mknod /dev/raw1 c 162 1
创建一个指向您要使用的文件的环回设备:
losetup /dev/loop1 /netapp/ocr/file
将原始设备绑定到环回设备:
raw /dev/raw/raw1 /dev/loop1
生成可以确认原始设备已正确绑定的输出:
raw -qa
简短的回答:你不能!
长答案:
NFS 和 CIFS 都旨在处理文件,而不是设备。
就客户端内核而言,使用 NFS 在 Unix 上导出设备节点实际上是指客户端上的(可能不存在的)设备。NFS 还因锁定问题而臭名昭著,这些问题会使任何并发(包括数据库事务)成为主要问题。NFS 上的 ACID 通常是禁忌。
我相信 CIFS 对特殊文件的支持也有限,尽管我可能弄错了。
也许您正在寻找诸如 NBD(网络块设备)、DRBD(分布式复制块设备)甚至 iSCSI 之类的东西?
http://en.wikipedia.org/wiki/ISCSI
http://en.wikipedia.org/wiki/Network_block_device
http://en.wikipedia.org/wiki/DRBD
请记住,如果您尝试将原始设备共享给多个节点,可能会出现严重的锁定问题 - 您需要支持分布式操作并一直锁定到您的数据库。
如果您在更高的层次上解释您想要做什么,您可能会得到更多帮助......