Warum kann ich keine DMG-Dateien öffnen, die sich in einem schreibgeschützten NFS-Dateisystem befinden?

15

Ich habe ein seltsames Problem entdeckt ... Wenn ich Disk Image-Dateien (DMGs) habe, die sich auf einer schreibgeschützten NFS-Freigabe befinden, kann ich diese nicht in Mac OS X 10.7.5 öffnen. Beim Zugriff über AFP werden dieselben Dateien problemlos geöffnet. Der Versuch, hdiutil attachsie über die NFS-Freigabe zu öffnen, führt jedoch zu "Anhängen fehlgeschlagen - Nur-Lese-Dateisystem":

bash-3.2# /usr/bin/hdiutil attach /Volumes/nfs_share/Some.dmg
hdiutil: attach failed - Read-only file system

Auch wenn die AFP-Freigabe schreibgeschützt ist, kann ich dieselben Bilder anhängen. Aus irgendeinem Grund funktioniert eine schreibgeschützte NFS- Freigabe jedoch nicht.

Letztendlich möchte ich die Bilder mit einer Schattendatei anhängen , um die schreibgeschützten Bilder als Lese- / Schreibzugriff bereitzustellen. Das scheitert aber auch so:

bash-3.2# /usr/bin/hdiutil attach /Volumes/nfs_share/Some.dmg -mountpoint /Somewhere -shadow /path/to/Some-Shadow
hdiutil: attach failed - Read-only file system

Auch dies funktioniert einwandfrei, wenn das Bild über AFP geliefert wird. Es funktioniert auch gut, wenn die NFS-Freigabe Lese- / Schreibzugriff hat, aber aus Sicherheitsgründen kann ich das nicht tun.

Wie kann ich DMG-Dateien bereitstellen, die sich auf einer schreibgeschützten NFS-Freigabe befinden?


Zusätzliche Information:

Die entsprechende Zeile /etc/exportsauf dem FreeNAS-Server (FreeBSD 8.2-RELEASE-p7):

/mnt/raid/netboot -alldirs -ro -mapall=netboot:netboot -network 10.100.0.0/16

Die Ausgabe von /usr/bin/hdiutil attach -verbose /Volumes/netboot/Lion.nbi/Library.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowse:

Initializing…
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
CBSDBackingStore::newProbe stat() failed.  No such file or directory.
DIBackingStoreInstantiatorProbe: interface  0, score        1, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score    -1000, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
Attaching…
Error 30 (Read-only file system).
Finishing…
DIHLDiskImageAttach() returned 30
hdiutil: attach failed - Read-only file system

Ausgabe von rpcinfo -pauf dem NFS Server:

   program vers proto   port  service
    100000    4   tcp    111  rpcbind
    100000    3   tcp    111  rpcbind
    100000    2   tcp    111  rpcbind
    100000    4   udp    111  rpcbind
    100000    3   udp    111  rpcbind
    100000    2   udp    111  rpcbind
    100000    4 local    111  rpcbind
    100000    3 local    111  rpcbind
    100000    2 local    111  rpcbind
    100005    1   udp    967  mountd
    100005    3   udp    967  mountd
    100005    1   tcp    967  mountd
    100005    3   tcp    967  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100024    1   udp    689  status
    100024    1   tcp    689  status
    100021    0   udp    616  nlockmgr
    100021    0   tcp    927  nlockmgr
    100021    1   udp    616  nlockmgr
    100021    1   tcp    927  nlockmgr
    100021    3   udp    616  nlockmgr
    100021    3   tcp    927  nlockmgr
    100021    4   udp    616  nlockmgr
    100021    4   tcp    927  nlockmgr

Ausgabe von mountauf dem Mac OS X 10.7.5 Client:

/dev/disk1s2 on / (hfs, local)
devfs on /dev (devfs, local, nobrowse)
afp_0egBhf12TAP01SptRt47XSdj-3.2c000002 on /private/var/netboot (afpfs, nobrowse)
afp_0egBhf12TAP01SptRt47XSdj-4.2c000004 on /Network/Applications (afpfs, read-only)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
afp_0egBhf12TAP01SptRt47XSdj-4.2c000008 on /Network/Servers/chef.farcry.sitepalette.com/Users (afpfs, nodev, nosuid, automounted, nobrowse, mounted by jnet)
afp_0egBhf12TAP01SptRt47XSdj-4.2c000009 on /Volumes/Users (afpfs, nodev, nosuid, mounted by jnet)
10.100.1.2:/mnt/raid/netboot on /Volumes/netboot (nfs)

Und schließlich die Ausgabe von /usr/bin/hdiutil attach -debug /Volumes/netboot/Lion.nbi/Library.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowse:

