帖子:

绑定裸设备

原始/dev /原始/原始/dev /

删除原始设备

raw /dev/raw/raw0 0

在raw/dev/raw/raw10中删除原始设备/dev/raw/raw1时

1、什么样的裸设备? 文字设备? 块设备?

原始设备:也称为原始分区(原始分区),是一种未格式化、无法通过文件系统从Unix/Linux读取的特殊字符设备。 原始设备可以绑定到分区或磁盘。

字符设备:对字符设备的读写不需要通过操作系统的缓冲区。 无法从文件系统挂载。

块设备:对块设备的读写需要通过操作系统的buffer,它可以挂载在文件系统上。

2、一个系统可以有多少裸设备?

这与linux的版本相关联,在旧版本中,最多只能有256个原始设备,在Linux 4上可以绑定8192个原始设备。

但是,在linux上最多只能绑定255个分区,因此在使用原始设备绑定分区时,最多只能绑定255个原始设备。

如果使用lvm,则没有此限制。

3、Linux订购磁盘,最多可以有多少个分区?

十五个。 三个主分区一个扩展分区11个逻辑分区。

建议的分区方法是首先划分为三个主分区,将第四个分区作为扩展分区,在扩展分区中再划分为11个逻辑分区。

请不要将原始设备绑定到扩展分区。

4、需要在linux上绑定原始设备吗? unix呢?

如果需要在linux上使用原始设备,则必须手动绑定。

不在unix上使用。

因为Unix中的每个块设备都有用于非缓存I/O的相应字符设备。 这就是他对应的原始设备。

Linux的原始io实现了非unbound原始设备/dev/rawN或/dev/raw/rawN,以及用于将它们绑定到块设备的控制设备/dev/rawct。 因此,如果需要使用原始设备,则必须将他与实际存在的块设备相关联。 此步骤实际上是完成对Unix中未缓存字符设备的自动响应。

5、linux如何绑定原始设备?

两种方法:

1 )指令绑定

原始/dev /原始/原始[ n ]/dev/XXX

其中n的范围为0-8191。 无法创建原始目录。

此命令将在/dev/raw下生成相应的raw[n]文件

命令绑定原始设备将在系统重新启动后禁用。

2 )修改文件

按如下方式修改/etc/sysconfig/rawdevices文件,以便在通电时自动加载原始设备: 示例:

/dev/raw/raw1 /dev/sdb1

这是通过启动服务来绑定裸设备的方法。

也可以将此命令写入/etc/rc.local,以便在每次启动时运行这些命令。

6、如何使原始设备成为oracle数据文件? 有什么需要注意的吗?

1 )绑定裸设备

参照上述

2 )改变裸设备所有者

两种方法:

.将命令卸载到/etc/rc.local

chown Oracle : oinstall/dev/raw/raw 1

修改./etc/udev/permissions.d/50-udev.permissions文件

将/etc/udev/permissions.d/50-udev.permissions中的113行改为

