isLandcenter 非番中

ブログトップ | ログイン

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13230031.png

BtrFS の甘い罠、アップデートの前に空き容量を確保

どんなショボいシステムでも、安易に変更は加えない方がいいわけです。
openSUSE Leap 15.1 のシステムを

 # zypper dup

したところ、見事に罠にハマりました。BtrFS の罠です。スナップショットを取っているので、空き容量がなかったんです。
空き容量がないところでパッケージのアップデートなんかすると、openSUSE Leap 15x はルートパーティションが Copy On Write の BtrFS ですからファイルは上書きではなく、差分をドンドンと CoW してしまう。遂にディスクの空きを使い果たして、中途半端な zypper dup の結果、

「システムが立ち上がらない」

という最悪の結果に陥りました。BtrFS のスナップショットの残骸ってロック掛かっていて、レスキューディスクで起動しても消せないのですね。

という事で、BtrFS のファイルシステムに変更を加える場合は

「空き容量を確認して空きを確保してから行え」

という「鉄の法則」を学びました。



- BtrFS 空き容量確認 -

How much free space do I have? or My filesystem is full, and I've put almost nothing into it!

1 Linuxファイルシステムの概要

これらのドキュメントによると


 opensuse151:~ # btrfs fi show
Label: none  uuid: 8466aee4-2738-4b0a-924a-79edad4b4676
        Total devices 1 FS bytes used 8.13GiB
        devid    1 size 14.00GiB used 10.57GiB path /dev/vda2
opensuse151:~ #

"
ファイルシステムの合計サイズとその使用量を表示します。最後の行のこれら2つの値が一致する場合、ファイルシステム上の領域はすべて割り当て済みです。
"
上のケースでは14Gbのデバイスサイズのうち、 10.57Gb 使用中です。

opensuse151:~ # btrfs fi df /
Data, single: total=8.01GiB, used=7.50GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.25GiB, used=641.95MiB
GlobalReserve, single: total=30.22MiB, used=0.00B
opensuse151:~ #

"
ファイルシステムの割り当て済みの領域(total)および使用済みの領域の値を表示します。メタデータのtotalおよびusedの値がほぼ等しい場合、メタデータ用の領域はすべて割り当て済みです。

メタデータ 1.25 Gb 中、641Mb 使用中です。