calling DIHLDiskImageAttach with 
skip-verify: true
auto-fsck: false
drive-options:
quiet: false
shadow-url: file://localhost/private/var/netboot/Library-Shadow
mount-nobrowse: true
enable-owners: true
verbose: false
debug: true
agent: hdiutil
fixed-disk: true
image-options:
main-url: file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
2012-11-27 12:02:23.053 hdiutil[23401:707] DIHLDiskImageAttach: input dictionary {
    agent = hdiutil;
    "auto-fsck" = 0;
    debug = 1;
    "drive-options" =     {
    };
    "enable-owners" = 1;
    "fixed-disk" = 1;
    "image-options" =     {
    };
    "main-url" = "file://localhost/Volumes/netboot/Lion.nbi/Library.dmg";
    "mount-nobrowse" = 1;
    quiet = 0;
    "shadow-url" = "file://localhost/private/var/netboot/Library-Shadow";
    "skip-verify" = 1;
    verbose = 0;
}
2012-11-27 12:02:23.054 hdiutil[23401:707] DIHLDiskImageAttach: disabling legacy image format attach
2012-11-27 12:02:23.055 hdiutil[23401:707] DIHLDiskImageAttach: newImagekeys = {
    "legacy-disabled" = 1;
}
2012-11-27 12:02:23.055 hdiutil[23401:707] DIHLDiskImageAttach: creating DIHelperProxy
2012-11-27 12:02:23.056 hdiutil[23401:707] with dictionary: {
    agent = hdiutil;
    "auto-fsck" = 0;
    debug = 1;
    "drive-options" = <62706c69 73743030 d0080000 00000000 01010000 00000000 00010000 00000000 00000000 00000000 0009>;
    "enable-owners" = 1;
    "fixed-disk" = 1;
    "image-options" = <62706c69 73743030 d101025f 100f6c65 67616379 2d646973 61626c65 6409080b 1d000000 00000001 01000000 00000000 03000000 00000000 00000000 00000000 1e>;
    "main-url" = "file://localhost/Volumes/netboot/Lion.nbi/Library.dmg";
    "mount-nobrowse" = 1;
    operation = DIHelperAttach;
    quiet = 0;
    "shadow-url" = "file://localhost/private/var/netboot/Library-Shadow";
    "skip-verify" = 1;
    verbose = 0;
}
2012-11-27 12:02:23.056 hdiutil[23401:707] [DIHelperProxy alloc]
2012-11-27 12:02:23.056 hdiutil[23401:707] [DIHelperProxy alloc] returning self 0x7fa39b00d690, retainCount 1
2012-11-27 12:02:23.057 hdiutil[23401:707] DIHLDiskImageAttach: running DIHelperProxy
2012-11-27 12:02:23.057 hdiutil[23401:707] [DIHelperProxy performOperationReturning] entry
2012-11-27 12:02:23.057 hdiutil[23401:707] [DIHelperProxy performOperationReturning] detaching thread
2012-11-27 12:02:23.058 hdiutil[23401:2803] [DIHelperProxy workerThread] entry
2012-11-27 12:02:23.058 hdiutil[23401:2803] [DIHelperProxy workerThread] setting up server
2012-11-27 12:02:23.059 hdiutil[23401:2803] [DIHelperProxy threadSetupServer] entry
2012-11-27 12:02:23.059 hdiutil[23401:2803] [DIHelperProxy threadSetupServer] setting up _headerConnection
2012-11-27 12:02:23.060 hdiutil[23401:2803] [DIHelperProxy threadSetupServer] setting up _headerConnection rootObject
2012-11-27 12:02:23.060 hdiutil[23401:2803] [DIHelperProxy threadSetupServer] adding NSConnectionDidInitializeNotification notification
2012-11-27 12:02:23.061 hdiutil[23401:2803] [DIHelperProxy threadSetupServer] exiting
2012-11-27 12:02:23.061 hdiutil[23401:2803] [DIHelperProxy workerThread] launching
2012-11-27 12:02:23.061 hdiutil[23401:2803] [DIHelperProxy threadLaunchToolAuthenticated] entry
2012-11-27 12:02:23.063 hdiutil[23401:2803] launching helper tool at "/System/Library/PrivateFrameworks/DiskImages.framework/Resources/diskimages-helper".
2012-11-27 12:02:23.063 hdiutil[23401:2803] [DIHelperProxy threadLaunchToolAuthenticated] adding NSTaskDidTerminateNotification notification
2012-11-27 12:02:23.063 hdiutil[23401:2803] [DIHelperProxy thread LaunchToolAuthenticated] launching
2012-11-27 12:02:23.065 hdiutil[23401:2803] [DIHelperProxy threadLaunchToolAuthenticated] exiting
2012-11-27 12:02:23.065 hdiutil[23401:2803] [DIHelperProxy workerThread] running runloop
2012-11-27 12:02:23.081 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] entry
2012-11-27 12:02:23.081 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] adding new NSConnectionDidDieNotification notification
2012-11-27 12:02:23.081 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] removing old NSConnectionDidDieNotification notification
2012-11-27 12:02:23.082 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] removing old connection rootObject
2012-11-27 12:02:23.082 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] invalidating old connection
2012-11-27 12:02:23.083 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] releasing old connection
2012-11-27 12:02:23.083 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] and replacing with new connection
2012-11-27 12:02:23.083 hdiutil[23401:2803] [DIHelperProxy helperConnectionInitialized] exit
2012-11-27 12:02:23.085 hdiutil[23401:2803] [DIHelperProxy connectToFramework] entry, helper 0x7fa39b016940
2012-11-27 12:02:23.085 hdiutil[23401:2803] [DIHelperProxy connectToFramework] exit
2012-11-27 12:02:23.186 hdiutil[23401:2803] [DIHelperProxy sendOperationToHelper] entry
2012-11-27 12:02:23.187 hdiutil[23401:2803] [DIHelperProxy sendOperationToHelper] starting operation with helper
2012-11-27 12:02:23.190 hdiutil[23401:2803] [DIHelperProxy sendOperationToHelper] exit
2012-11-27 12:02:23.194 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: initialize
Initializing…
myStatusProc: returning 0 
2012-11-27 12:02:23.199 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] exit
2012-11-27 12:02:23.201 diskimages-helper[23407:2503] updateImageAndDriveDictionaries: before update _imageOptions: {
    "enable-keychain" = 1;
    writeable = 0;
}
2012-11-27 12:02:23.201 diskimages-helper[23407:2503] updateImageAndDriveDictionaries: _imageOptions: {
    "enable-keychain" = 1;
    "legacy-disabled" = 1;
    writeable = 0;
}
2012-11-27 12:02:23.202 diskimages-helper[23407:2503] _driveOptions: {
    "auto-fsck" = 0;
    autodiskmount = 1;
    removable = 0;
    "unmount-timeout" = 0;
}
2012-11-27 12:02:23.202 diskimages-helper[23407:2503] DIHelperAttach: performOperation: initializing framework
2012-11-27 12:02:23.202 diskimages-helper[23407:2503] {
    agent = hdiutil;
    "auto-fsck" = 0;
    "auto-fsck-failure-override-type" = callback;
    "auto-open-ro-root" = 0;
    "auto-open-rw-root" = 0;
    "auto-stretch" = 0;
    "bundlebs-checkpointing" = 0;
    "bundlebs-localcloseonflush" = 0;
    "bundlebs-localcloseonidle" = 0;
    "bundlebs-localcloseonsleep" = 0;
    "bundlebs-localfdcount" = 6;
    "bundlebs-remotecloseonflush" = 0;
    "bundlebs-remotecloseonidle" = 0;
    "bundlebs-remotecloseonsleep" = 0;
    "bundlebs-remotefdcount" = 3;
    "burn-apple-supported-devices-only" = 0;
    "burn-no-underrun-protection" = 0;
    "burn-synthesize-content" = 1;
    "bzip2-level" = 0;
    "callback-with-sla" = 1;
    debug = 1;
    "disable-encrypted-images" = 0;
    "disable-kernel-mounting" = 1;
    "disable-owners" = 0;
    "drive-options" = <62706c69 73743030 d0080000 00000000 01010000 00000000 00010000 00000000 00000000 00000000 0009>;
    "enable-owners" = 1;
    "filevault-default-case-sensitive-file-system" = "Case-sensitive Journaled HFS+";
    "filevault-default-encryption-type" = "AES-128";
    "filevault-default-file-system" = "Journaled HFS+";
    "filevault-default-image-type" = SPARSEBUNDLE;
    "filevault-default-partition-type" = SPUD;
    "filevault-default-volume-name" = FileVault;
    "fixed-disk" = 1;
    "force-idme" = 0;
    "hfsplus-stretch-parameters" =     {
        "hfsplus-stretch-allocation-block-size" = 4096;
        "hfsplus-stretch-allocation-file-size" = 8388608;
        "hfsplus-stretch-threshold" = 524288;
    };
    "idle-timeout" = 15;
    "ifd-format" = UDZO;
    "ifd-ignore-io-errors" = 1;
    "ifd-segment-size" = 0;
    "iff-format" = UDZO;
    "iff-fs" = "HFS+";
    "iff-layout" = SPUD;
    "iff-source-owners" = auto;
    "iff-spotlight-indexing" = 0;
    "iff-temp-sparse-band-size" = 20480;
    "iff-temp-use-rw-if-possible" = 1;
    "iff-usehelper" = 1;
    "ignore-bad-checksums" = 0;
    "image-options" = <62706c69 73743030 d101025f 100f6c65 67616379 2d646973 61626c65 6409080b 1d000000 00000001 01000000 00000000 03000000 00000000 00000000 00000000 1e>;
    "main-url" = "file://localhost/Volumes/netboot/Lion.nbi/Library.dmg";
    "mount-attempted" = 1;
    "mount-nobrowse" = 1;
    "mount-point" = "/Volumes/";
    "mount-private" = 0;
    "mount-required" = 1;
    "mount-type" = in;
    "nbi-spotlight-indexing" = 0;
    operation = DIHelperAttach;
    "progress-delay" = 5;
    "pthread-reader-cap" = 4;
    quiet = 0;
    "reauthenticate-upon-wake" = 1;
    "shadow-url" = "file://localhost/private/var/netboot/Library-Shadow";
    "skip-auto-fsck-for-system-images" = 1;
    "skip-idme" = 1;
    "skip-idme-reveal" = 0;
    "skip-idme-trash" = 0;
    "skip-previously-verified" = 1;
    "skip-sla" = 0;
    "skip-verify" = 1;
    "skip-verify-locked" = 0;
    "skip-verify-remote" = 1;
    "sparsebundle-compactonidle" = 0;
    "suppress-uiagent" = 1;
    "unmount-timeout" = 0;
    "use-compressed-xml" = 0;
    "use-keychain" = 1;
    verbose = 0;
    "zlib-level" = 1;
}
DILoadDriver: checking for disk image driver
DILoadDriver: DI_kextExists() returned 0x00000000 (0)
DIIsInitialized: returning NO
2012-11-27 12:02:23.206 diskimages-helper[23407:2503] -checkForPreviouslyAttachedImage: entry
2012-11-27 12:02:23.206 diskimages-helper[23407:2503] imageURL file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
2012-11-27 12:02:23.206 diskimages-helper[23407:2503] shadowURL file://localhost/private/var/netboot/Library-Shadow
2012-11-27 12:02:23.207 diskimages-helper[23407:2503] sectionStart (null) sectionLength (null)
2012-11-27 12:02:23.207 diskimages-helper[23407:2503] checkForPreviouslyAttachedImage: setting legacy-disabled to 1
DIIsInitialized: returning YES
DIBackingStoreNewWithCFURL: entry with
file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
skip-permissions-check: true
legacy-disabled: true
DIBackingStoreInstantiatorProbe: entry
file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
skip-permissions-check: true
legacy-disabled: true
DIBackingStoreInstantiatorProbe: probing interface 0 CBSDBackingStore
CBSDBackingStore::newProbe score 100 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 1 CBundleBackingStore
CBundleBackingStore::newProbe score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 2 CRAMBackingStore
CRAMBackingStore::probe: scheme "file": not ram: or ramdisk: scheme.
CRAMBackingStore::probe: score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 3 CCarbonBackingStore
CCarbonBackingStore::newProbe: setting initial rval to +100
CCarbonBackingStore::newProbe score 100 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 4 CDevBackingStore
CDevBackingStore::newProbe: not /dev/disk or /dev/rdisk (/Volumes/netboot/Lion.nbi/Library.dmg).CDevBackingStore::newProbe score -1000 for 
DIBackingStoreInstantiatorProbe: probing interface 5 CCURLBackingStore
CCURLBackingStore::probe: scheme is: file
CCURLBackingStore::probe: not recognized URL scheme.
CCURLBackingStore::probe: score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 6 CVectoredBackingStore
CVectoredBackingStore::newProbe not "vectored" scheme.
CVectoredBackingStore::newProbe score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIBackingStoreNewWithCFURL: CBSDBackingStore
CBSDBackingStore::setNoFollow: setting _noFollow to 0
DIBackingStoreNewWithCFURL: instantiator returned 0
DIBackingStoreNewWithCFURL: returning 0
2012-11-27 12:02:23.208 diskimages-helper[23407:2503] -checkForPreviouslyAttachedImage: resolving file://localhost/Volumes/netboot/Lion.nbi/Library.dmg returned 0
DIIsInitialized: returning YES
DIBackingStoreNewWithCFURL: entry with
file://localhost/private/var/netboot/Library-Shadow
skip-permissions-check: true
DIBackingStoreInstantiatorProbe: entry
file://localhost/private/var/netboot/Library-Shadow
skip-permissions-check: true
DIBackingStoreInstantiatorProbe: probing interface 0 CBSDBackingStore
CBSDBackingStore::newProbe score 1 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: probing interface 1 CBundleBackingStore
CBundleBackingStore::newProbe score -1000 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: probing interface 2 CRAMBackingStore
CRAMBackingStore::probe: scheme "file": not ram: or ramdisk: scheme.
CRAMBackingStore::probe: score -1000 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: probing interface 3 CCarbonBackingStore
CCarbonBackingStore::newProbe stat() failed.  No such file or directory.
CCarbonBackingStore::newProbe score -1000 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: probing interface 4 CDevBackingStore
CDevBackingStore::newProbe: not /dev/disk or /dev/rdisk (/private/var/netboot/Library-Shadow).CDevBackingStore::newProbe score -1000 for 
DIBackingStoreInstantiatorProbe: probing interface 5 CCURLBackingStore
CCURLBackingStore::probe: scheme is: file
CCURLBackingStore::probe: not recognized URL scheme.
CCURLBackingStore::probe: score -1000 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: probing interface 6 CVectoredBackingStore
CVectoredBackingStore::newProbe not "vectored" scheme.
CVectoredBackingStore::newProbe score -1000 for file://localhost/private/var/netboot/Library-Shadow
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIBackingStoreNewWithCFURL: CBSDBackingStore
DIBackingStoreNewWithCFURL: instantiator returned 2
DIBackingStoreNewWithCFURL: returning 2
DIResolveURLToBackingStore: unable to resolve to any backing store class. 2. 
2012-11-27 12:02:23.208 diskimages-helper[23407:2503] -checkForPreviouslyAttachedImage: resolving shadow file://localhost/private/var/netboot/Library-Shadow returned 2
2012-11-27 12:02:23.208 diskimages-helper[23407:2503] DIHelperAttach: performOperation: resolving disk image
DIIsInitialized: returning YES
DIIsInitialized: returning YES
DIBackingStoreNewWithCFURL: entry with
file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
legacy-disabled: true
writeable: false
enable-keychain: true
image-path: /Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: entry
file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
legacy-disabled: true
writeable: false
enable-keychain: true
image-path: /Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 0 CBSDBackingStore
CBSDBackingStore::newProbe score 100 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 1 CBundleBackingStore
CBundleBackingStore::newProbe score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 2 CRAMBackingStore
CRAMBackingStore::probe: scheme "file": not ram: or ramdisk: scheme.
CRAMBackingStore::probe: score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 3 CCarbonBackingStore
CCarbonBackingStore::newProbe: setting initial rval to +100
CCarbonBackingStore::newProbe score 100 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 4 CDevBackingStore
CDevBackingStore::newProbe: not /dev/disk or /dev/rdisk (/Volumes/netboot/Lion.nbi/Library.dmg).CDevBackingStore::newProbe score -1000 for 
DIBackingStoreInstantiatorProbe: probing interface 5 CCURLBackingStore
CCURLBackingStore::probe: scheme is: file
CCURLBackingStore::probe: not recognized URL scheme.
CCURLBackingStore::probe: score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: probing interface 6 CVectoredBackingStore
CVectoredBackingStore::newProbe not "vectored" scheme.
CVectoredBackingStore::newProbe score -1000 for file://localhost/Volumes/netboot/Lion.nbi/Library.dmg
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIBackingStoreNewWithCFURL: CBSDBackingStore
CBSDBackingStore::setPermission: opening /Volumes/netboot/Lion.nbi/Library.dmg
CBSDBackingStore::OpenLockFriendly: mapping flags 0x00000000 -> 0x00000014 (locks are MANDATORY)
CBSDBackingStore:OpenLockFriendly: could not open with lock 30
DIBackingStoreNewWithCFURL: instantiator returned 30
DIBackingStoreNewWithCFURL: returning 30
DIResolveURLToBackingStore: unable to resolve to any backing store class. 30. 
DIResolveURLToDiskImage: resolving backing store/file encoding failed. 30. 
2012-11-27 12:02:23.211 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: attach
Attaching…
Error 30 (Read-only file system).
myStatusProc: returning 0 
2012-11-27 12:02:23.227 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] exit
2012-11-27 12:02:23.228 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: cleanup
Finishing…
myStatusProc: returning 0 
2012-11-27 12:02:23.228 hdiutil[23401:2803] [DIHelperProxy frameworkCallbackWithDictionary] exit
2012-11-27 12:02:23.229 diskimages-helper[23407:2503] DIHelperAttach performOperation: returning 30
2012-11-27 12:02:23.229 diskimages-helper[23407:2503] -decrementBackgroundThreadCount: _backgroundThreadCount is now 0.
2012-11-27 12:02:23.229 diskimages-helper[23407:303] DIHelper _report_results: reporting {
    payload =     {
    };
    "result-code" = 30;
}
2012-11-27 12:02:23.230 hdiutil[23401:2803] reportResultsToFramework: proxy has finished operation
2012-11-27 12:02:23.230 hdiutil[23401:2803] reportResultsToFramework: results are: {
    payload =     {
    };
    "result-code" = 30;
}
2012-11-27 12:02:23.230 hdiutil[23401:2803] reportResultsToFramework: _threadResultsError is 30
2012-11-27 12:02:23.231 hdiutil[23401:2803] reportResultsToFramework: disconnecting from helper.
2012-11-27 12:02:23.231 diskimages-helper[23407:303] -setCanTerminate: main thread can exit
2012-11-27 12:02:23.332 hdiutil[23401:2803] [DIHelperProxy disconnectFromHelper] entry
2012-11-27 12:02:23.333 hdiutil[23401:2803] disconnectFromHelper: removing observers
2012-11-27 12:02:23.333 hdiutil[23401:2803] disconnectFromHelper: terminating proxy
2012-11-27 12:02:23.334 diskimages-helper[23407:303] DIHelper: terminateHelper: entry.
2012-11-27 12:02:23.334 hdiutil[23401:2803] disconnectFromHelper: terminated proxy
2012-11-27 12:02:23.335 hdiutil[23401:2803] [DIHelperProxy disconnectFromHelper] releasing helper
2012-11-27 12:02:23.335 hdiutil[23401:2803] [DIHelperProxy disconnectFromHelper] exit
2012-11-27 12:02:23.435 diskimages-helper[23407:303] [DIHelper frameworkConnectionDied] entry
2012-11-27 12:02:23.435 diskimages-helper[23407:303] [DIHelper frameworkConnectionDied] releasing connection
2012-11-27 12:02:23.435 diskimages-helper[23407:303] [DIHelper frameworkConnectionDied] releasing frameworkProxy
2012-11-27 12:02:23.435 diskimages-helper[23407:303] -DIHelperAgentMaster terminateUIAgentConnection.
2012-11-27 12:02:23.435 diskimages-helper[23407:303] [DIHelper frameworkConnectionDied] marking _frameworkDisconnected
2012-11-27 12:02:23.435 diskimages-helper[23407:303] [DIHelper frameworkConnectionDied] exiting
2012-11-27 12:02:24.232 hdiutil[23401:2803] [DIHelperProxy workerThread] removing NSConnectionDidDieNotification observers
2012-11-27 12:02:24.233 hdiutil[23401:2803] [DIHelperProxy workerThread] removing NSConnectionDidInitializeNotification observers
2012-11-27 12:02:24.234 hdiutil[23401:2803] [DIHelperProxy workerThread] removing NSTaskDidTerminateNotification observers
2012-11-27 12:02:24.234 hdiutil[23401:2803] [DIHelperProxy threadRunRunLoop] invalidating connection
2012-11-27 12:02:24.235 diskimages-helper[23407:303] DIHelper dealloc.
2012-11-27 12:02:24.234 hdiutil[23401:2803] [DIHelperProxy threadRunRunLoop] releasing connection
2012-11-27 12:02:24.235 diskimages-helper[23407:303] -DIHelperAgentMaster terminateUIAgentConnection.
2012-11-27 12:02:24.235 hdiutil[23401:2803] [DIHelperProxy workerThread] after running runloop
2012-11-27 12:02:24.235 diskimages-helper[23407:303] helper: child_after_exec returning 0
2012-11-27 12:02:24.235 hdiutil[23401:2803] [DIHelperProxy workerThread] waiting for task to terminate to avoid zombies
2012-11-27 12:02:24.236 hdiutil[23401:2803] [DIHelperProxy workerThread] releasing task
2012-11-27 12:02:24.236 hdiutil[23401:2803] [DIHelperProxy workerThread] exiting
2012-11-27 12:02:24.236 hdiutil[23401:707] [DIHelperProxy performOperationReturning] returning 30
2012-11-27 12:02:24.237 hdiutil[23401:707] DIHLDiskImageAttach: DIHelperProxy returned 30
2012-11-27 12:02:24.237 hdiutil[23401:707] [DIHelperProxy dealloc]
DIHLDiskImageAttach() returned 30
hdiutil: attach failed - Read-only file system
kyle:~ root# 
Josh
quelle
1
Ich habe keine NFS-Freigabe zum Testen, aber ich würde versuchen, ein leises System zu verwenden und zu prüfen, fs_usageob das Dateisystem einen Schreibaufruf ausführt - möglicherweise wird ein Fehler bei Apple gemeldet. Es scheint, dass Sie in der Lage sein sollten, eine schreibgeschützte DMG zu lesen - aber vielleicht gibt es einen tieferen technischen Grund, warum dies fehlschlägt, und das Betriebssystem benötigt eine bessere Fehlermeldung, um uns darüber zu informieren, warum ...
bmike
Gute Idee @bmike! Außerdem bin ich hdiutilmit dem -debugSchalter gelaufen , ich kann diese Protokolle hier posten
Josh
In der Tat - machen Sie eine Antwort mit allem, was Sie finden, und wir können uns zusammenschließen - melden Sie einen Fehler oder bearbeiten Sie die Antwort, während wir das "Warum" heraussuchen.
bmike
Welches Betriebssystem läuft auf dem NFS-Server? Was ist die Ausgabe rpcinfo -pauf dem Server? Was ist die Ausgabe mountauf Ihrem Mac? Können Sie /etc/exportsder Frage auch die entsprechende Zeile auf dem NFS-Server hinzufügen ?
Jaume
1
Ich habe einen NFS-Server (Ubuntu 12.04) mit einem Nur-Lese-Export eingerichtet, den ich auf meinem Mac (OS X 10.8.2) bereitgestellt habe, und ich konnte Ihr Problem nicht reproduzieren (ich habe alle dmg-Formate getestet: readonly, compressed, verschlüsselt, etc) ... Könnten Sie die Ausgabe von hdiutil -debugund die Informationen, nach denen ich gefragt habe, zu Ihrer Frage hinzufügen ?
Jaume

