是不是要给每一个系统划分一个lun

是不是要给每一个系统划分一个lun,第1张

当企业采用了一款新的应用程序时,例如SQL数据库,该应用程序需要一个或者多个块存储LUN与之关联。LUN的创新、协作、管理及防护功能为存储配置奠定了基础。逻辑单元号(简称LUN)是一种物理块存储空间(即整个磁盘)的逻辑需求其中一部分或者一组,例如廉价磁盘冗余陈列,是从多个磁盘及多个控制器中聚合而成的。存储LUN可以使某个应用程序或者某些应用程序与存储位置进行互动。例如,应用程序不能够控制磁盘中磁道、扇区及簇。存储分配需要这种物理到逻辑转换,包括 *** 作系统和文件系统。提供给企业工作负载的存储会根据数据中心中特定服务或者应用程序、性能需求以及管理能力发生变化,甚至有时候变化非常大。每台服务器需要多少存储LUN呢?关于“每台服务器需要配置多少存储LUN”的问题仍然是一个被大家争论的话题。在一个纯物理、非虚拟化的环境中,一台服务器承载单独一个应用程序任务,LUN要尽可能适用于应用程序及其数据。多数复杂的应用程序需要不止一个存储LUN,一个LUN用于应用程序内容,而另一个用于应用程序文件。每一个应用程序配置一个LUN的优势在于仅仅需要相对简单的备份和恢复方案即可,因为所有东西都在同一个存储空间中,将所有内容备份和恢复在一起变得非常重要。多个应用程序能够使用同一个存储LUN。例如,几个服务器中的基于块的应用程序能够使用同一个LUN,这也意味着有的物理服务器可以不必配置存储LUN。这样就可以简化供应关系,但是却引出了其他严重的问题,例如存储能力、性能和备份。LUN必须足够大,从而才能满足多个应用程序存储需求的服务能力。多个服务器同时向多个应用程序发出读和写的需求会引起存储和应用程序性能下降。因为,备份通常涉及一套完整的LUN、大的备份,共享LUN时间相对较长,并且对于其中的另外一些应用程序来说,要想存储所有东西耗费时间而且也不必要。一般来说,采用大型LUN对企业来说并不是最好的做法。存储LUN最佳实践方式也是延续到承载多个VM的虚拟服务器上。多个VM共享一个LUN是完全有可能实现的,但是,相同潜在的能力、性能和数据保护问题也会相继出现。在这种情况下,我们需要考虑将每个VM配置其自有LUN。随着虚拟化技术的不断演进,像VMware vSphere虚拟盘卷这样的技术可以保证每个VM存储实例部署和管理,进一步强调了配置多LUN要比配置较少LUN更可取。为了计划存储管理,我们要选择应用程序及其系统需求数量(而不是服务器数量)作为数据中心LUN实际数量。

//P1.1(T0):Count They Distance

//P0.4:Tx

//P0.5:Rx

#include <C8051F310.h>//SFR declarations

#include <stdio.h>//Standard I/O definition file

#include <math.h>//Math library file

#include <Intrins.h>

#include <absacc.h>

unsigned int j,i

char a=0

unsigned int t=0

//sbit led=P0^2

//P0.0(PWM0):给定左轮速度.

sbit vls=P0^4//P0.4(GPIO):给定左轮方向.

sbit vlf=P0^6//P0.6(T0) :反馈左轮速度.

sbit dlf=P1^0//P1.0(GPIO):反馈左轮方向.

//P0.2(PWM0):给定右轮速度.

sbit vrs=P0^5//P0.5(GPIO):给定右轮方向.

sbit vrf=P0^7//P0.7(T0) :反馈右轮速度.

sbit drf=P1^1//P1.1(GPIO):反馈右轮方向.

int ol//左轮给定值

int len

int len_1,len_2

int lyn_1,lyn_2

int vl1,vl2//反馈左轮速度值(取样周期内的方波数)

int lfz//运算后赋给PWM的值

int lyn,lynn

int lun=0,lun_1=0//偏差校正值 即校正PWM输出

int lunp,luni,lund//PID 校正值

int or//右轮给定值

int ren

int ren_1,ren_2

int ryn_1,ryn_2

int vr1,vr2//反馈右轮速度值(取样周期内的方波数)

int rfz//运算后赋给PWM的值

int ryn,rynn

int run=0,run_1=0//偏差校正值 即校正PWM输出

int runp,runi,rund//PID 校正值

float kp=2.0//比例系数1.8

float kd=0.2//微分系数0.4

float lki//积分系数

void pio_init(void)

void sys_init(void)

void t01_init(void)

void TIME3_INT(void)

void PID(void)

void interrupt_init(void)

void delay(unsigned int x)

void pwm1_1(void)

void main(void)

{

PCA0MD &= ~0x40//关闭

pio_init()//P11为测距输入端

sys_init()

t01_init()

pwm1_1()

TIME3_INT()

interrupt_init()

vls=1vrs=0

while(1)

{

ol=50

or=50

delay(1000)

ol=100

or=100

delay(1000)

ol=-50

or=50

delay(1000)

}

}

void PID(void)

