User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
start [2018/09/26 23:19]
Robert Elliott
start [2020/06/11 20:00]
Ira Weiny [Filesystems]
Line 10: Line 10:
   * NDCTL: https://​github.com/​pmem/​ndctl.git   * NDCTL: https://​github.com/​pmem/​ndctl.git
   * NDCTL man pages online: http://​pmem.io/​ndctl/​   * NDCTL man pages online: http://​pmem.io/​ndctl/​
-  * linux-nvdimm Mailing List: https://​lists.01.org/​mailman/listinfo/​linux-nvdimm+  * linux-nvdimm Mailing List: https://​lists.01.org/​postorius/lists/​linux-nvdimm.lists.01.org
   * linux-nvdimm Patchwork: https://​patchwork.kernel.org/​project/​linux-nvdimm/​list/​   * linux-nvdimm Patchwork: https://​patchwork.kernel.org/​project/​linux-nvdimm/​list/​
  
Line 76: Line 76:
  
 <​code>​ <​code>​
-CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_ZONE_DEVICE=y
-CONFIG_FS_DAX=y +
-CONFIG_X86_PMEM_LEGACY=y +
-CONFIG_LIBNVDIMM=y +
-CONFIG_BLK_DEV_PMEM=m +
-CONFIG_ARCH_HAS_PMEM_API=y +
-CONFIG_TRANSPARENT_HUGEPAGE=y+
 CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTPLUG=y
 CONFIG_MEMORY_HOTREMOVE=y CONFIG_MEMORY_HOTREMOVE=y
-CONFIG_ZONE_DEVICE=y +CONFIG_TRANSPARENT_HUGEPAGE=y 
-CONFIG_FS_DAX_PMD=y+CONFIG_ACPI_NFIT=m 
 +CONFIG_X86_PMEM_LEGACY=m 
 +CONFIG_OF_PMEM=m 
 +CONFIG_LIBNVDIMM=m 
 +CONFIG_BLK_DEV_PMEM=m 
 +CONFIG_BTT=y 
 +CONFIG_NVDIMM_PFN=y 
 +CONFIG_NVDIMM_DAX=y 
 +CONFIG_FS_DAX=y 
 +CONFIG_DAX=y 
 +CONFIG_DEV_DAX=m 
 +CONFIG_DEV_DAX_PMEM=m 
 +CONFIG_DEV_DAX_KMEM=m
 </​code>​ </​code>​
  
Line 337: Line 343:
  
 We then structure the rest of the ''​jq''​ command to operate on normal objects, and it works whether we have one namespace or many. We then structure the rest of the ''​jq''​ command to operate on normal objects, and it works whether we have one namespace or many.
 +
 +==== Persistent Naming ====
 +----
 +The device names chosen by the kernel are subject to creation order and discovery order. Environments can not rely the kernel name being consistent from one boot to the next. For the most part they do not change if the configuration stays static, but if a permanent name is needed use /​dev/​disk/​by-id. Recent versions of udev deploy the following udev rule in 60-persistent-storage.rules:​
 +<​code>​
 +# PMEM devices
 +KERNEL=="​pmem*",​ ENV{DEVTYPE}=="​disk",​ ATTRS{uuid}=="?​*",​ SYMLINK+="​disk/​by-id/​pmem-$attr{uuid}"​
 +</​code>​
 +
 +This rule yields symlinks like the following to be created for namespaces defined by labels:
 +
 +<​code>​
 +ls -l /​dev/​disk/​by-id/​*
 + ​lrwxrwxrwx 1 root root 13 Jul  9 15:24 pmem-206dcdfe-69b7-4e86-a01b-f540621ce62e -> ../​../​pmem1.2
 + ​lrwxrwxrwx 1 root root 13 Jul  9 15:24 pmem-73840bf1-4e74-4ba4-a9c8-8248934c07c8 -> ../​../​pmem1.1
 + ​lrwxrwxrwx 1 root root 13 Jul  9 15:24 pmem-8137bdfd-3c4d-4b26-b326-21da3d4cd4e5 -> ../​../​pmem1.4
 + ​lrwxrwxrwx 1 root root 13 Jul  9 15:24 pmem-f43d1b6e-3300-46cb-8afc-06d66a7c16f6 -> ../​../​pmem1.3
 +</​code>​
 +
 +The persistent name for a pmem namespace is then listed in /etc/fstab like so:
 +<​code>​
 +/​dev/​disk/​by-id/​pmem-206dcdfe-69b7-4e86-a01b-f540621ce62e /mnt/pmem xfs       ​defaults,​dax ​       1 2
 +</​code>​
 +
  
 ==== Partitions ==== ==== Partitions ====
Line 399: Line 429:
 <​code>​ <​code>​
 $ mkfs.ext4 -F /​dev/​pmem0p1 $ mkfs.ext4 -F /​dev/​pmem0p1
-$ mkfs.xfs -f /​dev/​pmem0p2+$ mkfs.xfs -f -m reflink=0 ​/​dev/​pmem0p2
 $ mkfs.btrfs -f /​dev/​pmem0p3 $ mkfs.btrfs -f /​dev/​pmem0p3
-$ mount -o dax /​dev/​pmem0p1 /​mnt/​ext4-pmem0 +$ mount [dax_mount_options] ​/​dev/​pmem0p1 /​mnt/​ext4-pmem0 
-$ mount -o dax /​dev/​pmem0p2 /​mnt/​xfs-pmem0+$ mount [dax_mount_options] ​/​dev/​pmem0p2 /​mnt/​xfs-pmem0
 $ mount /​dev/​pmem0p3 /​mnt/​btrfs-pmem0 $ mount /​dev/​pmem0p3 /​mnt/​btrfs-pmem0
  
Line 424: Line 454:
 /​dev/​pmem0p3 ​                   4.3G   ​17M ​ 4.1G   1% /​mnt/​btrfs-pmem0 /​dev/​pmem0p3 ​                   4.3G   ​17M ​ 4.1G   1% /​mnt/​btrfs-pmem0
 </​code>​ </​code>​
 +
 +Where **[dax_mount_options]** depends on the kernel support you have and the desired behavior. ​ **For kernel version less than 5.8 the legacy '-o dax' option must be used.** ​ In 5.8 new mount options were introduced. ​ See [[fs_mount_options|fs_mount_options]] for details.
  
 Check the kernel log to ensure the DAX mount option was honored; mount does not print this information. Example failures: Check the kernel log to ensure the DAX mount option was honored; mount does not print this information. Example failures:
start.txt · Last modified: 2020/06/12 15:58 by Ira Weiny