Antworten:

11

Ich habe mich seit November 2012 für diese Frage interessiert und sogar eine FreeNAS-VM eingerichtet, um das Problem zu reproduzieren.

Ich habe schließlich aufgegeben, aber da die Frage wiederbelebt wurde, werde ich mitteilen, was ich damals und in den letzten Stunden herausgefunden habe (zum Glück habe ich die VM nicht gelöscht) und was meiner Meinung nach die Ursache für dieses Problem ist. Ich habe auch eine Problemumgehung gefunden.

Mein Setup

Zuallererst ist dies mein Testaufbau:

  • OS X 10.8.2 (Entschuldigung, es gibt kein 10.7.5).

  • FreeNAS (FreeBSD 8.2-RELEASE-p1)

    Bildbeschreibung hier eingeben

    (Die Version des OP ist FreeBSD 8.2-RELEASE-p7 - ich konnte nicht die gleiche Version finden.)

  • Ein NAS-Dateisystem in /mnt/raid:

    Bildbeschreibung hier eingeben

  • Ein Benutzer namens netboot:

    Bildbeschreibung hier eingeben

  • Ein AFP-Dateisystem ( /mnt/raid/netboot), das exportiert wird als netboot:

    Bildbeschreibung hier eingeben

    (Beachten Sie, dass es schreibgeschützt konfiguriert ist).

  • Ein NFS-Dateisystem (gleicher Pfad wie das AFP-Dateisystem, entsprechend der Konfiguration des OP:) /mnt/raid/netboot:

    Bildbeschreibung hier eingeben

