Add disk to VirtualBox Guest VM

September 21, 2019
VirtualBox LVM

対象 VM の確認。Confirm target VM information

(VM が所属しているユーザ次第で情報が異なるので注意)

$ VBoxManage list vms
"vmname" {368f9ecf-e555-4bea-bac7-08c8fa288748}
$ VBoxManage showvminfo vmname
Name:            vmname
Groups:          /
Guest OS:        Ubuntu (64-bit)
UUID:            368f9ecf-e555-4bea-bac7-08c8fa288748
Config file:     /export/home/aaa/VirtualBox VMs/vmname/vmname.vbox
Snapshot folder: /export/home/aaa/VirtualBox VMs/vmname/Snapshots
Log folder:      /export/home/aaa/VirtualBox VMs/vmname/Logs
Hardware UUID:   368f9ecf-e555-4bea-bac7-08c8fa288748
...

ディスクイメージの作成。Create a disk image

$ VBoxManage createmedium disk --filename VirtualBox\ VMs/vmname/splunk_data.vdi --size 1024000 --format VDI --variant Fixed
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: 8348d1a3-9b5e-47d8-aaae-31afbefdcb73
$ ls -l VirtualBox\ VMs/vmname/splunk_data.vdi 
-rw-------   1 aaa      staff    536874057728  9月 20日  17:24 VirtualBox VMs/vmname/splunk_data.vdi

$ VBoxManage list hdds
(snip)

UUID:           58ddec39-f3ca-4ef2-adf3-204ce3408c21
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /export/home/aaa/VirtualBox VMs/vmname/splunk_data.vdi
Storage format: VDI
Capacity:       1024000 MBytes
Encryption:     disabled

VM を止めてディスクをアタッチ。 VM 再起動 (今回はヘッドレスモード)。

$ VBoxManage controlvm vmname poweroff
$ VBoxManage storageattach vmname --storagectl SATA --port 1 --type hdd --medium 58ddec39-f3ca-4ef2-adf3-204ce3408c21
$ VBoxManage startvm vmname --headless

ゲスト VM でのマウント。Mount a disk on the VM

ゲスト VM 側にログインして、マウントを確認。

$ dmesg  | grep sdb
[    2.457817] sd 3:0:0:0: [sdb] 2097152000 512-byte logical blocks: (1.07 TB/1000 GiB)
[    2.458478] sd 3:0:0:0: [sdb] Write Protect is off
[    2.458886] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    2.459478] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.461131] sd 3:0:0:0: [sdb] Attached SCSI disk

LVM 用にフォーマット。Format a disk for LVM

$ sudo fdisk /dev/sdb

n (new) -> 1 (partition) -> p (primary) -> (default size)

t (type) -> 1 (partition) -> 8e (Linux LVM)

p (print)
Disk /dev/sdb: 1000 GiB, 1073741824000 bytes, 2097152000 sectors
Geometry: 255 heads, 63 sectors/track, 130541 cylinders
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x95139aee

デバイス   起動 Start 最後から  セクタ  Size Id タイプ
/dev/sdb1          63 2097151999 2097151937 1000G 8e Linux LVM

w (write)

物理ボリュームの作成。Create a physical volume

$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
$ sudo pvscan
  PV /dev/sda5   VG vmname-vg         lvm2 [49.52 GiB / 0    free]
  PV /dev/sdb1                      lvm2 [1000.00 GiB]
  Total: 2 [1.02 TiB] / in use: 1 [49.52 GiB] / in no VG: 1 [1000.00 GiB]

ボリュームグループの作成。Create a volume group

$ sudo vgcreate splunkdata /dev/sdb1
  Volume group "splunkdata" successfully created
$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "splunkdata" using metadata type lvm2
  Found volume group "vmname-vg" using metadata type lvm2

論理ボリュームの作成。Create a logical volume

$ sudo lvcreate -L 500G -n splunkvolume01 splunkdata
  Logical volume "splunkvolume01" created.
$ sudo lvdisplay /dev/splunkdata/splunkvolume01 
  --- Logical volume ---
  LV Path                /dev/splunkdata/splunkvolume01
  LV Name                splunkvolume01
  VG Name                splunkdata
  LV UUID                6HHLEe-nfRN-srzH-f8aD-ec0R-VMXM-XuEy2e
  LV Write Access        read/write
  LV Creation host, time vmname, 2019-09-20 17:51:36 +0900
  LV Status              available
  # open                 0
  LV Size                500.00 GiB
  Current LE             128000
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

論理ボリュームのフォーマット。Format a logical volume

$ sudo mkfs.xfs /dev/splunkdata/splunkvolume01 
meta-data=/dev/splunkdata/splunkvolume01 isize=512    agcount=4, agsize=32768000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=131072000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=64000, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

論理ボリュームのマウント。Mount a logical volume

$ sudo mkdir /opt/splunkdata
$ sudo mount -t xfs /dev/splunkdata/splunkvolume01 /opt/splunkdata/
$ df /opt/splunkdata/
Filesystem                            1K-blocks   Used Available Use% Mounted on
/dev/mapper/splunkdata-splunkvolume01 524032000 555200 523476800   1% /opt/splunkdata

永続化させるなら /etc/fstab へマウント情報を書き込み。

UUID を調べるには blkid で。

$ sudo blkid /dev/splunkdata/splunkvolume01 
/dev/splunkdata/splunkvolume01: UUID="a8bba265-72b2-468c-b54d-9fb0ec92e02b" TYPE="xfs"