diff --git a/src/box/lua/space.cc b/src/box/lua/space.cc
index 604cee10c587bab1b5b079152a0bb599e429d4ae..5c62e872ba3de10ce14a33f031b37843e8a0dd84 100644
--- a/src/box/lua/space.cc
+++ b/src/box/lua/space.cc
@@ -162,14 +162,15 @@ lbox_fillspace(struct lua_State *L, struct space *space, int i)
 		if (index == NULL)
 			continue;
 		struct index_def *index_def = index->index_def;
+		struct index_opts *index_opts = &index_def->opts;
 		lua_pushnumber(L, index_def->iid);
 		lua_newtable(L);		/* space.index[k] */
 
 		if (index_def->type == HASH || index_def->type == TREE) {
-			lua_pushboolean(L, index_def->opts.is_unique);
+			lua_pushboolean(L, index_opts->is_unique);
 			lua_setfield(L, -2, "unique");
 		} else if (index_def->type == RTREE) {
-			lua_pushnumber(L, index_def->opts.dimension);
+			lua_pushnumber(L, index_opts->dimension);
 			lua_setfield(L, -2, "dimension");
 		}
 
@@ -204,6 +205,28 @@ lbox_fillspace(struct lua_State *L, struct space *space, int i)
 
 		lua_settable(L, -3); /* space.index[k].parts */
 
+		if (space_is_vinyl(space)) {
+			lua_pushstring(L, "options");
+			lua_newtable(L);
+
+			lua_pushnumber(L, index_opts->range_size);
+			lua_setfield(L, -2, "range_size");
+
+			lua_pushnumber(L, index_opts->page_size);
+			lua_setfield(L, -2, "page_size");
+
+			lua_pushnumber(L, index_opts->run_count_per_level);
+			lua_setfield(L, -2, "run_count_per_level");
+
+			lua_pushnumber(L, index_opts->run_size_ratio);
+			lua_setfield(L, -2, "run_size_ratio");
+
+			lua_pushnumber(L, index_opts->bloom_fpr);
+			lua_setfield(L, -2, "bloom_fpr");
+
+			lua_settable(L, -3);
+		}
+
 		lua_settable(L, -3); /* space.index[k] */
 		lua_rawgeti(L, -1, index_def->iid);
 		lua_setfield(L, -2, index_def->name);
diff --git a/src/box/vinyl.c b/src/box/vinyl.c
index f2a9006bc57cd2b7bd8183328c26142b2a7c5af9..a134657e6e19fec0abeff968666035101f351955 100644
--- a/src/box/vinyl.c
+++ b/src/box/vinyl.c
@@ -4589,10 +4589,6 @@ vy_index_info(struct vy_index *index, struct info_handler *h)
 	histogram_snprint(buf, sizeof(buf), index->run_hist);
 	info_append_str(h, "run_histogram", buf);
 
-	info_append_double(h, "bloom_fpr", index->opts.bloom_fpr);
-	info_append_int(h, "range_size", index->opts.range_size);
-	info_append_int(h, "page_size", index->opts.page_size);
-
 	info_end(h);
 }
 
diff --git a/test/vinyl/coalesce.result b/test/vinyl/coalesce.result
index a2778380edee2e4de563f38b80e0143ff89d86bd..b6478d302baca1c0b83a9753848da595764e24b9 100644
--- a/test/vinyl/coalesce.result
+++ b/test/vinyl/coalesce.result
@@ -16,7 +16,7 @@ function vyinfo() return box.space.test.index.primary:info() end
 range_count = 4
 ---
 ...
-tuple_size = math.ceil(vyinfo().page_size / 4)
+tuple_size = math.ceil(s.index.primary.options.page_size / 4)
 ---
 ...
 pad_size = tuple_size - 30
@@ -26,7 +26,7 @@ assert(pad_size >= 16)
 ---
 - true
 ...
-keys_per_range = math.floor(vyinfo().range_size / tuple_size)
+keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size)
 ---
 ...
 key_count = range_count * keys_per_range