AFP funktioniert, NFS nicht

Ich habe das AFP-Nur-Lese-Dateisystem als Benutzer netbootmit dem Finder gemountet mit K:

Bildbeschreibung hier eingeben

und mounten problemlos eine DMG-Image-Datei:

$ sudo rm /private/var/netboot/Library-Shadow
$ sudo /usr/bin/hdiutil attach /Volumes/netboot/p7zip-9.04-0.i386.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowse
Password:
/dev/disk3              Apple_partition_scheme          
/dev/disk3s1            Apple_partition_map             
/dev/disk3s2            Apple_HFS                       /Volumes/p7zip.pkg

Dann habe ich es abgemeldet und das schreibgeschützte NFS-Dateisystem (das ich auch verwendet habe K) gemountet und konnte die DMG-Image-Datei nicht mounten.

Ich denke, das Problem ist hier protokolliert:

CBSDBackingStore::setPermission: opening /Volumes/netboot/Lion.nbi/Library.dmg
CBSDBackingStore::OpenLockFriendly: mapping flags 0x00000000 -> 0x00000014 (locks are MANDATORY)
CBSDBackingStore:OpenLockFriendly: could not open with lock 30

Fehler 30 bedeutet (siehe man 2 intro):

30 EROFS Schreibgeschütztes Dateisystem. Es wurde versucht, eine Datei zu ändern, oder es wurde versucht, ein Verzeichnis in einem Dateisystem zu ändern, das zu diesem Zeitpunkt schreibgeschützt war.

