Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kusnier/vagrant-persistent-storage
A Vagrant plugin that creates a persistent storage and attaches it to guest machine.
https://github.com/kusnier/vagrant-persistent-storage
disk persistent persistent-storage storage vagrant virtualbox
Last synced: 30 days ago
JSON representation
A Vagrant plugin that creates a persistent storage and attaches it to guest machine.
- Host: GitHub
- URL: https://github.com/kusnier/vagrant-persistent-storage
- Owner: kusnier
- License: mit
- Created: 2012-11-03T10:31:31.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2023-12-16T12:04:38.000Z (11 months ago)
- Last Synced: 2024-09-30T23:43:10.845Z (about 1 month ago)
- Topics: disk, persistent, persistent-storage, storage, vagrant, virtualbox
- Language: Ruby
- Homepage:
- Size: 143 KB
- Stars: 292
- Watchers: 8
- Forks: 68
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Vagrant::Persistent-Storage
A Vagrant plugin that creates a persistent storage and attaches it to guest machine.
Requires Virtualbox 5/6
## Installation
$ vagrant plugin install vagrant-persistent-storage
## Usage
After installing you can set the location and size of the persistent storage.
The following options will create a persistent storage with 5000 MB, named mysql,
mounted on /var/lib/mysql, in a volume group called 'myvolgroup'
```ruby
config.persistent_storage.enabled = true
config.persistent_storage.location = "~/development/sourcehdd.vdi"
config.persistent_storage.size = 5000
config.persistent_storage.mountname = 'mysql'
config.persistent_storage.filesystem = 'ext4'
config.persistent_storage.mountpoint = '/var/lib/mysql'
config.persistent_storage.volgroupname = 'myvolgroup'
```With `config.persistent_storage.mountoptions` you can change the mount options (default: defaults).
An example which sets `prjquota` option with xfs.
```ruby
config.persistent_storage.mountname = 'xfs'
config.persistent_storage.filesystem = 'xfs'
config.persistent_storage.mountpoint = '/mnt/xfs'
config.persistent_storage.mountoptions = ['defaults', 'prjquota']
```Device defaults to `/dev/sdb`. For boxes with multiple disks, make sure you increment the drive:
```ruby
config.persistent_storage.diskdevice = '/dev/sdc'
```If you are using LVM and you would prefer to use the disk rather than a partition, you can set the following configuration:
```ruby
config.persistent_storage.partition = false
```When you expect a lot of writes in the disk (the case for `/home` mountpoints) it is recommended to change the disk variant to `Fixed` (fixed allocation) instead of the default `Standard` (dyanamic allocation). The tested types are `Standard` (default) and `Fixed`.
```ruby
config.persistent_storage.variant = 'Fixed'
```If you want to pass a list of options to the underlying `VboxManage
storageattach` call, you can use the `config.persistent_storage.attachoptions`
option. For instance, if you want to enable TRIM support:```ruby
config.persistent_storage.mountoptions = ['defaults', 'discard']
config.persistent_storage.attachoptions = ['--discard', 'on']
```Every `vagrant up` will attach this file as hard disk to the guest machine.
A `vagrant destroy` will detach the storage to avoid deletion of the storage by vagrant.
A `vagrant destroy` generally destroys all attached drives. See [VBoxManage unregistervm --delete option][vboxmanage_delete].The disk is initialized and added to it's own volume group as specfied in the config;
this defaults to 'vagrant'. An ext4 filesystem is created and the disk mounted appropriately,
with entries added to fstab ... subsequent runs will mount this disk with the options specified.## Windows Guests
Windows Guests must use the WinRM communicator by setting `vm.communicator = 'winrm'`. An additional option is provided to
allow you to set the drive letter using:```ruby
config.persistent_storage.drive_letter = 'Z'
```Options that are irrelevent to Windows are ignored, such as `mountname`, `filesystem`, `mountpoint` and `volgroupname`.
## How Is The Storage Created?
Based on the configuration provided, during a `vagrant up` a bash script is generated and uploaded to `$tmpdir/disk_operations_#{mnt_name}.sh` (Linux) or `disk_operations_#{mnt_name}.ps1` (Windows). If the box has not been previously provisioned the script is executed on a `vagrant up`. To force the script to be executed again you can run `vagrant provision` or if you have halted the box, `vagrant up --provision`.
The outcome of the script being run is placed in the home drive of the vagrant user in a file called `disk_operation_log.txt`.
## Optional settings
```ruby
config.persistent_storage.part_type_code = '82'
```## Troubleshooting
If your box is not using LVM you must set `config.persistent_storage.use_lvm = false`.
## Supported Providers
* Only the VirtualBox provider is supported.
## Contributors
* [madAndroid](https://github.com/madAndroid)
* [Jeremiah Snapp](https://github.com/jeremiahsnapp)
* [Hiroya Ito](https://github.com/hiboma)
* [joshuata](https://github.com/joshuata)
* [Ciprian Zaharie](https://github.com/bucatzel)
* [aishahalim](https://github.com/aishahalim)
* [Dick Tang](https://github.com/dictcp)
* [dsmaher](https://github.com/dsmaher)
* [Marsup](https://github.com/Marsup)
* [k2s](https://github.com/k2s)
* [vvavrychuk](https://github.com/vvavrychuk)
* [Lars Hupfeldt Nielsen](https://github.com/lhupfeldt)
* [Chen Yu Pao](https://github.com/windperson)
* [Kris Reese](https://github.com/ktreese)
* [Henry N.](https://github.com/HenryNe)
* [fredleger](https://github.com/fredleger)
* [Sebastian Wendel](https://github.com/sourceindex)
* [Ben Phegan](https://github.com/BenPhegan)
* [Philipp Schrader](https://github.com/philsc)
* [Alex Tomkins](https://github.com/tomkins)
* [Marcin Wolny](https://github.com/mwolny)
* [Adam Huffman](https://github.com/verdurin)
* [caio2k](https://github.com/caio2k)
* [Francesco](https://github.com/cisco87)
* [Dimitris Aragiorgis](https://github.com/dimara)
* [Symaxion](https://github.com/Symaxion)
* [Alex Pyrgiotis](https://github.com/apyrgio)## TODO
* There's Always Something to Do
* Add more options (controller, port, etc.)[vboxmanage_delete]: http://www.virtualbox.org/manual/ch08.html#vboxmanage-registervm "VBoxManage registervm / unregistervm"