opensuse151:~ # btrfs fi usage /
Overall:
    Device size:                  14.00GiB
    Device allocated:             10.57GiB
    Device unallocated:            3.43GiB
    Device missing:                  0.00B
    Used:                          8.76GiB
    Free (estimated):              3.93GiB      (min: 2.22GiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               30.22MiB      (used: 0.00B)

Data,single: Size:8.01GiB, Used:7.50GiB
   /dev/vda2       8.01GiB

Metadata,DUP: Size:1.25GiB, Used:641.95MiB
   /dev/vda2       2.50GiB

System,DUP: Size:32.00MiB, Used:16.00KiB
   /dev/vda2      64.00MiB

Unallocated:
   /dev/vda2       3.43GiB
opensuse151:~ #


前の2つのコマンドを組み合わせたのと同様のデータを表示します

つまり btrfs fi usage <mount_point> が一番使われやすいコマンドだという事です。

- ncdu, du コマンド -

duコマンドは当てになりません。ncdu でルートからスキャンしたらこれ。このシステムは物理的に25Gbしかない仮想VMです。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13232822.png

スナップショットサイズが「150Gb 使用中」と、あり得ない数字を示しています。

- 完全な見積は不可能 -

こちらの文書の中に

How much free space do I have? or My filesystem is full, and I've put almost nothing into it!

"
So, in general, it is impossible to give an accurate estimate of the amount of free space on any btrfs filesystem. Yes, this sucks. If you have a really good idea for how to make it simple for users to understand how much space they've got left, please do let us know, but also please be aware that the finest minds in btrfs development have been thinking about this problem for at least a couple of years, and we haven't found a simple solution yet.
"

Google 先生の翻訳によると

"
したがって、一般に、btrfsファイルシステムの空き容量を正確に見積もることは不可能です。はい、これは最悪です。ユーザーがどれだけのスペースを残したかを簡単に理解できるようにする方法について本当に良いアイデアがある場合は、私たちに知らせてください。また、btrfs開発の最高の心がこの問題について考えていることに注意してください。少なくとも数年間は、簡単な解決策はまだ見つかりませんでした。
"

とあり、もう BtrFS では、正確な空き容量確認は現時点で「不可能」と断じています。

そもそも、ファイルコピーの段階で、当然システムの API は空き容量を確認するわけですが、その元ネタは何なんだろうか? という疑問がわいてきます。

- BtrFS の鉄則 -

- 想定されるデータ量の倍のサイズのパーティション確保

例えば、openSUSE Leap 15.x では / (ルート)の BtrFS パーティションは、最低でも 15Gb のサイズ以上確保しておかないと、インストールの際、警告が出ます。実際のインストールで使用されるディスク容量は openSUSE Leap 15.2/SLE15 で 7.5 Gb 程度です。SLE12 では6Gb 程度でした。

空き容量の把握は難しいので、長期運用でバージョンアップに伴い必要とされる空き容量は、将来に渡って不明です。将来バージョンアップしたり、パッチを頻繁に充てるクリティカルなシステムなら 25Gb ~ 30Gb 程度のルートパーティションサイズが欲しいところです。「ディスク容量を食う」点は、誰も指摘していませんが BtrFS の隠されたデメリットです。

もし、コンパクトで JeOS な仮想サーバーを作りたいのであれば ext3、4 などの古来のファイルシステムを検討すれば 10Gb 程度でも使えるわけです。

- スナップショットの定期的なメンテナンス scrub

デフォルトではシステムは毎週 scrub によるメタデータの修復、デフラグ、破損ファイルの修復を実行します。scrub はファイルシステムの破損などがないかメタデータをチェックし、自動修復する機能です。sysconfig に設定されます。BtrFS の信頼性を確保するための重要な機能です。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13241420.png


手動で scrub するには

# brtfs scrub start <mount point>

を実行し、 btrfs scrub status -d -R <mount point> で結果を確認できます。

- スナップショットのメンテナンス

スナップショットの作成と削除は自動化されています。こちらの文書によると SUSE Linux(SLE15) においては

7.1.3.4 スナップショットのアーカイブの制御

"
デフォルトでは、最大10個の重要なインストールスナップショットと管理スナップショット、および最大10個の標準のインストールスナップショットと管理スナップショットが保持されます。これらのスナップショットがルートファイルシステムのサイズの50%超を占有する場合、追加のスナップショットは削除されます。最低でも、4つの重要なスナップショットと2つの標準スナップショットは常に保持されます。
"

とあり、この定義は snapper -c MySnapConfig create-config <partition> によって作成された /etc/snapper/configs/ にされた MySnapConfig ファイルによって定義されます。

7.4.1 既存の設定の管理

7.6.2 タイムラインスナップショットのクリーンアップ

それぞれ、スナップショットの作成と削除はタイムラインによって snapper -c MySnapConfig ファイルに作成されます。

opensuse151:/etc/snapper/configs # cat mysnapconfig  | grep TIMELINE
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
opensuse151:/etc/snapper/configs #

通常運用では問題にならないので、デフォルトの scrub のタイミングも、スナップショットを有効化した場合の、スナップショットのメンテナンス間隔は、そのままで構わないでしょう。

- アップデート前のスナップショットの削除

手動でのスナップショットの状態、最新のスナップショットの状態確認は YaST2 Snapper で確認し、内容のチェックとロールバック、削除などの操作を行います。

BtrFS の甘い罠、SUSE Linux アップデート前の空き容量の確認と確保_a0056607_13250586.png

4.1.1 スナップショットとディスク容量

ヒント: 容量を空ける/ディスクの使用率
スナップショットを含むBtrfsパーティションの容量を空けるには、ファイルではなく、不要なスナップショットを削除する必要があります。古いスナップショットは、最近のスナップショットよりも多くの領域を使用します。






とある様に、アップデートに必要な空き領域を確保するには、古いスナップショット、意図的に取得した古いスナップショットを削除して、空き領域を確保し、 btrfs fi usage <Partition> か btrfs fi df <Partition> コマンドで空き容量を確認し、その後、明示的にアップデートからのスナップショットロールバック、復元ポイントを作ってから、アップデートを実施すべきでしょう。

忘れてはならないのは、zypper up や zypper patch など、あるいはメジャーアップデートする時、同じファイルであっても物理的なファイルそのものが上書きされずに、古いファイルはスナップショットに「移動」し、空き領域に新しいファイルが作られることです。

- まとめ -

BtrFs においては、ファイルの空き領域に常に注意し、ファイルコピーなどによる空きスぺースの Run Out には気をつけよ、という事です。








by islandcenter | 2020-07-26 13:28 | SUSE | Comments(0)

普段、SUSE Linux は、サーバー運用なので、メールの読み書きはしないのですが、、openSUSE Leap 15.2 のライブUSBを作ったので、メールも使える様にしました。 

メーラと言えば Thunderbird。 Netscape Mail 時代から、同じメールのプロファイルなので、古いメールのアーカイブも読める。 

という事で openSUSE GNOME デスクトップで Thunderbird を使おうの回です。

よく、SLE のアクティベーションキーを送ってほしい場合など、ブラウザで gmail 開いて.... とやっていたのですが、使い慣れてて、面倒な設定もソラでできる Thunderbird が使える事は個人的に嬉しい。

- ダウンロードとインストール -

Thunderbird は software.opensuse.org から1クリックインストールするのが一番確実です。しかし、openSUSE で配布しているものは英語版だけです。別に日本語の読み書きで不自由しなくて、メニューが英語でも構わないのですが、本家 Mozilla から日本語版をダウンロードして使う事にしました。

Thunderbird  日本語 Linux 版

ダウンロードしたら解凍して、解凍先の xx/xx/thunderbird を実行するだけです。ただ、あまりディレクトリに小間物屋を開きたくないので、<home>/bin に移動しました。

linux@localhost:~> echo $PATH
/home/linux/bin:/usr/local/bin:/usr/bin:/bin
linux@localhost:~>

/<userhome>/bin にパスが通っているので thunderbird 本体のシンボリックリンクを作ります。

linux@localhost:~/bin> ln -s  thunderbird/thunderbird thb

これで ~> thb だけで Thunderbird が起動します。

- プロファイル -

~> thunderbird -profilemanger を実行すると、手動でプロファイルを指定できます。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_16011417.png

- gnome のアプリケーションに登録 -

しかし、メールを読むのにイチイチターミナル開くのも面倒なので GNOME のパネルに登録します。そのためには alacarte (アラカルト)パッケージをインストールします。openSUSE Leap 15.2 の標準リポジトリにあるので、そのまま YaST でインストールするか、下の software.opensese.org から1クリックインストールします。

alacarte : Menu editor for GNOME

Alacarte is a simple freedesktop.org compliant menu editor for GNOME that lets you change your menus, simply and quickly. Just click and type to edit, add, and delete any menu entry.

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_15581983.png

Thunderbird を登録します。

~> alacarte &

「新しいアイテム」> 任意の名前を付けて、brows ボタンで実行ファイルを指定してOK

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_16004054.png

Activities に Thunderbird が出てきた。アイコンが気に入らないけど...

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_15594189.png

適当にアイコンを探して、alacarte に登録しました。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_11254795.png

- Thunderbird のプロファイルの管理 -

コマンドラインオプション

”Linux
ターミナルを開いて次のように入力します。
cd Thunderbird installation directory
./thunderbird -ProfileManager
上記の例は、Mozilla の Thunderbird メールクライアントで "-ProfileManager" コマンドラインオプションを呼び出しています。”

プロファイル、メールストレージは ~> .thunderbird に作成されます。このディレクトリをそっくり別メディアにコピーしてバックアップとします。

linux@localhost:~/.thunderbird> ls -l
total 20
drwx------ 9 linux users 4096  7月 14 17:12 7amog83k.default-release-1
drwx------ 3 linux users 4096  7月 14 15:02 Crash Reports
drwx------ 2 linux users 4096  7月 14 15:02 Pending Pings
-rw-r--r-- 1 linux users  190  7月 14 17:01 installs.ini
-rw-r--r-- 1 linux users  335  7月 14 17:01 profiles.ini
linux@localhost:~/.thunderbird>

※ちなみに Windows と macOS 版の ProfileManager の立ち上げ方は次の通りです。

Windows
C:\ >"\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" -p

macOS
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin -profilemanager
- PS. YaST からのインストール -

コメントいただきました。 openSUSE Leap 15.2 では、MozillaThunderbird-translations-common パッケージを入れると日本語化できました。アイコンも GNOME デスクトップに作られます。

YaST > Software Management から Thunderbird を検索して Thunderbird と一緒にインストールすれば OK です。

openSUSE Leap 15.2 で ThunderBird, GUI アイコンをGNOMEへ登録_a0056607_13213361.png

usr/lib64/thunderbird/ にインストールされます。ただし一つ古い openSUSE Leap 15.1 ではリポジトリからインストールしても動かなかったこと、SUSE Linux Enterprise 15 (SLE15.0) にはそもそもパッケージに含まれていない事も併せて報告します。

システムにインストールせず、エンドユーザが個人的に使う目的であれば、本家 Mozilla からダウンロードして使う方が、システムへの影響も少ないとも言えます。

- まとめ -

Mozilla Thunderbird は高機能で使いやすく無料で使えるメールソフトウェアで、歴史も長く、マルチベンダー環境でも移行が簡単な、「いい線行ってる」メーラです。メール、ブラウザ、オフィスソフトウェアは、デスクトップで使える三種の神器です。Firefox, LibreOffice, Thunderbird があれば怖くはない。でもお気に入りのブラウザは Opera と Chrome なので、次はこれらを何とかしたいですね。







by islandcenter | 2020-07-15 16:03 | SUSE | Comments(0)

oppenSUSE Leap 15.2 が出たので、USBメモリ用ライブイメージを作ってみました。

参考までに一つ前の 15.1 はこちら

openSUSE Leap 15.1 の Live USB で「初めてのどこでも Linux」の作り方

通常版 15.2 Leap のインストールはこちら

openSUSE Leap 15.2 Install First Look.(インストール)

ライブ USB のイメージダウンロードはこちら

openSUSE download server

ISO イメージの USB メモリへの展開方法はこちら

How to create an installation USB drive for SLE 11, 12, or 15

今回使ったイメージは
openSUSE-Leap-15.2-GNOME-Live-x86_64-Build31.105-Media.iso

です。

- USB メモリへの書き込み -

上の SUSE のドキュメントに書かれている方法 dd と sync コマンドで書き込みました。

なお、今回は SLES15 のベアハードウェアマシンを使いましたが、古い SLE11 では USB メモリが認識されませんでした。カーネル新しいの使えよ、という事です。


sle15:/share/SISO/openSUSELeap15 # ls openSUSE-Leap-15.2-GNOME-Live-x86_64-Build31.105-Media.iso
openSUSE-Leap-15.2-GNOME-Live-x86_64-Build31.105-Media.iso
sle15:/share/SISO/openSUSELeap15 # lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0    25G  0 loop
├─loop0p1 254:0    0     8M  0 part
├─loop0p2 254:1    0    14G  0 part /root/mnt/mnt
├─loop0p3 254:2    0     2G  0 part
└─loop0p4 254:3    0     9G  0 part /root/mnt/mnt
sda         8:0    0   2.7T  0 disk
├─sda1      8:1    0   156M  0 part /boot/efi
├─sda2      8:2    0     2G  0 part [SWAP]
├─sda3      8:3    0    20G  0 part /
├─sda4      8:4    0   500G  0 part /var
└─sda5      8:5    0   2.1T  0 part /share
sdb         8:16   0 232.9G  0 disk
└─sdb1      8:17   0 232.9G  0 part /ssd
sdc         8:32   0   1.8T  0 disk
└─sdc1      8:33   0   1.8T  0 part /mnt/sdc
sdd         8:48   0   5.5T  0 disk
└─sdd1      8:49   0   5.5T  0 part /mnt/sdd
sde         8:64   0   5.5T  0 disk
└─sde1      8:65   0   5.4T  0 part /mnt/sde
sdf         8:80   0     1G  0 disk
└─sdf1      8:81   0  1013M  0 part
sdg         8:96   1   7.4G  0 disk
├─sdg1      8:97   1   899M  0 part
├─sdg2      8:98   1    15M  0 part
└─sdg3      8:99   1   6.5G  0 part /run/media/root/cow
sle15:/share/SISO/openSUSELeap15 #


/dev/sdg がメモリカードの様です。

YaST > System > Partitioner で USB メモリを「しつこくしっかり」確認します。 15.1 のライブ USB のメモリだった様です。使っちゃいましょう。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14235454.png

dd コマンドで書き込み、sync でメモリキャッシュを最終書き込みします。(dd は数秒で終わりますが sync は数十秒かかります)

sle15:/share/SISO/openSUSELeap15 # \
dd if=openSUSE-Leap-15.2-GNOME-Live-x86_64-Build31.105-Media.iso of=/dev/sdg bs=4k
210016+0 records in
210016+0 records out
860225536 bytes (860 MB, 820 MiB) copied, 0.754957 s, 1.1 GB/s
sle15:/share/SISO/openSUSELeap15 #
sle15:/share/SISO/openSUSELeap15 # sync <---1分くらいかかる
sle15:/share/SISO/openSUSELeap15 #

Partitiner で確認します。15.2 のライブ USB として認識されています。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_07474256.png



- 本体の再起動 -

再起動して DEL キーなり、F2 キーで BIOS を読み出し、ブート順序を USB メモリに替えて起動します。

- キーボードタイプの変更 -

ライブUSBイメージは English(US) 101 Keyboard なので、日本語化します。

簡単な動画にまとめました(3分、盛大に音出ます)



linux@localhost :~ > su
localhost:/home/linux # yast2 &

で、Hardware > System Keyboard Layout を Japanese に変更し、テストボックスで特種キーを確認します。テストボックスでは問題なくても、この時点ではシステムはまだ 106 キーとして認識されていません。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14272325.png

YaST > System > Language より Primary言語を Japanese にセットし Timezone:Asia/Japan に Adopt をチェックします。ついでに第二外国語 English もチェックします。

OK ボタンで iBus Mozc や日本語フォントがダウンロード、インストールされます(10分ちょっとかかりました)

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14285168.png

- ログインし直し -

フォントと Mozc がインストールされたら、一旦ログオフして、ログインします。YaST のメニューの幾つかが日本語化されている事に気が付きます。man コマンドも日本語です。

- キーボードと IME の設定 -

この時点では、まだキーマップは US 101 KB で日本語 IME も使えません

Activities から Serach Box で”Settings” (設定)アプレットを開きます。 

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14300399.png

地域と言語を見ると、Input Source が Englisf US 101 です。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14302613.png


”+”ボタンから "Japanese" > "Japanese Mozc JP Layout" を Add

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14304385.png

japanese Mozac JP layout をギュゥっドラックアンドドロップして English(US)のうえに持ち上げます。(これが分からず一時間ハマった...)

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14310457.png

これで、キーボード配列が 106 Japanese になり、全角/半角キーが有効になり、仮名入力ができるようになりました。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14314918.png

ちょっと怪しいキートップのイラストですが、キー配列は合っています。
- ちなみに -

本物のUSBメモリであれば、以上の変更はメモリに書き込まれます。光メディアや仮想環境から ISO ファイルでブートしたら、当たり前ですね、読み込みオンリーのデバイスなので変更は保存されません。もう一度この作業が必要です。

KVMの仮想環境の場合、 virt-manager から追加デバイスとして、USBディスクデバイスに仮想の「空のUSBメモリ」を作ります。

ISO ブートした Live USB の内容を「空のUSBメモリ」に dd コピーして、この「作成した」仮想USBデバイスから起動させると、仮想USBメモリに設定内容が書き込まれ、日本語化した結果が失われません。

openSUSE Leap 15.2 Live USB Localize (日本語化)_a0056607_14290738.png

という事で、64Gb位の USB メモリであれば、タップリデータと環境を持ち歩ける、という事です。









by islandcenter | 2020-07-08 14:54 | SUSE | Comments(0)

2020年7月2日に openSUSE Leap 15.2 がリリースされました。インストールを通して、 先月リリースされたばかりの SUSE Linux Enterprise 15 sp2 (SLES15sp2) や、旧版 Leap15,15,1 との違いを見てみます。 

- ダウンロード -

ダウンロードは次のアドレスからダウンロードします。

openSUSE Leap 15.2

- DVD イメージはフルパッケージで約4Gb弱です。ネットワークが不安定な場合はダウンローダーや Torrent を使ってダウンロードします。
- ネットワークイメージはブートからインストーラを立ち上げて、必要なパッケージをリポジトリからダウウンロードします。ネットワークが安定しており opensese のダウンロードサイトが安定しているのなら、こちらを使います。

ウチは回線状態が決していいとは言えないので DVD イメージをダウンロードして使いました。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13490917.png



- インストール -

DVD起動してインストーラが立ち上がったら、F2キーで言語を選択できます。ここから日本語化しても良いのですが、システムログなどが、意味不明な日本語表示になるのを避けるため、英語のままインストールする事をお勧めします。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13495537.png

インストールの全体の流れは6分ちょっとの動画にまとめました。(派手に音出ます)


Installation

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13530970.png

言語と、キーボードレイアウトの選択。キーボードだけは日本語 106 キーを選び、特殊キーのレイアウトをテストボックスで確認します。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13533082.png

オンラインリポジトリからネットワークインストールするかどうかの選択です。非力なネットワーク環境なのでNoを選択して、DVDメディアからインストールします。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13535057.png

System Role (役割)の選択。好みの問題なので SLESと共通の GNOME デスクトップを選びました。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13541076.png

パーティション構成です。従来の 15.1 や SLES15sp2 は /home がXFS で別パーティションでしたが、 15.2 からデフォルトでシングルパーティションになっています。ここも SLE15 SP2 と違うところです。

デスクトップワークステーションにするか、サーバーにするかで、パーティション構成を計画しておきます。全て BtrFS です。どうも、このファイルシステムは今後もデフォルト化しそうです。

Web サーバーにするか、ハイパーバイザー運用するか Samba に使うか、色々目的があるので、Expert Partitioner から、構成を変更します。ほぼパーティション構成を変えて運用する事が前提になりそうです。 

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_13550251.png

タイムゾーンの設定です。東京付近をクリックして Asia/Japan に設定します。

デフォルトで opensuse.org のタイムプールが選択されています。ここでは変更できないので、後で、通信距離の短い構内 ntp や ISP の ntp、パブリック ntp に変更します。

Hardware clock set to UTC のチェックはいつも外していますs。 仮想化状態では役に立たないし、Windows とのデュアルブートにすると Windows も UTC でブートしてしまいます。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14024732.jpg

オペレータの作成です。デフォルトでは、このユーザが root になり自動ログインしますが、私の好みではないので、 "Use this passwod .....", "Automatic Login" の二つのチェックは外します。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14031112.png

”Use this Password..." のチェックを外したため、root のパスワードを設定します。Caps が押されていないか、キーボードのレイアウトに間違えがなく、設定したパスワードの特殊記号に間違えがないか、ここでチェックします。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14033175.png

- 最期のインストールサマリ -

- Software : 追加のパッケージが必要だったり、KVM ハイパーバイザー運用なので Gimp は必要ないのでインストールしない、などはここで選択します。
- Default systemd target : デスクトップ利用なのでGUI ログインするか、サーバーなのでテキストログインするかを選択します。
- Security : デフォルトでファイアウォール有効、ssh 無効です。これから色々やりたいことがあるので、ファイアウォールは無効、SSH は有効にしました。
- ネットワーク設定:は Network-Manager がデフォルトです。ノートブックなど Wifi を使ったり、有線で DHCP を使いたい場合は Network-Manager がいいのですが、仮想化したり固定デスクトップで有線のみだったり、仮想マシンとしてサーバー運用する場合は Wicked に変更します。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14035243.png

過去のバージョンでは目立たなかった Network Configuration が Wicked に変更すると目立つように、デザインが変わります。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14040861.png

Wicked のネットワーク設定画面です。 HOSTNAME はここで事前に設定できます。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14042642.png

- インストール開始 -

インストールサマリが決まったら、右下の Install ボタンから、インストールを開始します。DVDメディアからインストールすると、約20分ほどで自動的にリブートします。

SLES と同じ GNOME デスクトップが上がります。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14045839.png

- オペレータの言語を日本語に

折角、ユーザを作ったので、オペレータの言語は日本語に、 root 言語は US にします。オペレータでログインして YaST を起動します。 root パスワードで開きます。
(root でログインしてやってはダメ、全部日本語になってしまいます。オペレータユーザだけ日本語化するのがコツです)

rootではなく作成した、一般ユーザでログインします。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14045839.png

YaST > System > Languages より、”Primary Language Settings” を Japanese にセットして”OK” 日本語フォントがロードされます。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14061720.png

これで、オペレータアカウントは日本語化されます。 man コマンドも日本語です。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14080825.png

一方 root でログオンして入ると、YaST は英語をキープして、 man コマンドも英語でした。

openSUSE Leap 15.2 Install First Look.(インストール)_a0056607_14084460.png




- まとめ -

かなり端折りましたが、openSUSE Leap 15.2 の雰囲気はご理解していただけるとありがたいです。openSUSE Leap はインストールのし易さ、安定性に優れ、SUSE Linux Enterprise (SLE) の堅牢さも引き継いでいます。

このブログでは SLES を中心に扱ってきましたが、openSUSE Leap 15 以降 openSUSE の記事が中心になってきました。それだけ openSUSE Leap の扱いやすさを感じます。SLES でなければ怖くて使えない、と言った機能も安心して使えるようになったのは、喜ばしいことです。

次はどんな検証をしてみようか、考え中です。







by islandcenter | 2020-07-05 14:36 | SUSE | Comments(0)

SLE15 p2 で私にとっては初めての"Docker" です。

- はじめに -

Docker は「コンテナ型の仮想化」言われればそれまでなのですが、 SUSE ではドキュメントも少なく、いまいち手が出なかった。だけど不思議なもので、どこかできっかけを掴むと、やってしまえるものですね。XEN から始めて KVM そして Docker です。切り口が分かれば、意外と簡単に入り込むことができました。
という事で SUSE Linux Enterprise 15 sp2(SLES15 sp2) に Docker を組み込んで nginx HTTP サーバーを動かしいてみよう、にチャレンジします。

SLE15 Linux Enterprise sp2 (SLES15sp2) のインストールとファーストルック
https://islandcnt.exblog.jp/240410042/

- 参考文書 -

まずは、次の文書を読んでおきます。
openSUSE and SUSE Linux Enterprise
http://docs.docker.jp/engine/installation/SUSE.html

Docker Open Source Engine Guide SUSE Linux Enterprise Server 15 SP1
https://documentation.suse.com/sles/15-SP1/pdf/book-sles-docker_color_en.pdf



- /var/lib/docker を BtrFS の別パーティションに -

1 Docker Open Source Engine Overview REPORT DOCUMENTATION BUG#

このドキュメントに

"Important: Mounting /var/lib/docker
It is recommended to have /var/lib/docker mounted on a separate partition or volume to not affect the Docker Open Source Engine host operating system in case of a file system corruption.
In case you choose the Btrfs file system for /var/lib/docker, it is strongly recommended to create a subvolume for it. This ensures that the directory is excluded from file system snapshots. If not excluding /var/lib/docker from snapshots, the file system will likely run out of disk space soon after you start deploying containers. What's more, a rollback to a previous snapshot will also reset the Docker Open Source Engine database and images. Refer to Creating and Mounting New Subvolumes in Section 7.1, “Default Setup” for details."

とあり、/va/lib/docker は別パーティションで BtrFS 強く推奨とあります。事前に Docker を導入する以前にパーティションを YaST > System > Partitioner で別パーティション、別ボリュームを準備しておきます。

インストールの際の注意事項です。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10521976.png


sles15doker:~ # snapper -c dockersnap(<--任意のファイル名) create-config /var/lib/docker
sles15docker:~ # ls /etc/snapper/configs/dockersnap -l
-rw-r----- 1 root root 1183 Jun 28 17:08 /etc/snapper/configs/dockersnap
sles15docker:~ #
sles15docker:~ # ls /var/lib/docker/ -l
total 0
drwxr-x--- 1 root root   0 Jun 28 17:08 .snapshots
drwx------ 1 root root  20 Jun 28 11:49 btrfs
drwx------ 1 root root  20 Jun 28 11:47 builder
drwx--x--x 1 root root  92 Jun 28 11:47 buildkit
drwx------ 1 root root  12 Jun 28 11:47 containerd
drwx------ 1 root root 256 Jun 28 13:53 containers
drwx------ 1 root root  10 Jun 28 11:47 image
drwxr-x--- 1 root root  10 Jun 28 11:47 network
drwx------ 1 root root  20 Jun 28 11:47 plugins
drwx------ 1 root root   0 Jun 28 05:39 runtimes
drwx------ 1 root root   0 Jun 28 11:47 swarm
drwx------ 1 root root   0 Jun 28 14:39 tmp
drwx------ 1 root root   0 Jun 28 11:47 trust
drwx------ 1 root root  22 Jun 28 11:47 volumes
sles15docker:~ #


SLES12 の Snapper のチューニング

SLES12 ext3 から BTrFS への変換


- Forward を有効に -

Docker は Windows の Windows Subsystem for Linux に似ています。と言うか WSL 自体が Docker の Windows 版なんですね。たぶん。Dockerをインストールすると仮想ブリッジが作られ、コンテナのインターフェースが物理インターフェースと通信できるよう、フォワードを有効にしておく必要があります。一応 KVM と Docker を同居させている猛者はいるようですが、設定が複雑になるので止めとけ、という事です。

因みに、ここでは SUSE on SUSE の KVM 環境なので、仮想サーバー上で Docker を動かすことは問題ないようです。

Forward を有効にするには、 YaST > System > Network Settings の Routing のチェックを入れるだけです。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10550528.png



- Docker パッケージのインストール -

全体の流れを動画にしました。盛大に音出ます。



openSUSE Leap 15x と SLES15 SPx では若干インストール方法が違います。本当は openSUSE Leap を使いたかったのですが、機嫌が悪かったので、「あって良かった安心強護の SUSE Linux Enterprise」(SLES15 sp2) を使いました。

openSUSE Leap ではリポジトリの追加は不要です。SLE15 の場合、今回はトライアル版なので、ローカルディスクに ISO ファイルをコピーして、YaST > Software > Software repositories より ADD で、Local iso イメージを指定しました。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10553244.png

追加プロダクトとして Containers Module をチェックします。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10554811.png

後は、Software Management より "Docker" をサーチしてチェック、インストールします。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10560923.png


- ユーザを Docker グループに

YaST > Security and Users > User and Group Management より、Docker 使いたいヒトビトを Docker グループに追加します。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10562955.png


- 自動起動を Enable に

YaST > System > Service Manager より Docker を Enable, Active をセットして Docker を起動します。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10565613.png

- hellow-world を run -

sles15sp2:~ # docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash



Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

sles15sp2:~ #


- YaST2-Docker -

YaST2-Docker アプリケーションは、openSUSE では問題ない様ですが、SLE ではちょっと問題があり、インストールはひと工夫必要です。必ず必要なものではないので読み飛ばしてもらって結構です。

まず yast2-metapackage-handler の rom をダウンロードして

YaST2 - Easy Installation of Add-on RPMs using Metapackages

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10572921.png

perl-XML-XPath を YaST か zypper でインストールします。

# zypper install perl-XML-XPath*

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10580415.png

yast2-metapackage-handler を rpm でインストールします。

# rpm -ivh yast2-metapackage-handler-4.1.0-lp151.1.1.noarch.rpm

これで、YaST2-Docker を 1 Click インストールできるので、software.opensuse.com から1クリックインストールしました。 この辺りはトラブルの元です。SLE15 BACKPORT リポジトリだけ有効にすると良い様です。

yast2-docker
YaST2 - GUI for docker management

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10583754.png


- YaST2 docker -

YaST2-Docker はこんな感じです。コンテナの停止、削除には使えます。が、docker run は使い方がよく分かりません。マニュアルも見当たらなかった。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10585770.png


- nginx HTTP を動かす -

nginx のコンテナパッケージはこちらにあります。docker pull して run させるだけです。

Docker Official Images Official build of Nginx.

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10592327.png


sles15sp2:~ # docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
8559a31e96f4: Pull complete
8d69e59170f7: Pull complete
3f9f1ec1d262: Pull complete
d1f5ff4f210d: Pull complete
1e22bfa8652e: Pull complete
Digest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
sles15sp2:~ #

Docker run リファレンス
http://docs.docker.jp/engine/reference/run.html

- コンテナ起動

sles15docker:~ # docker run -d -p 80:80 nginx

nginx が動きました。

openSUSE Leap and SUSE Linux Enterprise 15 sp2 初めてのDocker_a0056607_10594767.png


- 起動時にコンテナを自動起動させる -

これでは Docker の親が起動した時、コンテナが起動できないので、--restart=always スイッチを付けて、コンテナを起動させると、 Docker サービスが起動する際に、自動起動するようになりました。

sles15docker:~ # docker run --restart=always -d -p 80:80 nginx
ca5d8b4b8adc55dc352f6022ef70da93ab243449cfc35d2cd2bd0903e7bd4c42

- 動作中のコンテナの確認

sles15docker:~ # docker ps -a
CONTAINER ID   IMAGE        COMMAND                 CREATED        STATUS                     PORTS NAMES
3485ddc43916   nginx        /docker-entrypoint.…"  3 minutes ago  Exited (0) 2 minutes ago         affectionate_clarke
ad88906a4cf0   hello-world  /hello"                 2 hours ago    Exited (0) 2 hours ago           agitated_perlman
<-- 只今停止中、停止しないと削除できない。

- 停止中のコンテナを削除


sles15docker:~ # docker rm 3485
3485
sles15docker:~ # docker ps -a
CONTAINER ID  IMAGE       COMMAND CREATED      STATUS                   PORTS NAMES
ad88906a4cf0  hello-world /hello" 2 hours ago  Exited (0) 2 hours ago         agitated_perlman
<-- 消してみた

- 常時起動状態で起動

sles15docker:~ # docker run --restart=always -d -p 80:80 nginx
cd43c374894d21a357a7835df7af11e1e59f51c11919c395d6a91cfe78da9d78

sles15docker:~ # docker ps -a
CONTAINER ID   IMAGE        COMMAND                  CREATED        STATUS                   PORTS                NAMES
cd43c374894d   nginx        "/docker-entrypoint.…"  8 seconds ago  Up 5 seconds             0.0.0.0:80->80/tcp   optimistic_chatelet
ad88906a4cf0   hello-world  "/hello"                 2 hours ago    Exited (0) 2 hours ago                        agitated_perlman
<-- --restart=always を付けて起動(Up)

- 稼働中のコンテナを停止

sles15docker:~ # docker stop cd43
cd43

sles15docker:~ # docker ps -a
CONTAINER ID    IMAGE        COMMAND                 CREATED         STATUS                    PORTS  NAMES
cd43c374894d    nginx       "/docker-entrypoint.…"  35 seconds ago  Exited (0) 3 seconds ago         optimistic_chatelet
ad88906a4cf0    hello-world "/hello"                 2 hours ago     Exited (0) 2 hours ago           agitated_perlman
sles15docker:~ #
<--- コンテナを止めておく(Exited)

- docker deamon を再起動

sles15docker:~ # systemctl stop docker
sles15docker:~ # docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
sles15docker:~ # systemctl start docker

- docker コンテナがデーモン起動で UP になった。

sles15docker:~ # docker ps -a
CONTAINER ID   IMAGE        COMMAND                 CREATED              STATUS                 PORTS                NAMES
cd43c374894d   nginx        /docker-entrypoint.…"  About a minute ago   Up 2 seconds           0.0.0.0:80->80/tcp   optimistic_chatelet
ad88906a4cf0   hello-world  /hello"                 2 hours ago          Exited (0) 2 hours ago                      agitated_perlman
sles15docker:~ #
<--- 止めたコンテナがサービス起動とともに開始した。


- その他 -

A Visual Way to Play with Docker

Hands on with Docker, openSUSE Leap 15
Docker そのもののインストールや基本操作で理解できました。後は例えば nginx を使う場合の詳細な設定をどうするか、とか、自らコンテナを開発したりカスタマイズするにはどうするか、と言った問題があります。知るほどに置くが深そうですね。

食わず嫌いは良くない。

by islandcenter | 2020-07-01 10:42 | SUSE | Comments(0)