Kein Wunder, dass es sich hier zwar um ein schreibgeschütztes Dateisystem handelt, aber ... wenn es über AFP gemountet wird, funktioniert es, warum?

Weil Apples NFS-Implementierung einige Probleme mit dem Sperren hat. Wie in diesem Beitrag auf gluster.org angegeben:

OS X führt eine phänomenale Menge an Dateisperrungen durch (manche würden das unnötigerweise so sagen) und war immer sehr empfindlich in Bezug auf die Konfiguration der Sperren auf den NFS-Servern. Wenn Sie in einem großen Unternehmen einen NFS-Server zufällig auswählen, ist ein echter Erfolg ziemlich unwahrscheinlich.

In meinem Setup reagierte der NFS-Server (dh die FreeNAS-VM) plötzlich nicht mehr (von meinem Mac /var/log/system.log):

Mar 15 15:35:04 avallone.local rpc.lockd[8119]: Lockd got unexpected signal 20
Mar 15 15:35:04 avallone com.apple.launchd[1] (com.apple.lockd[8119]): Exited with code: 1
Mar 15 15:35:04 avallone com.apple.launchd[1] (com.apple.lockd): Throttling respawn: Will start in 10 seconds
(...)
Mar 15 15:35:07 avallone com.apple.launchd[1] (com.apple.statd[8121]): Exited with code: 1
Mar 15 15:35:07 avallone com.apple.launchd[1] (com.apple.statd): Throttling respawn: Will start in 10 seconds
Mar 15 15:35:13 avallone kernel[0]: nfs server 172.16.54.186:/mnt/raid/netboot: lockd not responding
Mar 15 15:35:13 avallone.local KernelEventAgent[72]: tid 00000000 received event(s) VQ_NOTRESP (1)
Mar 15 15:35:13 avallone.local KernelEventAgent[72]: tid 00000000 type 'nfs', mounted on '/Volumes/netboot', from '172.16.54.186:/mnt/raid/netboot', not responding
(...)
Mar 15 15:35:34 avallone.local KernelEventAgent[72]: tid 00000000 unmounting 1 filesystems

