Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

snapshotctl
Управление мгновенными снимками

Тип файла: команда
  Рус  
snapshotctl: Control snapshots.
usage:  snapshotctl [action] [flags]

Actions:
  dump
    Print snapshot states.
  merge
    Deprecated.
   

Комментарии
Snapshot (снапшот, моментальный снимок)—это состояние системы в определенный момент времени.

----------------------------------------
Мгновенный снимок (англ. snapshot) — моментальная копия хранимых данных — файлов и каталогов файловой системы, базы данных или её части на определённый момент времени.
В отличие от резервной копии, создание которой для большого объёма данных может занять длительное время и требовать остановки изменений (чтобы обеспечить целостность сохраняемых данных), мгновенный снимок позволяет единомоментно зафиксировать состояние хранимых объектов. При этом снимок обычно не создаёт независимую копию данных в подсистеме хранения, а лишь обеспечивается алгоритмами записи изменений таким образом, чтобы сохранялась возможность обратиться к данным на момент создания мгновенного снимка. Такая схема позволяет организовать целостное резервное копирование большого объёма данных без останова служб, изменяющих данные — резервная копия снимается с зафиксированного мгновенного снимка.
Широкое применение мгновенные снимки находят в системах резервного копирования, сетях хранения данных, СУБД, виртуальном хостинге, для организации «песочниц».
Поддержка мгновенных снимков реализована в различных менеджерах томов Unix-систем, в том числе LVM.

------------------------------------- https://blog.csdn.net/guyongqiangx/article/details/129122159
1. Функции snapshotctl
В более ранней версии (android-11.0.0_r21) snapshotctl поддерживает операции
дампа и сопоставления (map), а затем добавлены операции удаления.

Справочная информация для snapshotctl:
console:/ # snapshotctl -h
snapshotctl: Control snapshots.
Usage: snapshotctl [action] [flags]
Actions:
dump
Print snapshot states.
merge
Deprecated.
map
Map all partitions at /dev/block/mapper


2. Операция Dump
Операция дампа является наиболее полезной операцией snapshtctl,
которая может выводить различные состояния при обновлении системы.

Пример нормального дампа:

console:/ # snapshotctl dump
snapshotctl W 10-10 21:43:54 3770 3770 snapshot.cpp:247]
Cannot read /metadata/ota/snapshot-boot: No such file or directory
Update state: initiated
Compression: 0
Current slot: _a
Boot indicator: booting from unknown slot
Rollback indicator: No such file or directory
Forward merge indicator: No such file or directory
Source build fingerprint:
google/xxxxx/xxxxx:11/RVC/eng.rocky.20221010.210616:userdebug/dev-keys

Snapshot: system_b
state: CREATED
device size (bytes): 1263079424
snapshot size (bytes): 1263079424
cow partition size (bytes): 119177216
cow file size (bytes): 949866496
allocated sectors: 0
metadata sectors: 0
compression: none

Snapshot: vendor_b
state: CREATED
device size (bytes): 80506880
snapshot size (bytes): 80506880
cow partition size (bytes): 0
cow file size (bytes): 978944
allocated sectors: 0
metadata sectors: 0
compression: none

Пример запуска утилиты на ТВ-боксе:

console:/ # snapshotctl dump
snapshotctl E 07-13 11:20:33 3501 3501 snapshot.cpp:2518]
Read state file failed: No such file or directory
snapshotctl E 07-13 11:20:33 3501 3501 snapshot.cpp:2518]
Read state file failed: No such file or directory
snapshotctl W 07-13 11:20:33 3501 3501 snapshot.cpp:214]
Cannot read /metadata/ota/snapshot-boot: No such file or directory

Update state: none
Compression: 0
Current slot: _a
Boot indicator: booting from unknown slot
Rollback indicator: No such file or directory
Forward merge indicator: No such file or directory
Source build fingerprint:
console:/ #

3. Oперация Map
snapshotctl map позволяет сопоставить различные файлы base, cow и cow-img
в системе с устройствами для удобной проверки во время операций.

Вот пример отображения:
console:/ # snapshotctl map
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2525]
Successfully unmapped snapshot system_b
snapshotctl I 10-11 19:59:53 6127 6127
fs_mgr_dm_linear.cpp:247] [libfs_mgr]
Created logical partition system_b-base on device /dev/block/dm-4
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:638]
Mapped system_b-cow-img to /dev/block/dm-5
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2596]
Mapped COW device for system_b at /dev/block/dm-6
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2490]
Mapped system_b as snapshot device at /dev/block/dm-7
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2525]
Successfully unmapped snapshot vendor_b
snapshotctl I 10-11 19:59:53 61[10577.688566] audit:
rate limit exceeded

27 6127 fs_mgr_dm_linear.cpp:247] [libfs_mgr]
Created logical partition vendor_b-base on device /dev/block/dm-8
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:638]
Mapped vendor_b-cow-img to /dev/block/dm-9
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2556]
Mapped COW image for vendor_b at vendor_b-cow-img
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2490]
Mapped vendor_b as snapshot device at /dev/block/dm-10
snapshotctl I 10-11 19:59:53 6127 6127 snapshot.cpp:2741]
MapAllSnapshots succeeded.

На ТВ-боксе:
console:/ # snapshotctl map
snapshotctl E 07-13 11:28:44 3546 3546 snapshot.cpp:2518]
Read state file failed: No such file or directory
snapshotctl E 07-13 11:28:44 3546 3546 snapshot.cpp:2335]
Cannot call MapAllSnapshots from update state: 0
70|console:/ #



