Application "Freebox"

  • Status Nouveau
  • Percent Complete
    0%
  • Task Type Évolution
  • Category Univers Server
  • Assigned To No-one
  • Operating System Tous
  • Severity Medium
  • Priority Very Low
  • Reported Version 4.0.6
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Application "Freebox"
Opened by lcellier - 04/08/2022
Last edited by Thibaut Freebox - 08/08/2022

FS#36905 - Autoriser le mode passthrough pour les ports ꜱᴀᴛᴀ et pas seulement pour les ports ᴜꜱʙ

Une Freebox est l’idéal pour héberger nœud Ethereum ou Bitcoin qui doit de préférence rester tout le temps allumé pour rester à jour. Seulement ces bases de données sont constaement réécrites entièrement même sans ajout de blocks.
L’ᴜꜱʙ utillse le protocole ᴜꜱʙ‑ʜᴅᴅ qui ne supporte pas l’option ᴛʀɪᴍ. un ꜱꜱᴅ considère alors l’espace comme entièrement occupé ce qui fait que son nombre d’ɪᴏᴘꜱ s’effondre et dans le cas d’Ethereum la performance n’est plus suffisante pour que Nethermind reste synchronisé avec le dernier block.

Une option est de passer un ꜱꜱᴅ ꜱᴀᴛᴀ directement à la machine virtuelle afin qu’elle utilse un disque physique démonter comme si elle était en ᴜꜱʙ. Cela peut ce faire en passant le port, ou encore plus simplement que pour l’ᴜꜱʙ en passant le block device comme /dev/sdc.
Bien sûr, la version de Qemu installé sur les Freebox Deltas, le supporte déjà.

Bonjour

Ça ne dois pas être trop compliqué côté FREE et pour moi ça a été pensé pour pouvoir le faire, car quand je regarde les resources attribuées globalement aux VM en faisant un call sur l’API des VM et en affichant le json en mode pretty-json, j’obtiens :

(call sur https://mafreebox.freebox.fr/api/v9/vm/info)

09:36:10 nba@14RV-SERVER-177 :~/fbxapi$ . loginfbx && vm_resource | jq
{
  "success": true,
  "result": {
    "usb_used": false,
    "sata_used": false,
    "sata_ports": [
      "sata-internal-p0",
      "sata-internal-p1",
      "sata-internal-p2",
      "sata-internal-p3"
    ],
    "used_memory": 8192,
    "usb_ports": [
      "usb-external-type-a",
      "usb-external-type-c"
    ],
    "used_cpus": 3,
    "total_memory": 15360,
    "total_cpus": 3
  }
}

Aujourd’hui pour ajouter un port USB à une VM depuis l’API, il faut utiliser un call qui initialise un tableau json contenant la liste des ports USB comme le fait mon programme lors de la création d’une VM:
(fbxvm-ctrl: simple bash program for managing Freebox VM & more … availiable here https://github.com/nbanb/fbxvm-ctrl.git)

fbxvm-ctrl add vm disk_type="qcow2" disk_path="/freeboxdisk/vmdiskpath/myvmdisk.qcow2" vcpus="1" memory="2048" cd_path="/freeboxdisk/vmisopath/debian-11.6.0-arm64-netinst.iso" os="debian" enable_screen="true" cloudinit_hostname="14RV-FSRV-49" cloudinit_userdata="cloudinit-userdata-14rv-fsrv-49.yml" bind_usb_ports='"usb-external-type-c","usb-external-type-a"' name="14RV-FSRV-49.dmz.lan"

Ou lors de la modification d’une VM (ici la vm à pour id 31)

fbxvm-ctrl 31 modify disk_type="qcow2" disk_path="/freeboxdisk/vmdiskpath/myvmdisk.qcow2" vcpus="1" memory="2048" cd_path="/freeboxdisk/vmisopath/debian-11.6.0-arm64-netinst.iso" os="debian" enable_screen="true" cloudinit_hostname="14RV-FSRV-49" cloudinit_userdata="cloudinit-userdata.yml" bind_usb_ports='"usb-external-type-c","usb-external-type-a"' name="14RV-FSRV-49.dmz.lan"

Pour l’USB, on trouve bien l’instruction dans le json_vm_object :

{... "bind_usb_ports":["usb-external-type-c","usb-external-type-a"],...}

à la lecture du premier json remonté par le call API sur https://mafreebox.freebox.fr/api/v9/vm/info , j’ai bien essayé de bind des ports SATA dans une VM avec des call postant un json contenant :

{... "bind_sata_ports":["sata-internal-p0","sata-internal-p1",...],...}

Malheureusement, c’est resté aujourd’hui sans succès, il faut qu’en interne, Free autorise le binding sur qemu-kvm.

Cependant, le fait que l’objet (retourné par l’API) contenant le hardware des VM contienne la définition des 4 ports SATA internes de la box en plus de la définition des 2 ports USB externes est plutôt prometteur, ça semble avoir été pensé pour pouvoir bind les ports SATA dans les VM

@free: Pourriez vous SVM déverouiller la fonctionnalité ?
Merci

Cordialement
nbanba

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing