kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

Free Software FoundationがGPL違反との見解

  以前紹介した通り、「Ubuntu 16.04」はZFSのカーネルモジュールを同梱してリリースする予定です。


  前回「Software Freedom Conservancy」がGPL違反の見解を出している内容を紹介しました。
  2016/4/11に「Free Software Foundation(FSF)」のRichard Stallman氏が、同様にZFSカーネルモジュール同梱はGPL違反であるとの見解を出しています。


  GPL違反

    CDDLがGPLと互換性がなく、また、GPLはZFSカーネルモジュールにGPLと互換性のあるライセンスを要求するため、ライセンスの互換性がない状態でZFSカーネルモジュールを同梱して配布することはGPL違反であるとのことです。

    またこの問題の理想的な解決方法は、ZFSの著作権保持者(Oracle)がZFSにGPLと互換性のあるライセンスを与えZFSをリリースすることであり、ZFSの著作権保持者にそうするよう促してくとのことです。

  参考


Ubuntu 16.04にZFSカーネルモジュールは同梱されているのか?

  以前紹介した通り、2016/3/25にUbuntu 16.04最終βがリリースされ、2016/4/21に「Ubuntu 16.04」が正式リリースされる予定です。
  (日本時間では、+1日から+2日してください。)

  また「Ubuntu 16.04」はFinal Freezeに入り、致命的な問題の対応のみ行われる状態です。
  現在「Ubuntu 16.04」でZFSカーネルモジュールが同梱されているかどうか見てみたいと思います。

  Ubuntu 16.04の環境

    今回用意した「Ubuntu 16.04」の環境は、「Ubuntu Desktop 16.04 最終β 64bit版」をインストール後、「ソフトウェアの更新」でパッケージをすべてアップデートした環境です。



  1.ZFSカーネルモジュールは読み込まれているか

    ZFSカーネルモジュールは読み込まれているか見てみると、ZFSカーネルモジュールは読み込まれていませんでした。


  2.ZFSカーネルモジュールは存在するか

    ZFSカーネルモジュールは存在するか見てみると、ZFSカーネルモジュールが提供されていました。

