Metals lose electrons in bonding whilst non-metals gain electrons during ionic bonding hence metals form cations and non-metals form anions.
It is difficult for a nonmetal such as oxygen to lose 6 electrons to form a cation since it would need a lot of energy.
When it comes to metals it is also difficult to gain that much electrons since as electrons are added the effective nuclear charge increases each time.
Option B is correct.