ストレージ

Contents

用語

 

ジャーナリングファイルシステム


ハードディスクにファイルの書き込みを行う際、ファイルの実データとそのファイルの参照のためのメタデータを書き込む。
システムがクラッシュした場合、メタデータが破損するとファイルの実データへのアクセスができなくなってしまう。
ジャーナリングファイルシステムはジャーナルというログに書き込みの記録をするため、ファイルシステムが破損した場合でも
ジャーナルからファイルシステムのリカバリが可能。
ただし、ファイルの実データの書き込みは中断された状態であるので、システムクラッシュ前の状態にファイルの内容が戻ってしまっている可能性がある。
ジャーナリングファイルシステムを用いると、システム起動時のファイルシステム検査が高速化されるが、
ファイル書き込み時にジャーナル書き込みのオーバーヘッドが発生するが、内部でバッファリングされるため、ある程度は軽減されている。

スーパーブロック


スーパーブロックとは記憶領域を管理するための情報を保持する領域である。
ディスクに複数のパーティションを作成した場合は、パーティションごとにスーパーブロックが作成される。
スーパーブロックは大抵冗長化され、複数作られる。


ハードディスク

 

パーティション


1つのディスクには以下のパーティションが作成できる。
ただし、パーティションを作成するとそれぞれが個々のディスクとして扱われ、
更に内部にパーティションを作成できる。

基本パーティション


ディスクに最大4つ作れるパーティション。
基本パーティションにはファイルシステムを作成することができる。
基本パーティションのデバイスファイル名は/dev/sdaディスク内に作成した場合、
/dev/sda1 ~ /dev/sda4となる。

拡張パーティション


基本パーティションの1つを拡張パーティションとすることができる。
拡張パーティションの中には論理パーティションを作成することができる。

論理パーティション


拡張パーティションの中に作成できるパーティションのこと。
デバイスファイル名は/dev/sdaディスク内に作成した場合、
作成した基本パーティションの数に関わらず、/dev/sda5 ~となる。

ハードディスク操作


認識しているハードディスクの一覧表示やパーティションの作成など、ハードディスク操作は基本的にfdiskコマンドで行う。

 

ハードディスクの一覧表示

 

fdisk -l

 

 

パーティションの作成


ハードディスクを指定して、対話的に編集していく。

fdisk /dev/sdb

 

 

 

ハードディスクの物理的制御


ハードディスクの物理的な制御を行う場合、hdparm/sdparmコマンドを使用する。
IDEハードディスクの場合はhdparm、SCSIハードディスクの場合はsdparmをそれぞれ使用する。

 



ファイルシステム

 

ファイルシステムの種類


OSで使用可能なファイルシステムの一覧は以下で確認可能

cat /proc/filesystems

このファイルは左列に現在使用しているかどうか、右列に使用可能なファイルシステムの種類を表している。
左列にnodevとある行のファイルシステムは現在使用されていない。

 

ext2

 

ext3

 

ext4

 

ReiserFS(ライザーエフエス)


ジャーナリングファイルシステム機能を持つ。
ext2/ext3ファイルシステムと互換性は無い。
最大16TiBまでのボリュームサイズをサポートする。
最大8TiBのファイルをサポートする。
ext2/ext3よりもパフォーマンスに優れるとされており、特にサイズの小さいファイルを多数処理する際に優れている。

JFS

 

XFS


ジャーナリングファイルシステム機能を持つ。
ext2の容量制限を解消し、最大1800TBのディスクスペース、最大900TBのファイルを扱うことができる。

ISO9660

 

UDF

 

msdos

 

FAT/FAT32

 

NTFS

 

hpfs


High Performance File System(ハイパフォーマンスファイルシステム) – IBM OS/2の標準ファイルシステム。

HFS

 

HFS+

 

NFS

 

CIFS

 

procfs

 

sysfs

 

tmpfs

 

devpts

 

usbfs

 

