RSS

カテゴリー : Linuxサーバー

LTOオートローダーを購入した(Win7+VMWare Playerで使うぞ編)

前回、ケーブル間違えた編でケーブルを間違えて買ってしまった日立のLTOオートローダーHITACHI LTO5 L1/8A 。無事に正しいケーブルを入手した。今回は、Windows7上のVMWare Playerで認識させ、Linux(Ubuntu 16.04LTS)から、Windowsと共有したフォルダの内容をテープに書き込むまでを行ってみる。

#ケーブル再発注

LTO5 L1/8Aに搭載されているIFはMiniSASで、コネクタはSFF-8088と呼ばれるものらしい。対応するカードとケーブルをヤフオクで入手し、オートローダーに装着。オートローダーの電源を入れてからマシンの電源を入れ、Windows7を起動する。ドライバは特に不要だったが、カードによっては要求される可能性もある。

テープに書き込む方法

今回、LTFSは使用せず通常の書き込み方法を採った(LTO4なので)。現在、NT Backupは付属しないので、Windows上からテープに書き込む方法は、フリーでは見あたらない。しかし、VMWare PlayerはSCSIデバイスを共有することができる。そのうえ、Windows<->ゲスト間でフォルダ共有を行えば、Windows上のファイルがテープ上に書き込める。従って、VMWare Player上でUbuntu 16.04をインストールし共有フォルダを有効化、書き込みを行う。

書き込みの準備

  1. VMWare Player上でLTOドライブを使えるようになるまで参照して、Ubuntuをセットアップする。
  2. マガジンにテープをセットし、ドライブに移動しておく。
  3. ホストマシンに、書き込み用テンポラリHDDを接続し、スパンボリュームを構築し、ゲストと共有する。(LTO4/5の転送速度がHDD1台だと微妙に追いつかなかったので行った。)テープに書き込みたい内容を1つのディレクトリに集めておく。
  4. スーパーユーザーに昇格するかsudoを使って、テープがマウントされているか確認。書き込み元のディレクトリに移動する。

4. tar -cvf /dev/st0 . -b 128 を実行する。カレントディレクトリの内容が書き込まれる。ディレクトリの容量はテープの非圧縮時の容量を下回るようにしておく。(テキストデータなどは圧縮が効きやすいが、動画や画像などでは全く意味がないことに注意)VMWare側のオーバーヘッドは(多分あるんだと思うけど)全く感じられず、後は作業が進むのを待つだけ。

Linuxコマンドをログアウトしても動かしたい

概要

Linuxコマンドを、ログアウト後も動かしておきたいことが多々ある。例えばrsyncとかのバックアップ系ジョブとか。毎回やり方を忘れるのでメモする。

使い方
nohup 動かしたいコマンド &
実行した後別のターミナルを開き今まで使っていた方はそっ閉じ。

意味
ログアウトしてHUPシグナルを受け取っても無視する。バックグラウンドで実行する

sshfsを使ってリモートサーバーのディレクトリをマウントする

使い道

例えば、さくらのVPSの安いプランを借りていて、ディスクを拡張したいときなどに有効だろう。ネットワーク越しなので速度に関しては全く期待できないが。

subsonicなどを運用していて見かけの容量を増やしたいなどというときに効果を発揮するかもしれない?

install

sudo apt-get install sshfs

注意点

秘密鍵のパスは絶対パスらしい。こんな感じで使う
sshfs -p ポート名 -o IdentityFile=秘密鍵絶対パス ユーザ名@ホスト名:/マウント元 /マウント先

CentOS7で作る快適サーバー生活 0.0 -OSインストール編-

[print_link]

目次

  1. インストール編(いまここ)
  2. SSH設定編
  3. apache導入編
  4. mysql導入編
  5. php導入編

概要