ubuntu@vb-ubuntu1604:~$ modinfo zfs
filename:       /lib/modules/4.4.0-18-generic/kernel/zfs/zfs/zfs.ko
version:        0.6.5.6-0ubuntu3
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
srcversion:     A87B4C0C518AC85BD042501
depends:        spl,znvpair,zunicode,zcommon,zavl
vermagic:       4.4.0-18-generic SMP mod_unload modversions
parm:           zvol_inhibit_dev:Do not create zvol device nodes (uint)
parm:           zvol_major:Major number for zvol device (uint)
parm:           zvol_max_discard_blocks:Max number of blocks to discard (ulong)
parm:           zvol_prefetch_bytes:Prefetch N bytes at zvol start+end (uint)
parm:           zio_delay_max:Max zio millisec delay before posting event (int)
parm:           zio_requeue_io_start_cut_in_line:Prioritize requeued I/O (int)
parm:           zfs_sync_pass_deferred_free:Defer frees starting in this pass (int)
parm:           zfs_sync_pass_dont_compress:Don't compress starting in this pass (int)
parm:           zfs_sync_pass_rewrite:Rewrite new bps starting in this pass (int)
parm:           zil_replay_disable:Disable intent logging replay (int)
parm:           zfs_nocacheflush:Disable cache flushes (int)
parm:           zil_slog_limit:Max commit bytes to separate log device (ulong)
parm:           zfs_object_mutex_size:Size of znode hold array (uint)
parm:           zfs_read_chunk_size:Bytes to read per chunk (long)
parm:           zfs_immediate_write_sz:Largest data block to write to zil (long)
parm:           zfs_dbgmsg_enable:Enable ZFS debug message log (int)
parm:           zfs_dbgmsg_maxsize:Maximum ZFS debug log size (int)
parm:           zfs_admin_snapshot:Enable mkdir/rmdir/mv in .zfs/snapshot (int)
parm:           zfs_expire_snapshot:Seconds to expire .zfs/snapshot (int)
parm:           zfs_vdev_aggregation_limit:Max vdev I/O aggregation size (int)
parm:           zfs_vdev_read_gap_limit:Aggregate read I/O over gap (int)
parm:           zfs_vdev_write_gap_limit:Aggregate write I/O over gap (int)
parm:           zfs_vdev_max_active:Maximum number of active I/Os per vdev (int)
parm:           zfs_vdev_async_write_active_max_dirty_percent:Async write concurrency max threshold (int)
parm:           zfs_vdev_async_write_active_min_dirty_percent:Async write concurrency min threshold (int)
parm:           zfs_vdev_async_read_max_active:Max active async read I/Os per vdev (int)
parm:           zfs_vdev_async_read_min_active:Min active async read I/Os per vdev (int)
parm:           zfs_vdev_async_write_max_active:Max active async write I/Os per vdev (int)
parm:           zfs_vdev_async_write_min_active:Min active async write I/Os per vdev (int)
parm:           zfs_vdev_scrub_max_active:Max active scrub I/Os per vdev (int)
parm:           zfs_vdev_scrub_min_active:Min active scrub I/Os per vdev (int)
parm:           zfs_vdev_sync_read_max_active:Max active sync read I/Os per vdev (int)
parm:           zfs_vdev_sync_read_min_active:Min active sync read I/Os per vdev (int)
parm:           zfs_vdev_sync_write_max_active:Max active sync write I/Os per vdev (int)
parm:           zfs_vdev_sync_write_min_active:Min active sync write I/Os per vdev (int)
parm:           zfs_vdev_mirror_switch_us:Switch mirrors every N usecs (int)
parm:           zfs_vdev_scheduler:I/O scheduler (charp)
parm:           zfs_vdev_cache_max:Inflate reads small than max (int)
parm:           zfs_vdev_cache_size:Total size of the per-disk cache (int)
parm:           zfs_vdev_cache_bshift:Shift size to inflate reads too (int)
parm:           metaslabs_per_vdev:Divide added vdev into approximately (but no more than) this number of metaslabs (int)
parm:           zfs_txg_timeout:Max seconds worth of delta per txg (int)
parm:           zfs_read_history:Historic statistics for the last N reads (int)
parm:           zfs_read_history_hits:Include cache hits in read history (int)
parm:           zfs_txg_history:Historic statistics for the last N txgs (int)
parm:           zfs_flags:Set additional debugging flags (uint)
parm:           zfs_recover:Set to attempt to recover from fatal errors (int)
parm:           zfs_free_leak_on_eio:Set to ignore IO errors during free and permanently leak the space (int)
parm:           zfs_deadman_synctime_ms:Expiration time in milliseconds (ulong)
parm:           zfs_deadman_enabled:Enable deadman timer (int)
parm:           spa_asize_inflation:SPA size estimate multiplication factor (int)
parm:           spa_slop_shift:Reserved free space in pool (int)
parm:           spa_config_path:SPA config file (/etc/zfs/zpool.cache) (charp)
parm:           zfs_autoimport_disable:Disable pool import at module load (int)
parm:           spa_load_verify_maxinflight:Max concurrent traversal I/Os while verifying pool during import -X (int)
parm:           spa_load_verify_metadata:Set to traverse metadata on pool import (int)
parm:           spa_load_verify_data:Set to traverse data on pool import (int)
parm:           zio_taskq_batch_pct:Percentage of CPUs to run an IO worker thread (uint)
parm:           metaslab_aliquot:allocation granularity (a.k.a. stripe size) (ulong)
parm:           metaslab_debug_load:load all metaslabs when pool is first opened (int)
parm:           metaslab_debug_unload:prevent metaslabs from being unloaded (int)
parm:           metaslab_preload_enabled:preload potential metaslabs during reassessment (int)
parm:           zfs_mg_noalloc_threshold:percentage of free space for metaslab group to allow allocation (int)
parm:           zfs_mg_fragmentation_threshold:fragmentation for metaslab group to allow allocation (int)
parm:           zfs_metaslab_fragmentation_threshold:fragmentation for metaslab to allow allocation (int)
parm:           metaslab_fragmentation_factor_enabled:use the fragmentation metric to prefer less fragmented metaslabs (int)
parm:           metaslab_lba_weighting_enabled:prefer metaslabs with lower LBAs (int)
parm:           metaslab_bias_enabled:enable metaslab group biasing (int)
parm:           zfs_zevent_len_max:Max event queue length (int)
parm:           zfs_zevent_cols:Max event column width (int)
parm:           zfs_zevent_console:Log events to the console (int)
parm:           zfs_top_maxinflight:Max I/Os per top-level (int)
parm:           zfs_resilver_delay:Number of ticks to delay resilver (int)
parm:           zfs_scrub_delay:Number of ticks to delay scrub (int)
parm:           zfs_scan_idle:Idle window in clock ticks (int)
parm:           zfs_scan_min_time_ms:Min millisecs to scrub per txg (int)
parm:           zfs_free_min_time_ms:Min millisecs to free per txg (int)
parm:           zfs_resilver_min_time_ms:Min millisecs to resilver per txg (int)
parm:           zfs_no_scrub_io:Set to disable scrub I/O (int)
parm:           zfs_no_scrub_prefetch:Set to disable scrub prefetching (int)
parm:           zfs_free_max_blocks:Max number of blocks freed in one txg (ulong)
parm:           zfs_dirty_data_max_percent:percent of ram can be dirty (int)
parm:           zfs_dirty_data_max_max_percent:zfs_dirty_data_max upper bound as % of RAM (int)
parm:           zfs_delay_min_dirty_percent:transaction delay threshold (int)
parm:           zfs_dirty_data_max:determines the dirty space limit (ulong)
parm:           zfs_dirty_data_max_max:zfs_dirty_data_max upper bound in bytes (ulong)
parm:           zfs_dirty_data_sync:sync txg when this much dirty data (ulong)
parm:           zfs_delay_scale:how quickly delay approaches infinity (ulong)
parm:           zfs_max_recordsize:Max allowed record size (int)
parm:           zfs_prefetch_disable:Disable all ZFS prefetching (int)
parm:           zfetch_max_streams:Max number of streams per zfetch (uint)
parm:           zfetch_min_sec_reap:Min time before stream reclaim (uint)
parm:           zfetch_block_cap:Max number of blocks to fetch at a time (uint)
parm:           zfetch_array_rd_sz:Number of bytes in a array_read (ulong)
parm:           zfs_pd_bytes_max:Max number of bytes to prefetch (int)
parm:           zfs_send_corrupt_data:Allow sending corrupt data (int)
parm:           zfs_mdcomp_disable:Disable meta data compression (int)
parm:           zfs_nopwrite_enabled:Enable NOP writes (int)
parm:           zfs_dedup_prefetch:Enable prefetching dedup-ed blks (int)
parm:           zfs_dbuf_state_index:Calculate arc header index (int)
parm:           zfs_arc_min:Min arc size (ulong)
parm:           zfs_arc_max:Max arc size (ulong)
parm:           zfs_arc_meta_limit:Meta limit for arc size (ulong)
parm:           zfs_arc_meta_min:Min arc metadata (ulong)
parm:           zfs_arc_meta_prune:Meta objects to scan for prune (int)
parm:           zfs_arc_meta_adjust_restarts:Limit number of restarts in arc_adjust_meta (int)
parm:           zfs_arc_meta_strategy:Meta reclaim strategy (int)
parm:           zfs_arc_grow_retry:Seconds before growing arc size (int)
parm:           zfs_arc_p_aggressive_disable:disable aggressive arc_p grow (int)
parm:           zfs_arc_p_dampener_disable:disable arc_p adapt dampener (int)
parm:           zfs_arc_shrink_shift:log2(fraction of arc to reclaim) (int)
parm:           zfs_arc_p_min_shift:arc_c shift to calc min/max arc_p (int)
parm:           zfs_disable_dup_eviction:disable duplicate buffer eviction (int)
parm:           zfs_arc_average_blocksize:Target average block size (int)
parm:           zfs_arc_min_prefetch_lifespan:Min life of prefetch block (int)
parm:           zfs_arc_num_sublists_per_state:Number of sublists used in each of the ARC state lists (int)
parm:           l2arc_write_max:Max write bytes per interval (ulong)
parm:           l2arc_write_boost:Extra write bytes during device warmup (ulong)
parm:           l2arc_headroom:Number of max device writes to precache (ulong)
parm:           l2arc_headroom_boost:Compressed l2arc_headroom multiplier (ulong)
parm:           l2arc_feed_secs:Seconds between L2ARC writing (ulong)
parm:           l2arc_feed_min_ms:Min feed interval in milliseconds (ulong)
parm:           l2arc_noprefetch:Skip caching prefetched buffers (int)
parm:           l2arc_nocompress:Skip compressing L2ARC buffers (int)
parm:           l2arc_feed_again:Turbo L2ARC warmup (int)
parm:           l2arc_norw:No reads during writes (int)
parm:           zfs_arc_lotsfree_percent:System free memory I/O throttle in bytes (int)
parm:           zfs_arc_sys_free:System free memory target size in bytes (ulong)

  3.ZFSカーネルモジュールを提供するパッケージ

    ZFSカーネルモジュールを提供するパッケージを調べてみます。

