# AWS DataSync Agent on Proxmox

*January 11, 2023* — https://jade.wtf/tech-notes/pve-aws-datasync/

Tags: aws, proxmox, pve

---


Goal: get AWS DataSync Agent running under Proxmox on hardware[^1] with limited system resources.
	
Start by following [the DataSync documentation](https://docs.aws.amazon.com/datasync/latest/userguide/deploy-agents.html#create-kvm-agent), but stop after downloading the KVM image.
Extract the `qcow2` file from the ZIP archive and copy it to your Proxmox host. 

When I did this the image was named `aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2`. Time to create a VM: 
```
qm create 101 --memory 4096 --sockets 1 --cores 4 --name aws-datasync --kvm yes --net0 "virtio,bridge=vmbr0"
```
Notice that we didn't give the VM any storage. That's because we need to import the DataSync Agent image seperately:

```
qm importdisk 101 aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2 local-zfs
```

Note that `local-zfs` is the name of the PVE volume I use for VMs. Yours may be named something else.

Now we make configure the VM to properly use the disk:
```
# qm rescan
# qm set 101 --virtio0 local-zfs:vm-101-disk-0
# qm set 101 --boot c --bootdisk virtio0
```

Now you can start up the VM, connect to console, and resume following the [DataSync documention](https://docs.aws.amazon.com/datasync/latest/userguide/deploy-agents.html#create-kvm-agent), just skip past the part where it talks about `virt-install`.

Great success:
![screenshot of AWS DataSync console showing completed sync job!](/tech-notes/pve-aws-datasync/done.png)

Here's what it looks like on console when you create the VM and attach the disk:
```
root@brick:~# qm create 101 --memory 4096 --sockets 1 --cores 4 --name aws-datasync --kvm yes --net0 "virtio,bridge=vmbr0"
root@brick:~# ls
aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2
root@brick:~# file aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2
aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2: QEMU QCOW2 Image (v3), 85899345920 bytes
root@brick:~# qm importdisk 101 aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2 local-zfs
importing disk 'aws-datasync-2.0.1671049950.1-x86_64.xfs.gpt.qcow2' to VM 101 ...
transferred 0.0 B of 80.0 GiB (0.00%)
[...]
Successfully imported disk as 'unused0:local-zfs:vm-101-disk-0'
root@brick:~# qm rescan
rescan volumes...
root@brick:~# qm set 101 --virtio0 local-zfs:vm-101-disk-0
update VM 101: -virtio0 local-zfs:vm-101-disk-0
root@brick:~# qm set 101 --boot c --bootdisk virtio0
update VM 101: -boot c -bootdisk virtio0
root@brick:~# qm config 101
boot: c
bootdisk: virtio0
kvm: 1
memory: 4096
meta: creation-qemu=7.1.0,ctime=1673493034
name: aws-datasync
net0: virtio=06:48:03:13:B4:50,bridge=vmbr0
smbios1: uuid=9fee5040-1501-41d1-a06c-b1c9dc1d43cf
sockets: 1
virtio0: local-zfs:vm-101-disk-0,size=80G
vmgenid: 5acd8d4a-7f23-4440-b71a-7ec6f130e8f9
```

[^1]: A [QNAP TBS-453DX](https://www.qnap.com/en-us/product/tbs-453dx) with an Intel J4115 CPU, 16GB of RAM, and 4x 2T SSD in RAIDZ.


---

&copy; 2023 Jade Angrboða.