cramfs


Compressed ROM file system (圧縮ROMファイルシステム): ROM用の圧縮された読み込み専用ファイルシステムです。

ファイルシステムの情報

 

fstab

システムで利用するファイルシステムの情報を設定するファイル。

[root@main2 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Aug 10 14:51:16 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_main2-lv_root /                       ext4    defaults        1 1
UUID=32dc9811-84a6-4caa-9bf5-2b5525ed0505 /boot                   ext4    defaults        1 2
/dev/mapper/vg_main2-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


書式は左からデバイスファイル名/ラベル、マウントポイント、ファイルシステムの種類、マウントオプション、dumpコマンドの対象、ブート時のfsckのチェック順序である。
ブート時のfsckのチェック順序に指定できる値は0、1、2であり、0は非チェック、1は優先チェック、2は非優先チェックである。
チェックする場合、通常 “/”のみ1で、その他は2にすべきである。


/etc/mtab


現在使用されているファイルシステムの情報が表示される

[root@main2 ~]# cat /etc/mtab
/dev/mapper/vg_main2-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,rootcontext="system_u:object_r:tmpfs_t:s0" 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

 

ファイルシステムの作成


ファイルシステムの作成は各ファイルシステムを作成するmkfs.XXXコマンドを使用するか、
それらのコマンドを指定されたファイルシステムの種類によって内部でそれぞれ呼び出すmkfsコマンドを使用する。

ファイルシステム作成の前後にファイルシステムのチェックがtune2fsによってできる。

 

 

mkfsコマンド

 

 



ext2

 

 

 

 

 

 

ext3

 

 

 

 

 

 

 

 

ext4

 

 

 

 

 

 

 

 

ReiserFS


CentOSでは標準では対応していない

 

 

 

XFS

 

 

ファイルシステムの検査


ファイルシステムの検査と、破損している場合の修復をfsckコマンドで行うことができる。
fsckコマンドは内部で、対象のファイルシステムによってfsck.ext2などを呼び出す。
ファイルシステムの検査を行う対象のファイルシステムはアンマウントしている必要がある。

 

 

ReiserFS


ReiserFSの場合、reiserfsckコマンドが使用可能

 

XFS


XFSの場合、xfs_repairコマンドが使用可能

 

ファイルシステムの設定

ファイルシステム作成後にファイルシステムの設定を変更できる。

ext系


ext系のファイルシステムの設定はtune2fsコマンドで行う。
また、debugfsコマンドによって対話的にファイルシステムのデバッグが行える。

ReiserFS


ReiserFSのファイルシステムの設定はreiserfstuneコマンドを使用する。
また、debugreiserfsコマンドによって対話的にファイルシステムのデバッグが行える。

XFS


XFSのファイルシステムの設定はxfs_adminコマンドを使用する。
xfs_infoコマンドにより設定内容が表示できる。

マウント

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

 

  1. マウントポイントとなるディレクトリを作成する
    mkdir -p /mnt/sdb1
  2. マウントする
    mount <デバイスパス> <マウントパス>
  3. 次回起動時に自動でマウントさせる場合は、fstabファイルを設定する
    vi /etc/fstab
    # 末尾に以下を追記
    <デバイスパス> <マウントパス> <ファイルシステム名> defaults 1 <同列の他の最大の値+1>
    # 例
    /dev/xvdb1  /mysql-data ext4    defaults        1   2
    ※より詳細なマウント設定はこちらを参照

 

マウントの自動化

rootデバイス以外のマウントは通常OS起動時に自動では行われない。
これを行うために、fstabファイルを設定する必要がある。
fstabファイルは以下のパスにある。

/etc/fstab

fstabに設定する場合でもマウントポイントへのディレクトリの作成は行う必要がある。


UUID管理において、デバイスIDは次のコマンドで確認可能

blkid

出力例

/dev/sda1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"
/dev/sda2: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"
/dev/sda3: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"
/dev/sdb1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="LVM2_member"
/dev/sdc1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="LVM2_member"
/dev/sdd1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="swap"
/dev/mapper/vg--abc-lv--abc: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"
/dev/mapper/vg--def-lv--def: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="xfs"


LVMを使用している場合、fstabに記載するUUIDはディスクデバイス(LVM2_member)のほうではなく、マッピング先のディスク(xfs)を記載すること。
間違えると起動しなくなるので、注意。
再起動前にmountコマンドで、マウント確認をしておくとよい。

ラベル管理

ファイルシステムに任意のラベルを付けることで、わかりやすい名前でファイルシステムを管理できる。ラベルは12文字以下である。

 

fstabのマウント

fstabに新しいマウント設定を行った場合など、fstabに設定されているマウントを行う場合、次のコマンドを実行する



ファイルシステムのアンマウント

umount <マウントポイント>

or

umount <デバイスパス>

 

バックアップの作成


特定のデバイスファイルの中身のバックアップを別のデバイスファイルに作成する

 

スワップ

 

ディスクを全て使用する


特定のディスクをスワップとして使用する。

  1. 現在のスワップ使用状況を確認する
    free -h
  2. スワップとして使用するディスクのパスを確認する
    fdisk -l
  3. スワップ設定する
    fdisk <デバイス>
  4. パーティションがないことを確認する
    p
  5. パーティションを作成する
    n
    1. パーティションタイプを設定する
      プライマリパーティションとするのでそのままエンター
    2. パーティション番号を設定する
      デフォルトとするのでそのままエンター
    3. セクターの開始点と終了点を設定する。
      これによってセクターサイズを設定できる。
      全て使用するのでそのままエンター二回
  6. パーティションが作られたことを確認する
    p
  7. フォーマットする
    t
    1. IDを確認する(省略可)
      L
    2. スワップとする
      82
  8. スワップとなったことをことを確認する
    p
    # Linux swapと表示
  9. 保存する
    w
  10. スワップとして作成されたことを確認する
    fdisk -l
  11. ディスクをスワップとして設定する
    mkswap <デバイス>
  12. スワップを有効化する
    swapon <デバイス>
  13. スワップが追加されたことを確認する
    free -h
  14. スワップを再起動後も有効にする
    echo "UUID=`blkid | grep swap | sed -e "s/.*UUID=\"//" -e "s/\".*//"` swap swap    defaults 0 0" >> /etc/fstab

 

ディスクの一部を使用する

 

  1. スワップ用ファイルを作成する
    dd if=/dev/zero of=<スワップファイルパス> bs=1M count=<サイズ(MB)>
  2. スワップ用ファイルをスワップとして使用する
    mkswap <スワップファイルパス>
  3. スワップを有効化する
    swapon <スワップファイルパス>
  4. スワップが追加されたことを確認する
    free -h




RAID


Linuxでは複数の普通のハードディスクを組み合わせて、ソフトウェアRAIDを実現できる。
mdadmコマンドを用いてRAIDを操作する。

RAIDの作成


認識しているハードディスクを使用してRAIDを作成する。
使用するハードディスクにファイルシステムを作成しておく必要は無い。
パーティションを指定することも出来る。
容量が異なるディスクでRAID1のような同量必要なRAIDを作成する場合は、作成は可能だが、容量が最も低いディスク分に合わせられてしまう。

 

 

RAIDの削除

 

 

RAID情報の表示

 

 

 

ディスクの追加


作成したRAIDデバイスに新しいディスクを追加できる。
ただし、2台構成のみサポートされるRAID0には追加できない。
追加はマウント中でも可能。

 

ディスクの除去


作成したRAIDデバイスから特定のディスクを取り除くことができる。
ただし、activeなディスクは取り除けないので、faulty設定しておく必要がある。
対象ディスクがactiveかどうかは、”mdadm –misc –detail”コマンドで確認できる。

 

RAIDディスクの使用


通常のハードディスクと同様にファイルシステムを作成、マウントして使用する。


LVM


LVM(logical volume manager)とは、複数のハードディスク/パーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能である。

 

ディスクフォーマット


ディスクを新規に追加した場合はLVMでフォーマットが必要。

  1. fdiskを起動する
    fdisk <デバイスパス>
  2. 現在の状態を確認する
    p
  3. 新規パーティションを作成する
    n
  4. プライマリパーティションを選択する
    p
    全ての領域を使用する場合は、この後聞かれるパーティションサイズにそのままエンターを押す
  5. パーティションがLinuxで作成されたことを確認する
    p
  6. パーティションタイプを変更する
    t
  7. Linux LVMに変更する
    8e
    ※Lで選択可能な一覧を確認可能
  8. パーティションがLinux LVMに変更されたことを確認する
    p
  9. 設定を保存する
    w

 

物理ボリューム(Physical Volume)


物理ボリュームとは実際のハードディスク、パーティションのことである。
LVMでは物理ボリュームをまとめて抽象化してハードディスクとして提供する。
物理ボリュームは物理エクステントという単位に一度分解され、それを作成する論理的なハードディスクに必要容量分集めることで構成する。
すなわち、物理容量を物理エクステントサイズで除した余りはLVMとして使用できない。
物理エクステントサイズは通常4MB(変更可能)なので、129MBの物理ボリュームは1MB分使用できない領域が出る。

物理ボリュームの作成


ハードディスク/パーティションをLVMで扱う物理ボリュームとして設定する。

 

物理ボリュームの表示


作成した物理ボリュームの確認を行う。

 

 

物理ボリュームの削除


作成した物理ボリュームをLVMから削除する




ボリュームグループ


物理ボリュームをまとめて使用するためにグループ化したものがボリュームグループである

ボリュームグループの作成

 



ボリュームグループの表示


ボリュームグループ内の物理ボリュームのメンバーを表示する場合は、pvX系の表示コマンドを使用する

 

 

 

物理ボリュームの追加


作成したボリュームグループに物理ボリュームを追加する

 

物理ボリュームの削除


作成したボリュームグループから物理ボリュームを削除する

 

物理ボリュームの移行


作成したボリュームグループから物理ボリュームを削除し、代わりの物理ボリュームを追加する。
事前に新旧物理ボリュームを同じグループに設定しておく必要がある。

 

ボリュームグループの削除

 




論理ボリューム(Logical Volume)



論理ボリュームの作成


論理ボリュームは容量が余っている限り、同一のボリュームグループから複数作成可能である。

 

論理ボリュームの表示

 

 

 

論理ボリュームの削除

 

 

論理ボリュームのサイズ変更


lvextendコマンドを使用して、作成した論理ボリュームのサイズの変更など、変更設定が行える。

 

論理ボリューム名の変更

 

 

スナップショットの作成


論理ボリュームに対してスナップショットを作成することで、ある時点のデータを保存しておくことができる。
実際にファイルシステム中の全ファイルのバックアップを取っているわけではなく、更新が発生したファイルを元に戻す情報を保持しているので、
スナップショットを取るディスクと同量の容量は不要だが、元のファイルシステム内に更新が発生するたびにスナップショット領域がなくなっていき、
枯渇すると復元不可能となる。
なお、スナップショット作成時にアンマウントしている必要は無い。
バックアップの場合はスナップショットと違い、バックアップファイルを作成するので、容量不足で復元不可能となることは無い。




LVMディスクの使用


通常のハードディスクと同様にファイルシステムを作成、マウントして使用する。


Notice: Trying to get property 'queue' of non-object in /usr/local/wordpress/wp-includes/script-loader.php on line 2876

Warning: Invalid argument supplied for foreach() in /usr/local/wordpress/wp-includes/script-loader.php on line 2876