はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

ZFSについてのメモ

現在のところ雑多な情報を羅列しています。

用語: プール、データセット、ファイルシステム、ボリューム

プール、データセット、ファイルシステム、ボリューム

プール

  • 物理的なドライブやパーティションを束ねた全体的な記憶域
  • zpoolコマンドで操作する

データセット

  • プールから切り出す仮想的なファイルシステムやボリュームのこと
  • zfsコマンドで操作する

ファイルシステム

  • マウントしてファイルを置くことができるデータセット
  • ext4、xfs、Btrfsなどに相当する
  • zfsコマンドで操作する

ボリューム

  • ブロックデバイスとして使えるデータセット
  • LVMなどに相当する

プールの操作

プールの作成

  • zpool create {プール名} {ディスク} ...
  • diska全体からプールを作る: zpool create pool0 /dev/diska
    • ディスク全体からプールを作るのが原則(管理性、パフォーマンス)。ただしEFI領域などが必要な場合はパーティションから作る。
  • diska1パーティションからプールを作る: zpool create pool0 /dev/diska1
  • diska1, diskb1パーティションからRAID1のプールを作る: zpool create pool0 mirror /dev/diska1 /dev/diskb1

プールの確認

  • プールの一覧を確認: zpool list
  • プールの内容を確認: zpool status

プールの削除

zpool destroy pool0

プールのプロパティ

プールにはプロパティがあり取得や設定ができる。

  • 属性の取得: zpool get プロパティ プール
  • 属性の設定: zpool set プロパティ=on/off プール

たとえば autoexpand プロパティをオンにするには次のようにする。

zpool set autoexpand=on pool0

プロパティにはプール作成時のみ設定できるものがある。 たとえばセクタサイズを指定する ashift はプール作成時にのみ設定できるため、プールを次のように作成する。

zpool create -o ashift=12 pool0 /dev/diska

ashift はセクタサイズを2の何乗バイトにするか指定する。 ashift=12 は2の12乗=4,096バイトをセクタサイズとする。

未整理メモ

  • データセットの操作:
    • ファイルシステム:
      • 作成: zfs create pool0/filesystem0
        • デフォルトで /pool0/filesystem0 にマウントされる
        • 別の場所にマウントしたい場合: zfs create -o mountpoint=/mnt/test pool0/filesystem0
        • 圧縮を有効にしたい場合: zfs create -o compression=lz4 /pool0/filesystem0
          • compressionには lz4(デフォルト), zstd, gzip, gzip-N(Nは1から9), lzjb, zle などが指定できる
      • 確認: zfs list
    • ボリューム:
      • 作成: zfs create -V 10g pool0/volume0
        • ファイルシステムにマウントされず、/dev/zvol/pool0/volume0 でブロックデバイスとして参照される

メモ 2026-06

2026-06-30

LinuxのLibreOffice Calcで形式を選択して貼り付けが失敗する

現象

コピー後、編集>形式を選択して貼り付け>数式のみ貼り付け を実行しても何も貼られないことがある (5割程度)。

Ctrl+Shift+V で「形式を選択して貼り付け」ダイアログを表示すると、Calc 形式で表示される場合と、Calc 以外のデータとして表示される場合がある。

Calc形式になっている

Calc以外のデータになっている

環境
  • OS: Debian GNU Linux 13.2 (trixie)
  • X環境: Xorg
  • デスクトップ環境: Xfce 4.20
  • LibreOffice: 25.2.3.2
原因

LibreOfficeのVCLはx11形式になっている。

VCL: x11

x11は古い形式のため、Calcオブジェクトがうまくクリップボードに渡らない場合がある。

解決方法

libreoffice-gtk3 パッケージをインストールする。

$ sudo apt update
$ sudo apt install libreoffice-gtk3

インストール後はLibreOfficeのVCLはgtk3形式になる。

VCL: gtk3

メモ 2026-04

2026-04-23

DebianのNotoフォントパッケージ

Debian 13 (Trixie) にあるNotoフォント関連パッケージ:

  • fonts-noto
  • fonts-noto-core
  • fonts-noto-extra
  • fonts-noto-hinted
  • fonts-noto-mono
  • fonts-noto-ui-core
  • fonts-noto-ui-extra
  • fonts-noto-unhinted
  • fonts-noto-cjk
  • fonts-noto-cjk-extra
  • fonts-noto-color-emoji

文書内で日本語を使う

fonts-noto-cjk を入れる。

fonts-noto-cjk-extra を入れると Thin, Light, DemiLight, Medium, Black などの違う太さの字体が選べるようになる。

fonts-noto-color-emoji を入れると絵文字が使えるようになる。

UIで日本語を使う

fonts-noto-ui-core を入れる。

ターミナルなどで等幅フォントを使いたい場合は fonts-noto-mono を入れる。

その他

fonts-noto, fonts-noto-core, fonts-noto-extra, fonts-noto-ui-extra などを入れると大量のフォントが入り、フォント一覧に国名がずらっと並ぶので注意。

2026-04-28

Pythonには2つのFakerがある

以下のライブラリの両方でFakerが提供されているが、動作が異なる。

1. faker.Faker

faker.Fakerは呼び出されたメソッドに対応したダミーデータを返す。

pip install faker

faker_test.py:

from faker import Faker

fake = Faker()
print("名前: ", fake.name())
print("住所: ", fake.address())
print("会社名: ", fake.company())
python faker_test.py
名前:  Cody Reynolds
住所:  583 Miller Summit
West Henry, PR 52593
会社名:  Gregory, Lloyd and Allen

ロケールを指定すると日本語のデータも作れる。

faker_test2.py:

from faker import Faker

fake = Faker('ja_JP')
print("名前: ", fake.name())
print("住所: ", fake.address())
print("会社名: ", fake.company())
python faker_test2.py
名前:  田中 太郎
住所:  東京都香取郡多古町柿木沢28丁目4番12号
会社名:  有限会社山田情報
2. factory.faker.Faker

factory.faker.Fakerはファクトリの中で使用し、モデルにダミーデータの初期値を与える。

pip install factory_boy

factory_test.py:

from factory import Factory
from factory.faker import Faker


class Person:
    def __init__(self, name: str, address: str, company: str):
        self.name = name
        self.address = address
        self.company = company


class PersonFactory(Factory):
    class Meta:
        model = Person
    
    name = Faker('name')
    address = Faker('address')
    company = Faker('company')


person = PersonFactory()
print("名前: ", person.name)
print("住所: ", person.address)
print("会社: ", person.company)
python factory_test.py
名前:  Stephen Stevenson
住所:  529 Ryan Squares Apt. 744
New Misty, AR 12240
会社:  Gamble Ltd

ロケールはそれぞれのFakerで指定する。

...

class PersonFactory(Factory):
    class Meta:
        model = Person
    
    name = Faker('name', locale='ja_JP')
    address = Faker('address', locale='ja_JP')
    company = Faker('company', locale='ja_JP')

...
python factory_test.py
名前:  近藤 健一
住所:  徳島県大島町方京40丁目20番12号 パレス箪笥町154
会社:  株式会社三浦運輸