ืืืื ืืคืงืืื guestfs-testing ืฉื ืืชื ืืืจืืฅ ืืกืคืง ืืืืจืื ืืืื ืื ืฉื OnWorks ืืืืฆืขืืช ืืืช ืืชืื ืืช ืืขืืืื ืืืงืืื ืืช ืืืจืืืืช ืฉืื ื ืืืื ื ืืืื Ubuntu Online, Fedora Online, ืืืืืืืจ ืืืงืืื ืฉื Windows ืื ืืืืืืืจ ืืงืืื ืฉื MAC OS
ืชึธืึฐื ึดืืช:
ืฉืึตื
guestfs-testing - ืืืืงื ืืื ืืช ืฉื libguestfs, ืืชื ืืืื ืืขืืืจ!
ืชืืืืจ
ืืืฃ ืื ืืฉ ืืืืงืืช ืืื ืืืช ืฉืชืืืื ืื ืกืืช ื-libguestfs. ืืื ืืื ืืฉ ืืฉืื ืงืฆืช ืฉืื ื
ืฉืืืื ืฉื ืคืืืคืืจืื, ืืืืจื ืืืืจืืื, ืื ืฉืืืืืงื ืืื ืืื ืืขืืช ืขืจื ืจื. ืชืืื
ืขื ืืขืืจื!
ืืืื ืื ืืืกืืื ืื ืื * (ืืืืืืช) ืืืื ืืืจืืก ื ืชืื ืื ืื ืืชื ืื ื ืืืจ. ืืืืจืื ืื
ืืืื ืืื ืืฉื ื ืืืื.
ืจืื ืืืืืงืืช ืืืื ืืขืืื ืขื ืื libguestfs โฅ 1.14. ืืืง ืืืืืื ืื ืืืื (ืืกืืื ืื)
ืืืจืฉ libguestfs โฅ 1.22.
ืืชื ืืืื ืืืืื ืขื ืืืืื ืฉืืชื ืืืฆื ืืจื ืืงืืฉืืจ ืืื:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
ืื ืคืจืกื ืืจืฉืืืช ืืชืคืืฆื (ืืจืฉืื ืืื ืึนื ื ืืจืฉ, ืื ืื ืืื ื ืจืฉืื
ืืืืจ ืืื ืชืฆืืจื ืืืืืช ืืื ืื ืฉืืืฉืจ ืืช ืืืืืขื ืฉืื ืืืืคื ืืื ื):
https://www.redhat.com/mailman/listinfo/libguestfs
ืืืืงืืช
ืืคืขืื libguestfs-test-tool
ืืคืขืื:
libguestfs-test-tool
ืคืงืืื ืื ืืืฆืขืช ืืืืงื ืคืฉืืื ืืืื, ืื ืืจืกื ืืช, ืฉืืื libguestfs ืืกืืกืืช
ืชึดืคืงืึผื. ืืชื ืื ืฆืจืื ืืืคืขืื ืืช ืื ืืชืืจ ืฉืืจืฉ.
ืื ืื ืื ืืืคืก "===== ืืืืืงื ืืกืชืืืื ืืกืืจ =====", ืืืื ืขื ืื ืืืื. ืื ืืืื
ืืฉืื ืฉืชืืืื ืืช ืึฐืึทืฉืึฐืึดืื, ืื ืขืจืื ืคืื ืฉื "libguestfs-test-tool" ืฉืื
ืืื ืฉืืืืืช. ืขืืื ืืกืขืืฃ "ืืืืื" ืืกืืฃ ืืฃ ืื.
ืืืืืง KVM ืืืฆื is ืืืืืช ืึฐืฉืืึผืึธืฉื.
ืื ืืืืจื ืฉืื ืืฉ ืืืฆืช ืืืืจื ืืืจื, ืื ืขื ืืืืื ืื libguestfs ืฆืจืื ืืืืืช
ืืกืืื ืืืคืขืื ืชืื ืืกืคืจ ืฉื ืืืช. ืืคืขื ืืช ืืคืงืืื ืืืื ืืื ืคืขืืื:
time guestfish -ืจืืฆืช /dev/null
ืืืืจ ืืกืคืจ ืจืืฆืืช, ืืืื ืืืืจ ืืจืืช ืืืกืคืจ ืฉื ืืืช (ืืชืืช ื-5 ืฉื ืืืช ื-64 ืืืืจ
ืืืืจืช ืกืืืืืช).
ืืืฆื ืืืืืง ืืช virt ืืืืืจื:
http://virt-tools.org/learning/check-hardware-virt/
ืื ืืคืงืืื ืืืขืื ืื ืขืืืืช ืืื, ืืฉืชืืฉ libguestfs-test-tool(1).
ืืืืืง ืืฉืจ ืืจืกื of libguestfs, qemu, ืืืืืืืจื, ืืื ' is ืืืืืช ืึฐืฉืืึผืึธืฉื.
ืชืกืชืื ืขื ืืคืื ืฉื "libguestfs-test-tool" ืืืืืง:
ยท ืืืืื ืืจืกื ืฉื libguestfs ื ืขืฉื ืฉืืืืฉ? ืกืืื ืืชืืืืช ืืคืื ืชืจืื
ืืจืืืช ืฉืืจื ืืื:
ืืจืกืช ืกืคืจืืื: 1.22.0fedora=19,release=1.fc19,libvirt
ยท ืืื ื ืขืฉื ืฉืืืืฉ ื-libvirt? ืืชื ืืืื ืืืืืื ืืืืื ืขื ืืื ืืืคืืฉ ืืงืฆื ืืืืืจื:
guestfs_get_backend: ืืฉืืจ
ืื:
guestfs_get_backend: libvirt
ยท ืืืืื ืืจืกื ืฉื qemu ืืฉืชืืฉืื? ืื ืืืื ืืืืืช ืืืืคืก:
libguestfs: qemu ืืจืกื 1.5
ืืื ืฉืื ืื ืฉืื ืืชื ืืฉืชืืฉ ื-libvirt ืื ื-libguestfs ืืื ืืช ืืืืืข ืืื.
ยท ืืืืื ืงืจื ื ืืฉืชืืฉืื? supermin(1) ืื ืกื ืืืืืจ ืืช ืืืืื ืืืืจืื ื ืืืืชืงื ืช
ืืืืื ื ืฉืื. ืืชื ืืืื ืืจืืืช ืืช ืืืจืกื ืืคืื ืืืืฉืืจ, ืืืฉื:
[ 0.000000] ืืืจืกืช ืืื ืืงืก 3.9.2-200.fc18.x86_64 [...]
ืื ืกืืช ื ืืคืชืื a ืืงืืื ืืืจื ืชืืื ื ืขื ืื ืืืจื.
ืืชื ืืืื ืืืฉืชืืฉ ืืื ืชืืื ืช ืืืกืง ืืืจื ืืืืืงื ืื. ืืื ืฉืืชื ืืฉืชืืฉ ืืืื "--ro" ืื
ืื ืืืจื(1) ืืคืชื ืืช ืชืืื ืช ืืืืกืง ืืงืจืืื ืืืื.
guestfish --ro -a /path/to/disk.img -i
ืื ืืคืงืืื ืืฆืืืื, ืืื ืฆืจืืื ืืืืคืืก ืืช ืฉื ืืขืจืืช ืืืคืขืื ืืืืจืืช ืืืืื ืืก
ืืชื ืืื ืืืืจื "> ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืืืช guestfish ืืื "ll /" ืืื ืืืกืชืื
ืืชืื ืชืืื ืช ืืืืกืง. ืืื ืืฆืืช, ืืงืื "ืืฆืืื".
ืื ืืชื ืืงืื ืฉืืืื, ื ืกื ืืืคืขืื ืืืชืืจ ืืืืื (ืืืกืฃ "-v" ืืฉืืจืช ืืคืงืืื). ืื ืืืืื
ืืืื ืฉ libguestfs-test-tool(1) ืืฆืืื.
ืื ืกืืช ื ืืคืชืื a ืืจืืืง ืืืจื ืชืืื ื ืขื ืื ืืืจื.
ืืขืจืืช ืืืืงื ืื ืืืจืฉืช libguestfs โฅ 1.22 ื-qemu โฅ 1.5. ืืืชืื ืฉืชืฆืืจื ืื ืืืฉืืืช
libvirt ืขื ืืื ืืืืจืช ืื:
ืืืฆืื LIBGUESTFS_BACKEND=ืืฉืืจ
ืื ืืฉ ืื ืชืืื ืช ืืืกืง ืืืื ื ืืจื HTTP/FTP, ื ืกื ืืคืชืื ืืืชื.
guestfish --ro -i --format=raw -a http://www.example.com/disk.img
ืขืืืจ SSH ืชืฆืืจื ืืืืื ืฉ-ssh-agent ืืืืืจ ืื ืฉืืื ื ืฆืจืื ืกืืกืื
ืืื ืืืืื ืก ืืืืฉืืจ ืืืจืืืง. ืื ืคืงืืื ืืืื ืืื ืืืืจื ืืขืืื:
guestfish --ro -i --format=raw \
-a ssh://remote.example.com/path/to/disk.img
ืื ืืชื ืืงืื ืฉืืืื, ื ืกื ืืืคืขืื ืืืชืืจ ืืืืื (ืืืกืฃ "-v" ืืฉืืจืช ืืคืงืืื). ืื ืืืืื
ืืืื ืฉ libguestfs-test-tool(1) ืืฆืืื.
ืืคืขืื virt-alignment-scan on ืืช ืื ืฉืึถืึฐืึธ ืืืจืืื.
ืืคืขืื virt-alignment-scan(1) ืืชืืื ืืช ืืืจืืื ืื ืืืืกืง:
virt-alignment-scan -a /path/to/disk.img
ืื:
virt-alignment-scan -d ืืืจื
ืืื ืืื ืืืืฉืืจ ืชืืื ืืช ืืืคื ืืืฉืืจ ืืืืืฆืืช ืืืืจืืื?
ืืคืขืื ืืืจื-ืืชืื on ืืื ืงืืฆืื in ืืืจืืื.
ืืืจื-ืืชืื(1) ืืืื ืืืฆืื ืงืืฆืื ืืืืจืืื. ืขืืืจ ืืืจื ืืื ืืงืก, ื ืกื:
virt-cat LinuxGuest / etc / passwd
ืชืืื ื ืขืืื ืืช ืืื ืชืืืื ืื ืชืืื Windows, ืืืืืื:
virt-cat WindowsGuest 'c:\windows\win.ini'
ืืืื ืืคืืื ืืื ืืืชืจ ืืื ืื ืืฉ ืื ืืืจื ืฉื Windows ืขื ืืกืคืจ ืืื ื ืื. ืชืขืฉื "D:", "E:"
ืืื' ื ืชืืืื ืขืืืืื ืืื ืฉืฆืจืื?
* ืืขืชืง ืืื ืงืืฆืื ืื ืชืื a ืืกืืืจ ืืืื ืืืจื.
virt-copy-in(1) ืืืื ืืืขืชืืง ืืืืคื ืจืงืืจืกืืื ืงืืฆืื ืืกืคืจืืืช ืืชืื ืชืืื ืช ืืืจื ืื ืืืกืง.
virt-copy-in -d ืืืจื /ืืื / Tmp
ืื ืืืืจ ืืืขืชืืง ืืช ืืกืคืจืืื ืืืงืืืืช /ืืื ื /tmp/etc ืืืืจื (ืืืืคื ืจืงืืจืกืืื). ืื ืืชื ืืืชืื
ืืืืจื, ืืื ืืชื ืืืื ืืจืืืช ืืช ืื ืืงืืฆืื ืืืกืคืจืืืช ืฉืืืขืชืงื?
ืืื ืืช ืืืืจื ืื ืกื ืืืขืชืืง ืืกืคืจ ืงืืฆืื ืืกืคืจืืืช:
virt-copy-in -d ืืืจื / ืืืช /etc/issue / Tmp
ืืขืชืง ืืื ืงืืฆืื ืึทืืึผืฆึธื of a ืืืจื.
virt-copy-out(1) ืืืื ืืืขืชืืง ืืืืคื ืจืงืืจืกืืื ืงืืฆืื ืืกืคืจืืืช ืืชืื ืชืืื ืช ืืืจื ืื ืืืกืง.
virt-copy-out -d ืืืจื / ืืืช .
ืฉืืื ืื ืฉืืจืืื ืืื ืงืืื ืืกืืคืืื ืืคืงืืื ืืื ื ืฉืืืืช ืืงืืื.
ืื ืฆืจืื ืืืขืชืืง / ืืืช ืืืืืจื ืืกืคืจืืื ืื ืืืืืช.
ืืคืขืื virt-df.
virt-df(1) ืืคืจื ืืช ืฉืื ืืืืกืง. ืึธืจืึผืฅ:
virt-df
ืืชื ืืืื ืื ืกืืช ืืืฉืืืช ืืช ืื ืืชืืฆืืืช ื df(1) ืืชืื ืืืืจื, ืืื ืืฉ ืืืื
ืืกืชืืืืืช:
ยท ืขื ืืืืจื ืืืืืช ืืืื.
ยท ืืฉ ืืกื ืืจื ืืช ืืืืกืงืื ืืืืจืืื ืืืืฆืขืืช ืืกื ืืจื(1).
ยท ืื ืคืขืืื ืืื ืืชืืื ืืืืจื ืชืืชืื ืงืืืฆื ืืืื ืฉืืืจืื ืืืกืคืจืื
ืืฉื ืืช.
ืื ืื ื ืื ืืืืืืื ืฉืืืกืคืจืื ืืืื ืืืื ืืคืืื ืื ืกืืืืช ืืื.
ืื ืฆืจืืืื ืืืืืช ืืืืื. ืื ืืฆืืืข ืขื ืืื ืื ืชืจืื ืืกืคืจืื ืฉืื ืื ืืืื.
ืื ืกืืช ืืืื virt-df CSV ืชืคืืงื ืื ืชืื a ืืืืืื ืืืงืืจืื ื or ืืืืจ ืืืืข.
ืืคืขืื:
virt-df --csv > /tmp/report.csv
ืืขืช ื ืกื ืืืขืื ืืช ืื ืืืืืืื ืืืืงืืจืื ื ืื ืืืกื ืื ืชืื ืื ืืืืขืืคืื ืขืืื. ืืื ืืชืืฆืืืช
ืืฉืืืคืืื ื ืืื ื ืืืืืืื ืืืืงืืจืื ื/ืืกืืก ืื ืชืื ืื?
http://www.postgresql.org/docs/8.1/static/sql-copy.html
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
* ืขืจืื a ืคืืื in a ืืกืืืจ ืืืื ืืืจื.
virt-edit(1) ืืืื ืืขืจืื ืงืืฆืื ืืืืจืืื. ื ืกื ืืช ืืคืงืืื ืืื ืขื ืืืจื RHEL ืื Fedora:
virt-edit LinuxGuest /etc/sysconfig/network
ืืืืจืื ืืื ืืงืก ืืืจืื ื ืกื ืืขืจืื ืงืืฆืื ืืืจืื ืืืื:
virt-edit LinuxGuest /etc/motd
ืืื ืืฉืื ืืืื ื ืจืืื ืืชืื ืืืืจื ืืืฉืจ ืืื ืืืคืขื?
ืึฐืึทืฆึดืื ืื ืืื ืืขืจืืืช ืงืืฆืื / ืฆืืื ืื / LVs in a ืืืจื.
virt-filesystems(1) ื ืืชื ืืืฉืชืืฉ ืืื ืืืฆืื ืืขืจืืืช ืงืืฆืื ืืืืจื. ื ืกื ืืช ืืคืงืืื ืืื
ืื ืชืืื ืช ืืืกืง ืื ืืืจื:
virt-filesystems -a /path/to/disk.img --all --long -h
ืื:
virt-filesystems -d ืืืจื --all --long -h
ืืื ืืชืืฆืืืช ืชืืืืืช ืืช ืื ืฉืจืืืื ืืืืจื?
ืืคืขืื ืืืจื-ืืคืงื on ืืช ืื ืฉืึถืึฐืึธ ืืืจืืื.
ืืฉืชืืฉ ืืืจื-ืืคืงื(1) ืืื ืืงืื ืืื ืขื ืื ืืืืจืืื ืื ืชืืื ืืช ืืืืกืง ืฉืื:
virt-inspector -a /path/to/disk.img | ืคึผึธืืึผืช
ืื:
virt-inspector -d ืืืจื | ืคึผึธืืึผืช
ืืื ืืชืืฆืืืช ืชืืืืืช ืืช ืื ืฉืืฉ ืืคืืขื ืืืืจื?
ืื ืกืืช ืื ืืื ืืืงืืจืช ืืืคืืื ืื of virt-ls on ืืช ืื ืฉืึถืึฐืึธ ืืืจืืื.
ืจืฉืื ืืช ืื ืชืืื ืืืช setuid ืื setgid ืืืืฉื ืืืจืืืืื ืฉื ืืื ืืงืก:
virt-ls -lR -d ืืืจื / | grep '^- [42]'
ืจืฉืื ืืช ืื ืืกืคืจืืืช ืื ืืชื ืืช ืืืชืืื ืฆืืืืจืืช ืืืืื ื ืืืจืืืืืืช ืฉื ืืื ืืงืก:
virt-ls -lR -d ืืืจื / | grep '^d ...7'
ืจืฉืื ืืช ืื ืฉืงืขื ืืืืืืื ืฉื Unix ืืืืฉื ืืืจืืืืื ืฉื ืืื ืืงืก:
virt-ls -lR -d ืืืจื / | grep '^s'
ืจืฉืื ืืช ืื ืืงืืฆืื ืืจืืืืื ืขื ืฉืืืช ืงืืฆืื ืืืกืชืืืืื ื-'.png':
virt-ls -lR -d ืืืจื / | grep -i '^-.*\.png$'
ืืฆื ืงืืฆืื ืืืืืื ื-10MB ืืกืคืจืืืช ืืืืชืืืช:
virt-ls -lR -d ืืืจื / ืืืช | awk '$3 > 10*1024*1024'
ืืฆื ืืช ืื ืื ืฉืืฉืชื ื ื-7 ืืืืื ืืืืจืื ืื:
virt-ls -lR -d ืืืจื --ืืื-ืืืื / | awk '$6 <= 7'
ืืฆื ืงืืฆืื ืจืืืืื ืฉืฉืื ื ื-24 ืืฉืขืืช ืืืืจืื ืืช:
virt-ls -lR -d ืืืจื --ืืื-ืืืื / | grep '^-' | awk '$6 < 1'
ืืื ืืชืืฆืืืช ืชืืืืืช ืืช ืื ืฉืืฉ ืืืืจื?
ืฆืืจ a ืืืกืง ืชืืื ื ืืื ื- a ืืืจืืื.
ืืฉืชืืฉ virt-make-fs(1) ืืื ืืืฆืืจ ืชืืื ืช ืืืกืง ืืื ืืจืืื ืฉืืฉ ืื ืืืงืจื:
virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img
ืืืกืฃ 'output.img' ืืืืกืง ืืืืื ืืืืจื ืงืืื. ืืืืง ืฉืืืืจื ืืืื ืืจืืืช ืืช ืืงืืฆืื.
ืืืืงื ืื ืฉืืืืฉืืช ืืืืืื ืื ืืชื ืื ืกื ืืืชื ืขื ืืืจื ืฉื Windows.
ื ืกื ืกืืืืืช ืืืืงื ืืืจืืช, ืืืฉื. --ืืืืฆื=gpt.
ื ืกื ืคืืจืืืื ืืืจืื ืฉื ืืขืจืืช ืงืืฆืื, ืืืฉื. --type=ntfs, --type=ext2.
* ืืคืขืื ืืืจื-ืืฆืื on a ืืกืืืจ ืืืื ืืืกืง ืชืืื ื or ืืืจื.
ืืฉืชืืฉ ืืืจื-ืืฆืื(1) ืืืืืง, ืืืืฅ ืื ืืชืงื ื ืืกืืืจ ืืืื ืชืืื ืช ืืืจื ืื ืืืกืง:
virt-rescue -a /path/to/disk.img
ืื:
virt-rescue -d ืืืจื
ืืื ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืืืช ืืขืืคืช ืจืืืืืช ืืื ืืืืื ืืช ืืืืจื?
* ืฉืื ืื ืืืืื ืฉืึถืึฐืึธ ืืืจืืื.
ืืฉืชืืฉ ืืืจื-ืฉืื ืื ืืืื(1) ืืชืช ืืืืจื ืขืื ืฉืื ืืืกืง. ืืืืืื, ืื ืืฉ ืื ืืืกืง
ืชืืื ื ืฉืงืื ื ื-30G, ืืืื ืืืชื ื-30G ืขื ืืื ืืืฆืืข:
truncate -s 30G newdisk.img
virt-filesystems -a /path/to/olddisk.img --all --long -h
virt-resize /path/to/olddisk.img newdisk.img --expand /dev/sda1
qemu-kvm -m 1024 -hda newdisk.img
ืืืืจื ืขืืืื ืืืชืื? ื ืกื ืืืจืืื ืืืืฆืืช ืืืจืืช.
* ืืกืคืื a ืืืจื ืืืกืง.
ืฉืืืืฉ ืืืจื-ืกืคืืืก(1), ืืคืื ืชืืื ืช ืืืกืง ืืืืืื ืืืชืจ:
virt-sparsify /path/to/olddisk.img newdisk.img
Is newdisk.img ืขืืืื ื ืืชื ืืืชืืื ืืืืจ ืกืคืืื? ืืื ืชืืื ืช ืืืืกืง ืฉืืชืงืืื ืงืื ื ืืืชืจ (ืืฉืชืืฉ
"ืื" ืืืืืง)?
* "ืกืืกืคืจืค" a ืืกืืืจ ืืืื ืืื ืืงืก ืืืจื.
ืืขืจืืช ืฉืื ืืืืช ืืืืื ืืืจื ืงืืื, ืื ืขืืืฃ ืืฉืืคื ืืช ืืืืจื
ืืคื ื ืฉืชื ืกื ืืช ืื.
virt-sysprep --hostname newhost.example.com -a /path/to/disk.img
ืืื ืืกืืกืคืจืค ืืฆืืื? ืืืืจ ืืืชืืื, ืืืื ืฉืื ืืืื ืืืฆืขื ืืืื ืื
ืืึผืฆืึธื?
ืืืฉืืื ืื ืืื Windows ืจืืฉืื ืืื ื- ืฉืึถืึฐืึธ Windows ืืืจืืื.
ืืฉืชืืฉ virt-win-reg(1) ืืื ืืืจืืง ืืช ืืจืืฉืื ืฉื Windows ืืื ืืืจืื Windows ืฉืืชื
ืืฉ ืื.
virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\Software' |
ืคืืืช
virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\System' |
ืคืืืช
ืืื ืืคืื ืชืืื ืืจืืฅ "regedit" ืืชืื ืืืืจื?
ืชืืื ื ืขืืื ืืช ืืื ืืืืืืช ืืืจืืง ืจืืฉืื ืืฉืชืืฉืื, ืื ื ืกื ืืืช, ืืืืคื ืฉื ืืฉืชืืฉ
ืขื ืฉื ืฉื ืืฉืชืืฉ ืืงืืื ืืืืจื:
virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\ืฉื ืืฉืชืืฉ' |
ืคืืืช
ืืฉืชืืฉ ืืืืืงืช guestfs ืืืื ืืจื ื ืืืืฆืขืืช ืฉืืจืืชื onworks.net