Die Ausgabe von sudo /usr/bin/hdiutil attach -debug /Volumes/netboot/p7zip-9.04-0.i386.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowsewar:

CBSDBackingStore::setPermission: opening /Volumes/netboot/p7zip-9.04-0.i386.dmg
CBSDBackingStore::OpenLockFriendly: mapping flags 0x00000000 -> 0x00000014 (locks are MANDATORY)
CBSDBackingStore:OpenLockFriendly: could not open with lock 5

Fehler 5 bedeutet (wieder von man 2 intro):

5 EIO-Eingangs- / Ausgangsfehler. Ein physischer Eingabe- oder Ausgabefehler ist aufgetreten. Dieser Fehler wird erst bei einer nachfolgenden Operation mit demselben Dateideskriptor gemeldet und kann durch nachfolgende Fehler verloren gehen (überschrieben werden).

was überhaupt nicht überraschend ist, das NFS-Dateisystem war weg.

Umgehung

Eine Problemumgehung (getestet unter OS X 10.8) besteht darin, NFS mit Optionen bereitzustellen nolocks,locallocks. Wie in dem Beitrag auf gluster.org bereits erwähnt:

Zum Glück gibt es eine Lösung: Deaktivieren Sie einfach die Netzwerksperre. Sie können dies tun, indem Sie die "nolocks, locallocks" -Optionen im Feld "Erweiterte Optionen" der NFS-Einhänge-Benutzeroberfläche des Festplatten-Dienstprogramms hinzufügen. Dies ist jedoch schmerzhaft, wenn Sie viele davon ausführen, und hilft mit / net überhaupt nicht. Sie können / etc / auto_master bearbeiten, um diese Optionen zum / net-Eintrag hinzuzufügen, dies hat jedoch keine Auswirkungen auf andere Bereitstellungen. Ich empfehle jedoch, die Option hidefromfinder in auto_master zu löschen. Wenn Sie jeden Automount korrigieren möchten, bearbeiten Sie /etc/autofs.conf und suchen Sie nach der Zeile, die mit AUTOMOUNTD_MNTOPTS = beginnt. Diese Optionen werden bei jedem Mount angewendet. Wenn Sie Nolocks und Locallocks hinzufügen, wird Ihre Welt nach dem Neustart schneller und glücklicher.

