1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NetBSDAdvent Calendar 2017

Day 7

NetBSDでnilfsを試してみる。

Last updated at Posted at 2017-12-07

NetBSD Advent Calendar 2017 7日目の記事です。

今日はnilfsをNetBSDで試してみたよ!(試しただけ...)の話をしようと思います。単に試してみたよ、的な話ですがNetBSDでサポートしている様々なファイルシステムを試してみるための足がかかりになればと思います。

nilfsって何?

nilfaは「連続的にスナップショットを作成することを特徴とする Linux 向けのログ構造化ファイルシステムです。 」(nilfs公式サイトより引用)とのことで、現在はLinuxカーネルに取り込まれているファイルシステムの一つです。
Wikipediaのnilfsの記事を見ると、対応プラットフォームに"NetBSD"が含まれています。カーネルソースコードをgrepしてみると、確かにnilfs関連のソースコードが存在しているようです。

fpig@vmnbsd71 sys $ find fs/ -type f | grep nilfs | grep -v CVS
fs/nilfs/files.nilfs
fs/nilfs/Makefile
fs/nilfs/nilfs_bswap.h
fs/nilfs/nilfs.h
fs/nilfs/nilfs_mount.h
fs/nilfs/nilfs_fs.h
fs/nilfs/nilfs_vfsops.c
fs/nilfs/nilfs_subr.c
fs/nilfs/nilfs_subr.h
fs/nilfs/nilfs_vnops.c

nilfsを有効にしたカーネルを作成してみる

カーネルコンフィグレーションでnilfsを有効にしてビルドします。ビルド手順はこちらの記事をご参照ください。

fpig@vmnbsd71 ~ $ cd /usr/src/sys/arch/amd64/conf/
fpig@vmnbsd71 conf $ diff -ur GENERIC ADVCAL2017
--- GENERIC     2016-12-23 15:33:56.000000000 +0900
+++ ADVCAL2017  2017-12-03 18:21:12.000000000 +0900
@@ -157,8 +157,8 @@
 file-system    CODA            # Coda File System; also needs vcoda (below)
 file-system    PTYFS           # /dev/ptm support
 #file-system   UDF             # experimental - OSTA UDF CD/DVD file-system
-#file-system   HFS             # experimental - Apple HFS+ (read-only)
-#file-system   NILFS           # experimental - NTT's NiLFS(2)
+file-system    HFS             # experimental - Apple HFS+ (read-only)
+file-system    NILFS           # experimental - NTT's NiLFS(2)

 # File system options
 options        QUOTA           # legacy UFS quotas

ビルドしたカーネルでNetBSDを起動すると、nilfsが利用できるようになります。

nilfsでフォーマットしたディスクイメージを用意する

実はNetBSDでのnilfsサポートは現状だと読み込みのみのため、nilfsでのフォーマットとファイル書き込みはLinuxでの作業になります...。

以下はLinux(Ubuntu 16.04.3 LTS)での作業になります。

nilfs関連ツールのインストール

root@2f4f2dea8c03:~# apt-cache search nilfs
libguestfs-nilfs - guest disk image management system - NILFS v2 support
nilfs-tools - Continuous Snapshotting Log-structured Filesystem
nilfs-tools-dbg - Continuous Snapshotting Log-structured Filesystem (debug)
root@2f4f2dea8c03:~# apt-get install -y nilfs-tools

コマンドとしては以下がインストールされます。

root@2f4f2dea8c03:~# dpkg -L nilfs-tools | grep bin\/
/sbin/nilfs_cleanerd
/sbin/mkfs.nilfs2
/sbin/umount.nilfs2
/sbin/mount.nilfs2
/usr/sbin/nilfs-tune
/usr/sbin/nilfs-clean
/usr/sbin/nilfs-resize
/usr/bin/dumpseg
/usr/bin/chcp
/usr/bin/lssu
/usr/bin/mkcp
/usr/bin/lscp
/usr/bin/rmcp

ディスクイメージを作成する

# # 256MBのディスクイメージを作成する。
root@2f4f2dea8c03:~# dd if=/dev/zero of=nilfs.img bs=26214400 count=10

ディスクイメージをnilfsでフォーマットする

nilfsでディスクイメージをフォーマットしたのち、確認用に適当なファイルを作成します。

root@2f4f2dea8c03:~# mkfs.nilfs2 ./nilfs.img
mkfs.nilfs2 (nilfs-utils 2.2.3)
Start writing file system initial data to the device
       Blocksize:4096  Device:./nilfs.img  Device Size:262144000
File system initialization succeeded !!
root@2f4f2dea8c03:~# mount -o loop nilfs.img ./mnt_nilfs/
root@2f4f2dea8c03:~# mount | grep nilfs
/root/nilfs.img on /root/mnt_nilfs type nilfs2 (rw,relatime)
root@2f4f2dea8c03:~# echo 'Hello,nilfs.' > ./mnt_nilfs/hello.txt
root@2f4f2dea8c03:~# cat ./mnt_nilfs/hello.txt
Hello,nilfs.

このディスクイメージをNetBSD環境に持っていてファイルの中身がみられるか試してみます。

NetBSDでのnilfsマウント

vndconfg でディスクイメージをループバックマウントするための準備を行います。

fpig@vmnbsd71 ~ $ sudo vnconfig vnd0 nilfs.img
fpig@vmnbsd71 ~ $ sudo vnconfig -l
vnd0: / (/dev/wd0a) inode 185547
vnd1: not in use
vnd2: not in use
vnd3: not in use

マウントして確認してみる

nilfsファイルシステムをmountしてみます。現状は読み取り専用でのmountになります。

以下の手順で無事にnilfsでフォーマットしたファイルの中身を見ることができました。

fpig@vmnbsd71 ~ $ sudo mount -w -t nilfs /dev/vnd0a /home/fpig/mnt_nilfs
mount_nilfs: Cannot mount /dev/vnd0a on /home/fpig/mnt_nilfs: Read-only file system
fpig@vmnbsd71 ~ $ mount | grep nilfs
/dev/vnd0a on /home/fpig/mnt_nilfs type nilfs (local)
fpig@vmnbsd71 ~ $ cat ./mnt_nilfs/hello.txt
Hello,nilfs.

まとめ

NetBSDでnilfsを試してみました。現状では読み込みのみになっていますが、同様の手法でNetBSDがサポートするファイルシステム(HFSとか)をお手軽に試してみることができそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?