Tại sao tôi không thể mở các tệp DMG nằm trong hệ thống tệp NFS chỉ đọc?


15

Tôi đã phát hiện ra một vấn đề kỳ lạ ... nếu tôi có các tệp hình ảnh đĩa (DMG) nằm trong chia sẻ NFS chỉ đọc, tôi không thể mở chúng trong Mac OS X 10.7.5. Các tệp tương tự mở tốt khi được truy cập qua AFP. Tuy nhiên, cố gắng mở chúng bằng cách sử dụng hdiutil attachkhi chúng trên NFS chia sẻ kết quả trong "đính kèm thất bại - Hệ thống tệp chỉ đọc":

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

Ngay cả khi chia sẻ AFP ở chế độ chỉ đọc, tôi có thể đính kèm những hình ảnh tương tự. Nhưng vì một số lý do, một chia sẻ NFS chỉ đọc không hoạt động.

Cuối cùng, những gì tôi muốn làm là đính kèm các hình ảnh với một tập tin bóng , để gắn kết các hình ảnh chỉ đọc dưới dạng đọc-ghi. Nhưng điều này cũng thất bại theo cách tương tự:

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

Một lần nữa, điều này hoạt động hoàn hảo nếu hình ảnh được phục vụ qua AFP. Nó cũng hoạt động tốt nếu chia sẻ NFS là đọc-ghi, nhưng vì lý do bảo mật, tôi không thể làm điều đó.

Làm cách nào tôi có thể gắn các tệp DMG nằm trong chia sẻ NFS chỉ đọc?


Thông tin thêm:

Dòng liên quan từ /etc/exportstrên máy chủ FreeNAS (FreeBSD 8.2-RELEASE-p7):

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

Đầu ra của /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

Đầu ra của rpcinfo -pMáy chủ NFS:

   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

Đầu ra của mountmáy khách Mac OS X 10.7.5:

/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)

Và cuối cùng, đầu ra của /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# 

1
Tôi không có chia sẻ NFS để kiểm tra, nhưng tôi sẽ thử có một hệ thống yên tĩnh và chạy fs_usageđể xem liệu tôi có thể bắt được hệ thống tập tin thực hiện cuộc gọi ghi - có thể gửi lỗi với Apple không. Có vẻ như bạn sẽ có thể đọc DMG chỉ đọc - nhưng có lẽ có một số lý do kỹ thuật sâu sắc hơn tại sao nó không thành công và HĐH cần một thông báo lỗi tốt hơn để thông báo cho chúng tôi lý do tại sao ...
bmike

Ý kiến ​​hay @bmike! Ngoài ra, tôi đã chạy hdiutilvới công -debugtắc, tôi có thể đăng các nhật ký đó tại đây
Josh

Thật vậy - đưa ra câu trả lời với bất cứ điều gì bạn tìm thấy và chúng tôi có thể lập nhóm - báo cáo lỗi hoặc chỉnh sửa câu trả lời khi chúng tôi tách ra "lý do".
bmike

HĐH nào chạy trên máy chủ NFS? Đầu ra của rpcinfo -pmáy chủ là gì? Đầu ra mounttrên máy Mac của bạn là gì? Bạn cũng có thể thêm dòng liên quan /etc/exportstrên máy chủ NFS vào câu hỏi không?
jaume

1
Tôi đã thiết lập máy chủ NFS (Ubuntu 12.04) với bản xuất chỉ đọc mà tôi đã gắn trên máy Mac (OS X 10.8.2) và tôi không thể tái tạo vấn đề của bạn (Tôi đã kiểm tra tất cả các định dạng dmg: chỉ đọc, nén, được mã hóa, v.v.) ... Bạn có thể thêm đầu ra hdiutil -debugvà thông tin tôi đã hỏi cho câu hỏi của bạn không?
jaume

Câu trả lời:


11

Tôi đã quan tâm đến câu hỏi này từ tháng 11 năm 2012 và thậm chí đã thiết lập một máy ảo FreeNAS để tái tạo vấn đề.