CentOS7を用いて、サーバー公開を行うまでのステップを検討する。ここでは、将来的にhttp・php・mysqlの導入を行うことを念頭に、最低限のセキュリティを備えたサーバーを構築する。インストールとsshの設定及び、ポート変更を扱う。

想定している環境

ここでは、さくらのVPSを用いて、CentOS7系を構築する。さくらVPSは、当たり前だがファイアウォールが無い。従って、firewalldの適切な設定が必要である。

OSのインストール

ここでは、CentOS-7-x86_64-NetInstall-1511.iso を用いる。rikenミラーhttp://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-1511.isoよりダウンロードする。実機の場合はDVDに焼く、USBメモリを用意するなりする。さくらのVPSでは、
Cent-inst-01
このように、OSインストール→ISOイメージインストールを選択、指示に従ってイメージをアップロードする。WinSCPなどを用いれば良い。

WS000003

Install CentOS7を選択しエンター

WS000004

日本語を選択しエンター

WS000005

まずはネットワークの設定から行う。下の方にスクロールして、ネットワークとホスト名を探す

WS000006

一番下の方にある。クリックする。

WS000007

認識しているNIC一覧が出てくるので、右下の設定をクリックする。

WS000008

IPv4のセッティングタブをクリックする

WS000009

IPアドレスの手動設定を行う。

WS000010

方式→手動を選択

WS000011

アドレス・ネットマスク・ゲートウェイを適切に選択する。自宅であればたとえば、192.168.1.11 255.255.255.0 192.168.11.1等である。入力したら、保存を押す。

WS000013

イーサネットがオフになっているので、オンにする。

WS000014

ボタンを押してonになればOK。完了を押す。元の画面に戻る。

WS000015

続いて、インストールソースの設定を行う。インストールソースをクリックする。
WS000005

ネットワーク上の欄に
「ftp.riken.jp/Linux/centos/7/os/x86_64」
と入力。完了を押す。

WS000018

ソフトウエアの選択ボタンが押せるようになっている。押す。

WS000019

とりあえず、互換性ライブラリと開発ツールにチェックを入れる。完了を押す。

WS000021

KDUMPを無効にする。KDUMPボタンを押す。
WS000022

kdumpを有効にするのチェックを外す。完了を押す。

WS000023

パーティションの設定を行う。インストール先を押す。

WS000025

パーティション構成を行いたいにチェックを入れ完了を押す。パーティショニング画面が出る。

使い古しのHDDなどでは、既に構築されたパーティションを消去しなければならない。ここでは、前の実験環境である、CentOS Linux 7.2.1511 for z86_64が残っているので消去する。三角ボタンを押し、リストを展開する。
WS000026

リストが展開された。マイナス(-)ボタンを押す。
WS000027

他のパーティション~~削除~~にチェックを入れ削除。

WS000028

きれいに消える。

WS000029

標準パーティションを選択する。
WS000030

下のプラス(+)ボタンを押す

WS000032

マウントポイントは/に設定した。HDDなのは100GBプランで、10GBをswapにするためここでは90Gibで設定する。マウントポイントの追加を押す。

WS000032

デバイスタイプを標準パーティションに、ファイルシステムをext4へ変更する。設定の更新を押す。

WS000033

下のプラスボタンを押す。マウントポイントにswapを指定。容量は指定しない。残り領域が確保される。

WS000034

完了を押す。変更を許可するを押す。
WS000035

インストールの開始を押す。

WS000037

rootパスワードの設定を行う。rootパスワードを押す。
WS000038

極力長めのパスワードに設定する。これから公開鍵認証設定をするまでは、マシンが危険にさらされるので、悪意のある者の餌食にならないよう、十分長いパスワードを使う。

WS000039

一般ユーザーの作成も同様に行う。このユーザーを管理者にするにチェックを入れる。このアカウントを~にはチェックが入っている。これも十分長いパスワードにする。

WS000041

この後、再起動のボタンが出現すればインストールは無事終了。

->Next SSH設定編へ