ubuntu@vb-ubuntu1604:~$ dpkg -S zfs.ko
linux-image-4.4.0-17-generic: /lib/modules/4.4.0-17-generic/kernel/zfs/zfs/zfs.ko
linux-image-4.4.0-18-generic: /lib/modules/4.4.0-18-generic/kernel/zfs/zfs/zfs.ko
linux-image-4.4.0-15-generic: /lib/modules/4.4.0-15-generic/kernel/zfs/zfs/zfs.ko


    ZFSカーネルモジュールを提供するパッケージは、「linux-image-4.4.0-18-generic」です。
    パッケージ名は、Linux Kernelのバージョンにより変わります。
    このパッケージは、Linux kernel imageを提供するパッケージです。

  4.ZFS関係のカーネルモジュール

    ZFS関係のカーネルモジュールを列挙すると、以下のようになります。

ubuntu@vb-ubuntu1604:~$ ls -R /lib/modules/4.4.0-18-generic/kernel/zfs
/lib/modules/4.4.0-18-generic/kernel/zfs:
avl  nvpair  spl  splat  unicode  zcommon  zfs  zpios

/lib/modules/4.4.0-18-generic/kernel/zfs/avl:
zavl.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/nvpair:
znvpair.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/spl:
spl.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/splat:
splat.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/unicode:
zunicode.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/zcommon:
zcommon.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/zfs:
zfs.ko

/lib/modules/4.4.0-18-generic/kernel/zfs/zpios:
zpios.ko

  5.ZFSカーネルモジュールをロードする

    ZFSカーネルモジュールをロードしてみます。

ubuntu@vb-ubuntu1604:~$ sudo modprobe -v zfs
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/avl/zavl.ko
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/spl/spl.ko
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/nvpair/znvpair.ko
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/zcommon/zcommon.ko
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/unicode/zunicode.ko
insmod /lib/modules/4.4.0-18-generic/kernel/zfs/zfs/zfs.ko


    問題なくロードできました。

  6.カーネルモジュールの一覧

    ロードされているカーネルモジュールの一覧を表示して、ZFSカーネルモジュールの状態を見てみます。


    ZFSカーネルモジュールがロードされています。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション