Clear["Global`*"]
f[a_?NumericQ] := NIntegrate[a*x^2, {x, 0, 1}]
When FindRoot fails, it is often due to using a poor initial estimate. To get better starting values, plot a rough inverse of f[a] in the region of interest.
ListLinePlot[{#, f[#]} & /@ Range[1, 11, 5],
PlotMarkers -> Automatic]

Use a rough estimate of the inverse as the starting value in FindRoot
arg[fv_] := a /. FindRoot[f[a] == fv, {a, 3/10 fv}]
arg[2] // AbsoluteTiming
(* {0.030148, 6.} *)
The result is the same as that from NMinimize
NArgMin[(f[a] - 2)^2, a] // AbsoluteTiming
(* {2.57372, 6.} *)
FindRoot. – b.gates.you.know.what Feb 28 '22 at 10:54f[a]does nothing. Sinceadoes not have numerical value. Typef[a]and see. – Nasser Feb 28 '22 at 10:56aitself does not have numerical value. Did you try just typingf[a]on its own? You'll see that Mathematica does nothing but echo back the input. You defined the function to only work on argument that is numeric. As suggested above, you can tryFindRoot– Nasser Feb 28 '22 at 11:01