diff --git a/test/vinyl/coalesce.test.lua b/test/vinyl/coalesce.test.lua
index 04d6efe39bfe59eb23dce234f5396599f48a44a6..c41e22702ea321d6fc079012504fe1aef348d6d7 100644
--- a/test/vinyl/coalesce.test.lua
+++ b/test/vinyl/coalesce.test.lua
@@ -8,10 +8,10 @@ _ = s:create_index('primary', {unique=true, parts={1, 'unsigned'}, page_size=256
 function vyinfo() return box.space.test.index.primary:info() end
 
 range_count = 4
-tuple_size = math.ceil(vyinfo().page_size / 4)
+tuple_size = math.ceil(s.index.primary.options.page_size / 4)
 pad_size = tuple_size - 30
 assert(pad_size >= 16)
-keys_per_range = math.floor(vyinfo().range_size / tuple_size)
+keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size)
 key_count = range_count * keys_per_range
 
 -- Rewrite the space until enough ranges are created.
diff --git a/test/vinyl/ddl.result b/test/vinyl/ddl.result
index 092a61c5a2b0c538dfdf37f5aa639b827930fa2d..a1aab739e5e2a6b713d0335552fde99cae081a4a 100644
--- a/test/vinyl/ddl.result
+++ b/test/vinyl/ddl.result
@@ -259,15 +259,15 @@ sec = space:create_index('sec', {bloom_fpr = 0.2})
 third = space:create_index('third', {bloom_fpr = 0.3})
 ---
 ...
-pk:info().bloom_fpr
+pk.options.bloom_fpr
 ---
 - 0.1
 ...
-sec:info().bloom_fpr
+sec.options.bloom_fpr
 ---
 - 0.2
 ...
-third:info().bloom_fpr
+third.options.bloom_fpr
 ---
 - 0.3
 ...
@@ -318,7 +318,7 @@ pk:info().disk.pages
 ---
 - 4
 ...
-pk:info().page_size
+space.index.pk.options.page_size
 ---
 - 8192
 ...
@@ -326,7 +326,7 @@ pk:info().run_count
 ---
 - 1
 ...
-pk:info().bloom_fpr
+space.index.pk.options.bloom_fpr
 ---
 - 0.1
 ...
@@ -365,7 +365,7 @@ pk:info().disk.pages
 ---
 - 6
 ...
-pk:info().page_size
+space.index.pk.options.page_size
 ---
 - 16384
 ...
@@ -373,7 +373,7 @@ pk:info().run_count
 ---
 - 1
 ...
-pk:info().bloom_fpr
+space.index.pk.options.bloom_fpr
 ---
 - 0.2
 ...
diff --git a/test/vinyl/ddl.test.lua b/test/vinyl/ddl.test.lua
index 752b22eff61bef7d3dc79a241fd507f12556ebcc..1808f38bcb3c304f78e434cef7d80cead323ebad 100644
--- a/test/vinyl/ddl.test.lua
+++ b/test/vinyl/ddl.test.lua
@@ -103,9 +103,9 @@ space = box.schema.space.create('test', {engine='vinyl'})
 pk = space:create_index('pk', {bloom_fpr = 0.1})
 sec = space:create_index('sec', {bloom_fpr = 0.2})
 third = space:create_index('third', {bloom_fpr = 0.3})
-pk:info().bloom_fpr
-sec:info().bloom_fpr
-third:info().bloom_fpr
+pk.options.bloom_fpr
+sec.options.bloom_fpr
+third.options.bloom_fpr
 space:drop()
 
 --
@@ -128,9 +128,9 @@ for i = 1, 20 do space:replace{i, pad} end
 est_bsize = pad_size * 20
 box.snapshot()
 pk:info().disk.pages
-pk:info().page_size
+space.index.pk.options.page_size
 pk:info().run_count
-pk:info().bloom_fpr
+space.index.pk.options.bloom_fpr
 
 -- Change page_size and trigger compaction
 page_size = page_size * 2
@@ -145,9 +145,9 @@ box.snapshot()
 -- Wait for compaction
 while pk:info().run_count ~= 1 do fiber.sleep(0.01) end
 pk:info().disk.pages
-pk:info().page_size
+space.index.pk.options.page_size
 pk:info().run_count
-pk:info().bloom_fpr
+space.index.pk.options.bloom_fpr
 est_bsize / page_size == pk:info().disk.pages
 space:drop()
 
diff --git a/test/vinyl/recover.result b/test/vinyl/recover.result
index c6142ef80a9c84cddb55b5716a5637a18ecda599..4c3325bf22331086da54532a9a81425c4532c9f3 100644
--- a/test/vinyl/recover.result
+++ b/test/vinyl/recover.result
@@ -26,7 +26,7 @@ function vyinfo() return box.space.test.index.primary:info() end
 range_count = 4
 ---
 ...
-tuple_size = math.ceil(vyinfo().page_size / 4)
+tuple_size = math.ceil(s.index.primary.options.page_size / 4)
 ---
 ...
 pad_size = tuple_size - 30
@@ -36,7 +36,7 @@ assert(pad_size >= 16)
 ---
 - true
 ...
-keys_per_range = math.floor(vyinfo().range_size / tuple_size)
+keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size)
 ---
 ...
 key_count = range_count * keys_per_range
