*

Linux録画サーバで起動ドライブと録画用ドライブを分ける方法

  最終更新日:2016/05/22

Pocket

起動用ドライブと録画用ドライブの分離

 ブログ読者の方から「Linux録画サーバで起動ドライブと録画用ドライブを分ける方法」を教えて欲しいと要望があったので記事にしました。CentOS、Debian、Ubuntuに対応した記事です。

スポンサーリンク

2つの方法

 起動ドライブと録画用ドライブを分ける方法は、基本的には以下の2つの方法しかありません。

  • 1台のハードディスクを分割する方法
    • 例:先頭100GBにLinuxをインストール、残りの領域を録画用に使用
  • 物理的に別々のドライブに分ける方法
    • 例:古いハードディスクにLinuxをインストール、新しい1台を録画用に使用
    • 例:SSDにLinuxをインストール、ハードディスクを録画用に使用

 おすすめは物理的に分ける方法です。録画空き容量が足りなくなった時にハードディスクごと交換可能だからです。

 Linuxのインストール方法についてはこの記事では説明しません。ハードディスクの空き容量や追加したハードディスクを録画用ドライブとして認識させる方法についてのみ説明します。

使用可能なファイルシステムの確認

 Linuxのディストリビューションによって使用可能なファイルシステムが異なります。念のため確認しておきましょう。

$ grep -v nodev /proc/filesystems

  ディストリビューションごとの実行結果は以下の通り

  CentOS 7の場合)
        xfs

  CentOS 6.7の場合)
        iso9660
        ext4

  Debian 8の場合)
        ext3
        ext2
        ext4

  Ubuntu 14.x 15.xの場合)
        ext3
        ext2
        ext4
        vfat
        fuseblk

 CentOS 7では”xfs”、それ以外では”ext4”を使用すれば良いでしょう。

 それでは、起動ドライブと録画用ドライブを分ける方法を選んで、下記の記事内リンクに飛んで下さい。

1台のハードディスクを分割する

 例として3TBのハードディスクの先頭110GBにLinuxをインストールし、残りの約2.9TBの空き領域を録画用ドライブとして使用する手順を説明します。この場合、SATAの1台目のハードディスクのはずなので、ハードディスク本体のデバイス名は”/dev/sda”になります。

 パーティションの作成にはpartedコマンドを使用します。以下の作業はユーザーrootで行うかsudoで実行して下さい。

 実行内容は順番に並べると次の通りです。

  • partedを起動
  • 表示単位をGiga Byteに揃える
  • 空き領域の開始、終了位置を確認
  • 開始、終了位置を指定してパーティション作成
  • パーティションが正常に作成されたことを確認
  • 終了

 下記はCentOS 7での実行例です。

・ /dev/sda を指定して parted を起動

# parted /dev/sda

    GNU Parted 3.1
    /dev/sda を使用
    GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。


・表示単位をGiga Byteに揃える

(parted) unit gb


・空き領域の開始、終了位置を確認

(parted) print free

    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sda: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt  ← 容量2TB未満の場合、"msdos"かも
    ディスクフラグ: pmbr_boot

    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
          0.00GB  0.00GB  0.00GB  空き容量
     1    0.00GB  0.00GB  0.00GB                          bios_grub
     2    0.00GB  0.53GB  0.52GB  xfs
     3    0.53GB  110GB   110GB                           lvm
          110GB   3001GB  2891GB  空き容量  ← 開始と終了の位置を確認

     ※ この例では開始が110GB、終了が3001GBになります。


・開始と終了の位置を指定してパーティション作成

(parted) mkpart primary 110 3001


・パーティションが正常に作成されたことを確認

(parted) print

    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sda: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    ディスクフラグ: pmbr_boot

    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
          0.00GB  0.00GB  0.00GB  空き容量
     1    0.00GB  0.00GB  0.00GB                          bios_grub
     2    0.00GB  0.53GB  0.52GB  xfs
     3    0.53GB  110GB   110GB                           lvm
     4    110GB   3001GB  2891GB                    primary
     ※ 4番目に作成された

・終了

(parted) quit

 かなり長い実行例なので、上記のコマンド実行箇所のみ抜粋します。

# parted /dev/sda
(parted) unit gb
(parted) print free
(parted) mkpart primary 110 3001  ← 環境により値が異なる、注意!
(parted) print
(parted) quit

 もし誤ったパラメータでパーティションを作成した場合、以下のコマンドで削除できます。

