添加一个drive:guestfs_add_drive_opts
add-drive filename [readonly:true|false] [format:..] [iface:..] [name:..] [label:..] [protocol:..] [server:..]
This function adds a disk image called filename
to the handle.
When this function is called before "launch" (the usual case) then the first time you call this function, the disk appears in the API as /dev/sda
, the second time as /dev/sdb
, and so on.
# guestfish -a ubuntutest.img
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell
><fs> add-drive ./ubuntutest1.img format:qcow2
><fs> run
><fs> list-devices
/dev/sda
/dev/sdb
><fs> list-partitions
/dev/sda1
/dev/sda2
/dev/sda5
/dev/sdb1
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda2: unknown
/dev/sda5: swap
/dev/sdb1: ext3
# ps aux | grep guest
root 16128 0.1 0.0 96212 4588 pts/0 S+ 20:29 0:00 guestfish -a ubuntutest.img
root 16139 36.1 0.1 1342196 90220 pts/0 Sl 20:29 0:02 /usr/bin/qemu-system-x86_64 -global virtio-blk-pci.scsi=off -nodefconfig -enable-fips -nodefaults -nographic -machine accel=kvm:tcg -m 500 -no-reboot -rtc driftfix=slew -no-hpet -no-kvm-pit-reinjection -kernel /var/tmp/.guestfs-0/kernel.16128 -initrd /var/tmp/.guestfs-0/initrd.16128 -device virtio-scsi-pci,id=scsi -drive file=ubuntutest.img,cache=writeback,id=hd0,if=none -device scsi-hd,drive=hd0 -drive file=./ubuntutest1.img,cache=writeback,format=qcow2,id=hd1,if=none -device scsi-hd,drive=hd1 -drive file=/var/tmp/.guestfs-0/root.16128,snapshot=on,id=appliance,cache=unsafe,if=none -device scsi-hd,drive=appliance -device virtio-serial-pci -serial stdio -device sga -chardev socket,path=/tmp/libguestfscoAfPi/guestfsd.sock,id=channel0 -device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 -append panic=1 console=ttyS0 udevtimeout=600 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdc selinux=0 TERM=linux
root 16140 0.0 0.0 96212 1300 pts/0 S 20:29 0:00 guestfish -a ubuntutest.img
MOUNTING:guestfs_mount
><fs> mount /dev/sda1 /
><fs> ls
ls should have 1 parameter
type 'help ls' for help on ls
><fs> ls /
bin
boot
dev
etc
home
initrd.img
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
vmlinuz
><fs> ls /home
openstack
><fs> ls /home/openstack
.bash_history
.bash_logout
.bashrc
.cache
.profile
sdb
><fs> ls /home/openstack/sdb
><fs> mount /dev/sdb1 /home/openstack/sdb
><fs> ls /home/openstack/sdb
a
b
c
d
hello
lost+found
world
><fs>
FILESYSTEM ACCESS AND MODIFICATION
><fs> cat /home/openstack/.bash_history
sudo su
><fs> cat /home/openstack/.bash_logout
# ~/.bash_logout: executed by bash(1) when login shell exits.
# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
chown
chmod
cp
……
PARTITIONING
><fs> part-list /dev/sdb
[0] = {
part_num: 1
part_start: 1048576
part_end: 4294967295
part_size: 4293918720
}
><fs> part-list /dev/sda
[0] = {
part_num: 1
part_start: 1048576
part_end: 3221225471
part_size: 3220176896
}
[1] = {
part_num: 2
part_start: 3222273024
part_end: 5367660543
part_size: 2145387520
}
[2] = {
part_num: 5
part_start: 3222274048
part_end: 5367660543
part_size: 2145386496
}
part-add
part-del
part-disk
part-get-bootable
part-get-gpt-type
part-get-mbr-id
part-get-name
part-get-parttype
part-init
part-list
part-set-bootable
part-set-gpt-type
part-set-mbr-id
part-set-name
part-to-dev
part-to-partnum
LVM2
lvcreate
lvcreate-free
lvm-canonical-lv-name
lvm-clear-filter
lvm-remove-all
lvm-set-filter
lvremove
lvrename
lvresize
lvresize-free
lvs
lvs-full
lvuuid
pvcreate
pvremove
pvresize
pvresize-size
pvs
pvs-full
pvuuid
vg-activate
vg-activate-all
vgchange-uuid
vgchange-uuid-all
vgcreate
vglvuuids
vgmeta
vgpvuuids
vgremove
vgrename
vgs
vgs-full
vgscan
vguuid
><fs> add-drive ./centos-5.8.new.qcow2 format:qcow2
><fs> pvs
/dev/sdb2
><fs> vgs
VolGroup00
><fs> vgscan
><fs> vgs-full
[0] = {
vg_name: VolGroup00
vg_uuid: mSeGoqicAVmrFmpe8gVnQUpjlNIRFHlJ
vg_fmt: lvm2
vg_attr: wzx-n-
vg_size: 10603200512
vg_free: 0
vg_sysid:
vg_extent_size: 33554432
vg_extent_count: 316
vg_free_count: 0
max_lv: 0
max_pv: 0
pv_count: 1
lv_count: 2
snap_count: 0
vg_seqno: 4
vg_tags:
vg_mda_count: 1
vg_mda_free: 94208
}
><fs> vgmeta VolGroup00
# Generated by LVM2 version 2.02.98(2) (2012-10-15): Wed Jul 9 13:07:50 2014
contents = "Text Format Volume Group"
version = 1
description = "vgcfgbackup -f /tmp/vgmetaSV9JB9 VolGroup00"
creation_host = "(none)" # Linux (none) 3.13.0-27-generic #50-Ubuntu SMP Thu May 15 18:06:16 UTC 2014 x86_64
creation_time = 1404911270 # Wed Jul 9 13:07:50 2014
VolGroup00 {
id = "mSeGoq-icAV-mrFm-pe8g-VnQU-pjlN-IRFHlJ"
seqno = 4
format = "lvm2" # informational
status = ["EXPORTED", "RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 65536 # 32 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "K0B8Rq-HB21-lvo7-Eg3D-b0d9-Ya1I-w7C7AS"
device = "/dev/sdb2" # Hint only
status = ["ALLOCATABLE", "EXPORTED"]
flags = []
dev_size = 20755980 # 9.89722 Gigabytes
pe_start = 384
pe_count = 316 # 9.875 Gigabytes
}
}
logical_volumes {
LogVol00 {
id = "92iHZD-bWrY-LN5I-vgwB-3JQm-jOjN-vOLYuv"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 191 # 5.96875 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
LogVol01 {
id = "xsOBkU-Y1WU-HG8S-wZij-vT7W-152G-IbnnfY"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 125 # 3.90625 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 191
]
}
}
}
}
><fs> pvs-full
[0] = {
pv_name: /dev/sdb2
pv_uuid: K0B8RqHB21lvo7Eg3Db0d9Ya1Iw7C7AS
pv_fmt: lvm2
pv_size: 10603200512
dev_size: 10627061760
pv_free: 0
pv_used: 10603200512
pv_attr: ax-
pv_pe_count: 316
pv_pe_alloc_count: 316
pv_tags:
pe_start: 196608
pv_mda_count: 1
pv_mda_free: 94208
}
http://www.tldp.org/HOWTO/LVM-HOWTO/
DOWNLOADING
><fs> download /home/openstack/.bash_history testdownload
><fs> upload instance01.xml /home/openstack/testupload
><fs> ls /home/openstack
.bash_history
.bash_logout
.bashrc
.cache
.profile
sdb
testupload
命令集合
COMMANDS
acl-delete-def-file
acl-get-file
acl-set-file
add-cdrom
add-domain
domain
add-drive
add
add-drive-opts
add-drive-ro
add-ro
add-drive-ro-with-if
add-drive-scratch
scratch
add-drive-with-if
aug-clear
aug-close
aug-defnode
aug-defvar
aug-get
aug-init
aug-insert
aug-label
aug-load
aug-ls
aug-match
aug-mv
aug-rm
aug-save
aug-set
aug-setm
available
available-all-groups
base64-in
base64-out
blkdiscard
blkdiscardzeroes
blkid
blockdev-flushbufs
blockdev-getbsz
blockdev-getro
blockdev-getsize64
blockdev-getss
blockdev-getsz
blockdev-rereadpt
blockdev-setbsz
blockdev-setro
blockdev-setrw
btrfs-device-add
btrfs-device-delete
btrfs-filesystem-balance
btrfs-filesystem-resize
btrfs-filesystem-sync
btrfs-fsck
btrfs-set-seeding
btrfs-subvolume-create
btrfs-subvolume-delete
btrfs-subvolume-list
btrfs-subvolume-set-default
btrfs-subvolume-snapshot
canonical-device-name
cap-get-file
cap-set-file
case-sensitive-path
cat
checksum
checksum-device
checksums-out
chmod
chown
clear-backend-setting
command
command-lines
compress-device-out
compress-out
config
copy-attributes
copy-device-to-device
copy-device-to-file
copy-file-to-device
copy-file-to-file
copy-size
cp
cp-a
cp-r
cpio-out
dd
device-index
df
df-h
disk-create
disk-format
disk-has-backing-file
disk-virtual-size
dmesg
download
download-offset
drop-caches
du
e2fsck
e2fsck-f
echo-daemon
egrep
egrepi
equal
exists
extlinux
fallocate
fallocate64
feature-available
fgrep
fgrepi
file
file-architecture
filesize
filesystem-available
fill
fill-dir
fill-pattern
find
find0
findfs-label
findfs-uuid
fsck
fstrim
get-append
get-attach-method
get-autosync
get-backend
get-backend-setting
get-backend-settings
get-cachedir
get-direct
get-e2attrs
get-e2generation
get-e2label
get-e2uuid
get-hv
get-libvirt-requested-credential-challenge
get-libvirt-requested-credential-defresult
get-libvirt-requested-credential-prompt
get-libvirt-requested-credentials
get-memsize
get-network
get-path
get-pgroup
get-pid
pid
get-program
get-qemu
get-recovery-proc
get-selinux
get-smp
get-tmpdir
get-trace
get-umask
get-verbose
getcon
getxattr
getxattrs
glob-expand
grep
grep-opts
grepi
grub-install
head
head-n
hexdump
hivex-close
hivex-commit
hivex-node-add-child
hivex-node-children
hivex-node-delete-child
hivex-node-get-child
hivex-node-get-value
hivex-node-name
hivex-node-parent
hivex-node-set-value
hivex-node-values
hivex-open
hivex-root
hivex-value-key
hivex-value-type
hivex-value-utf8
hivex-value-value
initrd-cat
initrd-list
inotify-add-watch
inotify-close
inotify-files
inotify-init
inotify-read
inotify-rm-watch
inspect-get-arch
inspect-get-distro
inspect-get-drive-mappings
inspect-get-filesystems
inspect-get-format
inspect-get-hostname
inspect-get-icon
inspect-get-major-version
inspect-get-minor-version
inspect-get-mountpoints
inspect-get-package-format
inspect-get-package-management
inspect-get-product-name
inspect-get-product-variant
inspect-get-roots
inspect-get-type
inspect-get-windows-current-control-set
inspect-get-windows-systemroot
inspect-is-live
inspect-is-multipart
inspect-is-netinst
inspect-list-applications
inspect-list-applications2
inspect-os
is-blockdev
is-blockdev-opts
is-chardev
is-chardev-opts
is-config
is-dir
is-dir-opts
is-fifo
is-fifo-opts
is-file
is-file-opts
is-lv
is-socket
is-socket-opts
is-symlink
is-whole-device
is-zero
is-zero-device
isoinfo
isoinfo-device
journal-close
journal-get
journal-get-data-threshold
journal-get-realtime-usec
journal-next
journal-open
journal-set-data-threshold
journal-skip
kill-subprocess
launch
run
lchown
ldmtool-create-all
ldmtool-diskgroup-disks
ldmtool-diskgroup-name
ldmtool-diskgroup-volumes
ldmtool-remove-all
ldmtool-scan
ldmtool-scan-devices
ldmtool-volume-hint
ldmtool-volume-partitions
ldmtool-volume-type
lgetxattr
lgetxattrs
list-9p
list-devices
list-disk-labels
list-dm-devices
list-filesystems
list-ldm-partitions
list-ldm-volumes
list-md-devices
list-partitions
ll
llz
ln
ln-f
ln-s
ln-sf
lremovexattr
ls
ls0
lsetxattr
lstat
lstatlist
luks-add-key
luks-close
luks-format
luks-format-cipher
luks-kill-slot
luks-open
luks-open-ro
lvcreate
lvcreate-free
lvm-canonical-lv-name
lvm-clear-filter
lvm-remove-all
lvm-set-filter
lvremove
lvrename
lvresize
lvresize-free
lvs
lvs-full
lvuuid
lxattrlist
max-disks
md-create
md-detail
md-stat
md-stop
mkdir
mkdir-mode
mkdir-p
mkdtemp
mke2fs
mke2fs-J
mke2fs-JL
mke2fs-JU
mke2journal
mke2journal-L
mke2journal-U
mkfifo
mkfs
mkfs-opts
mkfs-b
mkfs-btrfs
mklost-and-found
mkmountpoint
mknod
mknod-b
mknod-c
mkswap
mkswap-opts
mkswap-L
mkswap-U
mkswap-file
mktemp
modprobe
mount
mount-9p
mount-local
mount-local-run
mount-loop
mount-options
mount-ro
mount-vfs
mountpoints
mounts
mv
nr-devices
ntfs-3g-probe
ntfsclone-in
ntfsclone-out
ntfsfix
ntfsresize
ntfsresize-opts
ntfsresize-size
parse-environment
parse-environment-list
part-add
part-del
part-disk
part-get-bootable
part-get-gpt-type
part-get-mbr-id
part-get-name
part-get-parttype
part-init
part-list
part-set-bootable
part-set-gpt-type
part-set-mbr-id
part-set-name
part-to-dev
part-to-partnum
ping-daemon
pread
pread-device
pvchange-uuid
pvchange-uuid-all
pvcreate
pvremove
pvresize
pvresize-size
pvs
pvs-full
pvuuid
pwrite
pwrite-device
read-file
read-lines
readdir
readlink
readlinklist
realpath
remount
remove-drive
removexattr
rename
resize2fs
resize2fs-M
resize2fs-size
rm
rm-f
rm-rf
rmdir
rmmountpoint
rsync
rsync-in
rsync-out
scrub-device
scrub-file
scrub-freespace
set-append
append
set-attach-method
attach-method
set-autosync
autosync
set-backend
backend
set-backend-setting
set-backend-settings
set-cachedir
cachedir
set-direct
direct
set-e2attrs
set-e2generation
set-e2label
set-e2uuid
set-hv
hv
set-label
set-libvirt-requested-credential
set-libvirt-supported-credentials
set-memsize
memsize
set-network
network
set-path
path
set-pgroup
pgroup
set-program
program
set-qemu
qemu
set-recovery-proc
recovery-proc
set-selinux
selinux
set-smp
smp
set-tmpdir
tmpdir
set-trace
trace
set-uuid
set-verbose
verbose
setcon
setxattr
sfdisk
sfdiskM
sfdisk-N
sfdisk-disk-geometry
sfdisk-kernel-geometry
sfdisk-l
sh
sh-lines
shutdown
sleep
stat
statvfs
strings
strings-e
swapoff-device
swapoff-file
swapoff-label
swapoff-uuid
swapon-device
swapon-file
swapon-label
swapon-uuid
sync
syslinux
tail
tail-n
tar-in
tar-in-opts
tar-out
tar-out-opts
tgz-in
tgz-out
touch
truncate
truncate-size
tune2fs
tune2fs-l
txz-in
txz-out
umask
umount
unmount
umount-opts
umount-all
unmount-all
umount-local
upload
upload-offset
user-cancel
utimens
utsname
version
vfs-label
vfs-type
vfs-uuid
vg-activate
vg-activate-all
vgchange-uuid
vgchange-uuid-all
vgcreate
vglvuuids
vgmeta
vgpvuuids
vgremove
vgrename
vgs
vgs-full
vgscan
vguuid
wc-c
wc-l
wc-w
wipefs
write
write-append
write-file
xfs-admin
xfs-growfs
xfs-info
xfs-repair
zegrep
zegrepi
zero
zero-device
zero-free-space
zerofree
zfgrep
zfgrepi
zfile
zgrep
zgrepi