diff --git a/test/vinyl/recover.test.lua b/test/vinyl/recover.test.lua
index 046b016c20de709719d9968c354d926a00d48643..e88563535e837295337925bd99134843e8e73d06 100644
--- a/test/vinyl/recover.test.lua
+++ b/test/vinyl/recover.test.lua
@@ -14,10 +14,10 @@ _ = s:create_index('primary', {page_size=256, range_size=2048, run_count_per_lev
 function vyinfo() return box.space.test.index.primary:info() end
 
 range_count = 4
-tuple_size = math.ceil(vyinfo().page_size / 4)
+tuple_size = math.ceil(s.index.primary.options.page_size / 4)
 pad_size = tuple_size - 30
 assert(pad_size >= 16)
-keys_per_range = math.floor(vyinfo().range_size / tuple_size)
+keys_per_range = math.floor(s.index.primary.options.range_size / tuple_size)
 key_count = range_count * keys_per_range
 
 -- Add a number of tuples to the test space to trigger range splitting.
diff --git a/test/vinyl/split.result b/test/vinyl/split.result
index 25ed1615aa5da4ddc19e8e2f15baaa239fb3245d..222d49ae4cadbffb081e27c258bfbbee76fa9fc2 100644
--- a/test/vinyl/split.result
+++ b/test/vinyl/split.result
@@ -13,10 +13,10 @@ _= space:create_index('primary', { parts = { 1, 'unsigned' }, run_count_per_leve
 function vyinfo() return space.index.primary:info() end
 ---
 ...
-range_size = vyinfo().range_size
+range_size = space.index.primary.options.range_size
 ---
 ...
-tuple_size = vyinfo().page_size / 2
+tuple_size = space.index.primary.options.page_size / 2
 ---
 ...
 tuples_per_range = math.ceil(range_size / tuple_size + 1)
diff --git a/test/vinyl/split.test.lua b/test/vinyl/split.test.lua
index 18ba9bb1c8254607c7b127d71be723bbf4739b74..6f2d8e1402cb4a7533fc3303492b3a53d427ade9 100644
--- a/test/vinyl/split.test.lua
+++ b/test/vinyl/split.test.lua
@@ -6,8 +6,8 @@ _= space:create_index('primary', { parts = { 1, 'unsigned' }, run_count_per_leve
 
 function vyinfo() return space.index.primary:info() end
 
-range_size = vyinfo().range_size
-tuple_size = vyinfo().page_size / 2
+range_size = space.index.primary.options.range_size
+tuple_size = space.index.primary.options.page_size / 2
 tuples_per_range = math.ceil(range_size / tuple_size + 1)
 
 test_run:cmd("setopt delimiter ';'")