Ich habe manuell gemountet 172.16.54.186:/mnt/raid/netbootund es hat einwandfrei funktioniert:

$ sudo rm /private/var/netboot/Library-Shadow
$ sudo mount -o nolocks,locallocks,ro 172.16.54.186:/mnt/raid/netboot /tmp/mnt
$ sudo /usr/bin/hdiutil attach /tmp/mnt/p7zip-9.04-0.i386.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowse
/dev/disk6              Apple_partition_scheme          
/dev/disk6s1            Apple_partition_map             
/dev/disk6s2            Apple_HFS                       /Volumes/p7zip.pkg

Ich habe auch so bearbeitet /etc/auto_master:

+auto_master # Use directory service
#/net             -hosts    -nobrowse,hidefromfinder,nosuid
/net              -hosts    -nosuid,nolocks,locallocks
/home             auto_home -nobrowse,hidefromfinder
/Network/Servers  -fstab
/-                -static

gestoppt und gestartet automountdund autofsd:

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.automountd.plist 
$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.autofsd.plist 
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.autofsd.plist 
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.automountd.plist 

und arbeitete wie ein Zauber:

$ cd /net/172.16.54.186/mnt/raid/netboot
$ ls 
Network Trash Folder  Temporary Items  p7zip-9.04-0.i386.dmg
$ sudo rm /private/var/netboot/Library-Shadow
$ sudo /usr/bin/hdiutil attach p7zip-9.04-0.i386.dmg -notremovable -shadow /private/var/netboot/Library-Shadow -owners on -noverify -noautofsck -nobrowse
/dev/disk7              Apple_partition_scheme          
/dev/disk7s1            Apple_partition_map             
/dev/disk7s2            Apple_HFS                       /Volumes/p7zip.pkg
jaume
quelle
Super, was für eine gute Lektüre.
Gosmond
Wow das ist fantastisch, danke! Ich werde dies über das Wochenende testen, es könnte mein Problem lösen!
Josh
Danke jaume, das hat wunderbar geklappt! Leider habe ich bereits eine Alternative gefunden und muss dieselbe DMG nicht mehr mit einer Schattendatei mounten, sondern nolocks,locallocksunterstützt die NFS-Leistung anderer schreibgeschützter NFS-Freigaben mit DMG-Dateien. Vielen Dank!
Josh
Vielen Dank für Ihr Feedback. Ich bin froh, dass die Problemumgehung in Ihrer Umgebung funktioniert hat. Obwohl Sie es nicht mehr brauchen, ist es schön zu wissen, warum etwas nicht funktioniert, nicht wahr?
Jaume
Absolut, und jetzt weiß ich, was ich ändern muss, sollte ich das in Zukunft noch einmal brauchen! (Das Ziel war es zuvor, das /Libraryvon unserem NetBoot-Image auf ein RAID-Array zu setzen. Wir brauchen dies nicht mehr, da wir einen neuen Mac Pro-Server gekauft haben.)
Josh
-1

