Linux环境从命令行为VirtualBox虚拟机添加磁盘

3 篇文章 0 订阅
2 篇文章 0 订阅

本文主要描述如何在命令行下为VirtualBox虚拟机添加数据磁盘。我的环境中Vagrant和VirtualBox均运行在Oracle Linux 7.5下(无GUI桌面环境)。理论上,下面的命令也适用于EL系列Linux系统。

Windows和MacOS环境下也可以参考下面的操作方法来添加磁盘。但是,在VirtualBox的管理UI界面上添加可能更方便一些。

我的环境采用Vagrant来创建虚拟机,如下所示:

  • Vagrantfile路径:/root/vagrantdata/orcltest/
  • 虚拟机目录:/root/VirtualBox VMs/vagrant_orcltest/

我的Vagrantfile内容如下:

[root@oratest ~]# cd ~/vagrantdata/orcltest/
[root@oratest orcltest]# cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.hostname = "orcltest"
  config.vm.box = "centos7/1812_01"
  config.vm.box_check_update = false
  config.vm.network "private_network", ip: "10.128.0.41"
  config.vm.network :forwarded_port, guest: 22, host: 10041, auto_correct: true
  config.vm.provider "virtualbox" do |vb|
    vb.name = "vagrant_orcltest"
    vb.gui = false
    vb.memory = "12800"
    vb.cpus = 4
  end
  config.vm.provision "shell", inline: <<-SHELL
    yum install -y openssh-server net-tools wget dstat &> /dev/null
    echo 'LoginGraceTime 0' >> /etc/ssh/sshd_config
    echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
    echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
    sed -i "/^PasswordAuthentication no/d" /etc/ssh/sshd_config
    echo r00tr00t |passwd --stdin root
    systemctl enable sshd
    systemctl restart sshd
    echo "export TZ='Asia/Shanghai'" >> /etc/profile
    echo "export LANG=en_US.UTF-8" >> /etc/profile
    echo "alias df='df -hTP'" >> /etc/profile
    echo "alias df='df -hP'" >> /etc/profile
    echo "alias free='free -h'" >> /etc/profile
    sed -i "/orcltest/d" /etc/hosts
    sed -i "/SELINUX=/s/enforcing/disabled/g" /etc/selinux/config
    echo >> /etc/hosts
    echo "10.128.0.41    orcltest" >> /etc/hosts
  SHELL
end

下面,我们为该虚拟机添加2块40GB的数据磁盘;

首先关闭虚拟机:

[root@oratest ~]# cd ~/vagrantdata/orcltest
[root@oratest orcltest]# vagrant halt
==> default: Attempting graceful shutdown of VM...

本例中我的虚拟机在VirtualBox清单中的名称并非orcltest,使用类似如下的命令来获取:

[root@oratest orcltest]# VBoxManage list vms |grep orcl
"vagrant_orcltest" {e2aa4bdf-065f-455a-b2e0-c9f968eee1b7}

进入Virtualbox虚拟机的存储目录下:

[root@oratest orcltest]# cd ~/VirtualBox\ VMs/vagrant_orcltest/
[root@oratest vagrant_orcltest]# ls -lh
total 953M
-rw------- 1 root root 958M May 31 16:15 centos-7-1-1.x86_64.vmdk
drwx------ 2 root root   22 May 31 16:14 Logs
-rw------- 1 root root 2.2K May 31 16:15 vagrant_orcltest.vbox
-rw------- 1 root root 2.2K May 31 16:14 vagrant_orcltest.vbox-prev

创建两个虚拟磁盘,格式为VDI,大小均为40GB:

[root@oratest vagrant_orcltest]# VBoxManage createhd --filename centos-7-1-1.x86_64_disk01.vdi --size 40960
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: c37fb599-286c-41ea-86e2-23a1cf5941b6

[root@oratest vagrant_orcltest]# VBoxManage createhd --filename centos-7-1-1.x86_64_disk02.vdi --size 40960
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 6cb174e3-9fad-47a7-a0f7-437c01d4e5fc

