帖子:
绑定裸设备
原始/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’