Cuối cùng tôi đã từ bỏ nhưng vì câu hỏi đã được hồi sinh, tôi sẽ chia sẻ những gì tôi đã tìm ra sau đó và trong những giờ qua (may mắn là tôi đã không xóa VM) và tôi nghĩ nguyên nhân của vấn đề này là gì. Tôi cũng đã tìm thấy một cách giải quyết.

Thiết lập của tôi

Trước hết, đây là thiết lập thử nghiệm của tôi:

  • OS X 10.8.2 (xin lỗi, không có 10.7.5 xung quanh).

  • FreeNAS (FreeBSD 8.2-LIÊN QUAN-p1)

    nhập mô tả hình ảnh ở đây

    (Phiên bản của OP là FreeBSD 8.2-RELEASE-p7 - Tôi không thể tìm thấy phiên bản tương tự.)

  • Một hệ thống tập tin NAS trong /mnt/raid:

    nhập mô tả hình ảnh ở đây

  • Một người dùng có tên netboot:

    nhập mô tả hình ảnh ở đây

  • Một hệ thống tập tin AFP ( /mnt/raid/netboot) được xuất dưới dạng netboot:

    nhập mô tả hình ảnh ở đây

    (Lưu ý rằng nó được cấu hình chỉ đọc).

  • Hệ thống tệp NFS (cùng đường dẫn với hệ thống tệp AFP, để khớp với cấu hình của OP /mnt/raid/netboot:):

    nhập mô tả hình ảnh ở đây

AFP hoạt động, NFS không

Tôi đã gắn hệ thống tệp chỉ đọc AFP với tư cách người dùng netbootbằng Finder với K:

nhập mô tả hình ảnh ở đây

và gắn tệp hình ảnh DMG mà không gặp vấn đề gì:

$ 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

Sau đó, tôi đã ngắt kết nối nó và gắn hệ thống tệp NFS chỉ đọc (tôi cũng đã sử dụng K) và không thể gắn tệp hình ảnh DMG.

Tôi nghĩ rằng vấn đề được ghi lại ở đây:

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

Lỗi 30 có nghĩa là (xem man 2 intro):

30 EROFS Hệ thống tập tin chỉ đọc. Một nỗ lực đã được thực hiện để sửa đổi một tập tin hoặc thư mục đã được thực hiện trên một hệ thống tập tin chỉ đọc vào thời điểm đó.

Không có gì ngạc nhiên ở đây, nó thực sự là một hệ thống tập tin chỉ đọc, nhưng ... khi được gắn trên AFP, nó hoạt động, tại sao?

Bởi vì việc triển khai NFS của Apple có một số vấn đề với việc khóa. Như đã nêu trong bài viết này tại gluster.org:

OS X thực hiện số lượng khóa tệp hiện tượng (một số người sẽ nói là không cần thiết) và luôn thực sự nhạy cảm với cấu hình khóa trên các máy chủ NFS. Nhiều đến mức nếu bạn chọn ngẫu nhiên một máy chủ NFS trong một doanh nghiệp lớn, thành công thực sự là rất khó xảy ra.