これでとりあえず動いたampacheの設定

やたら導入しにくいampacheだが、設定は更に厄介だ。
今回はすべてmp3へ変換するとして、設定した。


;###

~中略~

;#########################################################
; Debugging #
;#########################################################

;デバッグを有効にする
debug = "true"

;デバッグレベルはデフォルトのママ
debug_level = 5

;ログのパス
log_path = "/var/log/ampache"

;########################################################
; These options control the dynamic downsampling based #
; on current usage #
; Note Transcoding must be enabled and working #
;########################################################

;最大ビットレートを指定
;この後直接記述しているので意味ない気がするが設定する
max_bit_rate = 320

; New dynamically downsampled streams will be denied if they are forced below
; this value.
; DEFAULT: 8
;min_bit_rate = 48

;######################################################
; These are commands used to transcode non-streaming
; formats to the target file type for streaming.
; This can be useful in re-encoding file types that don't stream
; very well, or if your player doesn't support some file types.
;
; 'Downsampling' will also use these commands.
;
; To state the bleeding obvious, any programs referenced in the transcode
; commands must be installed, in the web server's search path (or referenced
; by their full path), and executable by the web server.

; Input type selection
; TYPE is the extension. 'allowed' certifies that transcoding works properly for
; this input format. 'required' further forbids the direct streaming of a format
; (e.g. if you store everything in FLAC, but don't want to ever stream that.)
; transcode_TYPE = {allowed|required|false}
; DEFAULT: false
;;; Audio
transcode_m4a = required ;変更
transcode_flac = required ;変更
;transcode_mpc = required
;transcode_ogg = required
;transcode_oga = required
;transcode_wav = required
;transcode_wma = required
;transcode_aif = required
;transcode_aiff = required
;transcode_ape = required
;transcode_shn = required
;transcode_mp3 = allowed
;;; Video
;transcode_avi = allowed
;transcode_mkv = allowed
;transcode_mpg = allowed
;transcode_mpeg = allowed
;transcode_m4v = allowed
;transcode_mp4 = allowed
;transcode_mov = allowed
;transcode_wmv = allowed
;transcode_ogv = allowed
;transcode_divx = allowed
;transcode_m2ts = allowed
;transcode_webm = allowed

;ffmpegの場所を絶対パスで指定
transcode_cmd = "/usr/local/bin/ffmpeg"
; Default audio output format
; DEFAULT: none
encode_target = mp3 ;変更

;変換先ターゲットをmp3へ指定した。ffmpegのコマンドを指定
encode_args_mp3 = "-vn -ab 320k -acodec libmp3lame "-f" mp3 pipe:1"

owncloudを導入したのでdnsmasqで内向きDNSを立てた

概要

owncloudとLet’s encryptでDropbox代替サービスを構築した。しかし、LAN内部ではドメインでの名前解決が出来ない。hostsファイルの編集では、外部ネットワーク(大学など)への接続時再編集が必要で面倒だ。そこで、内向きのdnsサーバーを立てることにした。bindは面倒なので、簡易的にdnsmasqを用いた。結果、dnsサーバーの/etc/hostsを編集するだけで名前解決が出来るようになった。設定が悪いのか、名前解決したいサーバーとは別にセットアップする必要があった。サーバーxに対して名前解決したいときは別のサーバーyにdnsサーバーを導入する必要があった。これは今の時代、仮想環境でどうとでもなるがちょっとめんどくさかった。

dnsmasqについて

dnsmaskは簡易的なdnsサービスを提供する。名前解決のテーブルに自身の/etc/hostsを用いることが特徴的である。bindのように正引き・逆引きのファイルを作る手間もいらない。自身で解決できなかったドメインに関しては、上位のdnsサーバーで名前解決を試みる。従って、CentOSのネットワークカードに適切な上位dnsを設定しておくことが必要である。

サーバー環境

VirtualBox仮想環境に構築した。OSはCentOS7を用いた。IPアドレスは手動で設定され固定されている。また、上位DNSとして用いるDNSサーバーアドレスが適切に設定されている(ルーターやISP等のアドレスが指定されている)。

dnsmasqのインストール

最小インストール時にすでに導入されている

firewalldの設定

ゾーンはpublicで、ポート53を開放

/etc/dnsmasq.confの編集

変更箇所

/etc/hostsの編集

192.168.1.10 xxx.yyy.com の形式で編集する。最初から記載されている2行は変更しない

起動

OS起動時自動的に立ち上がるように設定する。

ルータの設定変更

配布するDNSサーバーのIPアドレスを設定したDNSサーバーへ変更する。これは、各端末のネットワークカードの設定を個別編集してもよいが、外出時など環境が変わる可能性があるマシンがある場合は、一括してルータの設定を変えたほうが便利だ。

完成

nslookupなどを用いて正常に名前解決できているか確かめる。

Let’s encryptを使ったWEBサーバーのSSL化が非常に簡単だった件。

概要

以前はまだパブリックベータで安定していなかったLet’s encryptだが、とうとう正式版が公開されたらしい。ちょうどOwncloudサーバーを作り直したかったし、どんなもんじゃいと導入してみた。既存の無料SSL発行サービスではかなり良い使い勝手であった。証明書の導入はクライアントの実行だけでよかった。15分も有れば導入可能だった。その際apacheを一時停止する必要がある。証明書の期限が比較的短く(60〜90日で切れる)、継続的な更新が必要である。cronで定期的にスクリプトを実行すれば良さそうだ。

0.サーバー環境

CentOS7+apacheを想定している。必要に応じて、phpやmariadbなどが導入されている。

1.Firewalldの設定

設定済みの場合、飛ばす。

2.apacheの停止

Let’s encryptクライアントが80番ポートで通信するため、予め停止しておく

3.Let’s encryptクライアントの導入

gitからクローンしてくる。

4. Let’s encryptクライアントの実行

yourdomainに自身のドメイン名を入力する。
メールアドレスの入力画面が出てくるので、入力する。規約に同意する。

5.確認

下記ディレクトリに証明書がインストールされたか確認する。以下のパスに最新の証明書のシンボリックリンクが作成されている。

6.SSL.confの変更

SSL.confを開く

SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFileの項目を適切に変更する。yourdomain部分を自身のドメイン名に変更して入力。

7.apacheの起動

8.完了

これで全ての手順は完了。非常に簡単にSSLの導入が出来た。Let’sencryptで導入できるSSLは、一般ユーザーにもSSLを広めようと言うありがたい活動のお陰で使用できるようになっている。審査方法で言えばドメイン認証型で、証明書には組織情報などは記載されない。従って、簡易なサービスやプライベートサービス、一般リリース前のテストなどに適している。また、定期的(60日程度)に一回、証明書の更新が必要になってくる。apacheを停止し、クライアントを再度実行すれば自動的に更新される。

9.リンク

とてもわかり易かった。本記事は、下記参照先に加え。sslの設定を加筆したもの。
Let’s Encrypt の使い方

10.Appendix

SSLの脆弱性に対応するため、sslv3などの脆弱性を抱えたプロトコルでの通信を制限する。

httpd.confに下記の記述を付け加える。

httpdを再起動する

https://www.ssllabs.com/ssltest/index.htmlにアクセスして自分のドメインを入力、チェックする。

修正事項

サービス名がapacheになっていた→httpdへ訂正
ssl設定ファイルがhttpd.confになっていた→ssl.comfへ訂正

特定の拡張子を指定したフォルダに集める

世の中には、自分のやりたいとそのままやってくれる人がいるんだなあ…。

Linux CentOS5】ディレクトリ階層に分けて置かれた複数のファイルを条件指定で抽出し、別のディレクトリにまとめてコピーする【xargsと、cpコマンドの組み合わせ】

ReadyNAS 104を導入したらHDDが早速壊れた件

スクリーンショット 2016-01-28 20.48.56
NASが手狭になってきたしそろそろ新しい物を。ということでNASを新調することにした。ちょうどいいところに、友人が購入後数百時間で乗り換えた104が余っているというので、格安で譲っていただいた。(感謝しています。ありがとう)

セットアップ

物理的なセットアップは非常に簡単。HDDスロットに4本、HDDを差し込むだけで終了する。104はNAND Flash領域にOSを持っているため、某Bッファローや、Iまるデータみたいに、専用のHDDを用意する必要は全く無い。今回は予算の都合で、WD Blue を4台購入した。1件目の店で4台揃わなかったため、構成としては

  • WDEZRZRT3台

  • WDEZRZ-RT一台

の合計4台、8TBの構成となった。raid構成は、raid6とした。raid6は、パリティビットの領域としてディスク2台分を消費するため、HDDの故障2台までは対応が可能。

HDDの故障

導入後約一週間でHDDが故障した。初期不良と思われる。故障したのはWDEZRZ-RT、これだけ別店舗で購入したものであった。相性が悪かったのか。とりあえず、HDD自体は30日間初期不良対応で交換済みなので、ここでは、HDD故障に気が付きまで〜交換までをまとめる。

  1. NASからの不穏なメール
    ReadNASでは、管理用のメールを送信することが出来る。(SMTPサーバーの設定が必要)メールが送られてくるタイミングは色々変えられるが、電源のON,OFF時や、HDDのエラー発見時などに送られてくる。はじめ、NASから下記のようなメッセージが送信されてきた。

「Volume raid6 is Degraded.」

raid6というのは構築しているボリューム名。直訳だと、Volume raid6が劣化しているという感じになる。そして、間髪入れずにNASがからメールが届く。

「Detected increasing ATA error count: [221] on disk 3 (Internal) [WDC WD20EZRZ-00Z5HB0, WD-WCC4M1EUJPJP] 3 times in the past 30 days. This condition often indicates an impending failure. Be prepared to replace this disk to maintain data redundancy.」

disk3で、過去30日に3回エラーが出ているので、交換を推奨。という内容のメール。このエラー報告は何通も届き、届くたびにエラー数が増えていっていた為、HDD初期不良と判断。恐らく不良セクタだと思われる。

  1. 液晶画面の表示
    液晶画面にも、「Degraded」と表示される。液晶のバックライトが点滅し、わかりやすいようになっている。

  2. HDD交換
    HDD自体は、ホットスワップに対応しているため、電源を入れたまま抜き取ることが可能である。弟に依頼し購入店まで車を走らせ、代替品をゲット。セットアップ時と同様に装着する。

  3. リビルト
    リビルトは自動的に始まる。この時、NASのステータスはこのような感じになる
    スクリーンショット 2016-01-28 20.27.43
    予定リビルト所要時間が表示されていたので、参考に掲載する。
    スクリーンショット 2016-01-28 20.27.35
    44時間、ほぼ丸2日かかる計算になる。
    raid5だと、一つのraidアレイの故障から、芋づる式にraidが崩壊することが多いという。raid6のほうが、まだマシという某店員さんの言葉は本当だったのだなあと妙に納得。

  4. エラーログ
    NAS管理画面からエラーログが取得できたので掲載
    スクリーンショット 2016-01-28 20.47.30 1

  5. 感想

  • リビルトは自動なので、ユーザーが行うことは案外少なかった
  • HDDの初期不良は本当にあるので、注意すべきである。購入後適当な時間のエージングが必要と主張しているブログも存在する。確かにその必要性はあるかもしれない。

ディレクトリバックアップ バックアップイメージ作成のためのSquashFS

SquashFSとは

  • ファイルのバックアップ用ファイルシステム
  • 特定のディレクトリを、イメージファイルへ圧縮
  • 圧縮したファイルをマウント可能(リードオンリー)

たとえば、このような用途が想定される。

  • 比較的容量が大きく、そしてファイル数も多量にあるディレクトリがある

  • しかし、そのディレクトリはあまり使われていない。

  • よって、普段はイメージファイルに圧縮してバックアップを取り、必要に応じて参照したい。

  • ついでに、重要なファイルも多いためリードオンリーでマウントしたい。

私の場合は、鳥人間現役時代のファイル(700GB程度)をアーカイブ化するために用いた。もちろん、そのままNASにrsyncしてもいいのだと思う。しかし、ファイル数が多く、セクタサイズより小さいファイルも結構有ったため、馬鹿正直にバックアップを取るには正直面倒。かといってtarにしてしまうと、ファイルを参照する際いちいち展開しなければならずそれもまた面倒…。ということで、第三の道を探ったらここにたどり着いた。

インストール方法

等。aptでも同様のパッケージ名だと思われる。

Macでのインストール方法

簡単な使用方法

この場合圧縮先へgzipで圧縮される。圧縮方式はxz,gzip,lzoなどから選択可能。

###圧縮方式の比較

  • 圧縮率での比較: xz<gzip<lzo
  • 展開速度での比較:lzo<gzip<xz

全体のバランスを考えるとgzip辺りにしておくのが無難らしい。

圧縮してみた

実際に圧縮してみたところ、元フォルダの75%程度の容量となった。822GBが619GBまで圧縮できたのでかなり優秀と言えるのでは。バックアップも取りやすくなった。

マウント方法

mount -o loop /バックアップファイル /MountPoint/
ファイルをあたかもデバイスのように見せかけることをループバックマウントと言うらしい。

MacOSXでのマウント

これがちょっとめんどくさい。MacOSでは標準でSquashFSをサポートしていないらしい。そこで、MacFuzeを経由したマウント方法になる。もしかしたら、カーネルにsquashFSが入っていないLinuxとかでも応用できるかもしれない。要するにNETGEARのReadyNASとか。

前提条件

導入のために、automake libtool autoconfの導入が必要。Homebrewから導入可能。

MacFuze(OSXFuze)のインストール

ココからインストーラーを落としてきてインストール。

squashfuseのコンパイル&インストール

なお、コンパイル時に導入するコマンド群のインストールのため、予めhomebrewが必要になってくる。インストール方法は

makeまで終わったら、パスが通っている位置に、squashfsをコピーする。

導入のために、automake libtool autoconfの導入が必要。

ここまで済んだら、やっとマウントできる。

重要な注意点

マウントした際に、下記のような現象が起こる。

かといって、適当なマウント先を指定してはダメ。
例えば、/Volumes/datahddにデータが保存されていて、ファイルのコピーなどのジョブが走っているとする。その時、うっかり/Volumes/datahddにマウントしてしまうと、その瞬間Finderからdatahddが消える。そして、コピー中のプロセスなどは全てエラー終了する。どうやらアンマウントに近い状況になるらしい。

結言

 鳥人間時代のサーバーに保管されていたデータを、引退時個人ストレージへ複写している。容量はおよそ700GB程度あるが、当時の”おもひで”的なものであって滅多に参照されるものではない。しかし、引退時にサーバーより消去してきた個人データも少なからず有り、もしかしたら必要になるかもしれない。

 NASを新調したことにより、冗長性の確保されているストレージが4TB確保できた。しかし、CPUがARMでありメモリは512MBとおおよそRaspberry Pi初代と同レベルである。このNASに大量のデータ&ファイルを入れるとどうなるかは自明であろう。というわけで、圧縮し都合のいい時にはマウント可能な方法を探し、SquashFSに行き着いた。
 
 

参照先

SquashFSで圧縮ファイルをマウントする

SquashFSをマウントするまで

SquashFSの圧縮形式