为vmware server 2.x 添加物理磁盘

来源:互联网 发布:连接sqlserver数据库 编辑:程序博客网 时间:2024/06/07 18:45

[时隔很久,才来更新本文,因为遇到了新的情况,并且发现的以前的一些错误,特别改正过来](原文链接 http://ddbiz.com/?p=120)

vmware server 2.x 中,不能添加物理磁盘,WebUI界面上没有这么个选项,不过不用担心,只是界面上不行,我们可以通过手动操作来达到我们的目标。

 

注:虚拟机的名字为 abc

 

编辑虚拟机的配置文件 abc.vmx, 这个文件通常是放在你的虚拟机存放目录中的,如 /var/lib/vmwareos/abc/....vmx

 

 

#!/usr/bin/vmware

.encoding = "UTF-8"

config.version = "8"

virtualHW.version = "4"

scsi0.present = "TRUE"

scsi0.virtualDev = "lsilogic"

 

memsize = "256"

scsi0:0.present = "TRUE"

scsi0:0.fileName = "abc.vmdk"

ide1:0.present = "FALSE"

ide1:0.fileName = "auto detect"

ide1:0.deviceType = "cdrom-raw"

floppy0.fileName = "/dev/fd0"

Ethernet0.present = "TRUE"

Ethernet0.virtualDev = "e1000"

displayName = "abc"

guestOS = "other26xlinux-64"

priority.grabbed = "normal"

priority.ungrabbed = "normal"

autostart="poweron"

autostart.delay=10

 

ide1:0.clientDevice = "TRUE"

floppy0.present = "FALSE"

workingDir = "."

gui.powerOnAtStartup = "TRUE"

toolScripts.afterPowerOn = "TRUE"

 

scsi0:0.redo = ""

scsi0:1.redo = ""

ethernet0.addressType = "generated"

uuid.location = "56 4d bf 48 4a 89 99 f3-9a ea 08 9b ef 7c 2c 83"

uuid.bios = "56 4d 24 4c a4 97 19 f8-3e 36 c6 18 de 94 60 78"

ethernet0.generatedAddress = "00:0c:29:94:60:78"

ethernet0.generatedAddressOffset = "0"

 

scsi0:1.present = "TRUE"

scsi0:1.fileName = "abc-disk1.vmdk"

scsi0:1.deviceType = "rawDisk"

 

... ...

 

 

如上配置中 scsi0:1 是从vmware server 1.x 升级到vmware server 2.x 时自动加载的配置,我们要做的只是需要模拟这个配置即可。

 

加入下面的配置:

 

 

 

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1:0.present = "TRUE"

scsi1:0.fileName = "abc-disk2.vmdk"

scsi1:0.deviceType = "rawDisk"

其中,scsi1.virtualDev = "lsilogic" ,在x64虚拟系统中需要明确说明,因为vmware默认的虚拟设备是 buslogic, 而它是不支持64位的。
然后编辑 abc-disk2-market.vmdk:
# Disk DescriptorFile
version=1
CID=27b8d00d
parentCID=ffffffff
createType="fullDevice"
# Extent description
RW 625135616 FLAT "/dev/sdc" 0
# The Disk Data Base
#DDB
ddb.encoding = "UTF-8"
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "38913"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.geometry.biosCylinders = "38913"
ddb.geometry.biosHeads = "255"
ddb.geometry.biosSectors = "63"
ddb.adapterType = "lsilogic"
ddb.toolsVersion = "6535"
#end.
/dev/hdc 是挂载在host上的,并且完成了分区,分区为1个,格式ext3.
这里有些参数需要根据实际情况进行配置(以下命令在host上操作):
1. # Disk DescriptorFile 下的几个选项
CID, 根据格式,自己编一个
createType, 用 "fullDevice", 因为我们使用的是整块磁盘。
如果使用的是一个此盘上的分区的话,可以使用"partitionedDevice",不过此参数需要另外一个文件辅助配置,而那个文件是我们不能手工编辑的。所以弃之不用。
2. # Extent description 下的 RW
#fdisk -l /dev/sdc
Disk /dev/sdc: 320.0 GB, 320071851520 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       38914   312567808   83  Linux
RW 后面这个值就是 320071851520 / 512 ,为 625135616
或者用 hdparm
######################
     下面 这个判定方法是错误的,之所以以前也能运行,是因为硬盘比较小(320G),这样对 hdparm /dev/sdc 和 hdparm /dev/sdc1 的输出是基本相同的,而对于 1T的硬盘来说,那就大不相同了。
######################################################################################
#hdparm /dev/sdc1 (#此处要用 /dev/sdc1,而不是 /dev/sdc)
/dev/sdc1:
 IO_support   =  0 (default 16-bit)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 38913/255/63, sectors = 625135616, start = 2048
#######################
      用这个方法才对(应该使用 /dev/sdc,而不是用分区):
      # hdparm /dev/sdc
/dev/sdc:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 121601/255/63, sectors = 1953525168, start = 0
      这里有几个参数,就是 geometry 的输出,正是 .vmdk 中的参数
# Extent description
RW 1953525168 FLAT "/dev/sdc" 0

121601 是cylinders 和 bioscylinders

#######################
3. #The Disk Data Base 下的此盘参数:cylinders, header,sectors
  这几个参数都可以用上面的 hdparm 查询到

 

就是这么简单,重新启动虚拟机,看看新磁盘已经正确加载了

 

 

fdisk -l

 

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          16      128488+  83  Linux

/dev/sda2              17        2553    20378452+  83  Linux

/dev/sda3            2554        2610      457852+  82  Linux swap / Solaris

 

Disk /dev/sdb: 160.0 GB, 160040803840 bytes

255 heads, 63 sectors/track, 19457 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1   *           1       19457   156288321   83  Linux

 

Disk /dev/sdc: 320.0 GB, 320069435392 bytes

255 heads, 63 sectors/track, 38912 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes


   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1       38914   312567808   83  Linux

 

 

/dev/dca 是vmware虚拟机中的虚拟此盘;

/dev/sdb 是vmware server 2.x 升级时自动携带过来的,:-),并且它的createType = "partitionedDevice";

/dev/sdc 就是我们手动添加的设备,"/dev/sdc"刚巧是和host中设备顺序一致而已。

(原文链接 http://ddbiz.com/?p=120)

好了,至此完美解决。

原创粉丝点击