raw/* : root 3360 disk :0660

修改为

raw/* : Oracle : oinstall :0660

这意味着修改原始设备的默认所有者为oracle:oinstall,默认模式为0660。

如果使用lvm,还必须将逻辑卷绑定到原始设备。 步骤与绑定到普通分区类似。

7、使用原始设备作为oracle数据文件时,应该注意什么?

要将原始设备用作oracle数据文件,请注意以下事项:

1 )一个原始设备只能放置一个数据文件

2 )数据文件的大小不能超过原始设备的大小

对于日志文件,原始设备的最大可用大小(=与原始设备相对应的分区大小-1* 512 (保留一个重做锁定) ) ) ) ) ) ) ) ) ) ) )。

对于数据文件,原始设备的最大可用大小=与原始设备相对应的分区大小-2*db_block_size(2 (保留两个块) ) ) ) ) ) ) ) )

为简单起见,所有文件设置都可以比裸设备小1米。

3 )数据文件最好不要设置为自动扩展。 设置称为自动扩展时,请确保将maxsize设置设置为小于原始设备

8、逻辑卷是否可以直接用作oracle数据文件?

在linux上,oracle不能直接将逻辑卷用作原始设备。 也进行绑定。 在unix上不需要。

9、如何知道目前绑定了什么样的裸设备?

rqw -qa命令列出当前绑定的所有原始设备。

10、如何知道某个裸设备的大小

比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk -l /dev/[h,s]dXN看那个块设备的大小就好了。

比较简单的办法是用blockdev命令来计算,如:

#blockdev –getsize /dev/raw/raw1

11718750

11718750表示有多少OS BLIOCK。

一般一个OS BLOCK大小是512字节,所以11718750*512/1024/1024/1024 = 5722(m) 就是裸设备的大小。

11、数据库中可以同时以文件和裸设备作为数据文件吗?

可以。甚至在同一个表空间中,也可以部分数据文件用文件系统,部分文件用裸设备。

但是不建议这样做,因为会增加管理的复杂度。

12、可以把至于裸设备的数据文件设成自动扩展吗?

可以,但同时要设置maxsize,且maxsize不能超过:裸设备大小 – 2*db_block_size

13、如何修改裸设备的默认权限

两种方法:

1)要修改/etc/rc.d/rc.local文件,加入如下:

chown root:oinstall /dev/raw/raw1

chown root:oinstall /dev/raw/raw2

chown root:oinstall /dev/raw/raw3

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chmod 660 /dev/raw/raw3

2)实际上还有更简单的方法就是,修改/etc/udev/permissions.d/50-udev.permissions文件:

raw/*:root:disk:0660

raw/*:root:oinstall:0660

这样就可以了!

14、如何取消裸设备的绑定

用raw把major and minor设成0就可以取消裸设备的绑定。如:

raw /dev/raw/raw1 0 0

这个命令取消绑定裸设备的绑定,/dev/raw/raw1会被删除

15、裸设备可以绑定的对象可以什么?

可以绑定整个没有分区的硬盘、可以绑定硬盘的某个分区、可以绑定逻辑卷等。

(一)AIX下创建裸设备:

4e)Nguo0RI3N01.创建VG卷组:

Q3~ZL%f0#mkvg -S -y’datavg’ -s’128’hdisk1 hdisk2….hdisknITPUB个人空间6X`Jt }eO

其中:-S表示创建scalable-type的VG;-y表示创建vg的名称;-s表示PP SIZE的大小。

Y%`I-u+}+s N02.从VG中创建一个LV,名称为lv_db_test_1g:ITPUB个人空间R Lj3[B%FJ:lp

#mklv -y’lv_db_test_1g’ -t’raw’ ‘-S128k’ datavg 16 hdisk1 hdisk2…hdisknITPUB个人空间N;N6o*_;avQj

其中:在vg中创建一个lv_db_test_1g的lv;分别在pv上条带尺寸为128K,-t 表示类型为raw,这个类型只是个标志,可以随意指定。ITPUB个人空间3mo3_WK S5h-LGf

3.修改相应权限:

1P4V!i_U9V[0chown :oinstall /dev/rlv_db_test_1g;

!ER”[jAi0fk0注意室”rlv”表示字符设备。

;L.bcK6S04.挂载数据文件:

3i_y l9O@ S0ln -s /dev/rlv_db_test_1g /oracle/oradata/dgdemo/temp01.dbfITPUB个人空间z i Rvl$_

5.在中创建表空间:ITPUB个人空间qCqdeL

create tablespace temp datafile ‘/oracle/oradata/dgdemo/temp01.dbf’ size 1000M reuse;

(二)下创建裸设备:

1.创建分区:

利用fdisk分一个区,比如划分/dev/hdb1;

2.挂载分区:

#raw  /dev/raw/raw1  /dev/hdb1;

3.修改权限:

#chown oracle:oinstall /dev/raw/raw1

4.链接裸磁盘:

#ln -s /dev/raw/raw1  /oracle/oradata/dgdemo/temp.dbf

5.创建oracle的数据文件:

create tablespace temp datafile ‘/oracle/oradata/dgdemo/temp.dbf’ size 1000M reuse;

备注:如果使用LVM来创建LV类型的裸设备:由于LVM创建的LV是块设备,不是字符设备,只有块设备;

#raw /dev/raw/raw1  /dev/lv_db_test_1g;

(三)裸设备:

使用dd命令:

if=file  指定输入文件,默认值为标准输入

of=file 指定输出文件,默认值为标准输出

bs=n  设置输入和输出的块大小为N字节(以k为单位)

skip=n 拷贝之前跳过n个数据块,默认值为0

seek=n 拷贝之前从输出文件首部跳过N块,默认值为0

count=0 指定拷贝的块数,默认到拷贝到输入文件结束。

注意:数据文件拷贝在数据库OFFILE或者数据库没有OPEN状态下拷贝:

dd精确拷贝:

dd if=/dev/rlv_db_test_1g f=/oracle/test01.dbf bs=4k skip=1 count=512002

dd整个数据文件拷贝:

dd if=/dev/rlv_db_test_1g f=/oracle/test01.dbf bs=4k seek=1

使用RMAN进行备份,必须在MOUNT和OPEN状态下拷贝:

rman>copy ‘/oracle/oradata/dgdemo/test01.dbf’ to ‘/oracle/test01.dbf’