[root@oratest vagrant_orcltest]# ls -lh centos-7-1-1.x86_64*
-rw------- 1 root root 2.0M May 31 16:32 centos-7-1-1.x86_64_disk01.vdi
-rw------- 1 root root 2.0M May 31 16:32 centos-7-1-1.x86_64_disk02.vdi
-rw------- 1 root root 958M May 31 16:32 centos-7-1-1.x86_64.vmdk

查看当前虚拟机定义文件,确定StorageController名称、驱动及端口数量:

[root@oratest vagrant_orcltest]# cat vagrant_orcltest.vbox |grep IDE
      <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">

因为我的虚拟机当前已存在一个IDE驱动总线,且端口数量为2,最多可支持4块盘(port=[0-1], device=[0-1])。

我们建议为数据磁盘新添加一个磁盘驱动总线来挂载。本例中我们添加一个SAS磁盘驱动总线:

[root@oratest vagrant_orcltest]# VBoxManage storagectl vagrant_orcltest --name "SAS" --add sas --controller LSILogicSAS

[root@oratest vagrant_orcltest]# cat vagrant_orcltest.vbox |grep 'StorageController name'
  <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
  <StorageController name="SAS" type="LsiLogicSas" PortCount="8" useHostIOCache="false" Bootable="true"/>

或者,你也可以添加一个SATA总线来挂载磁盘,如下所示:

[root@oratest vagrant_orcltest]# VBoxManage storagectl vagrant_orcltest --name "SATA" --add sata --controller IntelAHCI
[root@oratest vagrant_orcltest]# cat vagrant_orcltest.vbox |grep 'StorageController name'
      <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
      <StorageController name="SAS" type="LsiLogicSas" PortCount="8" useHostIOCache="false" Bootable="true"/>
      <StorageController name="SATA" type="AHCI" PortCount="30" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3"/>

执行如下操作,将新加的数据磁盘连接到SAS总线上:

[root@oratest vagrant_orcltest]# VBoxManage storageattach vagrant_orcltest --storagectl "SAS" --port 0 --device 0 --type hdd --medium centos-7-1-1.x86_64_disk01.vdi

[root@oratest vagrant_orcltest]# VBoxManage storageattach vagrant_orcltest --storagectl "SAS" --port 1 --device 0 --type hdd --medium centos-7-1-1.x86_64_disk02.vdi

[root@oratest vagrant_orcltest]# cat vagrant_orcltest.vbox |grep HardDisk
      <HardDisks>
        <HardDisk uuid="{90b9b7d1-f2aa-4ad2-84bb-a04aa88048b5}" location="centos-7-1-1.x86_64.vmdk" format="VMDK" type="Normal">
          <HardDisk uuid="{18a21c71-6e77-4fd3-a752-ca233fe84bdc}" location="Snapshots/{18a21c71-6e77-4fd3-a752-ca233fe84bdc}.vmdk" format="VMDK"/>
        </HardDisk>
        <HardDisk uuid="{ea5194dd-03e3-4d3e-b0e8-2376946dc12b}" location="centos-7-1-1.x86_64_disk01.vdi" format="VDI" type="Normal"/>
        <HardDisk uuid="{4b0308e0-46bb-471e-b615-4c6b2cb04da7}" location="centos-7-1-1.x86_64_disk02.vdi" format="VDI" type="Normal"/>
      </HardDisks>
          <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="1" device="0">

或者,执行如下操作,将新加的数据磁盘连接到SATA总线上:

[root@oratest vagrant_orcltest]# VBoxManage storageattach vagrant_orcltest --storagectl "SATA" --port 0 --device 0 --type hdd --medium centos-7-1-1.x86_64_disk01.vdi

[root@oratest vagrant_orcltest]# VBoxManage storageattach vagrant_orcltest --storagectl "SATA" --port 1 --device 0 --type hdd --medium centos-7-1-1.x86_64_disk02.vdi
	