(parted) rm 番号

 番号は”print”コマンドで表示される左端の番号です。くれぐれも既に使用しているパーティションを削除しないように気を付けて下さい。もし間違って削除した場合、”rescue”コマンドで復活できるかもしまれせん。詳細は”help”コマンドで確認できます。

 今回はパーティションテーブルが”gpt”の場合について説明しました。”msdos”の場合も同じコマンドで作成できますが、パーティションを4つまでしか作成できません。もし、”msdos”でパーティションをもっと細かく分けたい場合、OSインストール時に拡張領域を作成して対応して下さい。Linux初心者の方でそこまでする人はいないと思いますが、partedの使用方法は「個人的備忘録 from 2009」さんのParted でパーティションの作成(分割) その1 (1)が詳しいので、そちらを参考に作業して下さい。

 次の作業は「ファイルシステムの作成とマウント(記事内リンク)」に進んで下さい。

物理的に別々のドライブに分ける

 2台目のハードディスクを録画用ドライブとする場合、デバイス名は”/dev/sdb”になるはずです。念のため確認します。以下は3TBのハードディスクを”/dev/sdb”として認識している場合の例です。

# fdisk -l

  全てのディスクドライブのリストが表示されます。
  その中から”/dev/sdb”の結果を探します。

 ・CentOS 7の実行例
    Disk /dev/sdb: 3000.6 GB, 3000571527168 bytes, 5860491264 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

 ・Ubuntu 14.04の実行例
    Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
    ヘッド 255, セクタ 63, シリンダ 364801, 合計 5860533168 セクタ
    Units = セクタ数 of 1 * 512 = 512 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
    I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
    ディスク識別子: 0x00000000

 ”/dev/sdc”など別のデバイスとして認識している場合、意図して接続している場合は問題ないですが、そうでないならばハードディスクの接続を確認して下さい。

 では、partedコマンドでハードディスク全体で1つのパーティションを作ります。以下の作業はユーザーrootで行うかsudoで実行して下さい。

 実行内容は順番に並べると次の通りです。

  • partedを起動
  • 現在の状態を確認
  • ラベル”gpt”を作成
  • 再度/dev/sdbの状態を確認
  • 表示単位をGBに揃える
  • 空き領域の開始、終了位置を確認
  • 開始、終了位置を指定してパーティション作成
  • パーティションが正常に作成されたことを確認
  • 終了

 下記はCentOS 7での実行例です。

・ /dev/sdb を指定して parted を起動

# parted /dev/sdb

    GNU Parted 3.1
    /dev/sdb を使用
    GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。


・現在の状態を確認

(parted) print

    エラー: /dev/sdb: ディスクラベルが認識できません。
    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: unknown  ← ラベルを作る必要あり
    ディスクフラグ:


・ラベル"gpt"を作る

(parted) mklabel gpt


・再度/dev/sdbの状態を確認

(parted) print

    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt  ← ラベルの作成成功
    ディスクフラグ:

    番号  開始  終了  サイズ  ファイルシステム  名前  フラグ


・表示単位をGBに揃える

(parted) unit gb


・空き領域の開始、終了位置を確認

(parted) print free

    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    ディスクフラグ:

    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
          0.00GB  3001GB  3001GB  空き容量  ← 開始と終了の位置を確認

     ※ この例では開始が0GB、終了が3001GBになります。


・開始と終了の位置を指定してパーティション作成

(parted) mkpart primary 0 3001


・パーティションが正常に作成されたことを確認