{

/****************左轮PID调节******************/

if(dlf==1)

{

lyn=(vl2*256+vl1)//dlf是左轮反馈方向,0表示向前 vl=TL0

}

else

{

lyn=-(vl2*256+vl1)//dlf=1表示是向后退,速度应该为负值

}

len=ol-lyn//误差=给定速度-反馈速度(取样周期内的方波数)

if(abs(len)<8)//30

{

lki=1.4//ki值的确定1.4

}

else

{

lki=0.05//积分系数:如果 | 给定值-反馈值 | 太大

} //则就可以不引入积分,或者引入的很小0.05

lunp=kp*(len-len_1)//比例校正

luni=lki*len//积分校正

lund=kd*(len-2*len_1+len_2)//微分校正

lun=lunp+luni+lund+lun_1//总校正

/*************新旧数据更新*************************/

len_2=len_1

len_1=len//len:当前取样周期内出现的速度偏差len_1:上次取样周期内出现的速度偏差

lun_1=lun//lun:当前取样周期内得出的PWM校正值lun_1:上次取样周期内得出的PWM校正值

/*************新旧数据更新*************************/

if(lun>255)

{

lun=255//正速度

}

if(lun<-255)

{

lun=-255//负速度

}

if(lun<0)

{

vls=1

PCA0CPH0=-lun

}

if(lun>=0)

{

vls=0

PCA0CPH0=lun

}

/****************右轮PID调节******************/

if(drf==0)

{

ryn=(vr2*256+vr1)//drf是右轮反馈方向,0表示向前 vl=TL0

}

else

{

ryn=-(vr2*256+vr1)//dlf=1表示是向后退,速度应该为负值

}

ren=or-ryn//误差=给定速度-反馈速度(取样周期内的方波数)

if(abs(ren)<8)//30

{

lki=1.4//ki值的确定1.4

}

else

{

lki=0.05//积分系数:如果 | 给定值-反馈值 | 太大

} //则就可以不引入积分,或者引入的很小0.05

runp=kp*(ren-ren_1)//比例校正

runi=lki*ren//积分校正

rund=kd*(ren-2*ren_1+ren_2)//微分校正

run=runp+runi+rund+run_1//总校正

/*************新旧数据更新*************************/

ren_2=ren_1

ren_1=ren//len:当前取样周期内出现的速度偏差len_1:上次取样周期内出现的速度偏差

run_1=run//lun:当前取样周期内得出的PWM校正值lun_1:上次取样周期内得出的PWM校正值

/*************新旧数据更新*************************/

if(run>255)

{

run=255//正速度

}

if(run<-255)

{

run=-255//负速度

}

if(run<0)

{

vrs=1

PCA0CPH1=-run

}

if(run>=0)

{

vrs=0

PCA0CPH1=run

}

//因为这里的PCA0CPH0越大,对应的电机速度越小,所以要255来减一下

}

void pio_init(void)

{

XBR0=0x00//0000 0001

XBR1=0x72//0111 0010 时能弱上拉 T0T1连接到脚口P06、P07 CEX0、CEX1连接到脚口P00、P01

P0MDIN=0xff//模拟(0)数字(1) 1111 0011

P0MDOUT=0xc3//开漏(0)推挽(1) 1111 1111

P0SKIP=0x3c//0011 1100

P1MDIN=0xff//1111 1111

P1MDOUT=0xfc//

P1SKIP=0x00//1111 1111

}

void sys_init(void) //12MHz

{

OSCICL=0x43

OSCICN=0xc2

CLKSEL=0x00

}

void pwm1_1(void) //PWM的初始化

{

PCA0MD=0x08//PCA时钟为12分频

PCA0CPL0=200//左轮

PCA0CPM0=0x42//设置左轮为8位PWM输出

PCA0CPH0=200

PCA0CPL1=200//平衡校正

PCA0CPM1=0x42//设置为8位PWM输出

PCA0CPH1=200

PCA0CN=0x40//允许PCA工作

}

void t01_init(void)

{

TCON=0x50//计数器1、2允许

TMOD=0x55//定时器1、2采用16位计数功能

CKCON=0x00

TH1=0x00//用于采集左轮的速度

TL1=0x00

TH0=0x00//用于采集右轮的速度

TL0=0x00

}

void TIME3_INT(void)

{

TMR3CN = 0x00//定时器3为16位自动重载

CKCON &= ~0x40

TMR3RLL = 0xff

TMR3RLH = 0xd7

TMR3L = 0xff

TMR3H = 0xd7

TMR3CN |= 0x04

}

void T3_ISR() interrupt 14 //定时器3中断服务程序

{

//led=~led

EA=0

TCON &=~0x50//关闭计数器0、1

vl1=TL0//取左轮速度值

vl2=TH0

vr1=TL1//取右轮速度值

vr2=TH1

TH1=0x00

TL1=0x00

TH0=0x00

TL0=0x00

PID()//PID处理

TMR3CN &=~0x80//清中断标志位

TCON |=0x50//重新开计数器0、1

EA=1

}

void interrupt_init(void)

{ IE=0x80

IP=0x00

EIE1|=0x80

EIP1|=0x80

}

void delay(unsigned int m) //延时程序

{

for(i=0i<2000i++)

{

for(j=0j<mj++){_nop_()_nop_()}

}

}

1.确定你要用的论坛程序。 推荐DVBBS,或者discuz,这两种主流BBS程序。 2.申请空间或者架设服务器(有自己的电脑) 基于DVBBS的空间要支持ASP,access或者MYSQL 而discuz的要有PHP与MYSQL支持 确定空间支持的语言及数据库,然后申请免费空间,或者购买虚拟空间 架设服务器可以用IIS架设,细节问题你可以去baidu 3.下载安装BBS系统 3.1在虚拟空间安装 DVBBS直接上传就可以运行 DISCUZ要根据提示安装 3.2本地安装 基于IIS,安装DVBBS,直接放在相应目录即可 本地安装DISCUZ,要架设PHP服务器,并安装MYSQL数据库,具体安装教程baidu一下 4.安装成功,进行BBS的发布 问题涉及范围比较广,回答的较笼统,祝你好运~!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11340485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存