安装Nova文件系统
环境:
OS: Centos 7
kernel_version: 3.1.0
nova项目代码已经包含了kernel代码,只需要编译和安装kernel(同时编译nova模块),然后模拟PMem设备,最后载入nova模块以及挂载nova文件系统即可.
1.编译安装kernel以及nova模块
-
下载代码 Nova项目地址
-
解压代码
unzip linux-nova-master
-
移动到
/usr/src
-
配置编译选项
make menuconfig
注意
[*]
是编译进入内核<M>
是编译成模块,能够在/lib/modules/$(uname -r)/
下找到Processor type and features ---> <*> Support non-standard NVDIMMs and ADR protected memory Memory Management options ---> [*] Allow for memory hot-add [*] Online the newly added memory blocks by default [*] Allow for memory hot remove [*] Device memory (pmem, HMM, etc...) hotplug support Device Drivers ---> <*> NVDIMM (Non-Volatile Memory Device) Support ---> <M> PMEM: Persistent memory block device support <M> BLK: Block data window (aperture) device support [*] BTT: Block Translation Table (atomic sector updates) [*] PFN: Map persistent (device) memory File systems ---> [*] Direct Access (DAX) support <M> NOVA: log-structured file system for non-volatile memories
-
编译和安装内核
make -j12
sudo make modules_install
sudo make install
在
./arch/x86/boot/
目录下生成bzImage
文件表示编译成功并且在
/lib/modules/$(uname -r)/kernel/fs/nova
下能够看到编译好的nova.ko
模块
2.模拟PMem设备环境
建议内存4GB+,我的虚拟机分配了8G,将地址6g~8g分配给pmem
使用
memmap
命令将内存某块区域分配给pmem设备
memmap
用法
-
修改grub文件,添加启动命令
sudo vim /etc/default/grub
添加
GRUB_CMDLINE_LINUX="memmap=2G!6G"
-
重新制作grub启动文件(非uefi启动)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
-
重启机器,查看是否生成
/dev/pmem0
,或者看dmesg|grep user
3. 初次挂载Nova文件系统
-
载入
nova.ko
模块sudo modprobe nova
查看是否载入成功
lsmod | grep nova
-
挂载至某个目录
sudo mount -t NOVA -o init /dev/pmem0 /mnt/ramdisk