Trong thiết lập của tôi, máy chủ NFS (nghĩa là FreeNAS VM) đột nhiên không phản hồi (từ máy Mac của tôi /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

Đầu ra của 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 -nobrowse:

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

Lỗi 5 có nghĩa là (một lần nữa từ man 2 intro):

5 Lỗi đầu vào / đầu ra EIO. Một số lỗi đầu vào hoặc đầu ra vật lý xảy ra. Lỗi này sẽ không được báo cáo cho đến khi một thao tác tiếp theo trên cùng một bộ mô tả tệp và có thể bị mất (ghi đè) bởi bất kỳ lỗi nào sau đó.

Điều này không gây ngạc nhiên chút nào, hệ thống tập tin NFS đã biến mất.

Cách giải quyết

Một cách giải quyết (đã thử nghiệm trên OS X 10.8) là gắn NFS với các tùy chọn nolocks,locallocks. Như đã giải thích trong bài viết tại gluster.org đã được đề cập:

May mắn thay, có một cách khắc phục: chỉ cần tắt khóa mạng. Bạn có thể làm điều đó bằng cách thêm các tùy chọn "nolocks, locallocks" trong trường tùy chọn nâng cao của UI gắn NFS của Disk Utility, nhưng điều này thật đau đớn nếu bạn làm rất nhiều trong số chúng và không giúp ích gì cả với / net. Bạn có thể chỉnh sửa / etc / auto_master để thêm các tùy chọn này vào mục / net, nhưng nó không ảnh hưởng đến các mount khác - tuy nhiên tôi khuyên bạn nên xóa tùy chọn hidefromfinder trong auto_master. Nếu bạn muốn sửa mọi thiết bị tự động, hãy chỉnh sửa /etc/autofs.conf và tìm kiếm dòng bắt đầu bằng AUTOMOUNTD_MNTOPTS =. Các tùy chọn này được áp dụng trên mọi gắn kết. Thêm nolocks, locallocks và thế giới của bạn sẽ nhanh hơn và hạnh phúc hơn sau khi bạn khởi động lại.

Tôi tự gắn 172.16.54.186:/mnt/raid/netbootvà nó hoạt động hoàn hảo:

$ 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

Tôi cũng chỉnh sửa /etc/auto_masternhư thế này:

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

dừng lại và bắt đầu automountdautofsd:

$ 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 

và làm việc như một lá bùa:

$ 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

Tuyệt vời, thật là một đọc tốt.
gosmond

Wow điều này thật tuyệt vời, Cảm ơn! Tôi sẽ kiểm tra điều này vào cuối tuần, nó có thể giải quyết vấn đề của tôi!
Josh

Cảm ơn jaume, điều này làm việc như một cơ duyên! Thật không may, tôi đã tìm thấy một giải pháp thay thế và không còn cần phải gắn DMG tương tự này với một tệp bóng, nhưng nolocks,locallocksđang giúp hiệu suất NFS của các chia sẻ NFS chỉ đọc khác với các tệp DMG, xin cảm ơn!
Josh

Cảm ơn phản hồi của bạn, tôi rất vui vì cách giải quyết trong môi trường của bạn. Mặc dù bạn không cần nó nữa, thật vui khi biết tại sao thứ gì đó không hoạt động, phải không?
jaume

Hoàn toàn, và bây giờ tôi biết những gì tôi cần thay đổi nếu tôi cần điều này một lần nữa trong tương lai! (Mục tiêu trước đây là đặt /Librarymảng RAID hình ảnh NetBoot của chúng tôi. Chúng tôi không còn cần điều này khi chúng tôi mua máy chủ Mac Pro mới)
Josh

-1

đính kèm hdiutil -readonly

Đối với một hình ảnh được lưu trữ trên hệ thống tệp chỉ đọc, tôi cho rằng -readonlynên sử dụng tại thời điểm đính kèm.

(Trường hợp AFP có thể là ngoại lệ.)


Xem xét bỏ phiếu xuống và nhận xét từ @Josh: Tôi đã hiểu nhầm -shadowphần của trang người đàn ông cho hdiutil:

Sự cho phép hình ảnh chỉ đọc được đính kèm đọc / ghi

- Tôi tưởng tượng rằng -shadowcó thể ghi đè -readonly.


Không, bạn hiểu lầm. Tôi muốn tùy chỉnh một hình ảnh chỉ đọc dưới dạng một khối lượng đọc-ghi với một tập tin bóng.
Josh

1
Về chỉnh sửa của bạn, không, sử dụng cả hai -readonly-shadowsẽ đọc từ một tệp bóng nhưng gắn kết hình ảnh chỉ đọc. Vì vậy, ví dụ, nó sẽ cho phép bạn đọc các thay đổi được thực hiện đối với tệp bóng mà không cập nhật tệp bóng đó. Vấn đề là khóa NFS như jaume đã phát hiện ra.
Josh

Một lời giải thích rất gọn gàng từ @Josh - cảm ơn! Tôi sẽ để lại câu trả lời này để những độc giả khác không mắc lỗi tương tự như tôi.
Graham Perrin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.