[root@oratest vagrant_orcltest]# cat vagrant_orcltest.vbox |grep HardDisk
      <HardDisks>
        <HardDisk uuid="{90b9b7d1-f2aa-4ad2-84bb-a04aa88048b5}" location="centos-7-1-1.x86_64.vmdk" format="VMDK" type="Normal">
          <HardDisk uuid="{4c89bac1-c14c-484d-896d-07e0ae86582c}" location="Snapshots/{4c89bac1-c14c-484d-896d-07e0ae86582c}.vmdk" format="VMDK"/>
        </HardDisk>
        <HardDisk uuid="{ea5194dd-03e3-4d3e-b0e8-2376946dc12b}" location="centos-7-1-1.x86_64_disk01.vdi" format="VDI" type="Normal"/>
        <HardDisk uuid="{4b0308e0-46bb-471e-b615-4c6b2cb04da7}" location="centos-7-1-1.x86_64_disk02.vdi" format="VDI" type="Normal"/>
      </HardDisks>
          <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
        <AttachedDevice type="HardDisk" hotpluggable="false" port="1" device="0">

NOTE: 上面提供了两种方式来挂载磁盘,根据需要选择即可。当然,两种方式也可以同时使用。

接下来,启动虚拟机:

[root@oratest vagrant_orcltest]# cd -
/root/vagrantdata/orcltest
[root@oratest orcltest]# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Fixed port collision for 22 => 2222. Now on port 2202.
==> default: Vagrant has detected a configuration issue which exposes a
==> default: vulnerability with the installed version of VirtualBox. The
==> default: current guest is configured to use an E1000 NIC type for a
==> default: network adapter which is vulnerable in this version of VirtualBox.
==> default: Ensure the guest is trusted to use this configuration or update
......
......

然后,验证磁盘情况:

[root@oratest orcltest]# ssh root@10.128.0.41
The authenticity of host '10.128.0.41 (10.128.0.41)' can't be established.
ECDSA key fingerprint is SHA256:oQuLSMELnQ8tDaIku3Z8zR4DdClY+0irOemyvje/DtQ.
ECDSA key fingerprint is MD5:71:e3:cc:38:e3:32:e1:2f:8b:9c:ef:71:55:bc:e6:14.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.128.0.41' (ECDSA) to the list of known hosts.
root@10.128.0.41's password:

[root@orcltest ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 May 31 16:53 /dev/sda
brw-rw---- 1 root disk 8,  1 May 31 16:53 /dev/sda1
brw-rw---- 1 root disk 8, 16 May 31 16:53 /dev/sdb
brw-rw---- 1 root disk 8, 32 May 31 16:53 /dev/sdc

[root@orcltest ~]# fdisk -l /dev/sd[b-c]
Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

使用磁盘:

[root@orcltest ~]# which pvcreate || yum install lvm2 -y
/usr/sbin/pvcreate

[root@orcltest ~]# pvcreate /dev/sd[b-c]
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
  
[root@orcltest ~]# vgcreate vg_data /dev/sd[b-c]
  Volume group "vg_data" successfully created
  
[root@orcltest ~]# vgs
  VG      #PV #LV #SN Attr   VSize  VFree
  vg_data   2   0   0 wz--n- 79.99g 79.99g
  
[root@orcltest ~]# lvcreate -L 20G -n data vg_data
  Logical volume "data" created.

[root@orcltest ~]# lvs
  LV   VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data vg_data -wi-ao---- 20.00g
  
[root@orcltest ~]# mkfs.xfs /dev/mapper/vg_data-data
meta-data=/dev/mapper/vg_data-data isize=512    agcount=4, agsize=1310720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@orcltest ~]# mkdir /data/
[root@orcltest ~]# mount -t xfs /dev/mapper/vg_data-data /data

[root@orcltest ~]# df -hTP /data
Filesystem               Type  Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-data xfs    20G   33M   20G   1% /data

NOTE: VBoxManage命令的用法可以参考这里:VBoxManage命令用法详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值