hdiutil attach -readonly ...

Für ein Bild, das in einem schreibgeschützten Dateisystem gespeichert ist, sollte meines -readonlyErachtens zum Zeitpunkt des Anhangs verwendet werden.

(Der AFP-Fall kann eine Ausnahme sein.)


In Anbetracht der Abwärtsabstimmung und des Kommentars von @Josh: Ich habe den -shadowTeil der Manpage falsch verstanden für hdiutil:

… Ermöglicht das Anhängen schreibgeschützter Bilder mit Lese- / Schreibzugriff…

- Ich stellte mir vor, dass -shadowdas außer Kraft setzen könnte -readonly.

Graham Perrin
quelle
Nein, du missverstehst. Ich wollte ein schreibgeschütztes Bild als Lese- / Schreib-Volume mit einer Schattendatei versehen.
Josh
1
In Bezug auf Ihre Bearbeitung, nein, beide verwenden -readonlyund -shadowaus einer Schattendatei lesen, aber das Bild schreibgeschützt bereitstellen. So können Sie beispielsweise an einer Schattendatei vorgenommene Änderungen lesen, ohne diese Schattendatei zu aktualisieren. Das Problem waren NFS-Sperren, wie Jaume herausfand.
Josh
Eine sehr nette Erklärung von @Josh - danke! Ich werde diese Antwort hinterlassen, damit andere Leser nicht den gleichen Fehler wie ich machen.
Graham Perrin