(parted) print

    モデル: VMware, VMware Virtual S (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    ディスクフラグ:

    番号  開始    終了    サイズ  ファイルシステム  名前     フラグ
     1    0.00GB  3001GB  3001GB                    primary


・終了

(parted) quit

 上記のコマンド実行箇所のみ抜粋します。

# parted /dev/sdb
(parted) print
(parted) mklabel gpt
(parted) print free
(parted) unit gb
(parted) mkpart primary 0 3001  ← 環境により値が異なる、注意!
(parted) print
(parted) quit

 もし誤ったパラメータでパーティションを作成した場合、以下のコマンドで削除できます。

(parted) rm 番号

ファイルシステムの作成とマウント

 続いて作成したパーティションにファイルシステムを作成します。作成したパーティションが”/dev/sda”の4番目(partedで表示された左端の番号)の場合、”/dev/sda4”がファイルシステムを作る対象となるデバイス名になります。”/dev/sdb”全体に1つのパーティションを作成した場合、”/dev/sdb1”が対象のデバイス名になります。

 ここでは、”/dev/sdb1”を対象デバイスとしてファイルシステムの作成とマウントを行っていきます。CentOS 7を例に説明するので、他のディストリビューションでは”xfs”となっている箇所を”ext4”に読み替えて下さい。以降の作業もユーザーrootで行うかsudoで実行して下さい。順番に実行するとマウントの確認まで行うことができます。

・ファイルシステムの作成
# mkfs -t xfs /dev/sdb1

・マウント用ディレクトリ作成
# mkdir /storage
 ※ ディレクトリ名は何でも良いです

・マウント
# mount -t xfs /dev/sdb1 /storage

・マウントの確認
# mount | grep sdb1  ← 引数にデバイス名を指定

  以下の様に表示されれば成功です。

    /dev/sdb1 on /storage type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

# df -h

  以下の様に表示されれば成功です。

    ファイルシス            サイズ  使用  残り 使用% マウント位置
    (中略)
    /dev/sdb1                 2.8T   33M  2.8T    1% /storage


・ファイルの作成と確認
# touch /storage/file
# ls -l /storage/file

  touchコマンドで空ファイルを作成するので、作成日時を確認して下さい。

 以上で録画用ドライブの動作確認は完了です。ただし、このままではPCを再起動した時に使用できないので、”/etc/fstab”に設定を保存します。そのために”/dev/sdb1”のUUIDを確認します。

# blkid /dev/sdb1

  /dev/sdb1: UUID="3c638ad5-513f-4deb-848d-b48a92df5843" TYPE="xfs" PARTLABEL="primary" PARTUUID="01080e7d-97ee-4721-8bb9-fa8695194790" 

 この実行結果の”UUID=”の値を使用します。

# vi /etc/fstab

  ファイル末尾に以下の様に追記して下さい。CentOS 7以外はxfsをext4に変更!

  UUID=3c638ad5-513f-4deb-848d-b48a92df5843  /storage  xfs  defaults  0  2

 6番目の数字の2はfsck(ファイルチェック)を行う順序です。もし必要がなければ0にして下さい。また、他に6番目の数字に1、2などを指定してる行がある場合、最大値に1を加えた値を指定して下さい(例えば最大値が2ならば3)。

 ファイルを保存後、PCを再起動して録画用ドライブに正常にアクセスできれば成功です(mountとdfコマンドで要確認)。

録画サーバソフトに録画用ドライブを認識させる

 作成した録画用ドライブを録画サーバソフトに認識させないと全く意味がありません。Chinachuとepgrec UNAのそれぞれの方法について説明します(本ブログのそれぞれのインストール記事でも説明しています)。

Chinachuの場合

 本ブログの記事通りに作業すると録画用ディレクトリは”/home/chinachu/chinachu/recorded”になっています(初回録画時に作成される)。”/storage/chinachu”ディレクトリに変更したい場合、最初に設定ファイルを変更します。

# vi /home/chinachu/chinachu/config.json

  下記の"recordedDir"を変更したいディレクトリに変えます。

  "recordedDir" : "/storage/chinachu/",

 続いて、録画中でないことを確認して、サービスを再起動します。以降はrootユーザーまたはsudoで実行して下さい。録画済みのTSファイルがある場合、元ディレクトリからの移動を忘れずに!

CentOS 7) ※ 本ブログの方法でsystemd対応している場合
 # systemctl restart chinachu-operator
 # systemctl restart chinachu-wui

Ubuntu・Debian)
 # service chinachu-operator restart
 # service chinachu-wui restart

 また、録画用のディレクトリは、フルアクセスにするか、Chinachuをインストールしたユーザーの所有権に変更して下さい。

# chmod 777 /storage/chinachu

  またh

# chown chinachu:chinachu /storage/chinachu

epgrec UNAの場合

 本ブログの記事通りに作業すると録画用ディレクトリは”/var/www/epgrec/video”になっています。”/storage/epgrec”ディレクトリに変更したい場合、録画中でないことを確認して、以下の様に実行します。rootユーザーまたはsudoで実行して下さい。

# cd /var/www/epgrec
# mv video _video
# ln -s /storage/epgrec video

  録画済みの場合、元のディレクトリからTSファイルの移動を忘れずに!
  また、/storage/epgrecディレクトリをフルアクセスにして下さい。

# sudo chmod 777 /storage/epgrec