| Summary: | Некорректно проверяется, removable ли диск | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Artem Varaksa <varaksaaa> | ||||
| Component: | system-backup | Assignee: | Leonid Krivoshein <klark> | ||||
| Status: | ASSIGNED --- | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | klark | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=54517 | ||||||
| Attachments: |
|
||||||
|
Description
Artem Varaksa
2025-05-27 15:21:22 MSK
То, что я здесь вижу, пока кажется вполне логичным. Логика с removable рассчитана на сканирование дисков, а не разделов. Съёмные диски по умолчанию должны исключаться, если не добавлен флаг --removable. Команда lsblk без параметров покажет все диски и разделы, а так же флаг RM. Вот эти диски system-backup должна пропускать вместе с разделами на них, так что нужно увидеть вывод lsblk. (In reply to Artem Varaksa from comment #0) > 2. # bash -x system-backup -b "/home/test/backup_test" -C -v Кроме того, опция -C (--current, --self) предписывает не сканировать диски, а рассматривать текущую rootfs, с которой мы загрузились, как ту, на которой надо искать /etc/fstab. В этом случае флаг --removable действительно не должен никак влиять. Мне кажется, это не ошибка. В данном случае привёл пример с не-removable носителем (встроенным диском). Даже для него логика неправильная, так как пытается смотреть .../sda/sda3/removable вместо .../sda/removable.
Для такого диска # lsblk, ожидаемо, выводит в столбце RM 0:
# lsblk
> NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
> sda 8:0 0 25G 0 disk
> ├─sda1 8:1 0 511M 0 part /boot/efi
> ├─sda2 8:2 0 742M 0 part [SWAP]
> └─sda3 8:3 0 23,8G 0 part /
> sdb 8:16 0 50G 0 disk
> └─sdb1 8:17 0 50G 0 part
С флешкой # lsblk выводит в столбце RM 1. Но у неё так же нет файла вида .../sdс/sdс3/removable, есть только .../sdс/removable, в связи с чем сделал вывод, что и с флешкой removable будет некорректно определяться.
Сразу не проверил поведение именно при запуске system-backup с флешкой, на которой есть установленная система, проверю и опишу его.
Когада мы запускаем system-backup без свободных аргументов и без параметра -C (--current, --self), мы как бы говорим "сохрани систему, которую найдёшь". В этом случае работает сканирование всех дисков и только в этом случае параметр --removable имеет смысл, так как при сканировании по умолчанию съёмные носители исключаются. Когда же мы указываем system-backup явно на то, что мы хотим сохранить, она не должна ничего исключать, в этом случае параметр --removable не имеет смысла. Спасибо за уточнение. Проверил такой случай, когда кроме запущенной с флешки системы других систем нет, в нём вне зависимости от параметра -r авто-поиск системы (без указания -C и -U) не работает. Завёл отдельную ошибку об этом: https://bugzilla.altlinux.org/54517. В данной ошибке всё же хочу обратить внимание, что даже при такой проверке обращения происходят к `.../sda/sda1/removable`, а не `.../sda/removable`, что видно при запуске с `bash -x` команд из упомянутой ошибки. Если этот момент следует считать ожидаемым поведением, просьба закрыть данную ошибку. > ... > ++ readlink -fv /sys/dev/block/8:1 > + sysfs=/sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 > + '[' '!' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/dev ']' > + read b > + '[' 8:1 '!=' 8:1 ']' > + '[' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/ro ']' > + read b > + '[' 0 '!=' 0 ']' > + '[' 0 -eq 0 ']' > + '[' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/removable ']' > ... (In reply to Artem Varaksa from comment #5) > Проверил такой случай, когда кроме запущенной с флешки системы других систем > нет, в нём вне зависимости от параметра -r авто-поиск системы (без указания > -C и -U) не работает. Когда нет других систем, приходится бэкапить текущую корневую систему, это можно сделать только с -C/--current. Иначе всё к нему относящееся должно быть исключено из сканирования. > В данной ошибке всё же хочу обратить внимание, что даже при такой проверке > обращения происходят к `.../sda/sda1/removable`, а не `.../sda/removable`, > что видно при запуске с `bash -x` команд из упомянутой ошибки. Если этот > момент следует считать ожидаемым поведением, просьба закрыть данную ошибку. Речь об этом фрагменте: https://git.altlinux.org/gears/s/system-backup.git?p=system-backup.git;a=blob;f=system-backup;h=ce2607dbb3a60aead97609db1b0c37704af203f2;hb=23ae9f07867e62b2f2064cb9b61ce49e600eb424#l658 со строки 690. Сейчас кажется, что можно считать ошибкой, а можно и не считать. Если считать, то очень незначительной, по сравнению с другими накопившимися претензиями к system-backup, из-за чего я его полностью переделываю. Можно не считать, потому что цель фрагмента в строках 690-696 исключать из сканирования те устройства, которые непосредственно помечены как съёмные, если ключ -r/--removable не был указан. Можно считать, потому что для разделов или вложенных сущностей надо смотреть в другом месте. Тогда алгоритм надо значительно усложнять. Склоняюсь к тому, что пока не найдено однозначно плохого проявления, лучше ничего не трогать. Вообще интересно, что покажет lsblk для раздела на съёмном устройстве в графе RM. Ей вообще не всегда можно доверять, сейчас проверил и вот: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 4.5T 0 disk └─sda1 8:1 0 4.5T 0 part /media/klark/WD-Elements-5T nvme0n1 259:0 0 953.9G 0 disk ├─nvme0n1p1 259:1 0 256M 0 part /boot/efi ├─nvme0n1p2 259:2 0 48G 0 part [SWAP] ├─nvme0n1p3 259:3 0 875G 0 part /home └─... Здесь по USB3 подключен внешний Western Digital Elements 5TB, это съёмный диск. Пока не будем закрывать, пусть висит... Да, внешние диски почему-то не определяются как removable системой, об этом завёл ошибки: - https://bugzilla.altlinux.org/54500 (Внешний NVME диск не определяется как removable) - https://bugzilla.altlinux.org/54501 (Нельзя сделать диск removable с помощью правил udev) Created attachment 18859 [details] Вывод system-backup -v (с -r и без него) > Можно не считать, потому что цель фрагмента в строках 690-696 исключать из сканирования те устройства, которые непосредственно помечены как съёмные, если ключ -r/--removable не был указан. Перепроверил с учётом https://bugzilla.altlinux.org/show_bug.cgi?id=54517#c3, т. е. загрузился со встроенного диска, подключил флешку (определяющуюся как removable) с установленной на ней системой, и начал резервную копию без явного указания цели. Как без -r, так и с ним резервная копия выполняется с флешки. Т. е. проверка всё же работает некорректно. В выводе -v видно, что /dev/sda определяется как removable и пропускается, если не указывать -r: > Auto-detecting targets... > - /dev/nvme0n1 protected directly > - /dev/nvme0n1p3 protected directly > - /dev/sda is removable, will be skipped Однако пропускается только сам /dev/sda, разделы не пропускаются, и начинается резервная копия. Подробный вывод system-backup см. во вложении. Данное поведение проверялось на: [p10+384295] ALT Workstation 10.4 x86_64 system-backup-0.1.4-alt1.noarch Понятно, спасибо. В новой версии будем учитывать "съёмность" только дисков верхнего уровня. Актуально для system-backup-0.1.5-alt2.noarch. (In reply to Artem Varaksa from comment #10) > Актуально для system-backup-0.1.5-alt2.noarch. Под новой версией я имел ввиду переписать вс (In reply to Artem Varaksa from comment #10) > Актуально для system-backup-0.1.5-alt2.noarch. Под новой версией я имел ввиду переписать всё кардинально, пока лишь экстренно срочные потребности закрываются, чтобы довести деплойную пару хоть до какого-то юзабельного состояния. Текущая версия монолитна и имеет много других недостатков. |