发新话题
打印

讨论多os共享lun,以及文件系统,数据库方面的问题!

引用:
原帖由 pekics 于 2006-9-8 16:02 发表
meta data是放在硬盘上,可是meta data的处理都在主机里。
比如windows吧,启动的时候去磁盘上读出分区表,此后分区表的修改就基本在内存里倒腾了。直到关机的时候,主机才会统一把分区表的修改写到磁盘上。
严重质疑P兄这个说法了,“直到关机的时候,主机才会统一把分区表的修改写到磁盘上”,不知道这个机制是windows还是linux实现机制?我看了一些linux内核实现,说是linux每隔一段时间就flush到磁盘。如果直到关机才写盘,恐怕不妥吧。。。。
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

引用:
原帖由 myprotein 于 2006-9-11 08:14 发表
不敢苟同t兄的说法,linux的vfs,什么/,/usr,/home  /tmp之类的,这些确实是只存在在内存中的,每次初始化时候会加载这么一颗树,实际文件系统其实是ext或者其他什么系统,需要挂载到这些目录中。所以ext之类的文件系统是真真切切的物理文件系统,有自己的操作磁盘的格式的。所以t兄说的不完全正确个人以为。
看来m兄不太喜欢在UNIX下下面写程序...呵呵

Linux我不懂,我比较熟悉Solaris,但我想原理都是类似的。

你可以在系统里面识别到一个新的磁盘,把它分区,其中一个区为 c2t1d0s0,在这个区上面并不用mkfs

但你可以open这个设备,并且write一些东西,然后你还可以把这些东西read出来.  说白了,你可以不用建立任何文件系统,往I/O设备里面写东西,然后还可以读出来。你可以用你自己定义的结构。上面的open/read/write都是system call

Oracle/Sybase这些数据库也是这样运作的,可以把数据建立在raw device上面,不用操作系统的文件系统。

TOP

引用:
原帖由 thresh_freeman 于 2006-9-11 11:07 发表


看来m兄不太喜欢在UNIX下下面写程序...呵呵

Linux我不懂,我比较熟悉Solaris,但我想原理都是类似的。

你可以在系统里面识别到一个新的磁盘,把它分区,其中一个区为 c2t1d0s0,在这个区上面并不用mkfs ...
别说unix下面程序了,我就能看个printf “hello workd”之类的代码。。。。。。惭愧

受教了,多谢!

还有一事不明,请问直接在raw上写,自定义的结构,“自定义的结构”,如果没理解错,就是指fs吧?
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

引用:
原帖由 myprotein 于 2006-9-11 11:26 发表


别说unix下面程序了,我就能看个printf “hello workd”之类的代码。。。。。。惭愧

受教了,多谢!

还有一事不明,请问直接在raw上写,自定义的结构,“自定义的结构”,如果没理解错,就是指fs吧?
为什么自定义的结构就是FS,你定义一个结构:

struct sMyDataRecord {
int    iRecNo;
char sMyData[1000];
}

这样也可以啊。这个结构不算文件系统吧。

TOP

t兄太强了,那再请教一下,fs的数据结构是怎样的?
好像也是stuct{}定义的吧,只不过t兄定义的这个比较简单罢了,我是这么认为的。
敢问t兄如果按照
struct sMyDataRecord {
int    iRecNo;
char sMyData[1000];
}
来定义,那么数据在磁盘上存储也有一定的结构吧,不可能东一块西一块,肯定得有个寻址之类的matadata的东西,只要有这些定义了,不管简单与否,就可以算做是fs了。广义的fs,可以这么理解么?除非完全抛弃了“文件”这个概念,那么只要对上层是用文件来显现的,那么底层的结构就一定应该算是文件系统。

亦或是小弟未完全理解,也就是说数据可以不按某种预定义的结构,就直接往磁盘上写,比如我write()一个hello字符,那么我怎么决定往磁盘上哪个扇区来写?既然是raw,那么是不是顺序读写,转换成ascII,直接往磁盘第一号扇区写40个0、1? 那么我读的时候,怎么知道hello这字符在第一号扇区?


我外行,别笑话我啊

[ 本帖最后由 myprotein 于 2006-9-11 12:44 编辑 ]
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

个人理解,倮设备不能算做文件系统。在unix上可以看作一个文件。至于应用如sybase/oracle如何在上面存放数据,如何组织数据,都是应用的事情。

TOP

引用:
原帖由 xylonhong 于 2006-9-11 12:47 发表
个人理解,倮设备不能算做文件系统。在unix上可以看作一个文件。至于应用如sybase/oracle如何在上面存放数据,如何组织数据,都是应用的事情。
多谢x兄回帖,都是应用的事情,那么应用是否应该以自己定义的fs来管理磁盘上的数据呢?
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

引用:
原帖由 myprotein 于 2006-9-11 12:42 发表
t兄太强了,那再请教一下,fs的数据结构是怎样的?
好像也是stuct{}定义的吧,只不过t兄定义的这个比较简单罢了,我是这么认为的。
敢问t兄如果按照
struct sMyDataRecord {
int    iRecNo;
char sMyData;
...
这个不是强,只要你写过程序就知道的。

你定位可以用lseek.  OS看到的磁盘或者逻辑卷都是可以寻址的,但并不是说,这些磁盘上就有文件系统。

你不妨可以这样想,如果一定要有文件系统,主机才能访问存储,请问,这个文件系统是怎么建起来的?这不是一个悖论吗?

你如果对这些东西感兴趣,不妨去看看OS的相关资料

TOP

引用:
原帖由 thresh_freeman 于 2006-9-11 13:03 发表


这个不是强,只要你写过程序就知道的。

你定位可以用lseek.  OS看到的磁盘或者逻辑卷都是可以寻址的,但并不是说,这些磁盘上就有文件系统。

你不妨可以这样想,如果一定要有文件系统,主机才能访问存储 ...
文件系统是用os的工具来格式化出来的啊,我弱,我在学呢。。。。。。。
敝人博客
敝人专著:《大话存储》购买:当当,互动,淘宝,卓越。

TOP

引用:
原帖由 myprotein 于 2006-9-11 12:55 发表


多谢x兄回帖,都是应用的事情,那么应用是否应该以自己定义的fs来管理磁盘上的数据呢?
个人理解,不一定。望文生义,文件系统首先是一个系统里放了很多文件吧,这些文件以一定的方式组织起来,便于访问(打开,读写,关闭)和管理(创建,删除)。如果我写了一个应用,比如数据采集程序,在倮设备里以顺序的方式写入采集到的数据。应该不能算做文件系统吧。

当然你也可以写一个应用来管理倮设备,然后对外提供文件系统的访问接口,如open,read,等等,实现一个文件系统。当然也可以称为文件系统。你更可以写一个基于SAN的分布式文件系统直接管理倮设备。


不过我的理解是这个帖子文件系统的原意是指目前市面上已经商业化的文件系统。

TOP

发新话题