4 Приведенная выше операция Map сопоставляет следующие файлы:
console:/ # ls -lh data/gsi/ota/
total 454M
-rw------- 1 root root 26 2022-10-11 00:00 system_b-cow-img.img
-rw------- 1 root root 906M 2022-10-11 00:00 system_b-cow-img.img.0000
-rw------- 1 root root 26 2022-10-11 00:00 vendor_b-cow-img.img
-rw------- 1 root root 956K 2022-10-11 00:00 vendor_b-cow-img.img.0000

Если суперпространство выделено для апгрейда, то оно тоже будет маппировано.
После сопоставления раздела можyj использовать другие инструменты для
проверки обновленного образа, например, использовать инструмент dmctl для
просмотра состояния сопоставления следующим образом:

console:/ # dmctl
usage: dmctl <command> [command options]
dmctl -f file
commands:
create <dm-name> [-ro] <targets...>
delete <dm-name>
list <devices | targets> [-v]
getpath <dm-name>
getuuid <dm-name>
info <dm-name>
status <dm-name>
resume <dm-name>
suspend <dm-name>
table <dm-name>
help

-f file reads command and all parameters from named file

Target syntax:
<target_type> <start_sector> <num_sectors> [target_data]
234|console:/ # dmctl table
Invalid arguments, see 'dmctl help'
234|console:/ # su
console:/ # dmctl list devices
Available Device Mapper Devices:
userdata : 252:3
system_b : 252:7
vendor_b : 252:10
vendor_b-base : 252:8
system_a : 252:0
vendor_b-cow-img : 252:9
vendor_a : 252:1
system_b-base : 252:4
system_b-cow-img : 252:5
system_b-cow : 252:6
scratch : 252:2
console:/ #
console:/ # dmctl info vendor_b-base
device : vendor_b-base
active : true
access : rw
activeTable : true
inactiveTable : false
bufferFull : false
console:/ #
console:/ # dmctl info vendor_b-cow-img
device : vendor_b-cow-img
active : true
access : rw
activeTable : true
inactiveTable : false
bufferFull : false
console:/ #
console:/ #
console:/ # dmctl table vendor_b-cow-img
Targets in the device-mapper table for vendor_b-cow-img:
0-1912: linear, 259:4 6107136
console:/ #
console:/ # dmctl table system_b-cow
Targets in the device-mapper table for system_b-cow:
0-888: linear, 259:3 2469000
888-232768: linear, 259:3 2627128
232768-2087976: linear, 252:5 0
console:/ #

console:/ # dmctl table system_b-cow-img
Targets in the device-mapper table for system_b-cow-img:
0-4096: linear, 259:4 569344
4096-8192: linear, 259:4 675840
8192-12288: linear, 259:4 1134592
12288-16384: linear, 259:4 1155072
16384-20480: linear, 259:4 1179648
20480-28672: linear, 259:4 1187840
28672-65536: linear, 259:4 1200128
65536-69632: linear, 259:4 1253376
69632-73728: linear, 259:4 1269760
73728-77824: linear, 259:4 1302528
77824-86016: linear, 259:4 1318912
86016-102400: linear, 259:4 1351680
102400-106496: linear, 259:4 1376256
106496-118784: linear, 259:4 1384448
118784-131072: linear, 259:4 1466368
131072-155648: linear, 259:4 1482752
155648-159744: linear, 259:4 1515520
159744-163840: linear, 259:4 1699840
163840-172032: linear, 259:4 1712128
172032-176128: linear, 259:4 1773568
176128-184320: linear, 259:4 1867776
184320-192512: linear, 259:4 2097152
192512-196608: linear, 259:4 2109440
196608-204800: linear, 259:4 2134016
204800-208896: linear, 259:4 2158592
208896-212992: linear, 259:4 2170880
212992-217088: linear, 259:4 2187264
217088-221184: linear, 259:4 2215936
221184-225280: linear, 259:4 2244608
225280-249856: linear, 259:4 2310144
249856-253952: linear, 259:4 2355200
253952-294912: linear, 259:4 2449408
294912-311296: linear, 259:4 2912256
311296-323584: linear, 259:4 4030464
323584-372736: linear, 259:4 4050944
372736-376832: linear, 259:4 4149248
376832-385024: linear, 259:4 4165632
385024-389120: linear, 259:4 4325376
389120-516096: linear, 259:4 4620288
516096-557056: linear, 259:4 4751360
557056-565248: linear, 259:4 4796416
565248-1855208: linear, 259:4 4812800
console:/ #

Вы можете snapshotctl unmap размонтировать ранее сопоставленные разделы через .

console:/ # snapshotctl unmap
snapshotctl I 10-11 19:59:48 6120 6120 snapshot.cpp:2525]
Successfully unmapped snapshot system_b
snapshotctl I 10-11 19:59:48 6120 6120 snapshot.cpp:2525]
Successfully unmapped snapshot vendor_b
console:/ #

12345. операция слияния
В настоящее время операция слияния в инструменте snapshotctl
console:/ #
snapshotctl W 10-11 19:43:10 5986 5986 snapshotctl.cpp:66]
Deprecated. Call update_engine_client --merge instead.
70|console:/ #

snapshotctl merge отменена
Если вам нужно выполнить слияние, вы можете
использовать команду:
update_engine_client --merge

Поэтому, если есть проблема с обновлением виртуального раздела, вы можете
сначала проверить snapshotctl dump некоторую основную информацию snapshotctl map,
а затем проверить, сопоставив все устройства виртуального раздела.