1. HOME
  2. Blog
  3. コラム
  4. 宮崎悟氏のコラム

更新情報

NEWS

宮崎悟氏のコラム

KUSANAGIでクラスタを組んでみよう第1回(宮崎悟氏)

今回から、KUSANAGIでクラスタを組んで見ようと思います。 クラスタとは クラスタ(cluster)は直訳だと塊という意味です。今回は、同じ機能を持つ複数のサーバーを連携して動作させることを指します。一般的には、クラスタには2種類あります。 – HA(High Availability) クラスタ   可用性(Availability)を高めるために使用されるクラスタです。携帯によって以下の2種類があります。   – Active-Standby型     通常は起動側(Active)で起動し、待機側(Standby)へデータをコピーし続けます。     起動側に障害が発生したときにはサービスを即時停止し、待機側でサービスを再開します。   – Active-Active 型     すべてのサービスをすべてのサーバで行います。どのサーバが壊れても他サーバでサービス提供は継続されます。Webサーバなどで多く使われます。 – HP(High Performance) クラスタ(HPC)   高い計算力(Performance)を求める際に使用されるクラスタです。現在のスーパーコンピュータの上位の多くはHPCを使用し、分散計算を複数サーバで行うことにより高いパフォーマンスを得ます。 KUSANAGIは標準イメージに含まれるソフトウェアだけで、Active-Active 型のHA クラスタを構築することができます。 KUSANAGIのHAクラスタ KUSANAGIはWebサーバ、アプリケーションサーバ(主にPHP)、DB(mariadb)の3つの要素で成り立っています。これをActive-ActiveのHAクラスタで実現するには、以下のデータを同期する必要があります。 – アプリケーションが扱うデータ(WordPressのファイルや、アップロードした画像など) – DBのテーブル情報 KUSANAGIでは、上記データをリアルタイムで同期できます。 複数サーバ間ファイル同期 KUSANAGIでは、サーバ間のファイル同期にlsyncコマンドを含みます。 lsync コマンドは、inotify(inode notify)を使用して、指定したサーバに対してrsyncのようにファイルを転送する仕組みです。inotifyはLinuxカーネルの機能で、ファイルの変更をディレクトリ単位で検知する機能です。 通常このような場合には、NFSなどの共有ファイルシステムを利用します。しかし、高速を謳うKUSANAGIではNFSはファイルシステムとして遅すぎます。そのため、どのサーバのファイルが更新されたときでも、lsyncでファイルを他サーバにコピーして最新の状態にします。そして、高速なストレージであるSSDを使用することで、Webアクセス時のレスポンスタイムを小さくします。 もちろん、Webアクセスのレスポンスタイムを小さくするためにCDNの使用を進められることがあります。CDNは、世界中からの膨大なアクセスが行われる場合には必要です。日本国内のみのアクセスが予想される場合は返って遅くなる場合もあります。そのため、よほど高アクセス数でアクセス数が売上につながるようなサイトでない限りはCDNをお勧めしません。 複数サーバ間DB同期 KUSANAGIは、サーバ間のDB同期にmariadbを[Galera Cluster](https://galeracluster.com/products/)上で使用します。 Galera Clusterは、マルチマスタかつActive-Activeのクラスタを構成できるソフトウェアです。通常、DBの同期はマスタサーバへの書き込みを、レプリカサーバに転送することで行います。マルチマスタというのは、すべてのサーバへのデータ書き込みを、他サーバに送りデータ同期します。そのため、データの食い違いが発生するのですが、サーバ間の多数決により正しいデータを決めます。 そのためGalera Cluster のマルチマスタ構成は、奇数台であることを推奨しています。また、正しくデータを転送しデータの食い違いを防ぐために、すべてのDB同士が接続する状態を維持する必要があります。データ転送の経路を多重化するなどの施策も有効です。IaaSなどのクラウドでは、同じネットワーク上にあればSLAの範囲でデータ接続性を維持してくれるはずです。 終わりに 今回は、KUSANAGIでクラスタを組む際に、前提となる知識について述べました。次回からクラスタの構成の仕方を説明しようと思います。次回をお楽しみに。 さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。 DHT OSS導入コンサルティングサービス

コラム

KUSANAGI をWindowsで動かしてみよう第3回(宮崎悟氏)

前回のおさらい 前回は、KUSANAGI for VagrantでWordPressの初期設定画面を出るところまで行いました。今回は、WordPressの設定をコマンドで実行してみましょう。 WordPressのセットアップ KUSANAGI にはwpコマンドというcliのコマンドが含まれています。詳細はwpcliのウェブサイトを御覧ください。wpコマンドを使用すると、コマンドラインからWordPressの初期設定を行うことが出来ます。 ここでは前回行ったコマンド実行後の環境を前提とします。設定したシェル変数、KUSANAGI_PASSWORD、DBROOTPASS、SITE_DOMAIN、DBNAME、DBUSER、DBPASSを使用して、以下のようにコマンドを実行します。 hostsにIPアドレスとホスト名を登録し、ブラウザから$FQDNで指定したドメイン名を開くと、WordPressの初期画面が表示されます。 オレオレSSL証明書とオレオレSSL認証局を使用 自己(オレオレ)SSL証明書というのは、皆さんご存知だと思います。KUSANAGIでもデフォルトでは自己SSL証明書を使用します。しかし、最近では自己SSL認証局という技術が出てきました。今回はその自己SSL認証局の一つである、mkcert を使用してSSL証明書とSSL認証局を使用してみましょう。 mkcertのインストール mkcertはOpenSourceでリリースされているSSL認証局(CA局)とSSL証明書を作成するツールです。mkcertは、Windows/Mac/Linuxでも動作するツールです。インストールする方法はmkcertのページに書いてあります。 筆者は、Windowsなら Chocolateyで、Mac/LinuxではHomeBrewを使用してインストールしています。 以下の作業は、Vagrant環境内ではなくホスト側で行う必要があることに注意してください。 mkcertのCA証明書インストールとSSL証明書発行 mkcertを使うには、まずCA証明書を作成する必要があります。以下のコマンドを実行すれば、作成されたCA証明書をWindowsの証明書ストアやChromeの認証書として登録されます。作成したCA証明書ファイルは、-CAROOTオプションを付けるとディレクトリが表示されるので、そのディレクトリ下にCA証明書と秘密鍵があります。 firefoxを使用する場合は、以下のように設定から「プライバシーとセキュリティ」の「証明書を表示」を選択します。表示される証明書マネージャーから、「インポート」を押して、mkcertで生成したCA証明書を選択します。 インポート終了後に以下のように表示され、mkcertのCA局が登録されたことを確認できます。 次にSSL証明書を発行します。以下のようにコマンドを実行すれば、SSL証明書と秘密鍵が生成されます。_wildcard.ドメイン名のようにするとワイルドカード証明書を発行することが出来ます。 上記コマンドで、指定したドメイン名.pem(SSL証明書)とドメイン名-key.pem(秘密鍵)のペアが作成されます。今回は、wordpress.localdomain.pemとwordpress.localdomain-key.pemを作成します。 KUSANAGIでSSL証明書を設定 では、ホスト側で作成したSSL証明書を WordPressに登録します。vagrant ssh-config でsshの設定が表示されるので、その情報からscpを使ってVagrant環境にコピーしましょう。下記はWSLでの実行例です。 次にVagrant環境にsshして、以下のコマンドを実行します。 これで、指定したSSL証明書/秘密鍵が設定され、httpのセッションがhttpsへリダイレクトされるようになりました。ブラウザで確認すると、以下のようにhttpsで無事に正確な証明書として表示されます。 SSL接続することで、KUSANAGIがhttp/2 および TLS1.3で暗号化接続されていることが確認できます。まず、上記SSL接続情報で、接続がTLS1.3で暗号化されていることが分かります。また、開発ツールを表示する(Ctrl+Shift+i もしくは F12を押す)してネットワークタブを表示します。ここで上記サイトをリロードし、wordpress.localdomain を部分を見ると、プロトコルがHTTP/2.0となっているのがお分かりいただけたと思います。 現在http/2で表示するサイトは増えてきましたが、TLS1.3で接続できるWebサイトはまだ少ない状態です。 すべてを自動で設定する Vagrantfileに処理を書けば、上記すべての処理を自動で行うことが出来ます。ただし、mkcertによるSSL証明書は事前に作成してください。また、ドメイン名などを変更するときは、SSL証明書の名前も変更する必要があることに注意してください。 これで、WordPressサイトを自動的に作成することが出来ました。wpコマンドで既存のテーマやプラグインを予め入れることも出来ます。ぜひ、KUSANAGI for Vagrantで開発・検証環境を使っていきましょう。

コラム

KUSANAGIをWindowsで動かしてみよう第2回(宮崎悟氏)

前回のおさらい 前回は、VagrantとVirtualBoxの設定で終わってしまいました。今回は、VirtualBox上のKUSANAGIでWordPressをセットアップしたいと思います。 前回、このような設定ファイルを追記したと思います。 この状態で vagrant.exe upを実行すれば、Vagrant経由でVirtualBoxが立ち上がります。 まず、VirtualBoxイメージをvagrantcloudからダウンロードします。そして、仮想マシンの立ち上げ、仮想ネットワークを作成するところが確認できます。 この際、VirtualBoxやWindows Defenderで幾つか聞かれることがありますが、これはVagrantがVirtualBoxの仮想ネットワークなどを自動的に作成するためです。すべて「はい」を押しましょう。 sshで接続してみよう KUSANAGI for Vagrantの公式ドキュメントにある通り、TeraTermやPoderosaなどのSSHクライアントから接続可能です。しかし、ここはWSL(Windows for Subsystem)からsshで接続してみましょう。 基本的には、vagrant.exe ssh でssh接続が可能です。 $ もし、これでssh接続出来ない場合は、以下のようにssh鍵を使用してアクセスして下さい。 WSLの端末から以下のコマンドを打つと、sshの接続情報が取得できます。 この情報を元に、ssh鍵ファイルをWSLのホームディレクトリにコピーします。Windowsのパスが表示されるので、wslpath コマンドを使用してWSLのパスに変更すると良いでしょう。また、ssh鍵のパーミションを600にすることを忘れないようにしましょう。 そして、この鍵を使用してsshコマンドを使用します。指定したSSHポートもしくは、private_networkで指定したIPアドレスに以下のように接続できると思います。この場合、WSLのsshコマンド以外のSSH端末から接続可能です。 WordPressの設定をしよう kusanagiへのssh接続ができればあとは簡単です。sudo コマンドを使用すると root権限でコマンドを実行できます。root権限でkusanagi initとkusanagi provisionを実行すれば、簡単にWordPressのインストールが出来ます。KUSANAGIパスワードやDB情報は、mkpasswdなどを使用して自動生成することをお勧めします。 kusanagi init/provision コマンドは対話式でも実行可能ですが、オプションのみでもほぼ設定可能です。 kusanagi init は、内部でyum update、SSHホスト鍵作成、certbot-autoの更新などを行うため、時間がかかります。 これで、WordPressのプロビジョンまで終了しました。 管理者権限で、Windowsのホストファイル(C:\Windows\System32\drivers\etc\hosts)に以下の行を追記します。念の為、ipconfig.exe /flushdnsも実行しておいたほうが良いでしょう。 ブラウザで http://wordpress.localdomain にアクセスすればWordPressのインストール画面が現れます。 次回予告 今回、VagrantでVirtualBoxの設定を行い、ssh経由でKUSANAGIの設定を行いました。次回は、VagrantだけでWordPressの設定を行いたいと思います。次回をお楽しみにお待ち下さい。 さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いで す。興味がある方は以下のページもご覧ください。 DHT OSS導入コンサルティングサービス https://kusanagi.dht-jpn.co.jp/solutions/dht-oss-consulting/

コラム

KUSANAGIをWindowsで動かしてみよう第1回

今回から、KUSANAGIをWindowsで動かすということをテーマに連載を開始します。よろしくおねがいします。 KUSANAGIはWindowsで動くの? Windows上で直接KUSANAGIを動かすことはできません。KUSANAGIは CentOS 7というLinux OS上で動作する事が前提になっています。しかし、仮想マシンなどを使用してKUSANAGIをWindows上で動かすようにできます。 今回は、KUSANAGI for Vagrantという公式の方法で試してみます。KUSANAGI for Vagrantでは、VagrantとVirtualBoxを使用します。 VirtualBoxとは Oracle VM VirtualBoxは、Oracle社がリリースしている仮想マシンです。VirtualBoxのソースコードはGPL2で公開されており、Windows、Mac、Linux、Oracle Solarisで動作します。VirutalBoxを動作させる場合、いくつかの制限事項がありますのでご注意ください。 CPU仮想化支援機能をオンにする Intel/AMDのCPUの場合、BIOSやUFEIなどの画面でVT-x/AMD-Vを有効にしておきましょう。VT-x/AMD-V機能が搭載されていないCPUではVirutalBoxは動作しません。 Hyper-Vとの協調動作を行わない WindowsのHyper-Vが動作していると、VirtualBoxは動作しない場合があります。VitualBoxのバージョン6.0以降ではHyper-Vとの協調して動作させる機能が実験的に搭載されています。この機能は、一部のIntel CPUでしか動作せず、そもそも実験的な機能です。そのため、VirtualBoxを使用する際は、Hyper-Vをオフにしてください。Windows 10 Homeならば現時点でHyper-V機能が使えないので、そのままインストールしてください。 VirtualBoxのインスール まず、VirtualBoxをダウンロードします。VirtualBoxのダウンロードページからご使用のOS用の最新版(5/10現在6.0.6です)をダウンロードしてください。今回はWindowsで動作させるため、Windows用のVirtualBoxをダウンロードしましょう。 ダウンロードしたファイルはexeファイルですのでそのままインストールしましょう。インストーラは英語のみですが、特に問題なければデフォルト設定のまま「Next」もしくは「Install」を押してください。インストール時には特権アクセスの許可を求められますので「OK」を押してください。 最後に何もせずに「Finish」と押せばVirtual Boxが起動するはずです。 その後、VirtualBoxのダウンロードページから6.0.6用の「VitualBox 6.0.6 Oracle VM VirtualBox Extension Pack」をダウンロードしてインストールすることをお勧めします。このExtension Packにより以下の機能が追加されます。 USB 2.0/3.0 デバイスのサポート VirtualBox RDPの追加 ディスクの暗号化 NVMeデバイスの追加 Intel チップ向けのPXE bootサポート Extension Packをダウンロードしたら、以下のように環境設定を開きます。 環境設定で機能拡張を選択し、右端の「+」を選択してダウンロードしたExtension Packファイルを選択すると、拡張機能のインストールは完了です。 Vagrant とは Vagrantは、Hashi Corp社が開発した仮想マシン環境を構築するためのソフトウェアです。構成したい仮想マシンの情報を、VagrantfileというRuby言語で書かれた設定ファイルに記述します。VagrantはこのVagrantfileで設定した通りに仮想マシンを構成します。 まず仮想マシンとしてVirtualBoxをインストールしてみましょう。 Vagrant のインストール では、Vagrantをインストールします。Vagrantのダウンロードページからご使用OSの最新版(5/10現在2.2.4です)をダウンロードします。Windowsの場合32bit/64bitを選択できますが、お使いのWindowsによって変更しましょう。ダウンロードしたファイルはmsi形式ですので、そのままファイル起動してインストールしましょう。インストール後、Windowsの再起動が必要です。 KUSANAGI for Vagrantの設定 Vagrantのインストールが終わったところで、Vagrantファイルを作成します。Vagrantの操作はすべてコマンドプロンプト、PowerShell、WSLなどのコンソールから起動します。またVagrantでは仮想環境専用のフォルダ/ディレクトリを作成します。以下の操作はPowershellから実行しています。 vagrant.exe init を実行することで、規定のVagrantfileを作成します。 作成したVagrantファイル末尾のendの前に以下の文を追記します。 作成したVagrantファイル末尾のendの前に以下の文を追記します。 forwarded_portの行はsshポートへのポートフォワードになります。localhostの10022番にアクセスすると、起動したホストへsshアクセスできるはずです。 private_networkの行は、ローカルIPアドレス網のIPアドレス指定になります。このIPアドレス網は、VagrantがVirtualBoxに対して自動的に設定します。 config.vm.providerからend行までのブロックで、VirtualBoxの設定を行います。 vb.memory行では仮想マシンのメモリ量(MB単位)を指定します。この行は必ず指定してください。ホストPCがメモリを大量に搭載していれば、4096MBを指定することを推奨します。 KUSANAGI for Vagrantの起動...

コラム

UnuntuでZFSを使ってみよう第6回「DRBDでZFS ボリュームを同期する」

前回では、ZFSのファイルシステムやボリュームを作成する方法を説明しました。今回は、Ubuntuという部分を全面に出して、DRBDで2つのサーバ間のZFSボリュームを動悸する方法を紹介したいと思います。 DRBDとは DRBD(Distributed Replicated Block Device)は、TCP/IPネットワークを通じて複数のサーバ間のHDD(パーティション)をミラーリング(複製)するソフトウェアで、HAクラスタでのディスク同期によく使用されます。DRBDは主なLinuxディストリビューションのみをサポートし、SolarisやBSD系のOSをサポートしません。 DRBDのインストール 今回Ubuntu18.04へインストールする際に、LinbitのDRBD9 stackを使用します。2台のUbuntu18.04+ZFSを用意し、以下の手順でPPAの追加、およびDRBDとlinstorというストレージの構成管理システムをインストールします。 今回は、以下の構成としています。 ホスト名 IPアドレス ubuntu-zfs01 192.168.33.12 ubuntu-zfs02 192.168.33.13 また、以下の設定を上記2台のホストに実施します。 rootユーザでの相互sshログオン可能な状態にする zfsとしてrpool/vol01 というZFSファイルシステムを作成する DRBDの設定 ubuntu-zfs01で以下の動作を行い、ノードの設定を行います。初期状態ではノードが登録されていないので、用意した2台を追加します。SATELLITEが、ディスクを提供するノードになります。 次に、ストレージプールpool1とボリュームvol1を追加します。 po1GBのvol1というリソースを作成したため、/dev/drbd1000 というデバイスが作成されました。 Primaryがubuntu-zfs01なので、/dev/drbd1000 はubuntu-zfs01から操作可能です。ubuntu-zfs02からはデバイスとして認識されません。 ファイルシステムの作成と同期の確認 作成したデバイスをxfsでmkfsしてマウントし、ファイルが書き込めることが確認できました。 それでは、ubuntu-zfs02へ切り替えてみます。手動でumountし、drbdadmでsecondary/primaryを切り替えます。 これで、ubuntu-zfs02でもvol1をマウントし、書き込めることが確認できました。ubuntu-zfs01へvol1を戻すときは、逆の手順を行うだけです。 DRBDとZFS 既にDRBDでは、ZFSをサポートしていることがわかったと思います。今回はDRBDの切替動作を手動で行いましたが、通常DRBDの切替動作はHeartbeatなどのHAクラスタソフトにより実施されます。DRBDには他にも様々な動作を行うことができますので、その詳細についてはLINBITのユーザガイドを参照ください。 次回からは、またZFSの機能について説明したいと思いますのでお楽しみに。 さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。 DHT OSS導入コンサルティングサービスhttps://kusanagi.dht-jpn.co.jp/solutions/dht-oss-consulting/

Web更新

宮崎悟氏の「UbuntuでZFSを使ってみよう」第5回 「ZFSのファイルシステムとボリューム」

前回ではZFSのストレージプールについて説明しました。今回は、ZFSのストレージプールから作成される、ファイルシステムとボリュームについて説明したいと思います。 ZFSのファイルシステム ZFSはその名の通り、Ubuntuを始めとするOSからファイルシステムとして認識されます。zpoolコマンドでストレージプールを作成すると、デフォルトで作成されたストレージプールと同じ名前のファイルシステムが作成され、rootファイルシステム以下にマウントされます。これがZFSのファイルシステムとなります。 zfs create コマンドを使用して、既存のファイルシステムの下にファイルシステムを階層的に作成することも可能です。zfsでは、この様に作成したファイルシステム毎にいろいろな管理を行います。 zfsでは、ファイルシステム毎に attribute と呼ばれる属性が設定できます。mountpointもその属性の一つです。試しに、tank/abcのmountpointを変更します。 この様に、ファイルシステム毎に自動的にマウントポイントは作成されますが、手動で変更することも可能です。また、zfs作成時に、オプション指定により設定変更した状態でファイルシステムを作成することも可能です。 zfs listで表示されるUSEDとAVAILが、現在の使用しているディスクサイズと使用可能なディスクサイズなります。tank/abc に100MBのファイルを作成すると、tank/abcだけでなく、tankの使用量も増えます。子ファイルディスク全体の使用量および容量が、全ストレージプールで共用することになることに注意しましょう。 ZFSボリューム ZFSは、ファイルシステムだけではなく、ボリュームという仮想ディスクとして扱うことが出来るデバイスを作成することも可能です。zfs create -V サイズ ボリューム名 を実行すると、どこにもマウントされないZFSボリュームが作成されます。 このZFSボリュームは、/dev/zvol 以下のデバイスファイルとして作成されます。 ディスクデバイスとして、fdiskやgdiskで確認可能です。下記のように、フォーマットされていない200MBのディスクデバイスとして認識されます。 この領域は、フォーマットしてxfsなどのファイルシステムをその上に構築したり、swap領域に使用したりできます。Solaris11では、ZFSボリュームがswapとして標準的に使用されたり、iSCSI/FC/FCoE/Infinibandで共有されるボリュームとして使用されることがあります。UbuntuでもiSCSIターゲットにすることは可能なようです。 今回は、ファイルシステムとボリュームについて話しましたが、次回はボリュームのちょっと変わった使い方について述べようと思いますので、お楽しみに。 さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。 DHT OSS導入コンサルティングサービス https://kusanagi.dht-jpn.co.jp/solutions/dht-oss-consulting/

コラム

宮崎悟氏のUbuntuでZFSを使ってみよう第四回「ZFSで使用できるストレージプールを確認しよう(2)」

前回のおさらい 前回はzpoolで基本的なRAID構成であるストライプとミラーが構成できることを説明しました。 さて今回は、zpoolで構築できる、RAID5以上のボリュームについて説明したいと思います。 RAIDZ RAIDZ(RAIDZ1とも呼びます)はいわゆるRAID5に相当する構成です。データはブロックサイズで分散してディスクに配置し、そのデータブロックのパリティ(誤り訂正補正)を他ディスクに分散して配置します。そのため、構成するディスク1台が故障してもディスクを交換すれば、パリティからデータを復旧することが可能になります。 今回は1GBのファイルを複数用意して、挙動を確認します。 RAIDZは以下のように作成します。RAID5と同様に、3つ以上のディスクで構成します。 zpoolでは2.9GBですが、zfsとしては1.8GBが確保されます。zpool/zfs合わせて200MBほどが管理領域として確保されます。 RAIDZ2、RAIDZ3 RAIDZ2はRAID6相当で、RAIDZがパリティ1つなのに対し2つのパリティを持ちます。また、3つのパリティを持つRAIDZ3もあります。RAIDZ2~3のパリティはそれぞれアルゴリズムが異なるものを使用し、パリティが破壊されても他アルゴリズムでの復旧を行うことで、さらに堅牢性をあげています。 RAIDZ2/RAIDZ3は以下のように作成します。RAIDZ2は4本以上、RAIDZ3は5本以上のディスクで構成します。 RAIDZ2、RAIDZ3ともに、zpool上では構成したディスクの本数に比例した容量を持ちますが、zfs上ではRAIDZと同じ1.8GBが有効な容量となります。 RAIDZのストライプ構成 RAIDZ1~3は、複数個束ねてストライプ構成にすることが可能です。いわゆるRAID50やRAID60のような構成です。RAIDZ1~3は、パリティ計算をCPUで行うことからストライプ幅(構成するディスク量)を多くしても遅くなりがちですが、RAIDZ1~3をストライプ構成することにより、高速化することが可能です。 これらの構成は、同じRAID構成であればストレージプールに追加可能ですが、ストライプ幅やRAID構成が異なるものを追加することは出来ません。それぞれ、以下のようにエラーが発生します。 今回はストレージプールについて説明いたしたが、いかがだったでしょうか。次回はストレージプールとZFSの関係について説明していきたいと思いますので、お楽しみに。 さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。 DHT OSS導入コンサルティングサービス https://kusanagi.dht-jpn.co.jp/solutions/dht-oss-consulting/

Web更新

宮崎悟氏のUbuntuでZFSを使ってみよう第3回 「ZFSで使用できるストレージプールを確認しよう(1)」

前回のおさらい 前回は100MBのファイルを使用して、zpoolを作成してみました。指摘されて気づいたのですが、100MBの領域なのに、zpoolでは80MB、zfsでは40MBとかなり少なくなっています。 これは、zpoolおよびzfsの管理領域として、ある程度大きい領域を使用するためです。実際には数TBのzpoolを使うことが殆どで、その場合どれほど増やしても200MB程度でした。今回はテストのため、小さい領域を作ったためこのような減少が起きたのです。興味深いですね。 さて、今回は、zpoolで、色々なボリュームが作成できることを説明したいと思います。 ストライプ ストライプとは、いわゆるRAID0に辺りディスクに分散してファイルの読み書きを行うものです。ZFSでは正確にはストライプとは違うのですが、ストライプに近いことを行うことが出来ます。 # dd if=/dev/zero of=/tmp/disk1 bs=$((1024*1024)) count=1000 # dd if=/dev/zero of=/tmp/disk2 bs=$((1024*1024)) count=2000 # zpool create tank /tmp/disk1 /tmp/disk2 # zpool list tank NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT tank  2.91G   273K  2.91G         –     0%     0%  1.00x  ONLINE  – $ zpool status tank pool: tank state: ONLINE scan: none requested config:   NAME          STATE     READ WRITE CKSUM tank          ONLINE       0     0     0 /tmp/disk1  ONLINE       0    ...

Web更新

宮崎悟の「UbuntuでZFSを使ってみよう」第2回「UbuntuにZFSを入れてみよう」

UbuntuとZFSのライセンスについて さて、前回は色々と反響があったようで、大変嬉しく思います。その中で、UbuntuでZFSカーネルモジュールをバイナリ配布することに対する懸念を抱くご意見を多くいただきました。 UbuntuはGNU/Linuxのディストリビューションであり、LinuxカーネルはオープンソースライセンスであるGPLv2となっています(詳細はLinux Kernel license rules を参照ください)。一方、Ubuntuに含まれるOpenZFSは、Sun Microsystems(現在はOracleにより買収済み)がCDDLというオープンソースライセンスで公開されており、このCDDLはGPLと共存できないライセンスとなります。Linux著作権保持者は、UbuntuがLinuxカーネルモジュールとしてZFSをバイナリ配布することがライセンス違反であると声明を出しております。 UbuntuでのZFSカーネルモジュールのバイナリ配布は、この訴訟により中止になる可能性があることをご認識ください。 OpenZFSとは Ubuntuで配布されているZFSは、OpenZFSの成果を利用しています。OpenZFSは、CDDLで配布されたOpenSolarisのソースコードを元にしており、illumos(OpenSolarisベースのカーネル実装)、FreeBSD、Linux、Mac OSX用のソースコードを公開しています。 UbuntuでZFSを使用してみる では、早速UbuntuでZFSを使用してみましょう。 まずは、どこのご家庭にもあるUbuntu18.04LTSの仮想マシンもしくは物理マシンを用意します。 以下のコマンドで、パッケージを最新状態にした後、を実行することで、OpenZFSが使用できるようになります。 % sudo apt update % sudo apt upgrade –y % sudo apt install zfsutils-linux -y ZFSを実用で使う場合は、HDDやSSDを使用しますが、まずは100MBのファイルを使用してZFSの操作を試してみましょう。 zpool create コマンドを実行することで、ファイルdisk01を使用した、tank という名前のzpoolが作成されます。 % dd if=/dev/zero of=/tmp/disk01 bs=1024 count=102400 % ls -lh /tmp/disk01 -rw-r–r– 1 s-miyaza s-miyaza 100M 10月 29 20:49 /tmp/disk01 % sudo zpool create tank /tmp/disk01 % sudo zpool list NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH ...

宮崎悟氏のコラム

宮崎悟の「UbuntuでZFSを使ってみよう」第1回 「Linuxのファイルシステムについて」

はじめに 皆様はじめまして、宮崎と申します。今回より、このコラムを始めさせていただくことになりました。よろしくお願いします。 さて、SolarisとZFSとZoneがダイスキな私ですが、今時のSolarisの不憫さのため、せめてZFSの良さを皆様にお伝えしたく、このコラム執筆を引き受けました。このコラムを書かせていただくからには、もうZFSから離れられない体にすべく布教に努めさせていただく所存でございます。 ファイルシステムとは さて、ZFSを語る前に、ファイルシステムとは何かというところをもう一度おさらいしてみましょう。 Wikipediaでは「コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ」とあります。 その中には、HDDやSDDなどのストレージを扱うディスクファイルシステムや、デバイス・プロセス・カーネル内の情報を扱うprocfsのようなものがあります。 今回はディスクファイルシステムについて語るわけですが、現在Linuxで使用可能な主要ディスクファイルシステムについてまとめてみました。 名称 最大 ファイル名長 ディレクトリ名 使用文字種 最大 パス名長  最大 ファイル サイズ 最大 ボリューム サイズ Btrfs 255B 任意 バイト列 定義 無し 16EB 16EB ext2 255B 任意 バイト列 定義 無し 16GB~2TB 2TB~32TB ext3 255B 任意 バイト列 定義 無し 16GB~2TB 2TB~32TB ext4 255B 任意 バイト列 定義 無し 16GB~16TB 1EB FAT32 8.3形式(または255文字) 全Unicode 定義 無し 4GB 512MB~2TB JFS 255B 任意 バイト列 定義 無し 8EB 512TB~4PB NTFS 255文字 全Unicode Unicodeで32,767文字...

コラム