⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⣿⣿⣷⣼⣿⠀⣴⠾⠷⠶⠦⡄⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⢠⡤⢶⣦⣾⣿⣿⣿⣿⣿⣿⣿⠀⣿⣶⣶⣦⣄⠳⣤⣤⠄⠀⠀⠀ ⠀⠀⠀⢀⣼⣳⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣗⠈⠙⠻⣶⣄⡀⠀⠀⠀ ⠀⠀⠀⣰⠿⠁⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠈⠳⣤⠀⠀ ⠀⠀⢀⡟⠀⢰⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠈⠻⣶⣄⠀⠀⠈⠛⢦ ⠀⣀⡼⠃⠀⣼⡟⠀⠀⢸⣿⡿⠉⣿⡿⠿⠛⣿⡄⠀⠀⠀⠙⠿⣆⠀⠀⠀⠈ ⠈⠁⠀⠀⢸⡟⠀⠀⠀⢸⣿⠀⠀⣿⠁⠀⠀⠈⠃⠀⠀⠀⠀⠀⠘⢷⡄⠀⠀ ⠀⠀⠀⠀⣼⠃⠀⠀⠀⢸⡟⠀⠀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡆⠀ ⠀⠀⠀⣠⡏⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠻⠃⠀⠀⠀⠀⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ Current Dir: /usr/sbin/ [FILE] NetworkManager [ edit | delete | rename | download ] [FILE] accessdb [ edit | delete | rename | download ] [FILE] accton [ edit | delete | rename | download ] [FILE] adcli [ edit | delete | rename | download ] [FILE] addgnupghome [ edit | delete | rename | download ] [FILE] addpart [ edit | delete | rename | download ] [FILE] adduser [ edit | delete | rename | download ] [FILE] agetty [ edit | delete | rename | download ] [FILE] alternatives [ edit | delete | rename | download ] [FILE] anacron [ edit | delete | rename | download ] [FILE] apachectl [ edit | delete | rename | download ] [FILE] applygnupgdefaults [ edit | delete | rename | download ] [FILE] arp [ edit | delete | rename | download ] [FILE] arpd [ edit | delete | rename | download ] [FILE] arping [ edit | delete | rename | download ] [FILE] atd [ edit | delete | rename | download ] [FILE] atrun [ edit | delete | rename | download ] [FILE] auditctl [ edit | delete | rename | download ] [FILE] auditd [ edit | delete | rename | download ] [FILE] augenrules [ edit | delete | rename | download ] [FILE] aureport [ edit | delete | rename | download ] [FILE] ausearch [ edit | delete | rename | download ] [FILE] authconfig [ edit | delete | rename | download ] [FILE] autrace [ edit | delete | rename | download ] [FILE] avcstat [ edit | delete | rename | download ] [FILE] badblocks [ edit | delete | rename | download ] [FILE] biosdecode [ edit | delete | rename | download ] [FILE] biosdevname [ edit | delete | rename | download ] [FILE] blkdeactivate [ edit | delete | rename | download ] [FILE] blkdiscard [ edit | delete | rename | download ] [FILE] blkid [ edit | delete | rename | download ] [FILE] blkmapd [ edit | delete | rename | download ] [FILE] blkzone [ edit | delete | rename | download ] [FILE] blockdev [ edit | delete | rename | download ] [FILE] bpftool [ edit | delete | rename | download ] [FILE] bridge [ edit | delete | rename | download ] [FILE] bsock [ edit | delete | rename | download ] [FILE] cache_check [ edit | delete | rename | download ] [FILE] cache_dump [ edit | delete | rename | download ] [FILE] cache_metadata_size [ edit | delete | rename | download ] [FILE] cache_repair [ edit | delete | rename | download ] [FILE] cache_restore [ edit | delete | rename | download ] [FILE] cache_writeback [ edit | delete | rename | download ] [FILE] cagefs-mount [ edit | delete | rename | download ] [FILE] cagefs_enter_site [ edit | delete | rename | download ] [FILE] cagefs_enter_user [ edit | delete | rename | download ] [FILE] cagefsctl [ edit | delete | rename | download ] [FILE] cagefsctl-user [ edit | delete | rename | download ] [FILE] capsh [ edit | delete | rename | download ] [FILE] cfdisk [ edit | delete | rename | download ] [FILE] cgdisk [ edit | delete | rename | download ] [FILE] chcpu [ edit | delete | rename | download ] [FILE] check_lft_balance.pl [ edit | delete | rename | download ] [FILE] chgpasswd [ edit | delete | rename | download ] [FILE] chkconfig [ edit | delete | rename | download ] [FILE] chpasswd [ edit | delete | rename | download ] [FILE] chronyd [ edit | delete | rename | download ] [FILE] chroot [ edit | delete | rename | download ] [FILE] cifs.idmap [ edit | delete | rename | download ] [FILE] cifs.upcall [ edit | delete | rename | download ] [FILE] cl-link-to-cln [ edit | delete | rename | download ] [FILE] cl-post-jwt-update [ edit | delete | rename | download ] [FILE] cl-pre-jwt-update [ edit | delete | rename | download ] [FILE] clncheck [ edit | delete | rename | download ] [FILE] clncheck-3.6 [ edit | delete | rename | download ] [FILE] clnreg_ks [ edit | delete | rename | download ] [FILE] clock [ edit | delete | rename | download ] [FILE] clockdiff [ edit | delete | rename | download ] [FILE] cloudlinux-autotracing [ edit | delete | rename | download ] [FILE] cloudlinux-awp-installer [ edit | delete | rename | download ] [FILE] cloudlinux-collect-panic-info [ edit | delete | rename | download ] [FILE] cloudlinux-config [ edit | delete | rename | download ] [FILE] cloudlinux-customizer [ edit | delete | rename | download ] [FILE] cloudlinux-edition-watcher [ edit | delete | rename | download ] [FILE] cloudlinux-license [ edit | delete | rename | download ] [FILE] cloudlinux-limits [ edit | delete | rename | download ] [FILE] cloudlinux-packages [ edit | delete | rename | download ] [FILE] cloudlinux-selector [ edit | delete | rename | download ] [FILE] cloudlinux-server-flags [ edit | delete | rename | download ] [FILE] cloudlinux-ssa-agent [ edit | delete | rename | download ] [FILE] cloudlinux-ssa-manager [ edit | delete | rename | download ] [FILE] cloudlinux-statistics [ edit | delete | rename | download ] [FILE] cloudlinux-statistics.python [ edit | delete | rename | download ] [FILE] cloudlinux-statsnotifier [ edit | delete | rename | download ] [FILE] cloudlinux-statsnotifier.python [ edit | delete | rename | download ] [FILE] cloudlinux-summary [ edit | delete | rename | download ] [FILE] cloudlinux-top [ edit | delete | rename | download ] [FILE] cloudlinux-top.python [ edit | delete | rename | download ] [FILE] cloudlinux-user-cron [ edit | delete | rename | download ] [FILE] cloudlinux-wizard [ edit | delete | rename | download ] [FILE] cloudlinux-xray [ edit | delete | rename | download ] [FILE] consoletype [ edit | delete | rename | download ] [FILE] convertquota [ edit | delete | rename | download ] [FILE] cpanel-compile-suexec.sh [ edit | delete | rename | download ] [FILE] cpanel-compile-suphp.sh [ edit | delete | rename | download ] [FILE] cracklib-check [ edit | delete | rename | download ] [FILE] cracklib-format [ edit | delete | rename | download ] [FILE] cracklib-packer [ edit | delete | rename | download ] [FILE] cracklib-unpacker [ edit | delete | rename | download ] [FILE] create-cracklib-dict [ edit | delete | rename | download ] [FILE] criu [ edit | delete | rename | download ] [FILE] crond [ edit | delete | rename | download ] [FILE] cryptsetup [ edit | delete | rename | download ] [FILE] csf [ edit | delete | rename | download ] [FILE] ctrlaltdel [ edit | delete | rename | download ] [FILE] ctstat [ edit | delete | rename | download ] [FILE] dbgovchart [ edit | delete | rename | download ] [FILE] dbgovchart.python [ edit | delete | rename | download ] [FILE] dcb [ edit | delete | rename | download ] [FILE] ddns-confgen [ edit | delete | rename | download ] [FILE] debugfs [ edit | delete | rename | download ] [FILE] delpart [ edit | delete | rename | download ] [FILE] depmod [ edit | delete | rename | download ] [FILE] devlink [ edit | delete | rename | download ] [FILE] dhclient [ edit | delete | rename | download ] [FILE] dhclient-script [ edit | delete | rename | download ] [FILE] dmeventd [ edit | delete | rename | download ] [FILE] dmfilemapd [ edit | delete | rename | download ] [FILE] dmidecode [ edit | delete | rename | download ] [FILE] dmsetup [ edit | delete | rename | download ] [FILE] dmstats [ edit | delete | rename | download ] [FILE] dnsmasq [ edit | delete | rename | download ] [FILE] dnssec-checkds [ edit | delete | rename | download ] [FILE] dnssec-coverage [ edit | delete | rename | download ] [FILE] dnssec-dsfromkey [ edit | delete | rename | download ] [FILE] dnssec-importkey [ edit | delete | rename | download ] [FILE] dnssec-keyfromlabel [ edit | delete | rename | download ] [FILE] dnssec-keygen [ edit | delete | rename | download ] [FILE] dnssec-keymgr [ edit | delete | rename | download ] [FILE] dnssec-revoke [ edit | delete | rename | download ] [FILE] dnssec-settime [ edit | delete | rename | download ] [FILE] dnssec-signzone [ edit | delete | rename | download ] [FILE] dnssec-verify [ edit | delete | rename | download ] [FILE] dosfsck [ edit | delete | rename | download ] [FILE] dosfslabel [ edit | delete | rename | download ] [FILE] dovecot [ edit | delete | rename | download ] [FILE] dovecot_cpshutdown [ edit | delete | rename | download ] [FILE] dpkg-fsys-usrunmess [ edit | delete | rename | download ] [FILE] dump-acct [ edit | delete | rename | download ] [FILE] dump-utmp [ edit | delete | rename | download ] [FILE] dump_fts [ edit | delete | rename | download ] [FILE] dump_lfts.sh [ edit | delete | rename | download ] [FILE] dump_mfts.sh [ edit | delete | rename | download ] [FILE] dumpe2fs [ edit | delete | rename | download ] [FILE] e2freefrag [ edit | delete | rename | download ] [FILE] e2fsck [ edit | delete | rename | download ] [FILE] e2image [ edit | delete | rename | download ] [FILE] e2label [ edit | delete | rename | download ] [FILE] e2mmpstatus [ edit | delete | rename | download ] [FILE] e2undo [ edit | delete | rename | download ] [FILE] e4crypt [ edit | delete | rename | download ] [FILE] e4defrag [ edit | delete | rename | download ] [FILE] ebtables [ edit | delete | rename | download ] [FILE] ebtables-restore [ edit | delete | rename | download ] [FILE] ebtables-save [ edit | delete | rename | download ] [FILE] edquota [ edit | delete | rename | download ] [FILE] era_check [ edit | delete | rename | download ] [FILE] era_dump [ edit | delete | rename | download ] [FILE] era_invalidate [ edit | delete | rename | download ] [FILE] era_restore [ edit | delete | rename | download ] [FILE] ether-wake [ edit | delete | rename | download ] [FILE] ethtool [ edit | delete | rename | download ] [FILE] exicyclog [ edit | delete | rename | download ] [FILE] exigrep [ edit | delete | rename | download ] [FILE] exim [ edit | delete | rename | download ] [FILE] exim_checkaccess [ edit | delete | rename | download ] [FILE] exim_dbmbuild [ edit | delete | rename | download ] [FILE] exim_dumpdb [ edit | delete | rename | download ] [FILE] exim_fixdb [ edit | delete | rename | download ] [FILE] exim_lock [ edit | delete | rename | download ] [FILE] exim_tidydb [ edit | delete | rename | download ] [FILE] eximstats [ edit | delete | rename | download ] [FILE] exinext [ edit | delete | rename | download ] [FILE] exiqgrep [ edit | delete | rename | download ] [FILE] exiqsumm [ edit | delete | rename | download ] [FILE] exiwhat [ edit | delete | rename | download ] [FILE] exportfs [ edit | delete | rename | download ] [FILE] faillock [ edit | delete | rename | download ] [FILE] fancontrol [ edit | delete | rename | download ] [FILE] fatlabel [ edit | delete | rename | download ] [FILE] fb_lock_print [ edit | delete | rename | download ] [FILE] fbguard [ edit | delete | rename | download ] [FILE] fcgistarter [ edit | delete | rename | download ] [FILE] fdformat [ edit | delete | rename | download ] [FILE] fdisk [ edit | delete | rename | download ] [FILE] filefrag [ edit | delete | rename | download ] [FILE] findfs [ edit | delete | rename | download ] [FILE] firebird [ edit | delete | rename | download ] [FILE] firewalld [ edit | delete | rename | download ] [FILE] fix-info-dir [ edit | delete | rename | download ] [FILE] fixfiles [ edit | delete | rename | download ] [FILE] fixparts [ edit | delete | rename | download ] [FILE] fsadm [ edit | delete | rename | download ] [FILE] fsck [ edit | delete | rename | download ] [FILE] fsck.cramfs [ edit | delete | rename | download ] [FILE] fsck.ext2 [ edit | delete | rename | download ] [FILE] fsck.ext3 [ edit | delete | rename | download ] [FILE] fsck.ext4 [ edit | delete | rename | download ] [FILE] fsck.fat [ edit | delete | rename | download ] [FILE] fsck.minix [ edit | delete | rename | download ] [FILE] fsck.msdos [ edit | delete | rename | download ] [FILE] fsck.vfat [ edit | delete | rename | download ] [FILE] fsck.xfs [ edit | delete | rename | download ] [FILE] fsfreeze [ edit | delete | rename | download ] [FILE] fstrim [ edit | delete | rename | download ] [FILE] fuse2fs [ edit | delete | rename | download ] [FILE] fuser [ edit | delete | rename | download ] [FILE] g13-syshelp [ edit | delete | rename | download ] [FILE] gdisk [ edit | delete | rename | download ] [FILE] genhomedircon [ edit | delete | rename | download ] [FILE] genhostid [ edit | delete | rename | download ] [FILE] genl [ edit | delete | rename | download ] [FILE] genrandom [ edit | delete | rename | download ] [FILE] getcap [ edit | delete | rename | download ] [FILE] getenforce [ edit | delete | rename | download ] [FILE] getpaneluserscount [ edit | delete | rename | download ] [FILE] getpcaps [ edit | delete | rename | download ] [FILE] getsebool [ edit | delete | rename | download ] [FILE] grafana-cli [ edit | delete | rename | download ] [FILE] grafana-server [ edit | delete | rename | download ] [FILE] groupadd [ edit | delete | rename | download ] [FILE] groupdel [ edit | delete | rename | download ] [FILE] groupmems [ edit | delete | rename | download ] [FILE] groupmod [ edit | delete | rename | download ] [FILE] grpck [ edit | delete | rename | download ] [FILE] grpconv [ edit | delete | rename | download ] [FILE] grpunconv [ edit | delete | rename | download ] [FILE] grub2-bios-setup [ edit | delete | rename | download ] [FILE] grub2-get-kernel-settings [ edit | delete | rename | download ] [FILE] grub2-install [ edit | delete | rename | download ] [FILE] grub2-macbless [ edit | delete | rename | download ] [FILE] grub2-mkconfig [ edit | delete | rename | download ] [FILE] grub2-ofpathname [ edit | delete | rename | download ] [FILE] grub2-probe [ edit | delete | rename | download ] [FILE] grub2-reboot [ edit | delete | rename | download ] [FILE] grub2-rpm-sort [ edit | delete | rename | download ] [FILE] grub2-set-bootflag [ edit | delete | rename | download ] [FILE] grub2-set-default [ edit | delete | rename | download ] [FILE] grub2-set-password [ edit | delete | rename | download ] [FILE] grub2-setpassword [ edit | delete | rename | download ] [FILE] grub2-sparc64-setup [ edit | delete | rename | download ] [FILE] grub2-switch-to-blscfg [ edit | delete | rename | download ] [FILE] grubby [ edit | delete | rename | download ] [FILE] gss-server [ edit | delete | rename | download ] [FILE] gssproxy [ edit | delete | rename | download ] [FILE] halt [ edit | delete | rename | download ] [FILE] hardlink [ edit | delete | rename | download ] [FILE] hdparm [ edit | delete | rename | download ] [FILE] htcacheclean [ edit | delete | rename | download ] [FILE] httpd [ edit | delete | rename | download ] [FILE] hwclock [ edit | delete | rename | download ] [FILE] hybrid-to-normal [ edit | delete | rename | download ] [FILE] ibaddr [ edit | delete | rename | download ] [FILE] ibcacheedit [ edit | delete | rename | download ] [FILE] ibccconfig [ edit | delete | rename | download ] [FILE] ibccquery [ edit | delete | rename | download ] [FILE] ibfindnodesusing.pl [ edit | delete | rename | download ] [FILE] ibhosts [ edit | delete | rename | download ] [FILE] ibidsverify.pl [ edit | delete | rename | download ] [FILE] iblinkinfo [ edit | delete | rename | download ] [FILE] ibnetdiscover [ edit | delete | rename | download ] [FILE] ibnodes [ edit | delete | rename | download ] [FILE] ibping [ edit | delete | rename | download ] [FILE] ibportstate [ edit | delete | rename | download ] [FILE] ibqueryerrors [ edit | delete | rename | download ] [FILE] ibroute [ edit | delete | rename | download ] [FILE] ibrouters [ edit | delete | rename | download ] [FILE] ibstat [ edit | delete | rename | download ] [FILE] ibstatus [ edit | delete | rename | download ] [FILE] ibswitches [ edit | delete | rename | download ] [FILE] ibsysstat [ edit | delete | rename | download ] [FILE] ibtracert [ edit | delete | rename | download ] [FILE] iconvconfig [ edit | delete | rename | download ] [FILE] ifconfig [ edit | delete | rename | download ] [FILE] ifdown [ edit | delete | rename | download ] [FILE] ifenslave [ edit | delete | rename | download ] [FILE] ifstat [ edit | delete | rename | download ] [FILE] ifup [ edit | delete | rename | download ] [FILE] im360-ssl-cache [ edit | delete | rename | download ] [FILE] imunify-auditd-log-reader [ edit | delete | rename | download ] [FILE] imunify-auditd-log-reader-cfg-reload [ edit | delete | rename | download ] [FILE] imunify-notifier [ edit | delete | rename | download ] [FILE] imunify-realtime-av [ edit | delete | rename | download ] [FILE] imunify-realtime-av.imrt2 [ edit | delete | rename | download ] [FILE] imunify-realtime-av.legacy [ edit | delete | rename | download ] [FILE] imunify-realtime-av.legacy.orig [ edit | delete | rename | download ] [FILE] imunify360-pam [ edit | delete | rename | download ] [FILE] imunify360-php-daemon [ edit | delete | rename | download ] [FILE] imunify360-scanlogd [ edit | delete | rename | download ] [FILE] imunify360-unified-access-logger [ edit | delete | rename | download ] [FILE] imunify360-watchdog [ edit | delete | rename | download ] [FILE] imunify360-webshield [ edit | delete | rename | download ] [FILE] imunify360-webshield-compose-lists [ edit | delete | rename | download ] [FILE] imunify360-webshield-ipdetect [ edit | delete | rename | download ] [FILE] imunify360-webshield-ssl-cache [ edit | delete | rename | download ] [FILE] init [ edit | delete | rename | download ] [FILE] insmod [ edit | delete | rename | download ] [FILE] install-info [ edit | delete | rename | download ] [FILE] installkernel [ edit | delete | rename | download ] [FILE] intel_sdsi [ edit | delete | rename | download ] [FILE] iotop [ edit | delete | rename | download ] [FILE] ip [ edit | delete | rename | download ] [FILE] ip6tables [ edit | delete | rename | download ] [FILE] ip6tables-apply [ edit | delete | rename | download ] [FILE] ip6tables-restore [ edit | delete | rename | download ] [FILE] ip6tables-restore-translate [ edit | delete | rename | download ] [FILE] ip6tables-save [ edit | delete | rename | download ] [FILE] ip6tables-translate [ edit | delete | rename | download ] [FILE] ipmaddr [ edit | delete | rename | download ] [FILE] iprconfig [ edit | delete | rename | download ] [FILE] iprdbg [ edit | delete | rename | download ] [FILE] iprdump [ edit | delete | rename | download ] [FILE] iprinit [ edit | delete | rename | download ] [FILE] iprsos [ edit | delete | rename | download ] [FILE] iprupdate [ edit | delete | rename | download ] [FILE] ipsec [ edit | delete | rename | download ] [FILE] ipset [ edit | delete | rename | download ] [FILE] iptables [ edit | delete | rename | download ] [FILE] iptables-apply [ edit | delete | rename | download ] [FILE] iptables-restore [ edit | delete | rename | download ] [FILE] iptables-restore-translate [ edit | delete | rename | download ] [FILE] iptables-save [ edit | delete | rename | download ] [FILE] iptables-translate [ edit | delete | rename | download ] [FILE] iptstate [ edit | delete | rename | download ] [FILE] iptunnel [ edit | delete | rename | download ] [FILE] irqbalance [ edit | delete | rename | download ] [FILE] irqbalance-ui [ edit | delete | rename | download ] [FILE] isadump [ edit | delete | rename | download ] [FILE] isaset [ edit | delete | rename | download ] [FILE] isc-hmac-fixup [ edit | delete | rename | download ] [FILE] iscsi-iname [ edit | delete | rename | download ] [FILE] iscsiadm [ edit | delete | rename | download ] [FILE] iscsid [ edit | delete | rename | download ] [FILE] iscsistart [ edit | delete | rename | download ] [FILE] iscsiuio [ edit | delete | rename | download ] [FILE] isolatectl [ edit | delete | rename | download ] [FILE] kexec [ edit | delete | rename | download ] [FILE] key.dns_resolver [ edit | delete | rename | download ] [FILE] kill_php_script [ edit | delete | rename | download ] [FILE] kpartx [ edit | delete | rename | download ] [FILE] kpatch [ edit | delete | rename | download ] [FILE] lchage [ edit | delete | rename | download ] [FILE] ldattach [ edit | delete | rename | download ] [FILE] ldconfig [ edit | delete | rename | download ] [FILE] ledctl [ edit | delete | rename | download ] [FILE] ledmon [ edit | delete | rename | download ] [FILE] lfd [ edit | delete | rename | download ] [FILE] lgroupadd [ edit | delete | rename | download ] [FILE] lgroupdel [ edit | delete | rename | download ] [FILE] lgroupmod [ edit | delete | rename | download ] [FILE] lid [ edit | delete | rename | download ] [FILE] lnewusers [ edit | delete | rename | download ] [FILE] lnstat [ edit | delete | rename | download ] [FILE] load_policy [ edit | delete | rename | download ] [FILE] logrotate [ edit | delete | rename | download ] [FILE] logsave [ edit | delete | rename | download ] [FILE] losetup [ edit | delete | rename | download ] [FILE] lpasswd [ edit | delete | rename | download ] [FILE] lshw [ edit | delete | rename | download ] [FILE] lsmod [ edit | delete | rename | download ] [FILE] lspci [ edit | delete | rename | download ] [FILE] luseradd [ edit | delete | rename | download ] [FILE] luserdel [ edit | delete | rename | download ] [FILE] lusermod [ edit | delete | rename | download ] [FILE] lvchange [ edit | delete | rename | download ] [FILE] lvconvert [ edit | delete | rename | download ] [FILE] lvcreate [ edit | delete | rename | download ] [FILE] lvdctl [ edit | delete | rename | download ] [FILE] lvdisplay [ edit | delete | rename | download ] [FILE] lve-bursting-cleanup [ edit | delete | rename | download ] [FILE] lve-bursting-cleanup.python [ edit | delete | rename | download ] [FILE] lve-bursting-info [ edit | delete | rename | download ] [FILE] lve-bursting-info.python [ edit | delete | rename | download ] [FILE] lve-create-db [ edit | delete | rename | download ] [FILE] lve-create-db.python [ edit | delete | rename | download ] [FILE] lve-read-snapshot [ edit | delete | rename | download ] [FILE] lve-read-snapshot.python [ edit | delete | rename | download ] [FILE] lve_ns_setup [ edit | delete | rename | download ] [FILE] lve_root_setup [ edit | delete | rename | download ] [FILE] lvechart [ edit | delete | rename | download ] [FILE] lvechart.python [ edit | delete | rename | download ] [FILE] lvectl [ edit | delete | rename | download ] [FILE] lveinfo [ edit | delete | rename | download ] [FILE] lveinfo.python [ edit | delete | rename | download ] [FILE] lveps [ edit | delete | rename | download ] [FILE] lvestats-burstwatcher [ edit | delete | rename | download ] [FILE] lvestats-burstwatcher.python [ edit | delete | rename | download ] [FILE] lvestats-server [ edit | delete | rename | download ] [FILE] lvestats-server.python [ edit | delete | rename | download ] [FILE] lvetop [ edit | delete | rename | download ] [FILE] lvextend [ edit | delete | rename | download ] [FILE] lvm [ edit | delete | rename | download ] [FILE] lvm_import_vdo [ edit | delete | rename | download ] [FILE] lvmconfig [ edit | delete | rename | download ] [FILE] lvmdevices [ edit | delete | rename | download ] [FILE] lvmdiskscan [ edit | delete | rename | download ] [FILE] lvmdump [ edit | delete | rename | download ] [FILE] lvmpolld [ edit | delete | rename | download ] [FILE] lvmsadc [ edit | delete | rename | download ] [FILE] lvmsar [ edit | delete | rename | download ] [FILE] lvreduce [ edit | delete | rename | download ] [FILE] lvremove [ edit | delete | rename | download ] [FILE] lvrename [ edit | delete | rename | download ] [FILE] lvresize [ edit | delete | rename | download ] [FILE] lvs [ edit | delete | rename | download ] [FILE] lvscan [ edit | delete | rename | download ] [FILE] lwresd [ edit | delete | rename | download ] [FILE] makedumpfile [ edit | delete | rename | download ] [FILE] mariadbd [ edit | delete | rename | download ] [FILE] matchpathcon [ edit | delete | rename | download ] [FILE] mcelog [ edit | delete | rename | download ] [FILE] mdadm [ edit | delete | rename | download ] [FILE] mdmon [ edit | delete | rename | download ] [FILE] mii-diag [ edit | delete | rename | download ] [FILE] mii-tool [ edit | delete | rename | download ] [FILE] mkdict [ edit | delete | rename | download ] [FILE] mkdosfs [ edit | delete | rename | download ] [FILE] mkdumprd [ edit | delete | rename | download ] [FILE] mke2fs [ edit | delete | rename | download ] [FILE] mkfadumprd [ edit | delete | rename | download ] [FILE] mkfs [ edit | delete | rename | download ] [FILE] mkfs.cramfs [ edit | delete | rename | download ] [FILE] mkfs.ext2 [ edit | delete | rename | download ] [FILE] mkfs.ext3 [ edit | delete | rename | download ] [FILE] mkfs.ext4 [ edit | delete | rename | download ] [FILE] mkfs.fat [ edit | delete | rename | download ] [FILE] mkfs.minix [ edit | delete | rename | download ] [FILE] mkfs.msdos [ edit | delete | rename | download ] [FILE] mkfs.vfat [ edit | delete | rename | download ] [FILE] mkfs.xfs [ edit | delete | rename | download ] [FILE] mkhomedir_helper [ edit | delete | rename | download ] [FILE] mklost+found [ edit | delete | rename | download ] [FILE] mksquashfs [ edit | delete | rename | download ] [FILE] mkswap [ edit | delete | rename | download ] [FILE] modinfo [ edit | delete | rename | download ] [FILE] modprobe [ edit | delete | rename | download ] [FILE] modsec-sdbm-util [ edit | delete | rename | download ] [FILE] mount.cifs [ edit | delete | rename | download ] [FILE] mount.fuse3 [ edit | delete | rename | download ] [FILE] mount.nfs [ edit | delete | rename | download ] [FILE] mount.nfs4 [ edit | delete | rename | download ] [FILE] mount.smb3 [ edit | delete | rename | download ] [FILE] mountstats [ edit | delete | rename | download ] [FILE] mpathconf [ edit | delete | rename | download ] [FILE] mpathpersist [ edit | delete | rename | download ] [FILE] mtr [ edit | delete | rename | download ] [FILE] mtr-packet [ edit | delete | rename | download ] [FILE] multipath [ edit | delete | rename | download ] [FILE] multipathd [ edit | delete | rename | download ] [FILE] mysqld [ edit | delete | rename | download ] [FILE] named [ edit | delete | rename | download ] [FILE] named-checkconf [ edit | delete | rename | download ] [FILE] named-checkzone [ edit | delete | rename | download ] [FILE] named-compilezone [ edit | delete | rename | download ] [FILE] named-journalprint [ edit | delete | rename | download ] [FILE] nameif [ edit | delete | rename | download ] [FILE] newusers [ edit | delete | rename | download ] [FILE] nfsconf [ edit | delete | rename | download ] [FILE] nfsconvert [ edit | delete | rename | download ] [FILE] nfsdcld [ edit | delete | rename | download ] [FILE] nfsdclddb [ edit | delete | rename | download ] [FILE] nfsdclnts [ edit | delete | rename | download ] [FILE] nfsdcltrack [ edit | delete | rename | download ] [FILE] nfsidmap [ edit | delete | rename | download ] [FILE] nfsiostat [ edit | delete | rename | download ] [FILE] nfsref [ edit | delete | rename | download ] [FILE] nfsstat [ edit | delete | rename | download ] [FILE] nft [ edit | delete | rename | download ] [FILE] nologin [ edit | delete | rename | download ] [FILE] normal-to-hybrid [ edit | delete | rename | download ] [FILE] nscd [ edit | delete | rename | download ] [FILE] nsec3hash [ edit | delete | rename | download ] [FILE] nstat [ edit | delete | rename | download ] [FILE] nvme [ edit | delete | rename | download ] [FILE] oddjobd [ edit | delete | rename | download ] [FILE] ownership [ edit | delete | rename | download ] [FILE] packer [ edit | delete | rename | download ] [FILE] pam_console_apply [ edit | delete | rename | download ] [FILE] pam_imunify_daemon.bin [ edit | delete | rename | download ] [FILE] pam_timestamp_check [ edit | delete | rename | download ] [FILE] paperconfig [ edit | delete | rename | download ] [FILE] parted [ edit | delete | rename | download ] [FILE] partprobe [ edit | delete | rename | download ] [FILE] partx [ edit | delete | rename | download ] [FILE] pdata_tools [ edit | delete | rename | download ] [FILE] pdns_server [ edit | delete | rename | download ] [FILE] perfquery [ edit | delete | rename | download ] [FILE] pflogsumm [ edit | delete | rename | download ] [FILE] pidof [ edit | delete | rename | download ] [FILE] ping [ edit | delete | rename | download ] [FILE] ping6 [ edit | delete | rename | download ] [FILE] pivot_root [ edit | delete | rename | download ] [FILE] plipconfig [ edit | delete | rename | download ] [FILE] pluginviewer [ edit | delete | rename | download ] [FILE] plymouth-set-default-theme [ edit | delete | rename | download ] [FILE] plymouthd [ edit | delete | rename | download ] [FILE] poweroff [ edit | delete | rename | download ] [FILE] powertop [ edit | delete | rename | download ] [FILE] processpaneluserspackages [ edit | delete | rename | download ] [FILE] proxyexec [ edit | delete | rename | download ] [FILE] pure-authd [ edit | delete | rename | download ] [FILE] pure-certd [ edit | delete | rename | download ] [FILE] pure-config.pl [ edit | delete | rename | download ] [FILE] pure-ftpd [ edit | delete | rename | download ] [FILE] pure-ftpwho [ edit | delete | rename | download ] [FILE] pure-mrtginfo [ edit | delete | rename | download ] [FILE] pure-quotacheck [ edit | delete | rename | download ] [FILE] pure-uploadscript [ edit | delete | rename | download ] [FILE] pvchange [ edit | delete | rename | download ] [FILE] pvck [ edit | delete | rename | download ] [FILE] pvcreate [ edit | delete | rename | download ] [FILE] pvdisplay [ edit | delete | rename | download ] [FILE] pvmove [ edit | delete | rename | download ] [FILE] pvremove [ edit | delete | rename | download ] [FILE] pvresize [ edit | delete | rename | download ] [FILE] pvs [ edit | delete | rename | download ] [FILE] pvscan [ edit | delete | rename | download ] [FILE] pwck [ edit | delete | rename | download ] [FILE] pwconv [ edit | delete | rename | download ] [FILE] pwhistory_helper [ edit | delete | rename | download ] [FILE] pwmconfig [ edit | delete | rename | download ] [FILE] pwunconv [ edit | delete | rename | download ] [FILE] qshape [ edit | delete | rename | download ] [FILE] quot [ edit | delete | rename | download ] [FILE] quotacheck [ edit | delete | rename | download ] [FILE] quotaoff [ edit | delete | rename | download ] [FILE] quotaon [ edit | delete | rename | download ] [FILE] quotastats [ edit | delete | rename | download ] [FILE] raid-check [ edit | delete | rename | download ] [FILE] ras-mc-ctl [ edit | delete | rename | download ] [FILE] rasdaemon [ edit | delete | rename | download ] [FILE] rdisc [ edit | delete | rename | download ] [FILE] rdma [ edit | delete | rename | download ] [FILE] rdma-ndd [ edit | delete | rename | download ] [FILE] readprofile [ edit | delete | rename | download ] [FILE] realm [ edit | delete | rename | download ] [FILE] reboot [ edit | delete | rename | download ] [FILE] repquota [ edit | delete | rename | download ] [FILE] request-key [ edit | delete | rename | download ] [FILE] resellerbackup [ edit | delete | rename | download ] [FILE] resize2fs [ edit | delete | rename | download ] [FILE] resizepart [ edit | delete | rename | download ] [FILE] resolvconf [ edit | delete | rename | download ] [FILE] restorecon [ edit | delete | rename | download ] [FILE] restorecon_xattr [ edit | delete | rename | download ] [FILE] rfkill [ edit | delete | rename | download ] [FILE] rhn_check [ edit | delete | rename | download ] [FILE] rhn_check-3.6 [ edit | delete | rename | download ] [FILE] rhnreg_ks [ edit | delete | rename | download ] [FILE] rhnreg_ks-3.6 [ edit | delete | rename | download ] [FILE] rmmod [ edit | delete | rename | download ] [FILE] rndc [ edit | delete | rename | download ] [FILE] rndc-confgen [ edit | delete | rename | download ] [FILE] rotatelogs [ edit | delete | rename | download ] [FILE] route [ edit | delete | rename | download ] [FILE] rpc.gssd [ edit | delete | rename | download ] [FILE] rpc.idmapd [ edit | delete | rename | download ] [FILE] rpc.mountd [ edit | delete | rename | download ] [FILE] rpc.nfsd [ edit | delete | rename | download ] [FILE] rpc.statd [ edit | delete | rename | download ] [FILE] rpcbind [ edit | delete | rename | download ] [FILE] rpcctl [ edit | delete | rename | download ] [FILE] rpcdebug [ edit | delete | rename | download ] [FILE] rpcinfo [ edit | delete | rename | download ] [FILE] rsyslogd [ edit | delete | rename | download ] [FILE] rtacct [ edit | delete | rename | download ] [FILE] rtcwake [ edit | delete | rename | download ] [FILE] rtmon [ edit | delete | rename | download ] [FILE] rtstat [ edit | delete | rename | download ] [FILE] runlevel [ edit | delete | rename | download ] [FILE] runq [ edit | delete | rename | download ] [FILE] runuser [ edit | delete | rename | download ] [FILE] sa [ edit | delete | rename | download ] [FILE] saquery [ edit | delete | rename | download ] [FILE] sasl2-shared-mechlist [ edit | delete | rename | download ] [FILE] saslauthd [ edit | delete | rename | download ] [FILE] sasldblistusers2 [ edit | delete | rename | download ] [FILE] saslpasswd2 [ edit | delete | rename | download ] [FILE] sedispatch [ edit | delete | rename | download ] [FILE] sefcontext_compile [ edit | delete | rename | download ] [FILE] selabel_digest [ edit | delete | rename | download ] [FILE] selabel_lookup [ edit | delete | rename | download ] [FILE] selabel_lookup_best_match [ edit | delete | rename | download ] [FILE] selabel_partial_match [ edit | delete | rename | download ] [FILE] selinux_check_access [ edit | delete | rename | download ] [FILE] selinuxconlist [ edit | delete | rename | download ] [FILE] selinuxdefcon [ edit | delete | rename | download ] [FILE] selinuxenabled [ edit | delete | rename | download ] [FILE] selinuxexeccon [ edit | delete | rename | download ] [FILE] semanage [ edit | delete | rename | download ] [FILE] semodule [ edit | delete | rename | download ] [FILE] sendmail [ edit | delete | rename | download ] [FILE] sensors-detect [ edit | delete | rename | download ] [FILE] service [ edit | delete | rename | download ] [FILE] sestatus [ edit | delete | rename | download ] [FILE] setcap [ edit | delete | rename | download ] [FILE] setenforce [ edit | delete | rename | download ] [FILE] setfiles [ edit | delete | rename | download ] [FILE] setpci [ edit | delete | rename | download ] [FILE] setquota [ edit | delete | rename | download ] [FILE] setroubleshootd [ edit | delete | rename | download ] [FILE] setsebool [ edit | delete | rename | download ] [FILE] sfdisk [ edit | delete | rename | download ] [FILE] sgdisk [ edit | delete | rename | download ] [FILE] sharedbackup [ edit | delete | rename | download ] [FILE] showmount [ edit | delete | rename | download ] [FILE] shutdown [ edit | delete | rename | download ] [FILE] sim_server [ edit | delete | rename | download ] [FILE] skdump [ edit | delete | rename | download ] [FILE] sktest [ edit | delete | rename | download ] [FILE] slattach [ edit | delete | rename | download ] [FILE] sm-notify [ edit | delete | rename | download ] [FILE] smartctl [ edit | delete | rename | download ] [FILE] smartd [ edit | delete | rename | download ] [FILE] sminfo [ edit | delete | rename | download ] [FILE] smpdump [ edit | delete | rename | download ] [FILE] smpquery [ edit | delete | rename | download ] [FILE] sos [ edit | delete | rename | download ] [FILE] sos-collector [ edit | delete | rename | download ] [FILE] sosreport [ edit | delete | rename | download ] [FILE] ss [ edit | delete | rename | download ] [FILE] sshd [ edit | delete | rename | download ] [FILE] sss_cache [ edit | delete | rename | download ] [FILE] sssd [ edit | delete | rename | download ] [FILE] start-statd [ edit | delete | rename | download ] [FILE] start-stop-daemon [ edit | delete | rename | download ] [FILE] suexec [ edit | delete | rename | download ] [FILE] sulogin [ edit | delete | rename | download ] [FILE] suphp [ edit | delete | rename | download ] [FILE] sw-engine-fpm [ edit | delete | rename | download ] [FILE] swaplabel [ edit | delete | rename | download ] [FILE] swapoff [ edit | delete | rename | download ] [FILE] swapon [ edit | delete | rename | download ] [FILE] switch_root [ edit | delete | rename | download ] [FILE] sysctl [ edit | delete | rename | download ] [FILE] syspurpose [ edit | delete | rename | download ] [FILE] tcpdump [ edit | delete | rename | download ] [FILE] tcpslice [ edit | delete | rename | download ] [FILE] tcsd [ edit | delete | rename | download ] [FILE] telinit [ edit | delete | rename | download ] [FILE] testsaslauthd [ edit | delete | rename | download ] [FILE] thin_check [ edit | delete | rename | download ] [FILE] thin_delta [ edit | delete | rename | download ] [FILE] thin_dump [ edit | delete | rename | download ] [FILE] thin_ls [ edit | delete | rename | download ] [FILE] thin_metadata_pack [ edit | delete | rename | download ] [FILE] thin_metadata_size [ edit | delete | rename | download ] [FILE] thin_metadata_unpack [ edit | delete | rename | download ] [FILE] thin_repair [ edit | delete | rename | download ] [FILE] thin_restore [ edit | delete | rename | download ] [FILE] thin_rmap [ edit | delete | rename | download ] [FILE] thin_trim [ edit | delete | rename | download ] [FILE] timedatex [ edit | delete | rename | download ] [FILE] tipc [ edit | delete | rename | download ] [FILE] tmpwatch [ edit | delete | rename | download ] [FILE] tracepath [ edit | delete | rename | download ] [FILE] tracepath6 [ edit | delete | rename | download ] [FILE] tsig-keygen [ edit | delete | rename | download ] [FILE] tune2fs [ edit | delete | rename | download ] [FILE] tuned [ edit | delete | rename | download ] [FILE] tuned-adm [ edit | delete | rename | download ] [FILE] udevadm [ edit | delete | rename | download ] [FILE] umount.nfs [ edit | delete | rename | download ] [FILE] umount.nfs4 [ edit | delete | rename | download ] [FILE] umount.udisks2 [ edit | delete | rename | download ] [FILE] unbound-anchor [ edit | delete | rename | download ] [FILE] unix_chkpwd [ edit | delete | rename | download ] [FILE] unix_update [ edit | delete | rename | download ] [FILE] unsquashfs [ edit | delete | rename | download ] [FILE] update-alternatives [ edit | delete | rename | download ] [FILE] update-pciids [ edit | delete | rename | download ] [FILE] update-smart-drivedb [ edit | delete | rename | download ] [FILE] usb_modeswitch [ edit | delete | rename | download ] [FILE] usb_modeswitch_dispatcher [ edit | delete | rename | download ] [FILE] useradd [ edit | delete | rename | download ] [FILE] userdel [ edit | delete | rename | download ] [FILE] userhelper [ edit | delete | rename | download ] [FILE] usermod [ edit | delete | rename | download ] [FILE] usernetctl [ edit | delete | rename | download ] [FILE] uuserver [ edit | delete | rename | download ] [FILE] vdpa [ edit | delete | rename | download ] [FILE] vendstat [ edit | delete | rename | download ] [FILE] vgcfgbackup [ edit | delete | rename | download ] [FILE] vgcfgrestore [ edit | delete | rename | download ] [FILE] vgchange [ edit | delete | rename | download ] [FILE] vgck [ edit | delete | rename | download ] [FILE] vgconvert [ edit | delete | rename | download ] [FILE] vgcreate [ edit | delete | rename | download ] [FILE] vgdisplay [ edit | delete | rename | download ] [FILE] vgexport [ edit | delete | rename | download ] [FILE] vgextend [ edit | delete | rename | download ] [FILE] vgimport [ edit | delete | rename | download ] [FILE] vgimportclone [ edit | delete | rename | download ] [FILE] vgimportdevices [ edit | delete | rename | download ] [FILE] vgmerge [ edit | delete | rename | download ] [FILE] vgmknodes [ edit | delete | rename | download ] [FILE] vgreduce [ edit | delete | rename | download ] [FILE] vgremove [ edit | delete | rename | download ] [FILE] vgrename [ edit | delete | rename | download ] [FILE] vgs [ edit | delete | rename | download ] [FILE] vgscan [ edit | delete | rename | download ] [FILE] vgsplit [ edit | delete | rename | download ] [FILE] vigr [ edit | delete | rename | download ] [FILE] vipw [ edit | delete | rename | download ] [FILE] virt-what [ edit | delete | rename | download ] [FILE] visudo [ edit | delete | rename | download ] [FILE] vmcore-dmesg [ edit | delete | rename | download ] [FILE] vpddecode [ edit | delete | rename | download ] [FILE] wafd_imunify_daemon [ edit | delete | rename | download ] [FILE] weak-modules [ edit | delete | rename | download ] [FILE] whmapi0 [ edit | delete | rename | download ] [FILE] whmapi1 [ edit | delete | rename | download ] [FILE] whmlogin [ edit | delete | rename | download ] [FILE] wipefs [ edit | delete | rename | download ] [FILE] xfs_admin [ edit | delete | rename | download ] [FILE] xfs_bmap [ edit | delete | rename | download ] [FILE] xfs_copy [ edit | delete | rename | download ] [FILE] xfs_db [ edit | delete | rename | download ] [FILE] xfs_estimate [ edit | delete | rename | download ] [FILE] xfs_freeze [ edit | delete | rename | download ] [FILE] xfs_fsr [ edit | delete | rename | download ] [FILE] xfs_growfs [ edit | delete | rename | download ] [FILE] xfs_info [ edit | delete | rename | download ] [FILE] xfs_io [ edit | delete | rename | download ] [FILE] xfs_logprint [ edit | delete | rename | download ] [FILE] xfs_mdrestore [ edit | delete | rename | download ] [FILE] xfs_metadump [ edit | delete | rename | download ] [FILE] xfs_mkfile [ edit | delete | rename | download ] [FILE] xfs_ncheck [ edit | delete | rename | download ] [FILE] xfs_quota [ edit | delete | rename | download ] [FILE] xfs_repair [ edit | delete | rename | download ] [FILE] xfs_rtcp [ edit | delete | rename | download ] [FILE] xfs_spaceman [ edit | delete | rename | download ] [FILE] xfsdump [ edit | delete | rename | download ] [FILE] xfsinvutil [ edit | delete | rename | download ] [FILE] xfsrestore [ edit | delete | rename | download ] [FILE] xqmstats [ edit | delete | rename | download ] [FILE] xtables-monitor [ edit | delete | rename | download ] [FILE] xtables-nft-multi [ edit | delete | rename | download ] [FILE] zdump [ edit | delete | rename | download ] [FILE] zic [ edit | delete | rename | download ] [FILE] zramctl [ edit | delete | rename | download ] Viewing: /usr/sbin/lvm_import_vdo #!/bin/bash # # Copyright (C) 2021-2023 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions # of the GNU General Public License v.2. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # Author: Zdenek Kabelac <zkabelac at redhat.com> # # Script for importing VDO volumes to lvm2 managed VDO LVs # # Needed utilities: # lvm, dmsetup, # vdo, # grep, awk, sed, blockdev, readlink, stat, mkdir, truncate # # Conversion is using 'vdo convert' support from VDO manager to move # existing VDO header by 2M which makes space to place in PV header # and VG metadata area, and then create VDOPOOL LV and VDO LV in such VG. # set -euE -o pipefail TOOL=lvm_import_vdo IMPORT_NAME="VDO_${TOOL}_${RANDOM}$$" test ${#IMPORT_NAME} -lt 100 || error "Random name \"$IMPORT_NAME\" is too long!" TEMPDIR="${TMPDIR:-/tmp}/$IMPORT_NAME" _SAVEPATH=$PATH PATH="/sbin:/usr/sbin:/bin:/usr/sbin:$PATH" # Set of trapped signals declare -a SIGNALS=("HUP" "INT" "QUIT" "ABRT" "TERM" "EXIT") # user may override lvm location by setting LVM_BINARY LVM=${LVM_BINARY:-lvm} VDO=${VDO_BINARY:-vdo} BLOCKDEV="blockdev" LOSETUP="losetup" READLINK="readlink" READLINK_E="-e" STAT="stat" MKDIR="mkdir" TRUNCATE="truncate" DMSETUP="dmsetup" DM_DEV_DIR="${DM_DEV_DIR:-/dev}" DM_UUID_PREFIX="${DM_UUID_PREFIX:-}" DM_VG_NAME= DM_LV_NAME= DEFAULT_VDO_CONFIG="/etc/vdoconf.yml" # Default location of vdo's manager config file VDO_CONFIG=${VDO_CONFIG:-} # can be overridden with --vdo-config VDO_CONFIG_RESTORE= VDOCONF= test -n "$VDO_CONFIG" && VDOCONF="-f $VDO_CONFIG" DEVICE= VGNAME= LVNAME= DEVMAJOR=0 DEVMINOR=0 PROMPTING= USE_VDO_DM_SNAPSHOT="--yes" VDO_DM_SNAPSHOT_NAME= VDO_DM_SNAPSHOT_DEVICE= VDO_SNAPSHOT_LOOP= VDO_INCONSISTENT= DRY=0 VERB= FORCE= YES= ABORT_AFTER_VDO_CONVERT=0 VDO_ALLOCATION_PARAMS= # default name for converted VG and its VDO LV DEFAULT_NAME="vdovg/vdolvol" NAME="" # predefine empty vdo_ackThreads= vdo_bioRotationInterval= vdo_bioThreads= vdo_blockMapCacheSize= vdo_blockMapPeriod= vdo_compression= vdo_cpuThreads= vdo_deduplication= vdo_hashZoneThreads= vdo_indexMemory= vdo_indexSparse= vdo_logicalBlockSize= vdo_logicalThreads= vdo_maxDiscardSize= vdo_physicalThreads= vdo_slabSize= vdo_writePolicy= # help message tool_usage() { echo "${TOOL}: Utility to convert VDO volume to VDO LV." echo echo " ${TOOL} [options] <vdo_device_path>" echo echo " Options:" echo " -f | --force Bypass sanity checks" echo " -h | --help Show this help message" echo " -n | --name Specifies VG/LV name for converted VDO volume" echo " -v | --verbose Be verbose" echo " -y | --yes Answer \"yes\" at any prompts" echo " --dry-run Print verbosely commands without running them" echo " --no-snapshot Do not use snapshot for converted VDO device" echo " --uuid-prefix Prefix for DM snapshot uuid" echo " --vdo-config Configuration file for VDO manager" exit } verbose() { test -z "$VERB" || echo "$TOOL:" "$@" } # Support multi-line error messages error() { for i in "$@" ; do echo "$TOOL: $i" >&2 done return 1 } warn() { echo "$TOOL: WARNING: $i" >&2 } dry() { if [ "$DRY" -ne 0 ]; then verbose "Dry execution" "$@" return 0 fi verbose "Executing" "$@" "$@" } cleanup() { RC=$? # Return code + 128 of the last command eg INT=2 + 128 -> 130 trap '' "${SIGNALS[@]}" # mute trap for all signals to not interrupt cleanup() on any next signal [ -z "$PROMPTING" ] || echo "No" [ -e "$VDO_CONFIG_RESTORE" ] && { dry cp -a "$VDO_CONFIG_RESTORE" "${VDO_CONFIG:-"$DEFAULT_VDO_CONFIG"}" || true ; } if [ -n "$VDO_DM_SNAPSHOT_NAME" ]; then dry "$LVM" vgchange -an --devices "$VDO_DM_SNAPSHOT_DEVICE" "$VGNAME" &>/dev/null || true for i in {1..20} ; do [ "$(dry "$DMSETUP" info --noheading -co open "$VDO_DM_SNAPSHOT_NAME")" = "0" ] && break sleep .1 done dry "$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" &>/dev/null || true fi [ -n "$VDO_SNAPSHOT_LOOP" ] && { dry "$LOSETUP" -d "$VDO_SNAPSHOT_LOOP" || true ; } [ -z "$VDO_INCONSISTENT" ] || echo "$TOOL: VDO volume import process exited unexpectedly!" >&2 rm -rf "$TEMPDIR" || true exit "$RC" } # Create snapshot target like for persistent snapshot with 16KiB chunksize snapshot_target_line_() { echo "0 $("$BLOCKDEV" --getsize "$1") snapshot${3:-} $1 $2 P 32" } snapshot_create_() { VDO_DM_SNAPSHOT_NAME="${IMPORT_NAME}_snap" local file="$TEMPDIR/$VDO_DM_SNAPSHOT_NAME" # TODO: maybe use ramdisk via 'brd' device ?) "$TRUNCATE" -s 20M "$file" VDO_SNAPSHOT_LOOP=$("$LOSETUP" -f --show "$file") "$DMSETUP" create "$VDO_DM_SNAPSHOT_NAME" -u "${DM_UUID_PREFIX}${VDO_DM_SNAPSHOT_NAME}-priv" --table "$(snapshot_target_line_ "$1" "$VDO_SNAPSHOT_LOOP")" VDO_DM_SNAPSHOT_DEVICE="$DM_DEV_DIR/mapper/$VDO_DM_SNAPSHOT_NAME" verbose "Snapshot of VDO device $1 created: $VDO_DM_SNAPSHOT_DEVICE." } snapshot_merge_() { local status local initial_status initial_status=( $("$DMSETUP" status "$VDO_DM_SNAPSHOT_NAME") ) "$DMSETUP" reload "$VDO_DM_SNAPSHOT_NAME" --table "$(snapshot_target_line_ "$1" "$VDO_SNAPSHOT_LOOP" -merge)" "$DMSETUP" suspend "$VDO_DM_SNAPSHOT_NAME" || { error "ABORTING: Failed to initialize snapshot merge! Origin volume is unchanged." } verbose "Merging converted VDO volume \"$VDO_DM_SNAPSHOT_NAME\"." VDO_INCONSISTENT=1 # Running merging "$DMSETUP" resume "$VDO_DM_SNAPSHOT_NAME" #du -h "$TEMPDIR/$VDO_DM_SNAPSHOT_NAME" # Loop for a while, till the snapshot is merged. # Should be nearly instantaneous. # FIXME: Recovery when something prevents merging is hard for i in $(seq 1 20) ; do status=( $("$DMSETUP" status "$VDO_DM_SNAPSHOT_NAME") ) # Check if merging is finished [ "${status[3]%/*}" = "${status[4]}" ] && break # Wait a bit and retry sleep .2 done if [ "${status[3]%/*}" != "${status[4]}" ]; then # FIXME: Now what shall we do ??? Help.... # Keep snapshot in DM table for possible analysis... VDO_DM_SNAPSHOT_NAME= VDO_SNAPSHOT_LOOP= echo "$TOOL: Initial snapshot status ${initial_status[*]}" echo "$TOOL: Failing merge snapshot status ${status[*]}" error "ABORTING: Snapshot failed to merge! (Administrator required...)" fi VDO_INCONSISTENT= VDO_CONFIG_RESTORE= verbose "Converted VDO volume is merged to \"$1\"." "$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" || { sleep 1 # sleep and retry once more "$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" || { error "ABORTING: Cannot remove snapshot $VDO_DM_SNAPSHOT_NAME! (check volume autoactivation...)" } } VDO_DM_SNAPSHOT_NAME= "$LOSETUP" -d "$VDO_SNAPSHOT_LOOP" VDO_SNAPSHOT_LOOP= } get_enabled_value_() { case "$1" in enabled) echo "1" ;; *) echo "0" ;; esac } get_kb_size_with_unit_() { case "$1" in *[kK]) echo $(( ${1%[kK]} )) ;; *[mM]) echo $(( ${1%[mM]} * 1024 )) ;; *[gG]) echo $(( ${1%[gG]} * 1024 * 1024 )) ;; *[tT]) echo $(( ${1%[tT]} * 1024 * 1024 * 1024 )) ;; *[pP]) echo $(( ${1%[pP]} * 1024 * 1024 * 1024 * 1024 )) ;; esac } # Figure out largest possible extent size usable for VG # $1 physical size # $2 logical size get_largest_extent_size_() { local max=4 local i local d for i in 8 16 32 64 128 256 512 1024 2048 4096 ; do d=$(( $1 / i )) [ $(( d * i )) -eq "$1" ] || break d=$(( $2 / i )) [ $(( d * i )) -eq "$2" ] || break max=$i done echo "$max" } # detect LV on the given device # deference device name if it is symbolic link detect_lv_() { local DEVICE=$1 local SYSVOLUME local MAJORMINOR DEVICE=${1/#"${DM_DEV_DIR}/"/} DEVICE=$("$READLINK" $READLINK_E "$DM_DEV_DIR/$DEVICE" || true) [ -n "$DEVICE" ] || error "Readlink cannot access device \"$1\"." RDEVICE=$DEVICE case "$RDEVICE" in # hardcoded /dev since udev does not create these entries elsewhere /dev/dm-[0-9]*) read -r <"/sys/block/${RDEVICE#/dev/}/dm/name" SYSVOLUME 2>&1 && DEVICE="$DM_DEV_DIR/mapper/$SYSVOLUME" read -r <"/sys/block/${RDEVICE#/dev/}/dev" MAJORMINOR 2>&1 || error "Cannot get major:minor for \"$DEVICE\"." DEVMAJOR=${MAJORMINOR%%:*} DEVMINOR=${MAJORMINOR##*:} ;; *) RSTAT=$("$STAT" --format "DEVMAJOR=\$((0x%t)) DEVMINOR=\$((0x%T))" "$RDEVICE" || true) [ -n "$RSTAT" ] || error "Cannot get major:minor for \"$DEVICE\"." eval "$RSTAT" ;; esac [ "$DEVMAJOR" != "$(grep device-mapper /proc/devices | cut -f1 -d' ')" ] && return DEV="$("$DMSETUP" info -c -j "$DEVMAJOR" -m "$DEVMINOR" -o uuid,name --noheadings --nameprefixes --separator ' ')" case "$DEV" in Device*) ;; # no devices *) eval "$DEV" ;; esac } # parse yaml config files into 'prefix_yaml_part_names=("value")' strings parse_yaml_() { local yaml_file=$1 local prefix=$2 local s local w local fs s='[[:space:]]*' w='[a-zA-Z0-9_.-]*' fs="$(echo @|tr @ '\034')" ( sed -ne '/^--/s|--||g; s|\"|\\\"|g; s/[[:space:]]*$//g;' \ -e 's/\$/\\\$/g' \ -e "/#.*[\"\']/!s| #.*||g; /^#/s|#.*||g;" \ -e "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \ -e "s|^\($s\)\($w\)${s}[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" | awk -F"$fs" '{ indent = length($1)/2; if (length($2) == 0) { conj[indent]="+";} else {conj[indent]="";} vname[indent] = $2; for (i in vname) {if (i > indent) {delete vname[i]}} if (length($3) > 0) { vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")} printf("%s%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, conj[indent-1], $3); } }' | sed -e 's/_=/+=/g' | awk 'BEGIN { FS="="; OFS="=" } /(-|\.).*=/ { gsub("-|\\.", "_", $1) } { print }' ) < "$yaml_file" } # # Convert VDO volume on LV to VDOPool within this VG # # This conversion requires the size of VDO virtual volume has to be expressed in the VG's extent size. # Currently this enforces a user to reduce the VG extent size to the smaller size (up to 4KiB). # # TODO: We may eventually relax this condition just like we are doing rounding for convert_non_lv_() # Let's if there would be any singly user requiring this feature. # It may allow to better use larger VDO volume size (in TiB ranges). # convert_lv_() { local vdo_logicalSize=$1 local extent_size local pvfree pvfree=$("$LVM" lvs -o size --units b --nosuffix --noheadings "$DM_VG_NAME/$DM_LV_NAME") pvfree=$(( pvfree / 1024 )) # to KiB # select largest possible extent size that can exactly express both sizes extent_size=$(get_largest_extent_size_ "$pvfree" "$vdo_logicalSize") # validate existing VG extent_size can express virtual VDO size vg_extent_size=$("$LVM" vgs -o vg_extent_size --units b --nosuffix --noheadings "$VGNAME") vg_extent_size=$(( vg_extent_size / 1024 )) [ "$vg_extent_size" -le "$extent_size" ] || { error "Please vgchange extent_size to at most $extent_size KiB or extend and align virtual size of VDO device on $vg_extent_size KiB before retrying conversion." } verbose "Renaming existing LV to be used as _vdata volume for VDO pool LV." dry "$LVM" lvrename $YES $VERB "$VGNAME/$DM_LV_NAME" "$VGNAME/${LVNAME}_vpool" || { error "Rename of LV \"$VGNAME/$DM_LV_NAME\" failed, while VDO header has been already moved!" } verbose "Converting to VDO pool." dry "$LVM" lvconvert $YES $VERB $FORCE --config "$VDO_ALLOCATION_PARAMS" -Zn -V "${vdo_logicalSize}k" -n "$LVNAME" --type vdo-pool "$VGNAME/${LVNAME}_vpool" verbose "Removing now unused VDO entry from VDO configuration." dry "$VDO" remove $VDOCONF $VERB --force --name "$VDONAME" } # # Convert VDO volume on a device to VG with VDOPool LV # # Convert device with the use of snapshot on top of original VDO volume (can be optionally disabled) # Once the whole conversion is finished, snapshot is merged (During the short period time of merging # user must ensure there will be no power-off!) # # For best use the latest version of vdoprepareforlvm tool is required. convert_non_lv_() { local vdo_logicalSize=$1 local vdo_logicalSizeRounded local extent_size local output local pvfree if [ -n "$USE_VDO_DM_SNAPSHOT" ]; then dry snapshot_create_ "$DEVICE" sed "s|$DEVICE|$VDO_DM_SNAPSHOT_DEVICE|" "$TEMPDIR/vdoconf.yml" > "$TEMPDIR/vdo_snap.yml" # In case of error in the middle of conversion restore original config file VDO_CONFIG_RESTORE="$TEMPDIR/vdoconf.yml" # Let VDO manager operate on snapshot volume dry cp -a "$TEMPDIR/vdo_snap.yml" "${VDO_CONFIG:-"$DEFAULT_VDO_CONFIG"}" else # If error in the following section, report possible problems ahead VDO_INCONSISTENT=1 fi # In case we operate with snapshot, all lvm2 operation will also run on top of snapshot local device=${VDO_DM_SNAPSHOT_DEVICE:-$DEVICE} # Check if there is not already an existing PV header, this would have fail on pvcreate after conversion "$LVM" pvs --devices "$device" "$device" 2>/dev/null && { error "Cannot convert volume \"$DEVICE\" with existing PV header." } verbose "Moving VDO header on \"$device\"." output=$(dry "$VDO" convert $VDOCONF $VERB --force --name "$VDONAME" 2>&1) || { local rc=$? echo "$output" error "Failed to convert VDO volume \"$DEVICE\" (exit code $rc)." } echo "$output" if [ "$ABORT_AFTER_VDO_CONVERT" != "0" ]; then warn "Aborting VDO conversion after moving VDO header, volume is useless!" return 0 fi # Parse result from VDO preparation/conversion tool # New version of the tool provides output with alignment and offset local vdo_length=0 local vdo_aligned=0 local vdo_offset=0 local vdo_non_converted=0 while IFS= read -r line ; do # trim leading spaces case "$(echo $line)" in "Non converted"*) vdo_non_converted=1 ;; "Length"*) vdo_length=${line##* = } ;; "Conversion completed"*) vdo_aligned=${line##*aligned on } vdo_aligned=${vdo_aligned%%[!0-9]*} vdo_offset=${line##*offset } # backward compatibility with report from older version vdo_offset=${vdo_offset##*by } vdo_offset=${vdo_offset%%[!0-9]*} ;; esac done <<< "$output" dry "$LVM" pvcreate $YES $VERB $FORCE --devices "$device" --dataalignment "$vdo_offset"b "$device" # Obtain free space in this new PV # after 'vdo convert' call there is ~(1-2)M free space at the front of the device pvfree=$("$BLOCKDEV" --getsize64 "$DEVICE") pvfree=$(( ( pvfree - vdo_offset ) / 1024 )) # to KiB if [ -n "$vdo_aligned" ] && [ "$vdo_aligned" != "0" ]; then extent_size=$(( vdo_aligned / 1024 )) else extent_size=$(get_largest_extent_size_ "$pvfree" "$vdo_logicalSize") fi # Round virtual size to the LOWER size expressed in extent units. # lvm is parsing VDO metadata and can read real full size and use it instead of this smaller value. # To precisely byte-synchronize the size of VDO LV, user can lvresize such VDO LV later. vdo_logicalSizeRounded=$(( ( vdo_logicalSize / extent_size ) * extent_size )) verbose "Creating volume group \"$VGNAME\" with the extent size $extent_size KiB." dry "$LVM" vgcreate $YES $VERB --devices "$device" -s "${extent_size}k" "$VGNAME" "$device" verbose "Creating VDO pool data LV from all extents in the volume group \"$VGNAME\"." dry "$LVM" lvcreate -Zn -Wn -an $YES $VERB --devices "$device" -l100%VG -n "${LVNAME}_vpool" "$VGNAME" "$device" verbose "Converting to VDO pool." dry "$LVM" lvconvert ${USE_VDO_DM_SNAPSHOT:-"$YES"} $VERB $FORCE --devices "$device" --config "$VDO_ALLOCATION_PARAMS" -Zn -V "${vdo_logicalSizeRounded}k" -n "$LVNAME" --type vdo-pool "$VGNAME/${LVNAME}_vpool" if [ "$vdo_logicalSizeRounded" -lt "$vdo_logicalSize" ]; then # need to extend virtual size to be covering all the converted area # let lvm2 to round to the proper virtual size of VDO LV dry "$LVM" lvextend $YES $VERB --devices "$device" -L "$vdo_logicalSize"k "$VGNAME/$LVNAME" fi VDO_INCONSISTENT= [ -z "$USE_VDO_DM_SNAPSHOT" ] && return # no-snapshot case finished dry "$LVM" vgchange -an $VERB $FORCE --devices "$device" "$VGNAME" # Prevent unwanted auto activation when VG is merged dry "$LVM" vgchange --setautoactivation n $VERB $FORCE --devices "$device" "$VGNAME" if [ -z "$YES" ]; then PROMPTING=yes warn "Do not interrupt merging process once it starts (VDO data may become irrecoverable)!" echo -n "$TOOL: Do you want to merge converted VDO device \"$DEVICE\" to VDO LV \"$VGNAME/$LVNAME\"? [y|N]: " read -r -n 1 -s ANSWER case "${ANSWER:0:1}" in y|Y ) echo "Yes" ;; * ) echo "No" ; PROMPTING=""; return 1 ;; esac PROMPTING="" YES="-y" # From now, now prompting fi dry snapshot_merge_ "$DEVICE" # For systems using devicesfile add 'merged' PV into system.devices. # Bypassing use of --valuesonly to keep compatibility with older lvm. local usedev=$("$LVM" lvmconfig --typeconfig full devices/use_devicesfile || true) [ "${usedev#*=}" = "1" ] && dry "$LVM" lvmdevices --adddev "$DEVICE" # Restore auto activation for a VG dry "$LVM" vgchange --setautoactivation y $VERB $FORCE "$VGNAME" dry "$LVM" lvchange -ay $VERB $FORCE "$VGNAME/$LVNAME" } # Convert existing VDO volume into lvm2 volume convert2lvm_() { local VDONAME local TRVDONAME local FOUND="" local MAJOR=0 local MINOR=0 VGNAME=${NAME%/*} LVNAME=${NAME#*/} DM_UUID="" detect_lv_ "$DEVICE" case "$DM_UUID" in LVM-*) eval "$("$DMSETUP" splitname --nameprefixes --noheadings --separator ' ' "$DM_NAME")" if [ -z "$VGNAME" ] || [ "$VGNAME" = "$LVNAME" ]; then VGNAME=$DM_VG_NAME verbose "Using existing volume group name \"$VGNAME\"." [ -n "$LVNAME" ] || LVNAME=$DM_LV_NAME elif [ "$VGNAME" != "$DM_VG_NAME" ]; then error "Volume group name \"$VGNAME\" does not match name \"$DM_VG_NAME\" for VDO device \"$DEVICE\"." fi ;; *) # Check if we need to generate unused $VGNANE if [ -z "$VGNAME" ] || [ "$VGNAME" = "$LVNAME" ]; then VGNAME=${DEFAULT_NAME%/*} # Find largest matching VG name to our 'default' vgname LASTVGNAME=$(LC_ALL=C "$LVM" vgs -oname -O-name --noheadings -S name=~"${VGNAME}" | grep -m 1 -E "${VGNAME}[0-9]? ?" || true) if [ -n "$LASTVGNAME" ]; then LASTVGNAME=${LASTVGNAME#*"${VGNAME}"} # If the number is becoming too high, try some random number [ -n "$LASTVGNAME" ] && [ "$LASTVGNAME" -gt 99999999 ] && LASTVGNAME=$RANDOM # Generate new unused VG name VGNAME="${VGNAME}$(( LASTVGNAME + 1 ))" verbose "Selected unused volume group name \"$VGNAME\"." fi fi # New VG is created, LV name should be always unused. [ -n "$LVNAME" ] || LVNAME=${DEFAULT_NAME#*/} "$LVM" vgs "$VGNAME" >/dev/null 2>&1 && error "Cannot use already existing volume group name \"$VGNAME\"." ;; esac verbose "Checked whether device \"$DEVICE\" is already logical volume." "$MKDIR" -p -m 0000 "$TEMPDIR" || error "Failed to create \"$TEMPDIR\"." # TODO: might use directly /etc/vdoconf.yml (avoiding need of 'vdo' manager) verbose "Getting YAML VDO configuration." "$VDO" printConfigFile $VDOCONF >"$TEMPDIR/vdoconf.yml" [ -s "$TEMPDIR/vdoconf.yml" ] || error "Cannot work without VDO configuration." # Check list of devices in VDO configure file for their major:minor # and match with given $DEVICE devmajor:devminor for i in $(awk '/.*device:/ {print $2}' "$TEMPDIR/vdoconf.yml") ; do local DEV DEV=$("$READLINK" $READLINK_E "$i") || continue RSTAT=$("$STAT" --format "MAJOR=\$((0x%t)) MINOR=\$((0x%T))" "$DEV" 2>/dev/null) || continue eval "$RSTAT" if [ "$MAJOR" = "$DEVMAJOR" ] && [ "$MINOR" = "$DEVMINOR" ]; then [ -z "$FOUND" ] || error "VDO configuration contains duplicate entries $FOUND and $i." FOUND=$i fi done [ -n "$FOUND" ] || error "Can't find matching device in VDO configuration file." verbose "Found matching device $FOUND $MAJOR:$MINOR." VDONAME=$(awk -v DNAME="$FOUND" '/.*VDOService$/ {VNAME=substr($1, 0, length($1) - 1)} /[[:space:]]*device:/ { if ($2 ~ DNAME) {print VNAME}}' "$TEMPDIR/vdoconf.yml") TRVDONAME=$(echo "$VDONAME" | tr '-' '_') # When VDO volume is 'active', check it's not mounted/being used DM_OPEN="$("$DMSETUP" info -c -o open "$VDONAME" --noheadings --nameprefixes 2>/dev/null || true)" case "$DM_OPEN" in Device*) ;; # no devices *) eval "$DM_OPEN" [ "${DM_OPEN:-0}" -eq 0 ] || error "Cannot convert in use VDO volume \"$VDONAME\"!" ;; esac #parse_yaml_ "$TEMPDIR/vdoconf.yml" _ eval "$(parse_yaml_ "$TEMPDIR/vdoconf.yml" _ | grep "$TRVDONAME" | sed -e "s/_config_vdos_$TRVDONAME/vdo/g")" vdo_logicalSize=$(get_kb_size_with_unit_ "$vdo_logicalSize") vdo_physicalSize=$(get_kb_size_with_unit_ "$vdo_physicalSize") verbose "Converted VDO device has logical/physical size $vdo_logicalSize/$vdo_physicalSize KiB." VDO_ALLOCATION_PARAMS=$(cat <<EOF allocation { vdo_use_compression = $(get_enabled_value_ "$vdo_compression") vdo_use_deduplication = $(get_enabled_value_ "$vdo_deduplication") vdo_use_metadata_hints=1 vdo_minimum_io_size = $vdo_logicalBlockSize vdo_block_map_cache_size_mb = $(( $(get_kb_size_with_unit_ "$vdo_blockMapCacheSize") / 1024 )) vdo_block_map_period = $vdo_blockMapPeriod vdo_use_sparse_index = $(get_enabled_value_ "$vdo_indexSparse") vdo_index_memory_size_mb = $(awk "BEGIN {print $vdo_indexMemory * 1024}") vdo_slab_size_mb = $(( $(get_kb_size_with_unit_ "$vdo_slabSize") / 1024 )) vdo_ack_threads = $vdo_ackThreads vdo_bio_threads = $vdo_bioThreads vdo_bio_rotation = $vdo_bioRotationInterval vdo_cpu_threads = $vdo_cpuThreads vdo_hash_zone_threads = $vdo_hashZoneThreads vdo_logical_threads = $vdo_logicalThreads vdo_physical_threads = $vdo_physicalThreads vdo_write_policy = $vdo_writePolicy vdo_max_discard = $(( $(get_kb_size_with_unit_ "$vdo_maxDiscardSize") / 4 )) vdo_pool_header_size = 0 } EOF ) verbose "VDO conversion parameters: $VDO_ALLOCATION_PARAMS" verbose "Stopping VDO volume." dry "$VDO" stop $VDOCONF --name "$VDONAME" $VERB # If user has not provided '--yes', prompt before conversion if [ -z "$YES" ] && [ -z "$USE_VDO_DM_SNAPSHOT" ]; then PROMPTING=yes echo -n "$TOOL: Convert VDO device \"$DEVICE\" to VDO LV \"$VGNAME/$LVNAME\"? [y|N]: " read -r -n 1 -s ANSWER case "${ANSWER:0:1}" in y|Y ) echo "Yes" ;; * ) echo "No" ; PROMPTING=""; return 1 ;; esac PROMPTING="" YES="-y" # From now, no prompting fi # Make a backup of the existing VDO yaml configuration file [ -e "$VDO_CONFIG" ] && dry cp -a "$VDO_CONFIG" "${VDO_CONFIG}.backup" DEVICE=$FOUND case "$DM_UUID" in LVM-*) convert_lv_ "$vdo_logicalSize" ;; *) convert_non_lv_ "$vdo_logicalSize" ;; esac } ############################# # start point of this script # - parsing parameters ############################# trap "cleanup" "${SIGNALS[@]}" [ "$#" -eq 0 ] && tool_usage while [ "$#" -ne 0 ] do case "$1" in "") ;; "-f"|"--force" ) FORCE="-f" ;; "-h"|"--help" ) tool_usage ;; "-n"|"--name" ) shift; NAME=$1 ;; "-v"|"--verbose") VERB="--verbose" ;; "-y"|"--yes" ) YES="-y" ;; "--abort-after-vdo-convert"|"--abortaftervdoconvert" ) ABORT_AFTER_VDO_CONVERT=1; USE_VDO_DM_SNAPSHOT= ;; # For testing only "--dry-run"|"--dryrun" ) DRY="1" ; VERB="-v" ;; "--no-snapshot"|"--nosnapshot" ) USE_VDO_DM_SNAPSHOT= ;; "--uuid-prefix"|"--uuidprefix" ) shift; DM_UUID_PREFIX=$1 ;; # For testing only "--vdo-config"|"--vdoconfig" ) shift; VDO_CONFIG=$1 ; VDOCONF="-f $VDO_CONFIG" ;; -* ) error "Wrong argument \"$1\". (see: $TOOL --help)" ;; *) DEVICE=$1 ;; # device name does not start with '-' esac shift done [ -n "$DEVICE" ] || error "Device name is not specified. (see: $TOOL --help)" convert2lvm_