Commit Graph

70 Commits

Author SHA1 Message Date
Koushik Das 65eeeaf071 CS-14277
Support for local data disk. Currently enable/disable config is at zone level, in subsequent checkins it can be made more granular.
    Following changes are made:
    - Create disk offering API now takes an extra parameter to denote storage type (local or shared). This is similar to storage type in service offering.
    - Create/delete of data volume on local storage
    - Attach/detach for local data volumes. Re-attach is allowed as long as vm host and data volume storage pool host is same.
    - Migration of VM instance is not supported if it uses local root or data volumes.
    - Migrate is not supported for local volumes.
    - Zone level config to enable/disable local storage usage for service and disk offerings.
    - Local storage gets discovered when a host is added/reconnected if zone level config is enabled. When disabled existing local storages are not removed but any new local storage is not added.
    - Deploy VM command validates service and disk offerings based on local storage config.
    - Upgrade uses the global config 'use.local.storage' to set the zone level config for local storage.
(cherry picked from commit 62710aed37606168012a0ed255a876c8e7954010)
2012-09-11 17:22:43 +05:30
Wido den Hollander 406fd95d87 Add RBD support for primary storage
This patch adds RBD (RADOS Block Device) support for primary storage in combination with KVM.

To get this patch working you need:
- libvirt-java 0.4.8
- libvirt with RBD storage pool support (>0.9.13)
- Qemu with RBD support (>0.14)

The primary storage does not support all the functions of CloudStack yet, for example snapshotting is disabled
due to the fact that backupping up a RBD snapshot is not possible in the way CloudStack wants to do it.

Creating templates from RBD volumes goes well, creating a VM from a template however is still a hit-and-miss.

NFS primary storage is also still required, you are not able to run your System VM's from RBD, they will need
to run on NFS.

Other then these points you can run instances with RBD backed disks.
2012-07-26 22:22:26 +02:00
Edison Su 50ffa95f63 ifix CS-15609 Volumes can be created as a part of VM creation when
un-allocated space is insufficient on primary storage

check the availability of un-allocated primary storage space during
planning stage, for multiple-volume VM creation scenario
modification in StorageManagerImpl.java and StorageManager.java:
add a new method storagePoolHasEnoughSpace(List<Volumes>, StoragePool),
check if storagePool has enough space for all requested volumes
modification in FirstfitPlanner.findPotentialDeploymentResources:
handle multiple volume case, keep track of allocated volumes for pools
and call storagePoolHasEnoughSpace to check space availability
modification in AbstractStoragePoolAllocator.java:
extract capacity computation logic and make a new method in
StorageManagerImpl

RB: https://reviews.apache.org/r/6028/
Send-by: mice_xia@tcloudcomputing.com
2012-07-26 10:10:18 -07:00
David Nalley e87558256c Patch from Chip Childers
https://reviews.apache.org/r/5704/
License header updates for the server folder
2012-07-02 09:51:21 -04:00
Murali reddy cefbbb3850 moving random storage allocator to plugins/storage-allocators 2012-06-26 15:17:25 -07:00
Alena Prokharchyk b14bac0977 bug 14539: 1) introduced 2 new config parameters defining default offerings for ssvm and cpvm - consoleproxy.service.offering and secstorage.service.offering
2) Added new api - changeServiceForSystemVm - to support service offering upgrade for system vms
3) Removed global config parameters that are not in use anymore: consoleproxy.ram.size, consoleproxy.cpu.mhz, secstorage.vm.ram.size, secstorage.vm.cpu.mhz
2012-04-03 10:52:32 -07:00
frank 2f634c0913 Switch to Apache license 2012-04-03 04:50:05 -07:00
prachi 05af078358 Bug 8791 - user dispersing allocator
Changes:
To migrate systems using 'use.user.concentrated.pod.allocation' as true and 'vm.allocation.algorithm' as true, we need to
add following changes:

