web-dev-qa-db-fra.com

Créer APFS RAM sur macOS High Sierra

créant généralement des disques RAM fonctionnent avec les commandes suivantes

hdid -nomount ram://<blocksize>

Renvoie par exemple/dev/disk2 Ensuite, je formaterais le disque, en disant

newfs_hfs /dev/disk2

suivi par le montage:

mount -t hfs /dev/disk2 /some/mount/target

Cette procédure ne semble pas fonctionner avec APFS. Je suis sur High Sierra beta 9. La commande mount ne génère aucune erreur, mais le chemin n'est pas monté.

Dans mon cas, une fois la commande hdid terminée, newfs_apfs -i /dev/disk2 rendements

nx_kernel_mount:1364: checkpoint search: largest xid 1, best xid 1 @ 1
nx_kernel_mount:1422: sanity checking all nx state... please be patient.
spaceman_metazone_init:278: no metazone for device 0, of size 209715200 bytes, block_size 4096
apfs_newfs:18075: FS will NOT be encrypted.

Lorsque j'entre alors mount -t apfs /dev/disk2 /some/target/path alors les commandes de montage semblent fonctionner pendant 2 secondes, ne donnent aucune sortie et le montage n'a PAS réussi.

Quelqu'un peut-il me dire comment faire un APFS RAM disque s.t. cela fonctionne?: P

PS: j'ai aussi essayé quelque chose comme diskutil partitionDisk /dev/disk2 GPT APFS myvolumename 0b qui monte le volume sur /Volumes/myvolumename mais crée encore un autre disque (disk3 dans ce cas) ce qui me semble étrange!

14
NameZero912

Trouvé une solution:

hdid -nomount ram://<blocksize>
diskutil erasedisk <format> <diskname> <output path of previous hdid command>

<format> est tiré de diskutil listFilesystems de la colonne "Personnalité". Oui, il me semble aussi bizarre que vous deviez citer ce paramètre, par ex. lors de la spécification des variantes sensibles à la casse, mais bon ...

<blocksize> Est 2048 * desired size in megabytes

La dernière commande formate le disque RAM et le monte sur /Volumes/<diskname>

Il semble que lorsque vous saisissez diskutil list, Vous verrez deux nouveaux disques, celui hdid créé et un synthétisé.

Pour détruire le RAM disque à nouveau, appelez diskutil eject <output path of previous hdid command>, Par exemple diskutil eject /dev/disk2

Cela fera tout le travail pour vous, démontera le chemin /Volumes/<diskname> Et détruira les deux disques, libérant ainsi votre mémoire.

Gardez à l'esprit que les valeurs minimum/maximum pour <blocksize> Dépendent du <format> Choisi. De plus, <diskname> Ne peut pas toujours être choisi arbitrairement. Exemplaire, FAT32 requiert qu'il soit composé de lettres majuscules!

À votre santé!

11
NameZero912

@Glyph a fourni la meilleure réponse dans un commentaire à la réponse acceptée , mais elle mérite sa propre réponse:

diskutil partitionDisk $(hdiutil attach -nomount ram://2048000) 1 GPTFormat APFS 'ramdisk' '100%'

J'ai mis à jour la réponse de Glyph pour simplifier un peu le nom du volume.

15
unrivaledcreations

De plus, les informations pour supprimer/détruire le disque RAM doivent être corrigées. Ramdisk sera créé dans path/Volumes/'ramdisk', donc la commande est:

diskutil eject /Volumes/'ramdisk'
0
sw.smayer97