- There will be 5 values to 'vm.allocation.algorithm': 'random', 'firstfit', 'userdispersing', 'userconcentratedpod_random', 'userconcentratedpod_firstfit'
- 'userconcentratedpod_random' means we apply user concentration to pods and clusters. To hosts and pools we use random ordering.
- 'userconcentratedpod_firstfit' means we apply user concentration to pods and clusters. To hosts and pools we use firstfit ordering.
2012-02-08 17:03:38 -08:00
Nitin Mehta 2ef6ed809f Bug 11789: The calculation for storage allocated capacity would go through the the common function throught which dashboard calculates the capacity as well.
Reviewed-By: Prachi
2012-01-31 13:18:57 +05:30
Nitin Mehta f88ddbe86e Bug 13066: StorageOverProv-Start using bigdecimal for better precision. Change allocators and dashboard code for the same.
Status 12897: resolved fixed
Reviewed-By: Kishan
2012-01-30 17:27:30 +05:30
anthony 1f7a811bac SWIFT : sync swift with secondary storage 2011-12-28 11:47:55 -08:00
anthony 6e259b2cb1 SWIFT : check swift in storage allocator 2011-12-23 15:45:29 -08:00
kishan 3d40c1032b Skip userdispersing allocator when account is not available 2011-12-08 19:50:21 +05:30
prachi 313e6ca284 Bug 8791 user dispersing allocator
Changes:
- Added a two new deployment planners  'UserDispersingPlanner' and 'UserConcentratedPodPlanner' to the DeploymentPlanners
- Planner can be chosen by setting the global config variable 'vm.allocation.algorithm' to either of the following values:
('random', 'firstfit', 'userdispersing', 'userconcentratedpod')
- By default, the value is 'random'. When the value is 'random', FirstFitPlanner is invoked as before that shuffles the resource lists.
- Now Admin can choose whether the deployment heuristic should be applied starting at cluster or pod level. This can be done by using the
global config variable 'apply.allocation.algorithm.to.pods' which is false by default. Thus by default as earlier, planner starts at clusters directly.

'UserConcentratedPodPlanner' changes:
- Earlier to 3.0, FirstFitPlanner used to reorder the clusters in case this heuristic was chosen.
- Now this is done by a separate planner and is applied only when 'vm.allocation.algorithm' is set to this planner
- It reorders the capacity based clusters/pods such that those pods having more number of Running Vms for the given account are tried first.
- Note that this userconcentration is applied only to pods and clusters. Not to hosts or storagepools within a cluster.

'UserDispersingPlanner' changes:
- 'UserDispersingPlanner' reorders the capacity ordered pods and clusters based on number of 'Running' VMs for the given account in ascending order. Aim is to choose thodes pods/clusters first which have less number of Running VMs for the given account
- Admin can provide weights to capacity and user dispersion so that both parameters get considered in reordering the pods/clusters. This can be done by setting
the global config parameter 'vm.user.dispersion.weight'. Default value is 1. Thus if this planner is chosen, by default, ordering will be done only by number of Running Vms, unless the weight is changed.
- HostAlllocators and StoragePoolAllocators also reorder the hosts and pools by ascending order of number of Running VMS/ Ready Volumes respectively for the given account. Thus try to choose that host or pool within a cluster with less number of VMs for the account.
2011-11-17 18:29:39 -08:00
Alex Huang f6fcaa49ec Merge complete except for virtualnetworkappliancemanager 2011-11-10 15:18:16 -08:00
Nitin 2b370ab535 bug 10657: Introducing cluster level global thresholds for cpu and ram so that these resources do not go beyond these thresholds. The reason for this is because, if the admn needs to provide maintenance, they don't have to add new machines or have ones on standby if the entire zone/pod/cluster is at 100% allocated capacity. Also introducing pool level global thresholds for allocated storage. There are other changes like DB upgrade and introduction of transaction. 2011-10-29 16:51:37 +05:30
alena 219978a9be Create network using physical network id 2011-10-20 18:25:13 -07:00
prachi 4ad9ac5e71 Bug 11200 - maximum number of guests per host
Changes:

To make sure migration does not attempt to pick a host that has running VMs more than the max guest VM's limit:

- Changed manual migration to call host allocators to return a list of hosts suitable for migration. Host allocators check for the max guest VM limit.
- Earlier we returned hosts with enough capacity but now Host Allocators make other checks along with capacity. So the list of hosts returned are hosts that have enough capacity AND satisfy all other conditions like host tags, max guests limit etc. Or in other words Allocators dont return the hosts that dont satisfy all conditions even if they have capacity.
-Therefore, now we mark the list of hosts returned for manual migration as 'suitable' hosts instead of 'hasenoughCapacity' in the HostResponse.
- HA migration already calls allocators, so no change is needed there.
2011-09-08 18:08:31 -07:00
anthony 72098e4ebd bug 10688: if the template is not installed in the primary storage, the asking zie is doubled, fixed by using physical size for template
status 10688: resolved fixed
2011-07-11 17:32:19 -07:00
Abhinandan Prateek 79e38f0a1f bug 10305: for a systemvm only applicable system vm offering should be displayed
status 10305: resolved fixed
While creating a system vm offering specify the type. If no type specified the default to domainrouter.
While requesting a set of system offering specify the paramter systemvmtype.
2011-06-20 20:11:50 +05:30
Abhinandan Prateek db29a56eaf bug 10313: marking default system offering as default so that they should not be deleted
status 10313: resolved fixed
2011-06-19 12:16:06 +05:30
Edison Su 00268632ac bug 10177: fix multiple local secondary storage: when we starting vm, only choose the local secondary storage that related to the planned computing host
status 10177: resolved, fixed
2011-06-07 20:22:16 -04:00
Chiradeep Vittal 35066e235c merge from zonesfeature -- float overprovisioning factor 2011-05-03 10:41:31 -07:00
Chiradeep Vittal 303e2a7481 Start of zonesfeature / mycloud/cloudkit 2011-05-03 10:40:17 -07:00
alena 671ec62358 bug 9623: set ha_enable to false for consoleProxy vms and service_offering.
status 9623: resolved fixed

Also set ram_size to 1024 for console proxy offering during the upgrade

Conflicts:

	core/src/com/cloud/vm/SecondaryStorageVmVO.java
	server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
	server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
	server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java
	server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
2011-04-29 11:53:07 -07:00
nit 8567935561 bug 9221: Parse storage.overprovisioning.factor as a float rather than as an int.
Status 9221: resolved fixed
2011-04-15 13:46:51 +05:30
prachi 1a3483ac4f More changes for Bug 9438 - [Cloud Stack Upgrade - 2.1.8 to 2.2.4] Secondary Storage VM could not start after stopping it.
Added log statement to indicate that a pool is not chosen because the vm template has no entry in template_host_ref table.
2011-04-13 18:06:42 -07:00
alena bf588166ed bug 7704: network limits cleanup.
status 7704: resolved fixed

For user vm:
* for default network, take limit from the corresponding service offering
* for all additional networks, take limit from the network offerings

For domainRouter/SSVM/CPVM:
* get info from the network offering

Added new config parameter: "vm.network.throttling.rate". If nw_rate is NULL for serviceOffering, this parameter would be used for default vm's network
2011-04-01 15:48:32 -07:00
Alex Huang 9d158dc060 Removed the async create status for volume now that our customers don't use it 2011-03-24 20:04:23 -07:00
prachi 923f562aa8 Bug 6873: disable/enable mode for clusters (and pods and zones and hosts)
- Added a new flag 'allocation_state' to zone,pod,cluster and host
- The possible values for this flag are 'Enabled' or 'Disabled'
- When a new zone,pod,cluster or host is added, allocation_state is 'Disabled' by default.
- For existing zone,pod,cluster or host, the state is 'Enabled'.
- All Add/Update/List  commands for each of zone,pod,cluster or host can now take a new parameter 'allocationstate'
- If 'allocation_state' is 'Disabled', Allocators skip that zone or pod or cluster or pod.
- For a root admin, ListZones lists all zones including the 'Disabled' zones. But for any other user, the 'Disabled' zones are not included in the response.
- For any usecase that creates/deploys/adds/registers a resource and takes in zone as parameter, now we check if the Zone is 'Disabled'. If yes then the operation cannot be performed by a user other than root-admin. Add volume, snapshot, templates are examples of this usecase.
- To enable the root admin to test a particular pod/cluster/host, deployVM command takes in 'host_id' parameter that can be passed in only by root admin.
If this parameter is passed in by the admin, allocators do not search for hosts and use that host only. StoragePools are searched in the cluster of that host.
If VM cannot be deployed to that host, allocators and deployVM fails without retrying
2011-03-23 22:15:35 -07:00
Alex Huang 109c4eae0e restarting domr is close to working 2011-03-21 17:56:00 -07:00
prachi 2076eec42b Changes for Bug 8997 - Fail to create volume from snapshot: NPE at "allocateToPool(FirstFitStoragePoolAllocator.java:63)
- ClusterId passed in could be null
2011-03-15 18:40:33 -07:00
prachi b9646afd48 Adding log statement in allocator while skipping a storagepool if it crosses the storage.capacity.threshold 2011-03-09 15:34:53 -08:00
prachi 34836aaaa5 Merging 2.1.8 fix to master : Bug 8801 - reserve some space for snapshots
StoragePoolAllocators need to respect storage.capacity.threshold in allocations - this was broken after StatsCollector started maintaining the primary storage Stats separately
Fixed allocator to refer the correct in-memory stats map.
2011-03-09 13:46:25 -08:00
Edison Su ccab6c21c4 fix bug when one of template was deleted, then delpoyvm, got NPE 2011-03-09 10:20:05 -05:00
prachi 3624fee85d Changed the interface in StoragePoolAllocator to avoid a potential NPE in LocalStoragePoolAllocator. Allocators were taking in an instance of VM enclosed inside VirtualMachineProfile.
However in case of createVolume from Snapshot, there is no VM associated. So VM passed is null and this can cause a NPE.

Allocators hardly use the VM instance. LocalStoragePoolAllocator was mainly using it for checking if host has capacity. But it need not do this check, since that is done by HostAllocators anyway.
So removing the use of VM in StoragePoolAllocators.
2011-03-09 10:12:04 -08:00
prachi 6a67bb1edb More logging changes for
Bug 7845 Productize DeploymentPlanner
Bug 8317 Add better resource allocation failure messages
2011-02-28 13:47:52 -08:00
prachi 889827b63a Bug 7845 - Productize DeploymentPlanner
Bug 7723 - merge or re-write host tagging into master / 2.2
Bug 7627 - Need more logging for Allocators
Bug 8317 - Add better resource allocation failure messages

Changes for Deployment Planner to use host and storagePool allocators to find deployment destination.
Also has the changes for host tag feature.
Improved the logging for allocators.
2011-02-28 13:47:51 -08:00
Alex Huang 7dd54f079b started vms with these latest 2011-02-11 17:03:04 -08:00
abhishek 5d18c4c527 bug 8242: introducing the concept of work queue for storage; introducing storage states as opposed to using host states; using row locks as opposed to db table locks
status 8242: resolved fixed
2011-01-28 13:43:36 -08:00
Kelven Yang aedb433ca2 Bug 8010: retire capacity.skipcounting.hours and capacity.skipcounting.destroyed.hours
Status 8010: Resolved Fixed
2011-01-21 10:35:25 -08:00
alena d0687f663f bug 7863: fixed router cleanup thread
status 7863: resolved fixed

Router cleanp thread is fixed, here is functionality description:

* Runs every "router.cleanup.interval" period of time (1 day by default)
* Stops only domRs running in Advance zone
* Thread Flow:
- gets all Running domRs/dhcps, get their networks, select network that
has to be checked (see criteria below):
- checks that there is only one nic in the op_networks table for the
network, and this nic belongs to domR/dhcp
- Stops domR/dhcp
* Criteria to choose the network:
- Network has to be non-system.
- Network should be one of the following: Guest Virtual (TrafficType=Guest; GuestType=Virtual); Direct Tagged (TrafficType=Public; GuestType=Direct)

Couple of other fixes:

* Added isShared parameter to listNetworks command
* Moved guestType from NetworkOffering to Network
2011-01-07 16:57:47 -08:00
Alex Huang 4eba6d10d7 Moved State into VirtualMachine like other States of objects 2011-01-04 15:01:34 -08:00
Alex Huang 544fa7ff1b remote access vpn, user ip address changes 2010-12-29 09:32:54 -08:00
edison 1cc03c9a4a don't see why we need this code, so remove it 2010-12-20 18:07:10 -08:00
edison e39f664e89 fix storage creation bugs 2010-12-13 20:48:31 -08:00
Alex Huang daa9add158 removed router stuff from network manager 2010-12-04 17:32:31 -08:00
anthony 30fa6530f9 bug 6088: track template physical size in template_host_ref table
add migration from 21 to 22
after migration , SSVM needs to stop/start

status 6088: resolved fixed
2010-11-24 20:05:52 -08:00
abhishek d96a1a841d adding logic to prevent commands from being sent to the pool when it is NOT up; also adding better thread safety and db locking, along with a general refactor 2010-11-04 13:35:57 -07:00
Alex Huang e27bb550fe Harmony among gurus 2010-11-03 21:18:31 -07:00