ストレージ管理ガイド
RHEL 7 での単一ノードストレージのデプロイおよび設定
概要
第1章 概要
1.1. Red Hat Enterprise Linux 7 の新機能および改良された機能
eCryptfs は含まれていません。
System Storage Manager
XFS はデフォルトのファイルシステムです。
ファイルシステムの再構築
/bin
、/sbin
、/lib、および /lib
64
は、/usr
の下にネストされるようになりました。
Snapper
Btrfs (テクノロジープレビュー)
NFSv2 はサポートされなくなりました
パート I. ファイルシステム
第2章 ファイルシステム構造とメンテナンス
- 共有可能および共有不可能なファイル
- 共有可能 ファイルは、ローカルおよびリモートホストからアクセスできます。Unsharable ファイルはローカルでのみ利用可能です。
- 変数および静的ファイル
- ドキュメントなどの 変数 ファイルはいつでも変更できます。バイナリー などの 静的 ファイルは、システム管理者のアクションなしでは変更されません。
2.1. ファイルシステム階層標準 (FHS) の概要
- 他の FHS 準拠システムとの互換性
/usr/
パーティションを読み取り専用としてマウントする機能。/usr/
には一般的な実行ファイルが含まれており、ユーザーが変更すべきではないため、これは重要です。さらに、/usr/
は読み取り専用としてマウントされているため、CD-ROM ドライブまたは他のマシンから、読み取り専用 NFS マウントを介してマウントできる必要があります。
2.1.1. FHS 組織
2.1.1.1. ファイルシステム情報の収集
df コマンド
例2.1 df コマンドの出力
Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 11675568 6272120 4810348 57% / /dev/sda1 100691 9281 86211 10% /boot none 322856 0 322856 0% /dev/shm
例2.2 df -h コマンドの出力
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 12G 6.0G 4.6G 57% / /dev/sda1 99M 9.1M 85M 10% /boot none 316M 0 316M 0% /dev/shm
/dev/shm
はシステムの仮想メモリーファイルシステムを表します。
du コマンド
GNOME システムモニター
図2.1 GNOME システムモニターのファイルシステムタブ
[D]
2.1.1.2. /boot/
ディレクトリー
/boot/
ディレクトリーには、Linux カーネルなど、システムを起動するために必要な静的ファイルが含まれます。これらのファイルは、システムが正しく起動するためには不可欠です。
/boot/
ディレクトリーを削除しないでください。削除すると、システムが起動できなくなります。
2.1.1.3. /dev/
ディレクトリー
/dev/
ディレクトリーには、以下のデバイス種別を表すデバイスノードが含まれます。
- システムに接続されているデバイス
- カーネルが提供する仮想デバイス
/dev/
内のデバイスノードを作成および削除します。
/dev/
ディレクトリーおよびサブディレクトリー内のデバイスは、文字 (マウスやキーボードなどの入出力のシリアルストリームのみを提供)または ブロック (ハードドライブやフロッピードライブなどのランダムにアクセス可能)のいずれかで定義されます。GNOME または KDE がインストールされている場合は、一部のストレージデバイスは (USB などで) 接続または (CD または DVD ドライブなどの) 挿入時に自動的に検出され、内容を表示するポップアップウィンドウが表示されます。
ファイル | 説明 |
---|---|
/dev/hda | プライマリー IDE チャネル上のマスターデバイス。 |
/dev/hdb | プライマリー IDE チャンネル上のスレーブデバイス。 |
/dev/tty0 | 最初の仮想コンソール。 |
/dev/tty1 | 2 番目の仮想コンソール |
/dev/sda | プライマリー SCSI または SATA チャネル上の最初のデバイス。 |
/dev/lp0 | 最初の並列ポート。 |
- マップされたデバイス
- ボリュームグループの論理ボリューム(例:
/dev/mapper/VolGroup00-LogVol02
)。 - 静的デバイス
- たとえば、/dev/sdbX などの従来のストレージボリューム。sdb はストレージデバイス名で、X はパーティション番号になります。
/dev/sdbX
は、/dev/disk/by-id/WWID
または/dev/disk/by-uuid/UUID
にすることもできます。詳細は、「永続的な命名」 を参照してください。
2.1.1.4. /etc/
ディレクトリー
/etc/
ディレクトリーは、マシンのローカルとなる設定ファイル用に予約されています。バイナリーを含めることはできません。バイナリーがある場合は、それらを /usr/bin/
または /usr/sbin/
に移動します。
/etc/skel/
ディレクトリーにはスケルトンユーザーファイルが格納されます。このファイルは、ユーザーの初回作成時にホームディレクトリーを設定するために使用されます。また、アプリケーションはこのディレクトリーに設定ファイルを保存し、実行時にそれらを参照する可能性があります。/etc/exports
ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御します。
2.1.1.5. /mnt/
ディレクトリー
/mnt/
ディレクトリーは、NFS ファイルシステムのマウントなど、一時的にマウントされたファイルシステム用に予約されています。すべてのリムーバブルストレージメディアには、/media/
ディレクトリーを使用します。自動的に検出されたリムーバブルメディアは、/media
ディレクトリーにマウントされます。
/mnt
ディレクトリーは、インストールプログラムでは使用しないでください。
2.1.1.6. /opt/
ディレクトリー
/opt/
ディレクトリーは通常、デフォルトのインストールの一部ではないソフトウェアおよびアドオンパッケージ用に予約されています。/opt/
にインストールするパッケージは、その名前を持つディレクトリーを作成します(例: /opt/packagename/
)。多くの場合、このようなパッケージは予測可能なサブディレクトリー構造に従います。ほとんどの場合、バイナリーを /opt/packagename/bin/
に保存し、man ページを /opt/packagename/man/
に保存します。
2.1.1.7. /proc/
ディレクトリー
/proc/
ディレクトリーには、カーネルから情報を抽出するか、カーネルに情報を送信する特別なファイルが含まれています。このような情報の例には、システムメモリー、CPU 情報、およびハードウェア設定が含まれます。/proc/
の詳細は、「/proc 仮想ファイルシステム」 を参照してください。
2.1.1.8. /srv/
ディレクトリー
/srv/
ディレクトリーには、Red Hat Enterprise Linux システムが提供するサイト固有のデータが含まれます。このディレクトリーは、FTP、WWW、または CVS などの特定サービスのデータファイルの場所をユーザーに提供します。特定のユーザーのみに関連するデータは、/home/
ディレクトリーに置く必要があります。
2.1.1.9. /sys/
ディレクトリー
/sys/
ディレクトリーは、カーネルに固有の新しい sysfs
仮想ファイルシステムを使用します。カーネルのホットプラグハードウェアデバイスのサポートが増えると、/sys/
ディレクトリーには、/proc/
が保持する情報と同様の情報が含まれますが、ホットプラグデバイスに固有のデバイス情報の階層ビューが表示されます。
2.1.1.10. /usr/
ディレクトリー
/usr/
ディレクトリーは、複数のマシンにまたがって共有できるファイル用です。/usr/
ディレクトリーは、多くの場合、独自のパーティションにあり、読み取り専用でマウントされます。少なくとも、/usr/
には以下のサブディレクトリーが含まれている必要があります。
/usr/bin
- このディレクトリーはバイナリーに使用されます。
/usr/etc
- このディレクトリーは、システム全体の設定ファイルに使用されます。
/usr/games
- このディレクトリーにはゲームが保存されています。
/usr/include
- このディレクトリーは C ヘッダーファイルに使用されます。
/usr/kerberos
- このディレクトリーは、Kerberos 関連のバイナリーおよびファイルに使用されます。
/usr/lib
- このディレクトリーは、シェルスクリプトまたはユーザーが直接使用するように設計されていないオブジェクトファイルやライブラリーに使用されます。Red Hat Enterprise Linux 7.0 以降、
/lib/
ディレクトリーは/usr/lib
に統合されました。/usr/bin/
および/usr/sbin/
でバイナリーを実行するために必要なライブラリーも含まれるようになりました。これらの共有ライブラリーイメージは、システムを起動したり、root ファイルシステム内でコマンドを実行したりするために使用されます。 /usr/libexec
- このディレクトリーには、他のプログラムによって呼び出される小さなヘルパープログラムが含まれます。
/usr/sbin
- Red Hat Enterprise Linux 7.0 以降、
/sbin
は/usr/sbin
に移動しました。これは、システムの起動、復元、復旧、または修復に不可欠なものを含む、すべてのシステム管理バイナリーが含まれていることを意味します。/usr/sbin/
のバイナリーを使用するには、root 権限が必要です。 /usr/share
- このディレクトリーには、アーキテクチャー固有ではないファイルを保存します。
/usr/src
- このディレクトリーには、ソースコードが保存されます。
/var/tmp
にリンクされている/usr/tmp
- このディレクトリーには、一時ファイルが保存されます。
/usr/
ディレクトリーには、/local/
サブディレクトリーも含まれている必要があります。FHS によると、このサブディレクトリーは、ソフトウェアをローカルでインストールする際にシステム管理者によって使用されるので、システムの更新中に上書きされないようにする必要があります。 /usr/
local
ディレクトリーには /usr/ と似ており、以下のサブディレクトリーが含まれます。
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/src
/usr/local/
の使用は FHS とは若干異なります。FHS は、/usr/local/
を使用して、システムソフトウェアのアップグレードから安全に保つ必要があるソフトウェアを保存する必要があることを示しています。RPM Package Manager はソフトウェアのアップグレードを安全に実行できるため、ファイルを /usr/local/
に保存してファイルを保護する必要はありません。
/usr/local/
を使用します。たとえば、/usr/
ディレクトリーがリモートホストから読み取り専用 NFS 共有としてマウントされている場合でも、/usr/local/
ディレクトリーにパッケージまたはプログラムをインストールすることができます。
2.1.1.11. /var/
ディレクトリー
/usr/
を読み取り専用としてマウントする必要があるため、ログファイルを書き込むプログラムや、spool/
または lock/
ディレクトリーが必要なプログラムは、それらを /var/
ディレクトリーに書き込む必要があります。FHS は、/var/
は、スプールディレクトリーとファイル、ロギングデータ、一時的ファイルなどの変数データ用です。
/var/
ディレクトリーにあるディレクトリーの一部です。
/var/account/
/var/arpwatch/
/var/cache/
/var/crash/
/var/db/
/var/empty/
/var/ftp/
/var/gdm/
/var/kerberos/
/var/lib/
/var/local/
/var/lock/
/var/log/
/var/spool/mail/
にリンクされた/var/mail
/var/mailman/
/var/named/
/var/nis/
/var/opt/
/var/preserve/
/var/run/
/var/spool/
/var/tmp/
/var/tux/
/var/www/
/var/yp/
/var/run/media/ユーザー
ディレクトリーには、USB ストレージメディア、DVD、CD-ROM、Zip ディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリーが含まれます。以前は、/media/
ディレクトリーがこの目的で使用されていたことに注意してください。
メッセージ
や lastlog
などのシステムログファイルは、/var/log/
ディレクトリーに移動します。/var/lib/rpm/
ディレクトリーには RPM システムデータベースが含まれます。ロックファイルは、通常は ファイルを使用するプログラムのディレクトリーにある /var/lock/
ディレクトリーに移動します。/var/spool/
ディレクトリーには、一部のプログラムのデータファイルを保存するサブディレクトリーがあります。これらのサブディレクトリーには以下が含まれます。
/var/spool/at/
/var/spool/clientmqueue/
/var/spool/cron/
/var/spool/cups/
/var/spool/exim/
/var/spool/lpd/
/var/spool/mail/
/var/spool/mailman/
/var/spool/mqueue/
/var/spool/news/
/var/spool/postfix/
/var/spool/repackage/
/var/spool/rwho/
/var/spool/samba/
/var/spool/squid/
/var/spool/squirrelmail/
/var/spool/up2date/
/var/spool/uucp/
/var/spool/uucppublic/
/var/spool/vbox/
2.2. 特別な Red Hat Enterprise Linux ファイルの場所
/var/lib/rpm/
ディレクトリーに保持されます。RPM の詳細は、man rpm を参照してください。
/var/cache/yum/
ディレクトリーには、システムの RPM ヘッダー情報など 、パッケージアップデータ が使用するファイルが含まれます。この場所は、システムの更新中にダウンロードされた RPM を一時的に保存するためにも使用できます。Red Hat Network の詳細は https://rhn.redhat.com/ を参照してください。
/etc/sysconfig/
ディレクトリーです。このディレクトリーには、さまざまな設定情報が格納されています。システムの起動時に実行されるスクリプトの多くは、このディレクトリー内のファイルを使用します。
2.3. /proc 仮想ファイルシステム
/proc
にはテキストファイルもバイナリーファイルも含まれていません。仮想ファイル を格納するため、/proc
は仮想ファイルシステムと呼ばれます。これらの仮想ファイルは、大量の情報が含まれている場合でも、サイズは通常 0 バイトになります。
/proc
ファイルシステムはストレージには使用されません。この主な目的は、ハードウェア、メモリー、実行中のプロセス、および他のシステムコンポーネントにファイルベースのインターフェイスを提供することです。リアルタイム情報は、対応する /proc
ファイルを表示することで、多くのシステムコンポーネントで取得できます。/proc
内の一部のファイルは、カーネルを設定するために(ユーザーとアプリケーションの両方で)操作することもできます。
/proc
ファイルは、システムストレージの管理および監視に関連しています。
- /proc/devices
- 現在設定されているさまざまな文字およびブロックデバイスを表示します。
- /proc/filesystems
- カーネルで現在対応しているすべてのファイルシステムタイプをリスト表示します。
- /proc/mdstat
- システム上の複数ディスクまたは RAID 設定に関する現在の情報が含まれます (存在する場合)。
- /proc/mounts
- システムで現在使用しているマウントをすべてリスト表示します。
- /proc/partitions
- パーティションブロック割り当て情報が含まれます。
/proc
ファイルシステムの詳細は、Red Hat Enterprise Linux 7 『デプロイメントガイド』 を参照してください。
2.4. 未使用ブロックの破棄
- バッチ破棄操作 は、ユーザーが fstrim コマンドを使用して明示的に実行します。このコマンドは、ファイルシステム内にある未使用のブロックで、管理者が指定した基準に一致するものをすべて破棄します。
- オンライン破棄操作 は、マウント時に、mount コマンドの一部として
-o discard
オプションを使用するか、/etc/fstab
ファイルのdiscard
オプションで指定します。ユーザーによる介入なしでリアルタイムで実行されます。オンライン破棄操作は、使用中から空きに移行しているブロックのみを破棄します。
/sys/block/デバイス/queue/discard_max_bytes ファイルに保存されている値がゼロでない場合、物理的な破棄
操作がサポートされます。
- 破棄操作をサポートしていないデバイス、または
- 複数のデバイスで設定され、そのデバイスのいずれかが破棄操作をサポートしていない論理デバイス (LVM または MD)
fstrim -v /mnt/non_discard
fstrim: /mnt/non_discard: the discard operation is not supported
第3章 XFS ファイルシステム
- XFS の主な機能
- XFS は、メタデータジャーナリング をサポートしているため、クラッシュリカバリーを迅速に行うことができます。
- XFS ファイルシステムは、マウントされ、アクティブな状態でデフラグし、拡張できます。
- また、Red Hat Enterprise Linux 7 は XFS 固有のバックアップおよび復元ユーティリティーをサポートしています。
- 割り当て機能
- XFS は、次の割り当てスキームを特長としています。
- エクステント (領域) ベースの割り当て
- ストライプを認識できる割り当てポリシー
- 遅延割り当て
- 領域の事前割り当て
遅延割り当てや他のパフォーマンスの最適化は、ext4 と同じように XFS に影響を与えます。つまり、XFS ファイルシステムへのプログラムの書き込みは、プログラムが後で fsync () 呼び出しを発行しない限り、ディスク上のオンディスクである保証はありません。ファイルシステム (ext4 および XFS) での遅延割り当ての影響の詳細は、5章ext4 ファイルシステム の 割り当て機能 を参照してください。注記ディスク容量が十分であるように見えても、ファイルの作成またはデプロイメントが予期しない ENOSPC 書き込みエラーで失敗することがあります。これは、XFS のパフォーマンス指向の設計が原因となります。実際には、残りの容量が数ブロックしかない場合にのみ発生するため、問題にはなりません。 - その他の XFS 機能
- XFS ファイルシステムは、以下もサポートしています。
- 拡張属性 (
xattr
) - これにより、システムが、ファイルごとに、名前と値の組み合わせを追加で関連付けられるようになります。これは、デフォルトで有効になっています。
- クォータジャーナリング
- クラッシュ後に行なわれる、時間がかかるクォータの整合性チェックが不要になります。
- プロジェクト/ディレクトリークォータ
- ディレクトリーツリー全体にクォータ制限を適用できます。
- サブセカンド (一秒未満) のタイムスタンプ
- これにより、タイムスタンプはサブセカンド (一秒未満) になることができます。
- 拡張属性 (
- デフォルトの atime 動作は relatimeです。
- XFS では、デフォルトで relatime が オンになっています。正しい atime 値を維持しながら、noatime と比較してオーバーヘッドはほとんどありません。
3.1. XFS ファイルシステムの作成
- XFS ファイルシステムを作成するには、以下のコマンドを使用します。
#
mkfs.xfs block_device- block_device をブロックデバイスへのパスに置き換えます。たとえば、
/dev/sdb1
、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a
、または/dev/my-volgroup/my-lv
です。 - 通常、デフォルトのオプションは、一般的な使用に最適なものです。
- 既存のファイルシステムを含むブロックデバイスで mkfs.xfs を使用する場合は、
-f
オプションを追加してそのファイルシステムを上書きします。
例3.1 mkfs.xfs コマンドの出力
meta-data=/dev/device isize=256 agcount=4, agsize=3277258 blks = sectsz=512 attr=2 data = bsize=4096 blocks=13109032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
ストライプ化ブロックデバイス
mkfs
ユーティリティー(ext3、ext4、xfs の場合)は自動的にこのジオメトリーを使用します。ストレージに実際にストライプジオメトリーがある場合でも mkfs
ユーティリティーによってストライプジオメトリーが検出されない場合は、次のオプションを使用してファイルシステムを作成するときに手動で指定できます。
- su=value
- ストライプユニットまたは RAID チャンクサイズを指定します。値 はバイト単位で指定する必要があります。オプションで
k
、m
、またはg
の接尾辞を指定します。 - sw=value
- RAID デバイス内のデータディスク数、または 1 ストライプ内のストライプユニット数を指定します。
#
mkfs.xfs -d su=64k,sw=4 /dev/block_device
関連情報
- mkfs.xfs(8) の man ページ
3.2. XFS ファイルシステムのマウント
#
mount /dev/device /mount/point
mke2fs
とは異なり、mkfs.xfs
は設定ファイルを使用しません。これらはすべてコマンドラインで指定されます。
書き込みバリア
#
mount -o nobarrier /dev/device /mount/point
Direct Access テクノロジープレビュー
Direct Access
(DAX)がテクノロジープレビューとして利用できます。これは、アプリケーションが永続メモリーをそのアドレス空間に直接マッピングするための手段です。DAX を使用するには、システムで利用可能な永続メモリーの形式が必要です。通常は、NVDIMM (Non-Volatile Dual In-line Memory Module) の形式で、DAX に対応するファイルシステムを NVDIMM に作成する必要があります。また、ファイルシステムは dax
マウントオプション でマウントする必要があります。これにより、dax をマウントしたファイルシステムのファイルの mmap
が、アプリケーションのアドレス空間にストレージを直接マッピングされます。
3.3. XFS クォータ管理
- uquota/uqnoenforce: ユーザークォータ
- gquota/gqnoenforce: グループクォータ
- pquota/pqnoenforce: プロジェクトクォータ
- quota username/userID
- 指定の username または numeric userIDの使用状況および制限を表示します
- df
- ブロックおよび inode の空きおよび使用済みの数を表示します。
#
xfs_quota -x
- report /path
- 特定のファイルシステムのクォータ情報を報告します。
- limit
- クォータの制限を変更します。
例3.2 サンプルクォータレポートの表示
/dev/blockdevice
の) /home
のクォータレポートのサンプルを表示するには、xfs_quota -x -c 'report -h' /home コマンドを使用します。これにより、以下のような出力が表示されます。
User quota on /home (/dev/blockdevice) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] testuser 103.4G 0 0 00 [------] ...
/home/john
のユーザー john
に対して、inode 数のソフト制限およびハード制限をそれぞれ 500 と 700 に設定するには、以下のコマンドを使用します。
#
xfs_quota -x -c 'limit isoft=500 ihard=700 john' /home/
例3.3 ソフトブロックおよびハードブロック制限の設定
/target/path
ファイルシステムで アカウンティング
をグループ化するために、ソフトブロック制限とハードブロック制限をそれぞれ 1000m と 1200m に設定するには、次のコマンドを使用します。
#
xfs_quota -x -c 'limit -g bsoft=1000m bhard=1200m accounting' /target/path
プロジェクト制限の設定
- プロジェクトが制御するディレクトリーを
/etc/projects
に追加します。たとえば、以下は一意の ID が 11 の/var/log
パスを/etc/projects
に追加します。プロジェクト ID には、プロジェクトにマッピングされる任意の数値を指定できます。#
echo 11:/var/log >> /etc/projects - プロジェクト名を
/etc/projid
に追加して、プロジェクト ID をプロジェクト名にマッピングします。たとえば、以下は、前のステップで定義されたように logfiles というプロジェクトをプロジェクト ID 11 に関連付けます。#
echo logfiles:11 >> /etc/projid - プロジェクトのディレクトリーを初期化します。たとえば、以下はプロジェクトディレクトリー
/var
を初期化します。#
xfs_quota -x -c 'project -s logfiles' /var - 初期化したディレクトリーでプロジェクトのクォータを設定します。
#
xfs_quota -x -c 'limit -p bhard=lg logfiles' /var
3.4. XFS ファイルシステムのサイズの拡大
#
xfs_growfs /mount/point -D size
3.5. XFS ファイルシステムの修復
#
xfs_repair /dev/device
3.6. XFS ファイルシステムの一時停止
#
xfs_freeze mount-point
xfsprogs
パッケージで提供されます。これは x86_64 でのみ利用できます。
#
xfs_freeze -f /mount/point
#
xfs_freeze -u /mount/point
3.7. XFS ファイルシステムのバックアップおよび復元
- バックアップを作成するための xfsdump
- バックアップから復元するための xfsrestore
3.7.1. XFS バックアップおよび復元の機能
バックアップ
xfsdump
ユーティリティーを使用して以下を行うことができます。
- 通常のファイルイメージへのバックアップ通常のファイルに書き込むことができるバックアップは 1 つだけです。
- テープドライブへのバックアップ
xfsdump
ユーティリティーを使用すると、同じテープに複数のバックアップを書き込むこともできます。バックアップは、複数のテープを分割して書き込むことができます。複数のファイルシステムのバックアップを 1 つのテープデバイスに作成するには、XFS バックアップがすでに含まれているテープにバックアップを書き込みます。これにより、古いバックアップに、新しいバックアップが追加されます。xfsdump
は、デフォルトでは既存のバックアップを上書きしません。 - 増分バックアップの作成
xfsdump
ユーティリティーは dump レベル を使用して、他のバックアップの相対的なベースバックアップを決定します。0
から9
までの数字は、ダンプレベルの増加を指します。増分バックアップは、下位レベルの最後のダンプ以降に変更したファイルのみが対象となります。- フルバックアップを実行する場合は、ファイルシステムで レベル 0 のダンプを実行します。
- レベル 1 のダンプは、フルバックアップ後の最初の増分バックアップです。次の増分バックアップはレベル 2 になります。これは、前回のレベル 1 などのダンプ以降に変更したファイルのみが対象となります。最大でレベル 9 までが対象となります。
- ファイルを絞り込むサイズ、サブツリー、または inode のフラグを使用して、バックアップからファイルを除外
復元
xfsrestore
インタラクティブモードを起動します。インタラクティブモードでは、バックアップファイルを操作する一連のコマンドが提供されます。
3.7.2. XFS ファイルシステムのバックアップ
手順3.1 XFS ファイルシステムのバックアップ
- 次のコマンドを使用して、XFS ファイルシステムのバックアップを作成します。
#
xfsdump -l level [-L label] -f backup-destination path-to-xfs-filesystem- level をバックアップのダンプレベルに置き換えます。完全バックアップを実行するには
0
を、結果として生じる増分バックアップを実行するには、1
から9
を使用します。 - backup-destination を、バックアップを保存する場所のパスに置き換えます。保存場所は、通常のファイル、テープドライブ、またはリモートテープデバイスです。たとえば、ファイルの場合は
/backup-files/Data.xfsdump
、テープドライブの場合は/dev/st0
です。 - path-to-xfs-filesystem をバックアップを作成する XFS ファイルシステムのマウントポイントに置き換えます。たとえば、
/mnt/data/
です。ファイルシステムをマウントする必要があります。 - 複数のファイルシステムのバックアップを作成して 1 つのテープデバイスに保存する場合は、復元時にそれらを簡単に識別できるように
-L label
オプションを使用して、各バックアップにセッションラベルを追加します。label をバックアップの名前(例:backup_data
)に置き換えます。
例3.4 複数の XFS ファイルシステムのバックアップ
/boot/
ディレクトリーおよび/data/
ディレクトリーにマウントされた XFS ファイルシステムのコンテンツのバックアップを作成し、それらをファイルとして/backup-files/
ディレクトリーに保存するには、次のコマンドを実行します。#
xfsdump -l 0 -f /backup-files/boot.xfsdump /boot#
xfsdump -l 0 -f /backup-files/data.xfsdump /data- 1 つのテープデバイスにある複数のファイルシステムのバックアップを作成する場合は、
-L label
オプションを使用して、各バックアップにセッションラベルを追加します。#
xfsdump -l 0 -L "backup_boot" -f /dev/st0 /boot#
xfsdump -l 0 -L "backup_data" -f /dev/st0 /data
関連情報
- XFS ファイルシステムのバックアップの詳細は、xfsdump(8) の man ページを参照してください。
3.7.3. バックアップからの XFS ファイルシステムの復元
前提条件
- 「XFS ファイルシステムのバックアップ」 の説明に従って、XFS ファイルシステムのファイルまたはテープのバックアップを作成する必要があります。
手順3.2 バックアップからの XFS ファイルシステムの復元
- バックアップを復元するコマンドは、フルバックアップから復元するか、増分バックアップから復元するか、1 つのテープデバイスから複数のバックアップを復元するかによって異なります。
#
xfsrestore [-r] [-S session-id] [-L session-label] [-i]-f backup-location
restoration-path
- backup-location を、バックアップの場所に置き換えます。これは、通常のファイル、テープドライブ、またはリモートテープデバイスになります。たとえば、ファイルの場合は
/backup-files/Data.xfsdump
、テープドライブの場合は/dev/st0
です。 - restoration-path を、ファイルシステムを復元するディレクトリーへのパスに置き換えます。たとえば、
/mnt/data/
です。 - ファイルシステムを増分 (レベル 1 からレベル 9) バックアップから復元するには、
-r
オプションを追加します。 - 複数のバックアップを含むテープデバイスからバックアップを復元するには、
-S
オプションまたは-L
オプションを使用してバックアップを指定します。-S
ではセッション ID でバックアップを選択できます。-L
ではセッションラベルでバックアップを選択できます。セッション ID とセッションラベルを取得するには、xfsrestore -I コマンドを使用します。session-id を、バックアップのセッション ID に置き換えます。たとえば、b74a3586-e52e-4a4a-8775-c3334fa8ea2c
です。session-label を、バックアップのセッションラベルに置き換えます。たとえば、my_backup_session_label
です。 xfsrestore
を対話的に使用するには、-i
オプションを使用します。対話式ダイアログは、xfsrestore
が指定のデバイスの読み取りを終了すると開始します。インタラクティブなxfsrestore
シェルの使用可能なコマンドには、cd、ls、add、delete、および extract があります。コマンドの完全なリストについては、help コマンドを使用します。
例3.5 複数の XFS ファイルシステムの復元
/mnt/
の下のディレクトリーに保存するには、以下を実行します。
#
xfsrestore -f /backup-files/boot.xfsdump /mnt/boot/#
xfsrestore -f /backup-files/data.xfsdump /mnt/data/
#
xfsrestore -f /dev/st0 -L "backup_boot" /mnt/boot/#
xfsrestore -f /dev/st0 -S "45e9af35-efd2-4244-87bc-4762e476cbab" /mnt/data/
テープからバックアップを復元する際の情報メッセージ
xfsrestore
ユーティリティーがメッセージを発行する場合があります。このメッセージは、xfsrestore
がテープ上の各バックアップを順番に検査する際に、要求されたバックアップと一致するものが見つかったかどうかを通知します。以下に例を示します。
xfsrestore: preparing drive xfsrestore: examining media file 0 xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408) xfsrestore: examining media file 1 xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408) [...]
関連情報
- XFS ファイルシステムの復元の詳細は、xfsrestore(8) の man ページを参照してください。
3.8. エラー動作の設定
- 以下のいずれかになるまで再試行を続行します。
- I/O 操作が成功するか、または
- I/O 操作の再試行回数または時間制限を超えた場合
- エラーが永続化し、システムが停止することを考慮してください。
EIO
: デバイスへの書き込み試行時のエラーENOSPC
: No space left on the deviceENODEV
: デバイスが見つかりません
3.8.1. 特定の条件および定義されていない条件の設定ファイル
/sys/fs/xfs/device/error/
ディレクトリーにあります。
/sys/fs/xfs/デバイス/error/metadata/ ディレクトリーには、特定のエラー
状態ごとにサブディレクトリーが含まれます。
EIO エラー状態の /sys/fs/xfs/デバイス/error/metadata
/EIO
/ENODEV エラー条件の /sys/fs/xfs/デバイス/error/metadata
/ENODEV
/ENOSPC エラー条件の /sys/fs/xfs/デバイス/error/metadata
/ENOSPC
/
/sys/fs/xfs/device/error/metadata/condition/max_retries
: XFS が操作を再試行する最大回数を制御します。/sys/fs/xfs/device/error/metadata/condition/retry_timeout_seconds
: XFS が操作の再試行を停止するまでの時間制限(秒単位)
/sys/fs/xfs/device/error/metadata/default/max_retries
: 再試行の最大数を制御します。/sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds
: 再試行する時間制限を制御します。
3.8.2. 特定かつ未定義の条件に対するファイルシステムの動作の設定
max_retries
ファイルに書き込みます。
- 特定の条件の場合:
#
echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries - 未定義の条件の場合:
#
echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
-
1 から可能な最大値 int
(C 符号付き整数型)の間の数値です。これは、64 ビット Linux では 2147483647
です。
retry_timeout_seconds
ファイルに書き込みます。
- 特定の条件の場合:
#
echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_seconds - 未定義の条件の場合:
#
echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds
86400
の間の数字で、これは 1 日の秒数です。
max_retries
オプションと retry_timeout_seconds
オプションの両方で、-
1 は永久に再試行し、0
は即座に停止することを意味します。
/dev/
ディレクトリーにあるデバイス名です。たとえば、sda
などです。
ENODEV
などの一部のエラーは、再試行数に関係なく致命的で回復不能であると見なされるため、デフォルト値は 0
です。
3.8.3. アンマウント動作の設定
fail_at_unmount
オプションが設定されている場合、ファイルシステムはアンマウント時に他のすべてのエラー設定を上書きし、I/O 操作を再試行せずにすぐにファイルシステムを非表示にします。これにより、永続的なエラーが発生した場合でも、マウント解除操作を成功できます。
#
echo value > /sys/fs/xfs/device/error/fail_at_unmount
1
または 0
です。
1
は、エラーが見つかったらすぐに再試行を取り消すことを意味します。0
は、max_retries
オプションおよびretry_timeout_seconds
オプションを尊重することを意味します。
/dev/
ディレクトリーにあるデバイス名です。たとえば、sda
などです。
fail_at_unmount
オプションは、ファイルシステムのアンマウントを試行する前に必要に応じて設定する必要があります。マウント解除操作が開始されると、設定ファイルおよびディレクトリーが利用できなくなる可能性があります。
3.9. XFS ファイルシステムのその他のユーティリティー
- xfs_fsr
- マウントしている XFS ファイルシステムのデフラグを行う際に使用します。引数を指定せずに呼び出すと、xfs_fsr は、マウントされているすべての XFS ファイルシステム内のすべての通常ファイルをデフラグします。このユーティリティーでは、ユーザーは指定された時間にデフラグを一時停止し、後で中断したところから再開することもできます。さらに、xfs_fsr /path/to/fileのように、xfs_fsr は 1 つのファイルのみをデフラグする こともできます。XFS はデフォルトで断片化を回避するため、Red Hat では、ファイルシステム全体を定期的にデフラグしないことを推奨しています。システム全体のデフラグは、空き領域での断片化という副作用を引き起こす可能性があります。
- xfs_bmap
- XFS ファイルシステム内のファイル群で使用されているディスクブロックのマップを表示します。指定したファイルによって使用されているエクステントや、該当するブロックがないファイルの領域 (ホール) をリスト表示します。
- xfs_info
- XFS ファイルシステムの情報を表示します。
- xfs_admin
- XFS ファイルシステムのパラメーターを変更します。xfs_admin ユーティリティーは、マウントされていないデバイスまたはファイルシステムのパラメーターのみを変更できます。
- xfs_copy
- XFS ファイルシステム全体のコンテンツを 1 つまたは複数のターゲットに同時にコピーします。
- xfs_metadump
- XFS ファイルシステムのメタデータをファイルにコピーします。Red Hat は、xfs_metadump ユーティリティーを使用して、マウントされていないファイルシステムまたは読み取り専用でマウントされたファイルシステムをコピーすることのみをサポートします。そうしないと、生成されたダンプが破損したり、一貫性のないりする可能性があります。
- xfs_mdrestore
- XFS メタダンプイメージ( xfs_metadumpを使用して生成された)をファイルシステムイメージに復元します。
- xfs_db
- XFS ファイルシステムをデバッグします。
3.10. ext4 から XFS への移行
3.10.1. Ext3/4 と XFS の相違点
- ファイルシステムの修復
- Ext3/4 は、システムの起動時にユーザースペースで e2fsck を実行して、必要に応じてジャーナルを復元します。比較すると、XFS はマウント時にカーネル空間でジャーナルリカバリーを実行します。
fsck.xfs
シェルスクリプトが提供されますが、initscript 要件を満たすためだけに存在するため、便利なアクションは実行しません。XFS ファイルシステムの修復またはチェックが要求されたら、xfs_repair コマンドを使用します。読み取り専用チェックには -n オプションを使用します。xfs_repair コマンドは、ダーティーログのあるファイルシステムで動作しません。このようなファイルシステムを修復するには、最初に アン マウント を実行してログを再生する必要があります。ログが破損していて再生できない場合は、-L オプションを使用してログのゼロアウトできます。XFS ファイルシステムのファイルシステム修復の詳細は、「XFS」 を参照してください。 - メタデータエラーの動作
- ext3/4 ファイルシステムでは、メタデータエラーが発生した場合の動作を設定できますが、デフォルトは単に継続します。XFS がリカバリーできないメタデータエラーに遭遇すると、ファイルシステムがシャットダウンされ、
EFSCORRUPTED
エラーが返されます。システムログには発生したエラーの詳細が含まれ、必要に応じて xfs_repair の実行が推奨されます。 - Quotas
- XFS クォータは再マウントできるオプションではありません。クォータを有効にするには、初期マウントで -o quota オプションを指定する必要があります。quota パッケージの標準ツールは、基本的なクォータ管理タスク( setquota や repquotaなどのツール)を実行できますが、xfs_quota ツールは、プロジェクトクォータ管理などの XFS 固有の機能に使用できます。quotacheck コマンドは、XFS ファイルシステムには影響しません。クォータアカウンティングが初めてオンになると、内部で自動的に quotacheck を実行します。XFS クォータメタデータは、ファーストクラスのジャーナル化されたメタデータオブジェクトであるため、クォータシステムは、クォータが手動でオフになるまで常に一貫しています。
- ファイルシステムのサイズ変更
- XFS ファイルシステムには、ファイルシステムを縮小するユーティリティーはありません。XFS ファイルシステムは、xfs_growfs コマンドを使用してオンラインで拡張できます。
- Inode 番号
- 256 バイトの inode を持つ 1TB を超えるファイルシステム、または 512 バイトの inode を持つ 2TB を超えるファイルシステムでは、XFS の inode 番号が 2^32 を超える可能性があります。このような大きな inode 番号により、32 ビットの stat 呼び出しが EOVERFLOW の戻り値で失敗します。上記の問題は、デフォルトの Red Hat Enterprise Linux 7 設定 (4 つの割り当てグループでストライプ化されていない) を使用する場合に発生する可能性があります。ファイルシステムの拡張子や XFS ファイルシステムのパラメーターの変更など、カスタム設定では異なる動作が発生する場合があります。通常、アプリケーションは、このように大きな inode 番号を正しく処理します。必要に応じて、-o inode32 パラメーターを指定して XFS ファイルシステムをマウントし、2^32 未満の inode 番号を強制します。
inode32
を使用しても、すでに 64 ビットの数値が割り当てられている inode には影響しないことに注意してください。重要特定の環境に必要な場合を除き、inode32
オプション は 使用しない でください。inode32
オプションは、割り当て動作を変更します。これにより、下層のディスクブロックに inode を割り当てるための領域がない場合に、ENOSPC エラーが発生する可能性があります。 - 投機的事前割り当て
- XFS は、投機的事前割り当て を使用して、ファイルの書き込み時に EOF を超えてブロックを割り当てます。これにより、NFS サーバーでの同時ストリーミング書き込みワークロードによるファイルの断片化を回避します。デフォルトでは、この事前割り当てはファイルのサイズとともに増加し、"du" の出力で確認できます。投機的事前割り当てのあるファイルで 5 分間ダーティーが発生しない場合、事前割り当ては破棄されます。その時間より前に、inode がキャッシュからサイクルアウトされると、inode が回収される際に、事前割り当てが破棄されます。投機的事前割り当てにより premature ENOSPC の問題が発生する場合は、固定事前割り当て量を -o allocsize=amount マウントオプションで指定できます。
- フラグメンテーション関連のツール
- フラグメント化は、割り当ての遅延や投機的な事前割り当てなどのヒューリスティックおよび動作のために、XFS ファイルシステムで重大な問題になることはめったにありません。ただし、ファイルシステムの断片化を測定したり、ファイルシステムのデフラグを行うツールは存在します。それらの使用は推奨されていません。xfs_db frag コマンドは、すべてのファイルシステムの割り当てを 1 つの断片化番号に分割しようとします。これはパーセンテージで表されます。コマンドの出力には、その意味を理解するための十分な専門知識が必要です。たとえば、75% のフラグメント化ファクターの場合は、ファイルあたり平均 4 つのエクステントのみを意味します。このため、xfs_db のフラグメントの出力は有用とは見なされず、フラグメント化の問題を注意深く分析することが推奨されます。警告xfs_fsr コマンドを使用して、個々のファイルまたはファイルシステム上のすべてのファイルをデフラグできます。後者は、ファイルの局所性を破壊し、空き領域をフラグメント化する可能性があるため、特に推奨しません。
XFS と比較した ext3 および ext4 で使用されるコマンド
タスク | ext3/4 | XFS |
---|---|---|
ファイルシステムを作成する | mkfs.ext4 または mkfs.ext3 | mkfs.xfs |
ファイルシステム検査 | e2fsck | xfs_repair |
ファイルシステムのサイズ変更 | resize2fs | xfs_growfs |
ファイルシステムのイメージを保存する | e2image | xfs_metadump および xfs_mdrestore |
ファイルシステムのラベル付けまたはチューニングを行う | tune2fs | xfs_admin |
ファイルシステムのバックアップ | dump および restore | xfsdump および xfsrestore |
タスク | ext4 | XFS |
---|---|---|
クォータ | quota | xfs_quota |
ファイルマッピング | filefrag | xfs_bmap |
第4章 Ext3 ファイルシステム。
- 可用性
- 予期しない停電やシステムクラッシュ (クリーンでないシステムシャットダウン とも言われる) が発生すると、マシンにマウントしている各 ext2 ファイルシステムは、e2fsck プログラムで整合性をチェックする必要があります。これは時間を浪費するプロセスであり、大量のファイルを含む大型ボリュームでは、システムの起動時間を著しく遅らせます。このプロセスの間、そのボリュームにあるデータは使用できません。ライブファイルシステムで fsck -n を実行できます。ただし、変更は行われず、部分的に書き込まれたメタデータが検出された場合、誤解を招く結果が生じる可能性があります。スタックで LVM が使用されている場合は、ファイルシステムの LVM スナップショットを作成し、そのファイルシステムで fsck を実行する方法があります。もしくは、ファイルシステムを読み込み専用で再マウントするオプションがあります。保留中のメタデータ更新 (および書き込み) は、すべて再マウントの前にディスクへ強制的に入れられます。これにより、以前に破損がない限り、ファイルシステムが一貫した状態になります。fsck -n を実行できるようになりました。ext3 ファイルシステムで提供されるジャーナリングは、クリーンでないシステムシャットダウンが発生してもこの種のファイルシステムの検査が不要であることを意味します。ext3 の使用していても整合性チェックが必要になる唯一の場面は、ハードドライブの障害が発生した場合など、ごく稀なハードウェア障害のケースのみです。クリーンでないシャットダウンの発生後に ext3 ファイルシステムを復元する時間は、ファイルシステムのサイズやファイルの数量ではなく、一貫性を維持するために使用される ジャーナル のサイズに依存します。デフォルトのジャーナルサイズは、ハードウェアの速度に応じて、復旧するのに約 1 秒かかります注記Red Hat がサポートする ext3 の唯一のジャーナリングモードは data=ordered (デフォルト)です。
- データの整合性
- ext3 ファイルシステムは、クリーンでないシステムシャットダウンが発生した際にデータの整合性が失われることを防止します。ext3 ファイルシステムにより、データが受けることのできる保護のタイプとレベルを選択できるようになります。ファイルシステムの状態に関しては、ext3 のボリュームはデフォルトで高度なレベルのデータ整合性を維持するように設定されています。
- 速度
- 一部のデータを複数回書き込みますが、ext3 のジャーナリングにより、ハードドライブのヘッドモーションが最適化されるため、ほとんどの場合、ext3 のスループットは ext2 よりも高くなります。速度を最適化するために 3 つのジャーナリングモードから選択できますが、システムに障害が発生する可能性のある状況では、モードの選択はデータの整合性がトレードオフの関係になることがあります。注記Red Hat がサポートする ext3 の唯一のジャーナリングモードは data=ordered (デフォルト)です。
- 簡単なトランジション
- ext2 から ext3 に簡単に移行でき、再フォーマットをせずに、堅牢なジャーナリングファイルシステムの恩恵を受けることができます。このタスクの実行方法は、「ext3 ファイルシステムへの変換」 を参照してください。
ext4.ko
を使用します。つまり、カーネルメッセージは、使用されている ext ファイルシステムに関係なく、常に ext4 を参照します。
4.1. Ext3 ファイルシステムの作成
mkfs.ext3
ユーティリティーを使用して、パーティションまたは LVM ボリュームを ext3 ファイルシステムでフォーマットします。#
mkfs.ext3 block_device- block_device をブロックデバイスへのパスに置き換えます。たとえば、
/dev/sdb1
、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a
、または/dev/my-volgroup/my-lv
です。
e2label
ユーティリティーを使用してファイルシステムにラベルを付けます。#
e2label block_device volume_label
UUID の設定
-U
オプションを使用します。
#
mkfs.ext3 -U UUID device
- UUID は、設定する UUID に置き換えます(例:
7cd65de3-e0be-41d9-b66d-96d749c02da7
)。 - device を、ext3 ファイルシステムへのパスに置き換え、UUID を追加します(例:
/dev/sda8
)。
関連情報
- mkfs.ext3(8) の man ページ
- e2label(8) の man ページ
4.2. ext3 ファイルシステムへの変換
ext2
ファイルシステムを ext3
に変換します。
ext2
ファイルシステムを ext3
に変換するには、root としてログインし、端末に以下のコマンドを入力します。
# tune2fs -j block_device
4.3. Ext2 ファイルシステムへの復元
/dev/mapper/VolGroup00-LogVol02
手順4.1 ext3 から ext2 に戻す
- root としてログインし、パーティションをアンマウントして以下を入力します。
# umount /dev/mapper/VolGroup00-LogVol02
- 以下のコマンドを入力して、ファイルシステムの種類を ext2 に変更します。
# tune2fs -O ^has_journal /dev/mapper/VolGroup00-LogVol02
- 以下のコマンドを入力して、パーティションでエラーの有無を確認します。
# e2fsck -y /dev/mapper/VolGroup00-LogVol02
- 次に、以下を入力して ext2 ファイルシステムとしてパーティションを再度マウントします。
# mount -t ext2 /dev/mapper/VolGroup00-LogVol02 /mount/point
/mount/point をパーティションのマウントポイントに置き換えます。注記.journal
ファイルがパーティションのルートレベルに存在する場合は、これを削除します。
/etc/fstab
ファイルを更新することを忘れないでください。そうしないと、起動後に元に戻されます。
第5章 ext4 ファイルシステム
- 主な特長
- ext4 ファイルシステムはエクステントを使用します (ext2 および ext3 で使用される従来のブロックマッピングスキームとは異なります)。これにより、大きなファイルを使用する際のパフォーマンスが向上し、大きなファイルのメタデータオーバーヘッドが低減します。また、ext4 では、未使用のブロックグループと inode テーブルのセクションにそれぞれラベル付けが行なわれます。これにより、ファイルシステムの検査時にこれらを省略することができます。また、ファイルシステムの検査速度が上がるため、ファイルシステムが大きくなるほどその便宜性は顕著になります。
- 割り当て機能
- Ext4 ファイルシステムには、以下のような割り当てスキームが備わっています。
- 永続的な事前割り当て
- 遅延割り当て
- マルチブロック割り当て
- ストライプ認識割り当て
遅延割り当てや他のパフォーマンスが最適化されるため、ext4 のディスクへのファイル書き込み動作は ext3 の場合とは異なります。ext4 では、プログラムがファイルシステムに書き込むと、プログラムが後で fsync () 呼び出しを発行しない限り、ディスク上のディスク上の保証はありません。デフォルトでは、ext3 は、fsync ()を使用せずに、新規作成されたファイルをほぼ即時にディスクに強制し ます。この動作により、書き込まれたデータがオンディスクにあることを確認するために fsync () を使用しないプログラムのバグが妨げられました。一方、ext4 ファイルシステムは、ディスクへの変更書き込みの前に数秒間待機することが多く、書き込みを結合して再度順序付けを行うことにより、ext3 を上回るディスクパフォーマンスを実現しています。警告ext3 とは異なり、ext4 ファイルシステムでは、トランザクションコミット時にディスクへのデータの書き込みを強制しません。このため、バッファーされた書き込みがディスクにフラッシュされるまでに時間がかかります。ファイルシステムと同様に、fsync () などのデータの整合性呼び出しを使用して、データが永続ストレージに書き込まれるようにします。 - Ext4 のその他の機能
- ext4 ファイルシステムでは次の機能にも対応しています。
- 拡張属性 (
xattr
): これにより、システムはファイルごとに追加の名前と値のペアを関連付けることができます。 - Quota journaling: クラッシュ後に行なわれる時間がかかるクォータの整合性チェックが不要になります。注記ext4 で対応しているジャーナリングモードは data=ordered (デフォルト)のみです。
- サブセカンド (一秒未満) のタイムスタンプ - サブセカンドのタイムスタンプを指定します。
5.1. Ext4 ファイルシステムの作成
- ext4 ファイルシステムを作成するには、以下のコマンドを使用します。
#
mkfs.ext4 block_device- block_device をブロックデバイスへのパスに置き換えます。たとえば、
/dev/sdb1
、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a
、または/dev/my-volgroup/my-lv
です。 - 一般的な用途では、デフォルトのオプションが最適です。
例5.1 mkfs.ext4 コマンドの出力
~]#
mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245280 inodes, 979456 blocks
48972 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
ストライプ化ブロックデバイス
- stride=value
- RAID チャンクサイズを指定します。
- stripe-width=value
- RAID デバイス内のデータディスク数、または 1 ストライプ内のストライプユニット数を指定します。
#
mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device
UUID の設定
-U
オプションを使用します。
#
mkfs.ext4 -U UUID device
- UUID は、設定する UUID に置き換えます(例:
7cd65de3-e0be-41d9-b66d-96d749c02da7
)。 - device を、ext4 ファイルシステムへのパスに置き換え、UUID を追加します(例:
/dev/sda8
)。
関連情報
- mkfs.ext4(8) の man ページ
5.2. ext4 ファイルシステムのマウント
#
mount /dev/device /mount/point
#
mount -o acl,user_xattr /dev/device /mount/point
#
mount -o data_err=abort /dev/device /mount/point
書き込みバリア
#
mount -o nobarrier /dev/device /mount/point
Direct Access テクノロジープレビュー
Direct Access
(DAX)は、ext4 および XFS ファイルシステムのテクノロジープレビューとして、アプリケーションが永続メモリーをそのアドレス空間に直接マッピングする手段を提供します。DAX を使用するには、システムで利用可能な永続メモリーの形式が必要になります。通常は、NVDIMM (Non-Volatile Dual In-line Memory Module) の形式で、DAX に対応するファイルシステムを NVDIMM に作成する必要があります。また、ファイルシステムは dax
マウントオプション でマウントする必要があります。これにより、dax をマウントしたファイルシステムのファイルの mmap
が、アプリケーションのアドレス空間にストレージを直接マッピングされます。
5.3. ext4 ファイルシステムのサイズ変更
#
resize2fs /mount/device size
#
resize2fs /dev/device size
- S - 512 バイトのセクター
- K - キロバイト
- M - メガバイト
- G - ギガバイト
5.4. ext2、ext3、または ext4 のファイルシステムのバックアップ
前提条件
- システムが長時間実行されている場合は、バックアップの前にパーティションで
e2fsck
ユーティリティーを実行します。#
e2fsck /dev/device
手順5.1 ext2、ext3、または ext4 のファイルシステムのバックアップ
/etc/fstab
ファイルの内容や fdisk -l コマンドの出力など、設定情報をバックアップします。これは、パーティションを復元する場合に役立ちます。この情報を取得するには、sosreport
ユーティリティーまたはsysreport
ユーティリティーを実行します。sosreport の詳細は、What is asosreport
and how to create one in Red Hat Enterprise Linux 4.6 and later?を参照してください。ナレッジベースの記事- パーティションのロールに応じて、以下を行います。
- バックアップを作成しているパーティションがオペレーティングシステムのパーティションの場合は、システムをレスキューモードで起動します。『System Administrator's Guide』 の Booting to Rescue Mode セクションを参照してください。
- 通常のデータパーティションのバックアップを作成する場合は、パーティションのマウントを解除します。マウント中にデータパーティションのバックアップを作成することは可能ですが、マウントしたデータパーティションのバックアップを作成する結果は予測できない場合があります。
dump
ユーティリティーを使用して、マウントしたファイルシステムのバックアップを作成する必要がある場合は、ファイルシステムの負荷が高くないときにバックアップを作成してください。バックアップ作成時にファイルシステムで発生しているアクティビティーが多いほど、バックアップの破損のリスクが高くなります。
dump
ユーティリティーを使用して、パーティションの内容をバックアップします。#
dump -0uf backup-file /dev/devicebackup-file を、バックアップを保存するファイルへのパスに置き換えます。device を、バックアップを作成する ext4 パーティションの名前に置き換えます。バックアップを、バックアップを作成しているパーティションとは別のパーティションにマウントされているディレクトリーに保存していることを確認してください。例5.2 複数の ext4 パーティションのバックアップの作成
/dev/sda1
、/dev/sda2
、および/dev/sda3
パーティションのコンテンツを/backup-files/
ディレクトリーに保存されているバックアップファイルにバックアップするには、次のコマンドを使用します。#
dump -0uf /backup-files/sda1.dump /dev/sda1#
dump -0uf /backup-files/sda2.dump /dev/sda2#
dump -0uf /backup-files/sda3.dump /dev/sda3リモートバックアップを作成するには、ssh
ユーティリティーを使用するか、パスワードなしのssh
ログインを設定します。ssh
およびパスワードなしのログインの詳細は、『システム管理者のガイド』 の Using the ssh Utility および Using Key-based Authentication セクションを参照してください。たとえば、ssh
を使用する場合は、以下のようになります。例5.3
ssh
を使用したリモートバックアップの実行#
dump -0u -f - /dev/device | ssh root@remoteserver.example.com dd of=backup-file標準のリダイレクトを使用する場合は、-f
オプションを個別に渡す必要があることに注意してください。
関連情報
- 詳細は、dump(8) の man ページを参照してください。
5.5. ext2、ext3、または ext4 のファイルシステムの復元
前提条件
- 「ext2、ext3、または ext4 のファイルシステムのバックアップ」 の説明に従って、パーティションとそのメタデータのバックアップを作成する必要があります。
手順5.2 ext2、ext3、または ext4 のファイルシステムの復元
- オペレーティングシステムパーティションを復元する場合は、システムをレスキューモードで起動します。『System Administrator's Guide』 の Booting to Rescue Mode セクションを参照してください。この手順は、通常のデータパーティションには不要です。
fdisk
ユーティリティーまたはparted
ユーティリティーを使用して、復元するパーティションを再構築します。パーティションが存在しなくなった場合は、再作成します。新しいパーティションは、復元したデータを含めるのに十分な大きさである必要があります。開始番号と終了番号を正しく取得することが重要です。これらは、バックアップ時にfdisk
ユーティリティーから取得したパーティションの開始セクター番号と終了セクター番号です。パーティションの変更に関する詳細は、13章Partitions を参照してください。mkfs
ユーティリティーを使用して、宛先パーティションをフォーマットします。#
mkfs.ext4 /dev/device重要バックアップファイルを保存するパーティションをフォーマットしないでください。- 新しいパーティションを作成した場合は、
/etc/fstab
ファイルのエントリーと一致するように、すべてのパーティションにラベルを付け直します。#
e2label /dev/device label - 一時的なマウントポイントを作成し、そこにパーティションをマウントします。
#
mkdir /mnt/device#
mount -t ext4 /dev/device /mnt/device - マウントしたパーティションのバックアップからデータを復元します。
#
cd /mnt/device#
restore -rf device-backup-fileリモートマシンに復元するか、リモートホストに保存されているバックアップファイルから復元する場合は、ssh
ユーティリティーを使用できます。ssh
の詳細は、『システム管理者のガイドの Using the ssh Utility セクションを参照して』 ください。以下のコマンドには、パスワードを使用しないログインを設定する必要があることに注意してください。パスワードなしのssh
ログインの設定に関する詳細は、『システム管理者のガイド』 の キーベース認証の使用 セクションを参照してください。- 同じマシンに保存されているバックアップファイルから、リモートマシンのパーティションを復元する場合は、次のコマンドを実行します。
#
ssh remote-address "cd /mnt/device && cat backup-file | /usr/sbin/restore -r -f -" - 別のリモートマシンに保存されているバックアップファイルから、リモートマシンのパーティションを復元するには、次のコマンドを実行します。
#
ssh remote-machine-1 "cd /mnt/device && RSH=/usr/bin/ssh /usr/sbin/restore -rf remote-machine-2:backup-file"
- 再起動します。
#
systemctl reboot
例5.4 複数の ext4 パーティションの復元
/dev/sda1
パーティション、/dev/sda2
パーティション、および /dev/sda3
パーティションを 例5.2「複数の ext4 パーティションのバックアップの作成」 から復元するには、以下のコマンドを実行します。
- fdisk コマンドを使用して、復元するパーティションを再構築します。
- 宛先パーティションをフォーマットします。
#
mkfs.ext4 /dev/sda1#
mkfs.ext4 /dev/sda2#
mkfs.ext4 /dev/sda3 /etc/fstab
ファイルと一致するように、すべてのパーティションにラベルを付け直します。#
e2label /dev/sda1 Boot1#
e2label /dev/sda2 Root#
e2label /dev/sda3 Data- 作業ディレクトリーを準備します。新しいパーティションをマウントします。
#
mkdir /mnt/sda1#
mount -t ext4 /dev/sda1 /mnt/sda1#
mkdir /mnt/sda2#
mount -t ext4 /dev/sda2 /mnt/sda2#
mkdir /mnt/sda3#
mount -t ext4 /dev/sda3 /mnt/sda3バックアップファイルを含むパーティションをマウントします。#
mkdir /backup-files#
mount -t ext4 /dev/sda6 /backup-files - バックアップから、マウントしたパーティションにデータを復元します。
#
cd /mnt/sda1#
restore -rf /backup-files/sda1.dump#
cd /mnt/sda2#
restore -rf /backup-files/sda2.dump#
cd /mnt/sda3#
restore -rf /backup-files/sda3.dump - 再起動します。
#
systemctl reboot
関連情報
- 詳細は、restore(8) の man ページを参照してください。
5.6. ext4 ファイルシステムのその他のユーティリティー
- e2fsck
- ext4 ファイルシステムの修復時に使用します。このツールは、ext4 ディスク構造の更新により、ext3 よりも効率的に ext4 ファイルシステムを検査および修復します。
- e2label
- ext4 ファイルシステムのラベル変更を行います。このツールは ext2 および ext3 のファイルシステムでも動作します。
- quota
- ext4 ファイルシステムで、ユーザーおよびグループごとのディスク領域 (ブロック) やファイル (inode) の使用量を制御し、それを報告します。クォータの使用についての詳細は、man quota および 「ディスククォータの設定」 を参照してください。
- fsfreeze
- ファイルシステムへのアクセスを一時停止するには、# fsfreeze -f mount-point コマンドを使用してフリーズし、# fsfreeze -u mount-point を実行してフリーズを解除します。これにより、ファイルシステムへのアクセスが停止し、ディスクに安定したイメージが作成されます。注記デバイスマッパードライブに fsfreeze を使用する必要はありません。詳細は、fsfreeze (8) の man ページを参照してください。
- debugfs
- ext2、ext3、ext4 の各ファイルシステムのデバッグを行います。
- e2image
- ext2、ext3、または ext4 の重要なファイルシステムメタデータをファイルに保存します。
第6章 Btrfs (テクノロジープレビュー)
6.1. btrfs ファイルシステムの作成
# mkfs.btrfs /dev/device
6.2. btrfs ファイルシステムのマウント
# mount /dev/device /mount-point
- device=/dev/name
- このオプションを mount コマンドに追加すると、btrfs は、指定されたデバイスで btrfs ボリュームをスキャンするように指示されます。これは、btrfs 以外のデバイスをマウントしようとするとマウントが失敗するため、マウントが成功することを確認するために使用されます。注記これは、すべてのデバイスがファイルシステムに追加されることを意味するのではなく、それらをスキャンするだけです。
- max_inline=number
- このオプションを使用して、メタデータ B-tree リーフ内のデータのインライン化に使用できる領域の最大量 (バイト単位) を設定します。デフォルトは 8192 バイトです。4k ページの場合は、リーフに収める必要があるヘッダーが追加されているため、サイズは 3900 バイトに制限されています。
- alloc_start=number
- このオプションを使用して、ディスク割り当ての開始位置を設定します。
- thread_pool=number
- このオプションを使用して、割り当てられたワーカースレッドの数を割り当てます。
- discard
- このオプションは、空きブロックで discard/TRIM を有効にする場合に使用します。
- noacl
- このオプションを使用して、ACL の使用を無効にします。
- space_cache
- このオプションを使用して空き領域データをディスクに保存し、ブロックグループのキャッシュを高速化します。これは永続的な変更であり、古いカーネルで安全に起動できます。
- nospace_cache
- 上記の space_cache を無効にするには、このオプションを使用します。
- clear_cache
- このオプションを使用して、マウント中にすべての空き領域キャッシュをクリアします。これは安全なオプションですが、スペースキャッシュの再構築がトリガーされます。そのため、再構築プロセスを終了させるために、ファイルシステムをマウントしたままにしておきます。このマウントオプションは、空き領域に問題が明らかになった後でのみ、一度使用することを目的としています。
- enospc_debug
- このオプションは、"no space left" 問題をデバッグするために使用します。
- recovery
- マウント時に自動リカバリーを有効にするには、このオプションを使用します。
6.3. btrfs ファイルシステムのサイズの変更
btrfs ファイルシステムの拡張
# btrfs filesystem resize amount /mount-point
# btrfs filesystem resize +200M /btrfssingle Resize '/btrfssingle' of '+200M'
# btrfs filesystem show /mount-point
# btrfs filesystem show /btrfstest Label: none uuid: 755b41b7-7a20-4a24-abb3-45fdbed1ab39 Total devices 4 FS bytes used 192.00KiB devid 1 size 1.00GiB used 224.75MiB path /dev/vdc devid 2 size 524.00MiB used 204.75MiB path /dev/vdd devid 3 size 1.00GiB used 8.00MiB path /dev/vde devid 4 size 1.00GiB used 8.00MiB path /dev/vdf Btrfs v3.16.2
devid
を特定したら、次のコマンドを使用します。
# btrfs filesystem resize devid:amount /mount-point
# btrfs filesystem resize 2:+200M /btrfstest Resize '/btrfstest/' of '2:+200M'
btrfs ファイルシステムの縮小
# btrfs filesystem resize amount /mount-point
# btrfs filesystem resize -200M /btrfssingle Resize '/btrfssingle' of '-200M'
# btrfs filesystem show /mount-point
# btrfs filesystem show /btrfstest Label: none uuid: 755b41b7-7a20-4a24-abb3-45fdbed1ab39 Total devices 4 FS bytes used 192.00KiB devid 1 size 1.00GiB used 224.75MiB path /dev/vdc devid 2 size 524.00MiB used 204.75MiB path /dev/vdd devid 3 size 1.00GiB used 8.00MiB path /dev/vde devid 4 size 1.00GiB used 8.00MiB path /dev/vdf Btrfs v3.16.2
devid
を特定したら、次のコマンドを使用します。
# btrfs filesystem resize devid:amount /mount-point
# btrfs filesystem resize 2:-200M /btrfstest Resize '/btrfstest' of '2:-200M'
ファイルシステムのサイズの設定
# btrfs filesystem resize amount /mount-point
# btrfs filesystem resize 700M /btrfssingle Resize '/btrfssingle' of '700M'
# btrfs filesystem show /mount-point
# btrfs filesystem show /btrfstest Label: none uuid: 755b41b7-7a20-4a24-abb3-45fdbed1ab39 Total devices 4 FS bytes used 192.00KiB devid 1 size 1.00GiB used 224.75MiB path /dev/vdc devid 2 size 724.00MiB used 204.75MiB path /dev/vdd devid 3 size 1.00GiB used 8.00MiB path /dev/vde devid 4 size 1.00GiB used 8.00MiB path /dev/vdf Btrfs v3.16.2
devid
を特定したら、次のコマンドを使用します。
# btrfs filesystem resize devid:amount /mount-point
# btrfs filesystem resize 2:300M /btrfstest Resize '/btrfstest' of '2:300M'
6.4. 複数のデバイスの統合ボリューム管理
6.4.1. 複数のデバイスを使用したファイルシステムの作成
- raid0
- raid1
- raid10
- dup
- single
例6.1 RAID 10 btrfs ファイルシステムの作成
# mkfs.btrfs /dev/device1 /dev/device2 /dev/device3 /dev/device4
# mkfs.btrfs -m raid0 /dev/device1 /dev/device2
# mkfs.btrfs -m raid10 -d raid10 /dev/device1 /dev/device2 /dev/device3 /dev/device4
# mkfs.btrfs -m single /dev/device
# mkfs.btrfs -d single /dev/device1 /dev/device2 /dev/device3
# btrfs device add /dev/device1 /mount-point
6.4.2. btrfs デバイスのスキャン
/dev
の下にあるすべてのブロックデバイスをスキャンし、btrfs ボリュームをプローブします。ファイルシステムで複数のデバイスを実行している場合は、btrfs モジュールを読み込んだ後に実行する必要があります。
# btrfs device scan
# btrfs device scan /dev/device
6.4.3. btrfs ファイルシステムへの新しいデバイスの追加
例6.2 btrfs ファイルシステムへの新しいデバイスの追加
# mkfs.btrfs /dev/device1 # mount /dev/device1
# btrfs device add /dev/device2 /mount-point
/dev/device1
にのみ保存されます。すべてのデバイスに分散するには、バランスを調整する必要があります。
# btrfs filesystem balance /mount-point
6.4.4. btrfs ファイルシステムの変換
例6.3 btrfs ファイルシステムの変換
/dev/sdb1
)を 2 つのデバイス(raid1 システム)に変換して、単一のディスク障害から保護するには、次のコマンドを使用します。
# mount /dev/sdb1 /mnt # btrfs device add /dev/sdc1 /mnt # btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
6.4.5. btrfs デバイスの削除
例6.4 btrfs ファイルシステム上のデバイスの削除
# mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd /dev/sde # mount /dev/sdb /mnt
# btrfs device delete /dev/sdc /mnt
6.4.6. btrfs ファイルシステムでの障害が発生したデバイスの置き換え
# mkfs.btrfs -m raid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde ssd is destroyed or removed, use -o degraded to force the mount to ignore missing devices # mount -o degraded /dev/sdb /mnt 'missing' is a special device name # btrfs device delete missing /mnt
- 動作が低下したモードでのマウント
- 新しいデバイスの追加
- 不足しているデバイスの削除
6.4.7. /etc/fstab
での btrfs ファイルシステムの登録
initrd
がない場合や、btrfs デバイススキャンを実行していない場合は、ファイルシステムのすべてのデバイスを明示的に mount コマンドに渡すことで、マルチボリューム btrfs
ファイルシステムを マウント できます。
例6.5 /etc/fstab
エントリーの例
/etc/fstab
エントリーの例を以下に示します。
/dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0
6.5. SSD の最適化
/sys/block/ デバイスの /queue/rotational がゼロである場合に、mkfs.btrfs
が単一のデバイス
でメタデータの重複をオフにすることです。これは、コマンドラインで -m single を指定するのと同じです。これは、-m dup オプションを指定することで上書きし、メタデータを複製できます。SSD ファームウェアは両方のコピーを失う可能性があるため、複製は必要ありません。これはスペースを浪費し、パフォーマンスが犠牲になります。
- より大きなメタデータのクラスターの割り当てを許可します。
- 可能な場合は、より順序立ててデータを割り当てます。
- 鍵とブロック順序に一致するように btree リーフの書き換えを無効にします。
- 複数のプロセスをバッチ処理せずにログフラグメントをコミットします。
6.6. Btrfs リファレンス
- スナップショットを管理するためのすべてのサブボリュームコマンド。
デバイス
を管理するデバイスコマンド。- scrub コマンド、balance コマンド、および defragment コマンド。
第7章 Global File System 2
gfs2.ko
カーネルモジュールは GFS2 ファイルシステムを実装し、GFS2 クラスターノードにロードされます。
第8章 Network File System (NFS)
8.1. NFS の概要
- NFS バージョン 3 (NFSv3) は、安全な非同期書き込みをサポートし、以前の NFSv2 よりもエラー処理で堅牢です。また、64 ビットのファイルサイズとオフセットにも対応しているため、クライアントは 2GB 以上のファイルデータにアクセスできます。
- NFS バージョン 4 (NFSv4)はファイアウォールやインターネットを介して動作し、rpcbind サービスが不要になり、ACL に対応し、ステートフルな操作を利用します。
- スパースファイル: ファイルの領域の効率を検証し、プレースホルダーがストレージの効率を向上できるようにします。これは、1 つ以上のホールがあるファイルです。ホールは、ゼロのみで設定される、割り当てられていないデータブロックまたは初期化されていないデータブロックです。
lseek()
NFSv4.2 での 操作は、seek_hole()
およびseek_data()
に対応しています。これにより、アプリケーションはスパースファイルのホールの場所をマッピングできます。 - 領域の予約: ストレージサーバーが空き領域を予約することを許可します。これにより、サーバーで領域が不足することがなくなります。NFSv4.2 は、領域を予約するための
allocate()
操作、領域の予約を解除するdeallocate()
操作、およびファイル内の領域の事前割り当てまたは割り当て解除を行うfallocate()
操作に対応します。 - ラベル付き NFS: データアクセス権を強制し、NFS ファイルシステム上の個々のファイルに対して、クライアントとサーバーとの間の SELinux ラベルを有効にします。
- レイアウトの機能拡張:NFSv4.2 は、クライアントがレイアウトとの通信についてメタデータサーバーに通知するために使用できる新しい操作
layoutstats()
を提供します。
- ネットワークのパフォーマンスとセキュリティーを向上させ、Parallel NFS (pNFS) に対するクライアント側のサポートも追加されました。
- コールバックに個別の TCP 接続が必要なくなり、クライアントと通信できない場合でも、NFS サーバーは委任を許可できるようになりました。たとえば、NAT やファイアウォールが干渉する場合です。
- 応答が失われ、操作が 2 回送信された場合に特定の操作が不正確な結果を返すことがあるという以前の問題を防ぐために、1 回限りのセマンティクスを提供します (再起動操作を除く)。
/etc/exports
設定ファイルを参照して、クライアントがエクスポートされたファイルシステムにアクセスできるかどうかを判断します。アクセスが可能なことが確認されると、そのユーザーは、ファイルおよびディレクトリーへの全操作を行えるようになります。
8.1.1. 必要なサービス
- nfs
- systemctl start nfs は、NFS サーバーと適切な RPC プロセスを開始し、共有 NFS ファイルシステムの要求を処理します。
- nfslock
- systemctl start nfs-lock は、適切な RPC プロセスを開始する必須サービスをアクティブにし、NFS クライアントがサーバー上のファイルをロックできるようにします。
- rpcbind
- rpcbind は、ローカルの RPC サービスからのポート予約を受け入れます。その後、これらのポートは、対応するリモートの RPC サービスによりアクセス可能であることが公開されます。rpcbind は RPC サービスの要求に応答し、要求された RPC サービスへの接続を設定します。このプロセスは NFSv4 では使用されません。
- rpc.mountd
- このプロセスは、NFS サーバーが NFSv3 クライアントからの MOUNT 要求を処理するために使用されます。要求されている NFS 共有が現在 NFS サーバーによりエクスポートされているか、またその共有へのクライアントのアクセスが許可されているかを確認します。マウント要求が許可されると、rpc.mountd サーバーは
Success
ステータスで応答し、この NFS 共有のFile-Handle
を NFS クライアントに戻します。 - rpc.nfsd
- rpc.nfsd を使用すると、サーバーがアドバタイズする明示的な NFS バージョンとプロトコルを定義できます。NFS クライアントが接続するたびにサーバースレッドを提供するなど、NFS クライアントの動的な要求に対応するため、Linux カーネルと連携して動作します。このプロセスは、nfs サービスに対応します。
- lockd
- lockd は、クライアントとサーバーの両方で実行するカーネルスレッドです。Network Lock Manager (NLM) プロトコルを実装し、これにより、NFSv3 クライアントがサーバー上のファイルをロックできるようになります。NFS サーバーが実行中で、NFS ファイルシステムがマウントされていれば、このプロセスは常に自動的に起動します。
- rpc.statd
- このプロセスは、Network Status Monitor (NSM) RPC プロトコルを実装します。NFS サーバーが正常にシャットダウンされずに再起動すると、NFS クライアントに通知します。rpc.statd は、nfslock サービスにより自動的に開始されるため、ユーザー設定は必要ありません。このプロセスは NFSv4 では使用されません。
- rpc.rquotad
- このプロセスは、リモートユーザーのユーザークォーター情報を提供します。rpc.rquotad は、nfs サービスにより自動的に開始されるため、ユーザー設定は必要ありません。
- rpc.idmapd
- rpc.idmapd は、ネットワーク上の NFSv4 名(
ユーザー@ドメイン
の形式の文字列)とローカル UID と GID の間でマッピングされる NFSv4 クライアントおよびサーバーのアップコールを提供します。idmapd を NFSv4 で機能させるには、/etc/idmapd.conf
ファイルを設定する必要があります。少なくとも、NFSv4 マッピングドメインを定義する Domain パラメーターを指定する必要があります。NFSv4 マッピングドメインが DNS ドメイン名と同じ場合は、このパラメーターは必要ありません。クライアントとサーバーが ID マッピングの NFSv4 マッピングドメインに合意しないと、適切に動作しません。注記Red Hat Enterprise Linux 7 では、NFSv4 サーバーのみが rpc.idmapd を使用します。NFSv4 クライアントは、キーリングベースの idmapper nfsidmap を使用します。nfsidmap は、ID マッピングを実行するためにカーネルがオンデマンドで呼び出されるスタンドアロンプログラムです。これはデーモンではありません。nfsidmap に問題が発生した場合、クライアントは rpc.idmapd の使用にフォールバックします。nfsidmap の詳細は、man ページの nfsidmap を参照してください。
8.2. NFS クライアントの設定
# mount -t nfs -o options server:/remote/export /local/directory
- options
- マウントオプションのコンマ区切りリスト。有効な NFS マウントオプションの詳細は、「一般的な NFS マウントオプション」 を参照してください。
- server
- マウントするファイルシステムをエクスポートするサーバーのホスト名、IP アドレス、または完全修飾ドメイン名
- /remote/export
- サーバー からエクスポートされるファイルシステムまたはディレクトリー、つまり、マウントするディレクトリー
- /local/directory
- /remote/export がマウントされているクライアントの場所
/etc/fstab
ファイルと autofs サービス)を提供します。詳細は、「/etc/fstab
を使用した NFS ファイルシステムのマウント」 および 「autofs」 を参照してください。
8.2.1. /etc/fstab
を使用した NFS ファイルシステムのマウント
/etc/fstab
ファイルに行を追加することです。その行には、NFS サーバーのホスト名、エクスポートされるサーバーディレクトリー、および NFS 共有がマウントされるローカルマシンディレクトリーを記述する必要があります。/etc/fstab
ファイルを変更するには、root である必要があります。
例8.1 構文の例
/etc/fstab
の行の一般的な構文は以下のとおりです。
server:/usr/local/pub /pub nfs defaults 0 0
/pub
がクライアントマシンに存在している必要があります。この行をクライアントシステムの /etc/fstab
に追加した後、コマンド mount /pub
を使用すると、マウントポイント /pub
がサーバーからマウントされます。
/etc/fstab
エントリーには、以下の情報が含まれている必要があります。
server:/remote/export /local/directory nfs options 0 0
/etc/fstab
を読み取る前に、マウントポイント /local/directory がクライアントに存在している必要があります。それ以外の場合は、マウントに失敗します。
/etc/fstab
を編集した後、システムが新しい設定を登録するようにマウントユニットを再生成します。
#
systemctl daemon-reload
関連情報
/etc/fstab
の詳細は、man fstab を参照してください。
8.3. autofs
/etc/fstab
を使用する欠点の 1 つは、NFS がマウントされたファイルシステムにユーザーがアクセスする頻度に関わらず、マウントされたファイルシステムを所定の場所で維持するために、システムがリソースを割り当てる必要があることです。これは 1 つまたは 2 つのマウントでは問題になりませんが、システムが一度に多くのシステムへのマウントを維持している場合、システム全体のパフォーマンスに影響を与える可能性があります。/etc/fstab
の代わりに、カーネルベースの automount ユーティリティーを使用します。自動マウント機能は以下の 2 つのコンポーネントで設定されます。
- ファイルシステムを実装するカーネルモジュール
- 他のすべての機能を実行するユーザー空間デーモン
/etc/auto.master
(マスターマップ)を使用します。これは、Name Service Switch (NSS)メカニズムとともに autofs 設定( /etc/sysconfig/autofs
内)を使用して、サポートされている別のネットワークソースと名前を使用するように変更できます。autofs バージョン 4 デーモンのインスタンスは、マスターマップで設定された各マウントポイントに対して実行されるため、任意のマウントポイントに対してコマンドラインから手動で実行できます。autofs バージョン 5 では、設定されたすべてのマウントポイントを管理するために単一のデーモンが使用されるため、これは不可能です。そのため、すべての自動マウントをマスターマップで設定する必要があります。これは、他の業界標準の自動マウント機能の通常の要件と一致しています。マウントポイント、ホスト名、エクスポートしたディレクトリー、および各種オプションは各ホストに対して手動で設定するのではなく、すべて 1 つのファイルセット (またはサポートされている別のネットワークソース) 内に指定することができます。
8.3.1. バージョン 4 と比較した autofs バージョン 5 の改善点
- ダイレクトマップのサポート
- autofs のダイレクトマップは、ファイルシステム階層の任意の時点でファイルシステムを自動的にマウントするメカニズムを提供します。ダイレクトマップは、マスターマップの
/-
のマウントポイントで示されます。ダイレクトマップのエントリーには、(間接マップで使用される相対パス名の代わりに) 絶対パス名がキーとして含まれています。 - レイジーマウントとアンマウントのサポート
- マルチマウントマップエントリーは、単一のキーの下にあるマウントポイントの階層を記述します。この良い例として、
-hosts
マップがあります。これは通常、マルチマウントマップエントリーとして/net/host
の下のホストからのすべてのエクスポートを自動マウントするために使用されます。-hosts
マップを使用する場合、/net/ホストの ls は、ホスト から各エクスポートの autofs トリガーマウントをマウントします。次に、これらはマウントされ、アクセスされると期限切れとなります。これにより、エクスポートが多数あるサーバーにアクセスする際に必要なアクティブなマウントの数を大幅に減らすことができます。 - 強化された LDAP サポート
- autofs 設定ファイル(
/etc/sysconfig/autofs
)は、サイトが実装する autofs スキーマを指定するメカニズムを提供するため、アプリケーション自体で試行とエラーによってこれを判断する必要がなくなります。さらに、共通の LDAP サーバー実装でサポートされるほとんどのメカニズムを使用して、LDAP サーバーへの認証済みバインドがサポートされるようになりました。このサポート用の新しい設定ファイル(/etc/autofs_ldap_auth.conf
)が追加されました。デフォルトの設定ファイルは自己文書化されており、XML 形式を使用します。 - Name Service Switch (nsswitch)設定の適切な使用。
- Name Service Switch 設定ファイルは、特定の設定データがどこから来るのかを判別する手段を提供するために存在します。この設定の理由は、データにアクセスするための統一されたソフトウェアインターフェイスを維持しながら、管理者が最適なバックエンドデータベースを柔軟に使用できるようにするためです。バージョン 4 の自動マウント機能は、今まで以上に NSS 設定を処理できるようになっていますが、まだ完全ではありません。一方、autofs バージョン 5 は完全な実装です。このファイルで対応している構文の詳細は、man nsswitch.conf を参照してください。すべての NSS データベースが有効なマップソースである訳ではなく、パーサーは無効なデータベースを拒否します。有効なソースは、ファイル、yp、nis、nisplus、ldap、および hesiod です。
- autofs マウントポイントごとの複数のマスターマップエントリー
- 頻繁に使用されますが、まだ記述されていないのは、直接マウントポイント
/-
の複数のマスターマップエントリーを処理することです。各エントリーのマップキーはマージされ、1 つのマップとして機能します。例8.2 autofs マウントポイントごとの複数のマスターマップエントリー
以下は、ダイレクトマウントの connectathon テストマップの例です。/- /tmp/auto_dcthon /- /tmp/auto_test3_direct /- /tmp/auto_test4_direct
8.3.2. autofs の設定
/etc/auto.master
です。これは、マスターマップ とも呼ばれます。これは、「バージョン 4 と比較した autofs バージョン 5 の改善点」 で説明されているように変更できます。マスターマップには、システム上の autofsで制御されたマウントポイントと、それに対応する設定ファイルまたはネットワークソースが自動マウントマップとして知られています。マスターマップの形式は次のとおりです。
mount-point map-name options
- mount-point
- autofs マウントポイント(例:
/home
) - map-name
- マウントポイントのリストとマウントポイントがマウントされるファイルシステムの場所が記載されているマップソース名です。
- options
- 指定されている場合は、それ自体にオプションが指定されていない場合に限り、指定されたマップのすべてのエントリーに適用されます。この動作は、オプションが累積されていた autofs バージョン 4 とは異なります。混合環境の互換性を実装させるため変更が加えられています。
例8.3 /etc/auto.master
ファイル
/etc/auto.master
ファイルのサンプル行です( cat /etc/auto.masterで表示)。
/home /etc/auto.misc
mount-point [options] location
- mount-point
- これは autofs マウントポイントを参照します。これは 1 つのインダイレクトマウント用の 1 つのディレクトリー名にすることも、複数のダイレクトマウント用のマウントポイントの完全パスにすることもできます。各ダイレクトマップエントリーキー(マウントポイント)の後に、スペースで区切られたオフセットディレクトリー(
/
で始まるサブディレクトリー名)のリストが続き、マルチマウントエントリーと呼ばれるものになります。 - options
- 指定した場合は、これらは、独自のオプションを指定しないマップエントリーのマウントオプションになります。
- location
- これは、ローカルファイルシステムパス(Sun マップ形式のエスケープ文字 ":" が先頭に付き、マップ名が
/
で始まる場合)、NFS ファイルシステム、またはその他の有効なファイルシステムの場所などのファイルシステムの場所を参照します。
/etc/auto.misc
)。
payroll -fstype=nfs personnel:/dev/hda3 sales -fstype=ext3 :/dev/hda4
sales
および payroll
)を示してい ます
。2 列目は autofs マウントのオプションを示し、3 番目のコラムはマウントのソースを示しています。指定された設定に従うと、autofs マウントポイントは /home/payroll
および /home/sales
になります。-fstype= オプションは省略されることが多く、通常は正しい操作には必要ありません。
#
systemctl start autofs
#
systemctl restart autofs
/home/payroll/2006/July.sxc
などのアンマウントされた autofs ディレクトリーへのアクセスを必要とする場合、自動マウントデーモンはディレクトリーを自動的にマウントします。タイムアウトを指定した場合は、タイムアウト期間中ディレクトリーにアクセスしないと、ディレクトリーが自動的にアンマウントされます。
#
systemctl status autofs
8.3.3. サイト設定ファイルの上書きまたは拡張
- 自動マウント機能マップは NIS に保存され、
/etc/nsswitch.conf
ファイルには以下のディレクティブがあります。automount: files nis
auto.master
ファイルには以下が含まれます。+auto.master
- NIS の
auto.master
マップファイルには以下が含まれます。/home auto.home
- NIS の
auto.home
マップには以下が含まれます。beth fileserver.example.com:/export/home/beth joe fileserver.example.com:/export/home/joe * fileserver.example.com:/export/home/&
- ファイルマップ
/etc/auto.home
は存在しません。
auto.home
を上書きし、別のサーバーからホームディレクトリーをマウントする必要があると仮定します。この場合、クライアントは以下の /etc/auto.master
マップを使用する必要があります。
/home /etc/auto.home +auto.master
/etc/auto.home
マップにはエントリーが含まれます。
* labserver.example.com:/export/home/&
/home
には NIS auto.home
マップではなく、/etc/auto.home
の内容が含まれます。
auto.home
マップをいくつかのエントリーで拡張するには、/etc/auto.home
ファイルマップを作成し、新しいエントリーを追加します。最後に、NIS auto.home
マップを含めます。次に、/etc/auto.home
ファイルマップは以下のようになります。
mydir someserver:/export/mydir +auto.home
auto.home
マップ条件により、ls /home コマンドは以下を出力します。
beth joe mydir
8.3.4. LDAP を使用した自動マウント機能マップの格納
openldap
パッケージは自動マウント機能 の依存関係として自動的にインストールされ ます
。LDAP アクセスを設定するには、/etc/openldap/ldap.conf
を変更します。BASE、URI、スキーマなどが使用するサイトに適した設定になっていることを確認してください。
rfc2307bis
に記載されています。このスキーマを使用するには、スキーマ定義からコメント文字を削除して、autofs
設定(/etc/sysconfig/autofs
)に設定する必要があります。以下に例を示します。
例8.4 autofs の設定
DEFAULT_MAP_OBJECT_CLASS="automountMap" DEFAULT_ENTRY_OBJECT_CLASS="automount" DEFAULT_MAP_ATTRIBUTE="automountMapName" DEFAULT_ENTRY_ATTRIBUTE="automountKey" DEFAULT_VALUE_ATTRIBUTE="automountInformation"
rfc2307bis
スキーマの cn 属性を置き換えます。以下は、LDAP データ交換形式(LDIF
)の設定例です。
例8.5 LDF の設定
# extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (&(objectclass=automountMap)(automountMapName=auto.master)) # requesting: ALL # # auto.master, example.com dn: automountMapName=auto.master,dc=example,dc=com objectClass: top objectClass: automountMap automountMapName: auto.master # extended LDIF # # LDAPv3 # base <automountMapName=auto.master,dc=example,dc=com> with scope subtree # filter: (objectclass=automount) # requesting: ALL # # /home, auto.master, example.com dn: automountMapName=auto.master,dc=example,dc=com objectClass: automount cn: /home automountKey: /home automountInformation: auto.home # extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (&(objectclass=automountMap)(automountMapName=auto.home)) # requesting: ALL # # auto.home, example.com dn: automountMapName=auto.home,dc=example,dc=com objectClass: automountMap automountMapName: auto.home # extended LDIF # # LDAPv3 # base <automountMapName=auto.home,dc=example,dc=com> with scope subtree # filter: (objectclass=automount) # requesting: ALL # # foo, auto.home, example.com dn: automountKey=foo,automountMapName=auto.home,dc=example,dc=com objectClass: automount automountKey: foo automountInformation: filer.example.com:/export/foo # /, auto.home, example.com dn: automountKey=/,automountMapName=auto.home,dc=example,dc=com objectClass: automount automountKey: / automountInformation: filer.example.com:/export/&
8.4. 一般的な NFS マウントオプション
/etc/fstab
設定、および autofs で使用できます。
- lookupcache=mode
- 任意のマウントポイントに対して、カーネルがディレクトリーエントリーのキャッシュを管理する方法を指定します。mode の有効な引数は、
すべて
、none
、またはpos
/positive
です。 - nfsvers=version
- 使用する NFS プロトコルのバージョンを指定します。version は、3 または 4 になります。これは、複数の NFS サーバーを実行するホストに役立ちます。バージョンを指定しないと、NFS はカーネルおよび mount コマンドで対応している最新バージョンを使用します。vers オプションは nfsvers と同じですが、互換性のためにこのリリースに含まれています。
- noacl
- ACL の処理をすべてオフにします。古いバージョンの Red Hat Enterprise Linux、Red Hat Linux、Solaris と連動させる場合に必要となることがあります。こうした古いシステムには、最新の ACL テクノロジーに対する互換性がないためです。
- nolock
- ファイルのロック機能を無効にします。この設定は、非常に古いバージョンの NFS サーバーに接続する場合に必要となる場合があります。
- noexec
- マウントしたファイルシステムでバイナリーが実行されないようにします。互換性のないバイナリーを含む、Linux 以外のファイルシステムをマウントしている場合に便利です。
- nosuid
set-user-identifier
ビットまたはset-group-identifier
ビットを無効にします。これにより、リモートユーザーが setuid プログラムを実行してより高い権限を取得するのを防ぎます。- port=num
- NFS サーバーポートの数値を指定します。num が 0 (デフォルト値)の場合、mount は、使用するポート番号についてリモートホストの rpcbind サービスのクエリーを実行します。リモートホストの NFS デーモンがその rpcbind サービスに登録されていない場合は、代わりに TCP 2049 の標準 NFS ポート番号が使用されます。
- rsize=num および wsize=num
- このオプションは、1 回の NFS 読み取り操作または書き込み操作で転送される最大バイト数を設定します。
rsize
とwsize
には、固定のデフォルト値がありません。デフォルトでは、NFS はサーバーとクライアントの両方がサポートしている最大の値を使用します。Red Hat Enterprise Linux 7 では、クライアントとサーバーの最大値は 1,048,576 バイトです。詳細は、What are the default and maximum values for rsize and wsize with NFS mounts? 参照してください。KBase の記事。 - sec=flavors
- マウントされたエクスポート上のファイルにアクセスするために使用するセキュリティーフレーバーです。flavors の値は、複数のセキュリティーフレーバーのコロンで区切られたリストです。デフォルトでは、クライアントは、クライアントとサーバーの両方をサポートするセキュリティーフレーバーの検索を試みます。サーバーが選択したフレーバーのいずれかに対応していない場合、マウント操作は失敗します。
sec=sys
は、ローカルの UNIX UID および GID を使用します。AUTH_SYS
を使用して NFS 操作を認証します。sec=krb5
は、ユーザー認証に、ローカルの UNIX の UID と GID ではなく、Kerberos V5 を使用します。sec=krb5i
は、ユーザー認証に Kerberos V5 を使用し、データの改ざんを防ぐ安全なチェックサムを使用して、NFS 操作の整合性チェックを行います。sec=krb5p
は、ユーザー認証に Kerberos V5 を使用し、整合性チェックを実行し、トラフィックの傍受を防ぐため NFS トラフィックの暗号化を行います。これが最も安全な設定になりますが、パフォーマンスのオーバーヘッドも最も高くなります。 - tcp
- NFS マウントが TCP プロトコルを使用するよう指示します。
- udp
- NFS マウントが UDP プロトコルを使用するよう指示します。
8.5. NFS サーバーの起動と停止
前提条件
- NFSv2 または NFSv3 の接続に対応するサーバーでは、
rpcbind
[1] サービスを実行している必要があります。rpcbind
がアクティブであることを確認するには、次のコマンドを使用します。$
systemctl status rpcbindrpcbind
を必要としない NFSv4 専用サーバーを設定するには、「NFSv4 専用サーバーの設定」 を参照してください。 - Red Hat Enterprise Linux 7.0 では、NFS サーバーが NFSv3 をエクスポートし、起動時に起動できるようにするには、
nfs-lock
サービスを手動で起動して有効にする必要があります。#
systemctl start nfs-lock#
systemctl enable nfs-lockRed Hat Enterprise Linux 7.1 以降では、必要に応じてnfs-lock
が自動的に起動し、手動で有効にしようとすると失敗します。
手順
- NFS サーバーを起動するには、次のコマンドを使用します。
# systemctl start nfs
- システムの起動時に NFS が起動するようにするには、次のコマンドを使用します。
# systemctl enable nfs
- サーバーを停止させるには、以下を使用します。
# systemctl stop nfs
restart
オプションは、NFS を停止して起動する簡単な方法です。これは、NFS の設定ファイルを編集した後に設定変更を有効にする最も効率的な方法です。サーバーを再起動するには、次のコマンドを実行します。# systemctl restart nfs
/etc/sysconfig/nfs
ファイルを編集したら、以下のコマンドを実行して nfs-config サービスを再起動して新しい値を有効にします。# systemctl restart nfs-config
try-restart
コマンドは、現在実行されている場合にのみ nfs を起動します。このコマンドは、Red Hat init スクリプトの condrestart (条件付き再起動)と同等で、NFS が実行されていない場合にデーモンを起動しないため便利です。条件付きでサーバーを再起動するには、以下を入力します。# systemctl try-restart nfs
- サービスを再起動せずに NFS サーバー設定ファイルの再読み込みを実行するには、以下のように入力します。
# systemctl reload nfs
8.6. NFS サーバーの設定
- NFS 設定ファイル(
/etc/exports
)を手動で編集する。 - コマンドラインで、コマンド exportfsを使用する方法。
8.6.1. /etc/exports
設定ファイル
/etc/exports
ファイルは、リモートホストにどのファイルシステムをエクスポートするかを制御し、オプションを指定します。以下の構文ルールに従います。
- 空白行は無視する。
- コメントを追加するには、ハッシュマーク(#)で行を開始します。
- 長い行はバックスラッシュ(\)で囲むことができます。
- エクスポートするファイルシステムは、それぞれ 1 行で指定する。
- 許可するホストのリストは、エクスポートするファイルシステムの後に空白文字を追加し、その後に追加する。
- 各ホストのオプションは、ホストの識別子の直後に括弧を追加し、その中に指定する。ホストと最初の括弧の間には空白を使用しない。
export host(options)
- export
- エクスポートするディレクトリー
- host
- エクスポートを共有するホストまたはネットワーク
- オプション
- host に使用されるオプション
export host1(options1) host2(options2) host3(options3)
/etc/exports
ファイルに、エクスポートされるディレクトリーと、そのディレクトリーへのアクセスを許可するホストを指定するだけです。以下に例を示します。
例8.6 /etc/exports
ファイル
/exported/directory bob.example.com
bob.example.com
は、NFS サーバーから /exported/directory/
をマウントできます。この例ではオプションが指定されていないため、デフォルト 設定が使用されます。
- ro
- エクスポートするファイルシステムは読み取り専用です。リモートホストは、このファイルシステムで共有されているデータを変更できません。このファイルシステムで変更 (読み取り/書き込み) を可能にするには、
rw
オプションを指定します。 - sync
- NFS サーバーは、以前の要求で発生した変更がディスクに書き込まれるまで、要求に応答しません。代わりに非同期書き込みを有効にするには、
async
オプションを指定します。 - wdelay
- NFS サーバーは、別の書き込み要求が差し迫っていると判断すると、ディスクへの書き込みを遅らせます。これにより、複数の書き込みコマンドが同じディスクにアクセスする回数を減らすことができるため、書き込みのオーバーヘッドが低下し、パフォーマンスが向上します。これを無効にするには、
no_wdelay
を指定します。no_wdelay
は、デフォルトのsync
オプションも指定されている場合にのみ使用できます。 - root_squash
- (ローカルからではなく) リモート から接続している root ユーザーが root 権限を持つことを阻止します。代わりに、NFS サーバーはユーザー ID
nfsnobody
を割り当てます。これにより、リモートの root ユーザーの権限を、最も低いローカルユーザーレベルにまで下げて (squash)、高い確率でリモートサーバーへの書き込む権限を与えないようにすることができます。root squashing を無効にするには、no_root_squash
を指定します。
all_squash
を使用します。特定ホストのリモートユーザーに対して、NFS サーバーが割り当てるユーザー ID とグループ ID を指定するには、anonuid
オプションと anongid
オプションを以下のように使用します。
export host(anonuid=uid,anongid=gid)
anonuid
オプションと anongid
オプションにより、共有するリモート NFS ユーザー用に、特別なユーザーアカウントおよびグループアカウントを作成できます。
rw
オプションを指定しないと、エクスポートするファイルシステムが読み取り専用として共有されます。以下は、/etc/exports
のサンプル行で、2 つのデフォルトオプションを上書きします。
/another/exported/directory/
の読み取りおよび書き込みをマウントでき、ディスクへの書き込みはすべて非同期です。エクスポートオプションの詳細は、man exportfs を参照してください。
/etc/exports
ファイルのフォーマットは、特に空白文字の使用に関して非常に正確です。ホストからエクスポートするファイルシステムの間、そしてホスト同士の間には、必ず空白文字を挿入してください。また、それ以外の場所 (コメント行を除く) には、空白文字を追加しないでください。
/home bob.example.com(rw) /home bob.example.com (rw)
bob.example.com
からのユーザーのみが /home
ディレクトリーへの読み取りおよび書き込みアクセスを許可します。2 行目では、bob.example.com
からのユーザーがディレクトリーを読み取り専用(デフォルト)としてマウントすることを許可し、残りのユーザーは読み取り/書き込みでマウントできます。
8.6.2. exportfs コマンド
/etc/exports
ファイルにリストされています。nfs サービスが起動すると、/usr/sbin/exportfs コマンドが起動し、このファイルを読み込み、制御を実際のマウントプロセスの rpc.mountd (NFSv3 の場合は)に渡してから、リモートユーザーがファイルシステムを利用できる rpc.nfsd に渡します。
/var/lib/nfs/xtab
に書き込みます。ファイルシステムへのアクセス権限を決定する際には、rpc.mountd が xtab
ファイルを参照するため、エクスポートしたファイルシステムのリストへの変更がすぐに反映されます。
- -r
/var/lib/nfs/etab
に新しいエクスポート一覧を作成して、/etc/exports
に一覧表示されているすべてのディレクトリーをエクスポートします。このオプションにより、/etc/exports
に加えられた変更でエクスポート一覧が効果的に更新されます。- -a
- /usr/sbin/exportfs に渡される他のオプションに応じて、すべてのディレクトリーがエクスポートまたはアンエクスポートされます。その他のオプションが指定されていない場合、/usr/sbin/exportfs は、
/etc/exports
で指定されたすべてのファイルシステムをエクスポートします。 - -o file-systems
/etc/exports
に記載されていないエクスポートするディレクトリーを指定します。file-systems の部分を、エクスポートされる追加のファイルシステムに置き換えます。これらのファイルシステムは、/etc/exports
で指定したのと同じ方法でフォーマットする必要があります。このオプションは、エクスポートするファイルシステムのリストに永続的に追加する前に、エクスポートするファイルシステムをテストするためによく使用されます。/etc/exports
構文の詳細は、「/etc/exports
設定ファイル」 を参照してください。- -i
/etc/exports
を無視します。コマンドラインから指定したオプションのみが、エクスポートされるファイルシステムの定義に使用されます。- -u
- すべての共有ディレクトリーをエクスポートしなくなります。コマンド /usr/sbin/exportfs -ua は、すべての NFS デーモンを起動したままにして NFS ファイル共有を一時停止します。NFS 共有を再度有効にするには、exportfs -r を使用します。
- -v
- exportfs コマンドの実行時にエクスポートまたはエクスポートされていないファイルシステムの詳細を表示する詳細な操作です。
8.6.2.1. NFSv4 での exportfs の使用
/etc/sysconfig/nfs
で RPCNFSDARGS= -N 4
を設定して無効にします。
8.6.3. ファイアウォール背後での NFS の実行
/etc/sysconfig/nfs
ファイルを編集して、RPC サービスを実行するポートを設定します。クライアントがファイアウォールを介して RPC クォータにアクセスできるようにする方法は、「ファイアウォールを介した RPC クォータのアクセス」 を参照してください。
/etc/sysconfig/nfs
ファイルは、デフォルトではすべてのシステムに存在しません。/etc/sysconfig/nfs
が存在しない場合は作成し、以下を指定します。
- RPCMOUNTDOPTS="-p port"
- これにより、"-p port" が rpc.mount コマンドラインに追加されます( rpc.mount -p port )。
nlockmgr
サービスが使用するポートを指定するには、/etc/modprobe.d/lockd.conf
ファイルの nlm_tcpport
オプションおよび nlm_udpport
オプションのポート番号を設定します。
/var/log/messages
を確認してください。通常、すでに使用されているポート番号を指定すると、NFS が起動しません。/etc/sysconfig/nfs
を編集したら、以下のコマンドを実行して、Red Hat Enterprise Linux 7.2 以前で nfs-config
サービスを再起動する必要があります。
#
systemctl restart nfs-config
次に、NFS サーバーを再起動します。
#
systemctl restart nfs-server
rpcinfo -p を実行して、変更が有効になったことを確認します。
/proc/sys/fs/nfs/nfs_callback_tcpport
を設定し、サーバーがクライアント上のそのポートに接続できるようにします。
mountd
、statd
、および lockd
用の他のポートは必要ありません。
8.6.3.1. NFS エクスポートの検出
- NFSv3 に対応するサーバーでは、showmount コマンドを使用します。
$
showmount -e myserver Export list for mysever /exports/foo /exports/bar - NFSv4 に対応するサーバーで、root ディレクトリーを マウント し、確認します。
#
mount myserver:/ /mnt/#
cd /mnt/ exports#
ls exports foo bar
8.6.4. ファイアウォールを介した RPC クォータのアクセス
手順8.1 ファイアウォールの内側で RPC クォータにアクセスできるようにする
rpc-rquotad
サービスを有効にするには、以下のコマンドを使用します。#
systemctl enable rpc-rquotadrpc-rquotad
サービスを起動するには、以下のコマンドを使用します。#
systemctl start rpc-rquotadrpc-rquotad
が有効になっている場合は、nfs-server
サービスの起動後に自動的に起動することに注意してください。- ファイアウォールの内側でクォータ RPC サービスにアクセスできるようにするには、UDP または TCP ポート
875
を開く必要があります。デフォルトのポート番号は/etc/services
ファイルで定義されています。/etc/sysconfig/rpc
を追加して、デフォルトのポート番号をオーバーライドできます。-rquotad
ファイルのRPCRQUOTADOPTS
変数に -p port-number rpc-rquotad
を再起動して、/etc/sysconfig/rpc-rquotad
ファイルの変更を有効にします。#
systemctl restart rpc-rquotad
リモートホストからのクォータの設定
/etc/sysconfig/rpc-rquotad
ファイルの RPCRQUOTADOPTS
変数に -S
オプションを追加します。
rpc-rquotad
を再起動して、/etc/sysconfig/rpc-rquotad
ファイルの変更を有効にします。
#
systemctl restart rpc-rquotad
8.6.5. ホスト名の形式
- 単独のマシン
- 完全修飾型ドメイン名 (サーバーで解決可能な形式)、ホスト名 (サーバーで解決可能な形式)、あるいは IP アドレス
- ワイルドカードで指定された一連のマシン
- 文字列の一致を指定するには、
*
文字または?
文字を使用します。ワイルドカードは IP アドレスでは使用しないことになっていますが、逆引き DNS ルックアップが失敗した場合には誤って動作する可能性があります。完全修飾ドメイン名でワイルドカードを指定する場合、ドット(.
)はワイルドカードに含まれません。たとえば、*.example.com
にはone.example.com
が含まれていますが、1.two.example.com は含ま
れません。 - IP ネットワーク
- a.b.c.d/z を使用します。ここで、a.b.c.d はネットワーク、z はネットマスクのビット数です (たとえば、192.168.0.0/24)。別の使用可能形式は a.b.c.d/netmask となり、ここで a.b.c.d がネットワークで、netmask がネットマスクです (たとえば、192.168.100.8/255.255.255.0)。
- Netgroups
- 形式 @group-name を使用します。ここで、group-name は NIS netgroup の名前です。
8.6.6. NFS over RDMA の有効化 (NFSoRDMA)
- rdma パッケージと rdma-core パッケージをインストールします。
/etc/rdma/rdma.conf
ファイルには、デフォルトでXPRTRDMA_LOAD=yes
を設定する行が含まれています。これは、rdma
サービスに NFSoRDMA クライアント モジュールを読み込むように要求します。 - NFSoRDMA サーバー モジュールの自動読み込みを有効にするには、
/etc/rdma/rdma.conf
の新しい行にSVCRDMA_LOAD=yes
を追加します。/etc/sysconfig/nfs
ファイルのRPCNFSDARGS="--rdma=20049"
は、NFSoRDMA サービスがクライアントをリッスンするポート番号を指定します。『RFC 5667』 は、RDMA で NFSv4 サービスを提供する際に、サーバーがポート20049
をリッスンする必要があることを指定します。 /etc/rdma/rdma.conf
ファイルの編集後に、nfs
サービスを再起動します。#
systemctl restart nfs以前のカーネルバージョンでは、変更を有効にするために/etc/rdma/rdma.conf
の編集後にシステムを再起動する必要があることに注意してください。
8.6.7. NFSv4 専用サーバーの設定
rpcbind
サービスがネットワークをリッスンする必要がないため、これにより、システムで開いているポートと実行中のサービスの数が最小限に抑えられます。
Requested NFS version or transport protocol is not supported.
手順8.2 NFSv4 専用サーバーの設定
/etc/sysconfig/nfs
設定ファイルに以下の行を追加して、NFSv2、NFSv3、および UDP を無効にします。RPCNFSDARGS="-N 2 -N 3 -U"
- 必要に応じて、
RPCBIND
、MOUNT
、およびNSM
プロトコル呼び出しのリッスンを無効にします。これは、NFSv4 専用の場合は不要です。このオプションを無効にすると、以下のような影響があります。- NFSv2 または NFSv3 を使用してサーバーから共有をマウントしようとするクライアントが応答しなくなります。
- NFS サーバー自体が、NFSv2 および NFSv3 のファイルシステムをマウントできなくなります。
このオプションを無効にするには、以下を実行します。- 以下を
/etc/sysconfig/nfs
ファイルに追加します。RPCMOUNTDOPTS="-N 2 -N 3"
- 関連するサービスを無効にします。
#
systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
- NFS サーバーを再起動します。
#
systemctl restart nfs変更は、NFS サーバーを起動または再起動するとすぐに反映されます。
NFSv4 専用の設定の確認
netstat
ユーティリティーを使用して、NFSv4 専用モードで NFS サーバーが設定されていることを確認できます。
- 以下は、NFSv4 専用サーバーでの
netstat
出力例です。RPCBIND
、MOUNT
、およびNSM
をリッスンして無効になります。nfs
は、唯一のリスニング NFS サービスです。#
netstat -ltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]:nfs [::]:* LISTEN tcp6 0 0 [::]:12432 [::]:* LISTEN tcp6 0 0 [::]:12434 [::]:* LISTEN tcp6 0 0 localhost:7092 [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN udp 0 0 localhost:323 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp6 0 0 localhost:323 [::]:* - 一方、NFSv4 専用サーバーを設定する前の
netstat
出力には、sunrpc
およびmountd
サービスが含まれます。#
netstat -ltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:36069 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:52364 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:mountd 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]:34941 [::]:* LISTEN tcp6 0 0 [::]:nfs [::]:* LISTEN tcp6 0 0 [::]:sunrpc [::]:* LISTEN tcp6 0 0 [::]:mountd [::]:* LISTEN tcp6 0 0 [::]:12432 [::]:* LISTEN tcp6 0 0 [::]:56881 [::]:* LISTEN tcp6 0 0 [::]:12434 [::]:* LISTEN tcp6 0 0 localhost:7092 [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN udp 0 0 localhost:323 0.0.0.0:* udp 0 0 0.0.0.0:37190 0.0.0.0:* udp 0 0 0.0.0.0:876 0.0.0.0:* udp 0 0 localhost:877 0.0.0.0:* udp 0 0 0.0.0.0:mountd 0.0.0.0:* udp 0 0 0.0.0.0:38588 0.0.0.0:* udp 0 0 0.0.0.0:nfs 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp 0 0 0.0.0.0:sunrpc 0.0.0.0:* udp6 0 0 localhost:323 [::]:* udp6 0 0 [::]:57683 [::]:* udp6 0 0 [::]:876 [::]:* udp6 0 0 [::]:mountd [::]:* udp6 0 0 [::]:40874 [::]:* udp6 0 0 [::]:nfs [::]:* udp6 0 0 [::]:sunrpc [::]:*
8.7. NFS のセキュア化
8.7.1. AUTH_SYS とエクスポート制御による NFS セキュリティー保護
AUTH_SYS
( AUTH_UNIX
とも呼ばれます)を使用してこれを行い、クライアントに依存し、ユーザーの UID と GID を示していました。つまり、悪意のあるクライアントや誤って設定されたクライアントがこれを誤用し、ファイルへのアクセスを許可すべきではないユーザーに対して、ファイルへのアクセスを簡単に与えてしまうことができるため注意が必要です。
8.7.2. AUTH_GSS
を使用した NFS 保護
Kerberos の設定
手順8.3 RPCSEC_GSS を使用するための IdM 用の NFS サーバーとクライアントの設定
- NFS サーバー側で
nfs/hostname.domain@REALM
プリンシパルを作成します。 - サーバーとクライアント側の両方に、
host/hostname.domain@REALM
を作成します。注記ホスト名 は、NFS サーバーのホスト名 と同じでなければなりません。 - クライアントとサーバーのキータブに、対応する鍵を追加します。
手順は、Red Hat Enterprise Linux 7 Linux Domain Identity, Authentication, and Policy Guide の Adding and Editing Service Entries and Keytabs and Setting up a Kerberos-aware NFS Server のセクションを参照してください。- サーバーで、
sec=
オプションを使用して、希望するセキュリティーフレーバーを有効にします。すべてのセキュリティーフレーバーと非暗号化マウントを有効にするには、以下のコマンドを実行します。/export *(sec=sys:krb5:krb5i:krb5p)
sec=
オプションで使用する有効なセキュリティーフレーバーは次のとおりです。sys
: 暗号化の保護なし(デフォルト)krb5
: 認証のみkrb5i
: 整合性保護krb5p
: プライバシー保護
- クライアント側で、
sec=krb5
(または設定に応じてsec=krb5i
、またはsec=krb5p
)をマウントオプションに追加します。# mount -o sec=krb5 server:/export /mnt
NFS クライアントの設定方法の詳細は、Red Hat Enterprise Linux 7 Linux Domain Identity, Authentication, and Policy Guide の Setting up a Kerberos-aware NFS Client セクションを参照してください。
関連情報
- Red Hat は IdM の使用を推奨しますが、Active Directory (AD) Kerberos サーバーにも対応しています。詳細は、Red Hat ナレッジベースの記事 How to set up NFS using Kerberos authentication on RHEL 7 using SSSD and Active Directory を参照してください。
- Kerberos で保護された NFS 共有に root としてファイルを書き込み、そのファイルで root 所有権を保持する必要がある場合は、https://access.redhat.com/articles/4040141 を参照してください。この設定は推奨されません。
8.7.2.1. NFSv4 による NFS のセキュリティー保護
MOUNT
プロトコルを使用することを削除することです。MOUNT
プロトコルは、プロトコルがファイルを処理する方法が原因でセキュリティーリスクを示しました。
8.7.3. ファイル権限
nobody
に設定されます。root squashing は、デフォルトのオプション root_squash で制御されます。このオプションの詳細については、「/etc/exports
設定ファイル」 を参照してください。できる限りこの root squash 機能は無効にしないでください。
all_squash
オプションの使用を検討してください。このオプションでは、エクスポートしたファイルシステムにアクセスするすべてのユーザーが、nfsnobody
ユーザーのユーザー ID を取得します。
8.8. NFS および rpcbind
rpcbind
サービスを必要とする NFSv3 実装にのみ適用されます。
rpcbind
を必要としない NFSv4 専用サーバーを設定する方法は、「NFSv4 専用サーバーの設定」 を参照してください。
8.8.1. NFS と rpcbindのトラブルシューティング
# rpcinfo -p
例8.7 rpcinfo -p コマンドの出力
program vers proto port service 100021 1 udp 32774 nlockmgr 100021 3 udp 32774 nlockmgr 100021 4 udp 32774 nlockmgr 100021 1 tcp 34437 nlockmgr 100021 3 tcp 34437 nlockmgr 100021 4 tcp 34437 nlockmgr 100011 1 udp 819 rquotad 100011 2 udp 819 rquotad 100011 1 tcp 822 rquotad 100011 2 tcp 822 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100005 1 udp 836 mountd 100005 1 tcp 839 mountd 100005 2 udp 836 mountd 100005 2 tcp 839 mountd 100005 3 udp 836 mountd 100005 3 tcp 839 mountd
8.9. pNFS
pNFS の Flex ファイル
pNFS 共有のマウント
- pNFS 機能を有効にするには、NFS バージョン 4.1 以降を使用して、pNFS が有効になっているサーバーから共有をマウントします。
#
mount -t nfs -o v4.1 server:/remote-export /local-directoryサーバーが pNFS が有効な後に、nfs_layout_nfsv41_files
カーネルが自動的に最初のマウントに読み込まれます。出力のマウントエントリーには、minorversion=1 が含まれている必要があり
ます。次のコマンドを使用して、モジュールが読み込まれたことを確認します。$ lsmod | grep nfs_layout_nfsv41_files
- Flex ファイルに対応するサーバーから、Flex ファイル機能で NFS 共有をマウントするには、NFS バージョン 4.2 以降を使用します。
#
mount -t nfs -o v4.2 server:/remote-export /local-directorynfs_layout_flexfiles
モジュールが読み込まれていることを確認します。$
lsmod | grep nfs_layout_flexfiles
関連情報
8.10. NFS での pNFS SCSI レイアウトの有効化
前提条件
- クライアントとサーバーの両方で、SCSI コマンドを同じブロックデバイスに送信する必要があります。つまり、ブロックデバイスは共有 SCSI バス上になければなりません。
- ブロックデバイスに XFS ファイルシステムが含まれている必要があります。
- SCSI デバイスは、 SCSI-3 Primary Commands 仕様で説明されているように、SCSI Persistent Reservation に対応している必要があります。
8.10.1. pNFS SCSI レイアウト
クライアントとサーバーとの間の操作
LAYOUTGET
操作を実行します。サーバーは、SCSI デバイスのファイルの場所に反応します。クライアントは、使用する SCSI デバイスを判別するために GETDEVICEINFO
の追加操作が必要になる場合があります。これらの操作が正しく機能すると、クライアントは、READ
操作および WRITE
操作をサーバーに送信する代わりに、SCSI デバイスに直接 I/O 要求を発行することができます。
READ
操作および WRITE
操作を発行するようにフォールバックします。
デバイスの予約
8.10.2. pNFS と互換性がある SCSI デバイスの確認
前提条件
- 以下のコマンドで、sg3-utils パッケージがインストールされている。
# yum install sg3_utils
手順8.4 pNFS と互換性がある SCSI デバイスの確認
- サーバーおよびクライアントの両方で、適切な SCSI デバイスサポートを確認します。
# sg_persist --in --report-capabilities --verbose path-to-scsi-device
Persist Through Power Loss Active (PTPL_A
)ビットが設定されていることを確認します。例8.8 pNFS SCSI をサポートする SCSI デバイス
以下は、pNFS SCSI をサポートする SCSI デバイスに対するsg_persist
出力の例です。PTPL_A
ビットは1
を報告します。inquiry cdb: 12 00 00 00 24 00 Persistent Reservation In cmd: 5e 02 00 00 00 00 00 20 00 00 LIO-ORG block11 4.0 Peripheral device type: disk Report capabilities response: Compatible Reservation Handling(CRH): 1 Specify Initiator Ports Capable(SIP_C): 1 All Target Ports Capable(ATP_C): 1 Persist Through Power Loss Capable(PTPL_C): 1 Type Mask Valid(TMV): 1 Allow Commands: 1 Persist Through Power Loss Active(PTPL_A): 1 Support indicated in Type mask: Write Exclusive, all registrants: 1 Exclusive Access, registrants only: 1 Write Exclusive, registrants only: 1 Exclusive Access: 1 Write Exclusive: 1 Exclusive Access, all registrants: 1
関連情報
- sg_persist(8) の man ページ
8.10.3. サーバーでの pNFS SCSI の設定
手順8.5 サーバーでの pNFS SCSI の設定
- サーバーで、SCSI デバイスで作成した XFS ファイルシステムをマウントします。
- NFS バージョン 4.1 以降をエクスポートするように NFS サーバーを設定します。
/etc/nfs.conf
ファイルの[nfsd]
セクションに以下のオプションを設定します。[nfsd] vers4.1=y
pnfs
オプションを使用して、NFS で XFS ファイルシステムをエクスポートするように NFS サーバーを設定します。例8.9 pNFS SCSI をエクスポートする /etc/exports のエントリー
/etc/exports
設定ファイルの以下のエントリーは、/exported/directory/
にマウントされているファイルシステムを、pNFS SCSI レイアウトとしてallowed.example.com
クライアントにエクスポートします。/exported/directory allowed.example.com(pnfs)
関連情報
- NFS サーバーの設定に関する詳細は、「NFS サーバーの設定」 を参照してください。
8.10.4. クライアントでの pNFS SCSI の設定
前提条件
- NFS サーバーは、pNFS SCSI で XFS ファイルシステムをエクスポートするように設定されています。「サーバーでの pNFS SCSI の設定」 を参照してください。
手順8.6 クライアントでの pNFS SCSI の設定
- クライアントで、NFS バージョン 4.1 以降を使用して、エクスポートした XFS ファイルシステムをマウントします。
# mount -t nfs -o nfsvers=4.1 host:/remote/export /local/directory
NFS なしで XFS ファイルシステムを直接マウントしないでください。
関連情報
- NFS 共有のマウントの詳細は、「NFS クライアントの設定」 を参照してください。
8.10.5. サーバーでの pNFS SCSI 予約の解放
前提条件
- 以下のコマンドで、sg3-utils パッケージがインストールされている。
# yum install sg3_utils
手順8.7 サーバーでの pNFS SCSI 予約の解放
- サーバーで、既存の予約をクエリーします。
# sg_persist --read-reservation path-to-scsi-device
例8.10 /dev/sda での予約のクエリー
# sg_persist --read-reservation /dev/sda LIO-ORG block_1 4.0 Peripheral device type: disk PR generation=0x8, Reservation follows: Key=0x100000000000000 scope: LU_SCOPE, type: Exclusive Access, registrants only
- サーバーにある既存の登録を削除します。
# sg_persist --out \ --release \ --param-rk=reservation-key \ --prout-type=6 \ path-to-scsi-device
例8.11 /dev/sda にある予約の削除
# sg_persist --out \ --release \ --param-rk=0x100000000000000 \ --prout-type=6 \ /dev/sda LIO-ORG block_1 4.0 Peripheral device type: disk
関連情報
- sg_persist(8) の man ページ
8.10.6. pNFS SCSI レイアウト機能の監視
前提条件
- pNFS SCSI クライアントとサーバーが設定されている。
8.10.6.1. nfsstat を使用したサーバーからの pNFS SCSI 操作のチェック
nfsstat
ユーティリティーを使用して、サーバーからの pNFS SCSI 操作を監視します。
手順8.8 nfsstat を使用したサーバーからの pNFS SCSI 操作のチェック
- サーバーから操作サービスを監視します。
# watch --differences \ "nfsstat --server | egrep --after-context=1 read\|write\|layout" Every 2.0s: nfsstat --server | egrep --after-context=1 read\|write\|layout putrootfh read readdir readlink remove rename 2 0% 0 0% 1 0% 0 0% 0 0% 0 0% -- setcltidconf verify write rellockowner bc_ctl bind_conn 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% -- getdevlist layoutcommit layoutget layoutreturn secinfononam sequence 0 0% 29 1% 49 1% 5 0% 0 0% 2435 86%
- クライアントとサーバーは、以下の場合に pNFS SCSI 操作を使用します。
layoutget
カウンター、layoutreturn
カウンター、およびlayoutcommit
カウンターの増分値。これは、サーバーがレイアウトを提供することを意味します。- サーバーの
読み取り
および書き込み
カウンターはインクリメントしません。これは、クライアントが SCSI デバイスに直接 I/O 要求を実行していることを意味します。
8.10.6.2. mountstats を使用したクライアントからの pNFS SCSI 操作のチェック
/proc/self/mountstats
ファイルを使用して、クライアントからの pNFS SCSI 操作を監視します。
手順8.9 mountstats を使用したクライアントからの pNFS SCSI 操作のチェック
- マウントごとの操作カウンターをリスト表示します。
# cat /proc/self/mountstats \ | awk /scsi_lun_0/,/^$/ \ | egrep device\|READ\|WRITE\|LAYOUT device 192.168.122.73:/exports/scsi_lun_0 mounted on /mnt/rhel7/scsi_lun_0 with fstype nfs4 statvers=1.1 nfsv4: bm0=0xfdffbfff,bm1=0x40f9be3e,bm2=0x803,acl=0x3,sessions,pnfs=LAYOUT_SCSI READ: 0 0 0 0 0 0 0 0 WRITE: 0 0 0 0 0 0 0 0 READLINK: 0 0 0 0 0 0 0 0 READDIR: 0 0 0 0 0 0 0 0 LAYOUTGET: 49 49 0 11172 9604 2 19448 19454 LAYOUTCOMMIT: 28 28 0 7776 4808 0 24719 24722 LAYOUTRETURN: 0 0 0 0 0 0 0 0 LAYOUTSTATS: 0 0 0 0 0 0 0 0
- 結果は以下のようになります。
LAYOUT
統計は、クライアントとサーバーが pNFS SCSI 操作を使用する要求を示します。READ
およびWRITE
統計は、クライアントとサーバーが NFS 操作にフォールバックする要求を示します。
8.11. NFS のリファレンス
インストールされているドキュメント
- man mount - NFS サーバーとクライアント両方のマウントオプションに関する包括的な説明が含まれています。
- man fstab: システムの起動時にファイルシステムをマウントするために使用される
/etc/fstab
ファイルの形式の詳細を提供します。 - man nfs - NFS 固有のファイルシステムのエクスポートとマウントオプションの詳細を提供します。
- man exports - NFS ファイルシステムのエクスポート時に
/etc/exports
ファイルで使用される一般的なオプションを表示します。
便利な Web サイト
- http://linux-nfs.org — プロジェクトの更新状況を確認できる開発者向けの最新サイトです。
- http://nfs.sourceforge.net/ — 開発者向けのホームページで、少し古いですが、役に立つ情報が多数掲載されています。
- http://www.citi.umich.edu/projects/nfsv4/linux/ — Linux 2.6 カーネル用 NFSv4 のリソースです。
- http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.111.4086 — NFS バージョン 4 プロトコルの機能および拡張機能について記載しているホワイトペーパーです。
第9章 サーバーメッセージブロック (SMB)
cifs-utils
ユーティリティーを使用してリモートサーバーから SMB 共有をマウントします。
cifs
という名前を使用します。
第10章 FS-Cache
図10.1 FS-Cache の概要
[D]
10.1. パフォーマンスに関する保証
10.2. キャッシュの設定
/etc/cachefilesd.conf
ファイルは、cachefiles がキャッシュサービスを提供する方法を制御します。
$ dir /path/to/cache
/etc/cachefilesd.conf
に /var/cache/fscache
として設定されます。
$ dir /var/cache/fscache
/var/cache/fscache
と同じである必要があります。
#
semanage fcontext -a -e /var/cache/fscache /path/to/cache#
restorecon -Rv /path/to/cache
#
semanage permissive -a cachefilesd_t#
semanage permissive -a cachefiles_kernel_t
/
)をホストファイルシステムとして使用することが推奨されますが、デスクトップマシンでは、キャッシュ専用のディスクパーティションをマウントする方が安全です。
- ext3 (拡張属性が有効)
- ext4
- Btrfs
- XFS
# tune2fs -o user_xattr /dev/device
# mount /dev/device /path/to/cache -o user_xattr
cachefilesd
サービスを起動します。
#
systemctl start cachefilesd
#
systemctl enable cachefilesd
10.3. NFS でのキャッシュの使用
# mount nfs-share:/ /mount/point -o fsc
10.3.1. キャッシュの共有
- レベル 1: サーバーの詳細
- レベル 2: 一部のマウントオプション、セキュリティータイプ、FSID、識別子
- レベル 3: ファイルハンドル
- レベル 4: ファイル内のページ番号
例10.1 キャッシュの共有
/home/fred
と /home/jim
は同じオプションがあるため、スーパーブロックを共有する可能性が高くなります。特に NFS サーバー上の同じボリューム/パーティションからのものである場合(home0
)。ここで、2 つの後続のマウントコマンドを示します。
/home/fred
および /home/jim
はレベル 2 キーの一部であるネットワークアクセスパラメーターが異なるため、スーパーブロックを共有しません。次のマウントシーケンスについても同じことが言えます。
/home/fred1
および /home/fred2
)の内容が 2 回 キャッシュされます。
:/disk0/fred および home0:/disk
0/jim
を区別するものがないため、スーパーブロックの 1 つだけがキャッシュを使用できます。これに対処するには、少なくとも 1 つのマウントに 一意の識別子 を追加します。つまり、fsc=unique-identifier です。以下に例を示します。
/home/jim
のキャッシュで使用されるレベル 2 キーに追加されます。
10.3.2. NFS でのキャッシュの制限
- ダイレクト I/O で共有ファイルシステムからファイルを開くと、自動的にキャッシュが回避されます。これは、この種のアクセスがサーバーに直接行なわれる必要があるためです。
- 書き込みで共有ファイルシステムからファイルを開いても NFS のバージョン 2 およびバージョン 3 では動作しません。これらのバージョンのプロトコルは、クライアントが、別のクライアントからの同じファイルへの同時書き込みを検出するのに必要な整合性の管理に関する十分な情報を提供しません。
- ダイレクト I/O または書き込みのいずれかで共有ファイルシステムからファイルを開くと、キャッシュされたファイルのコピーがフラッシュされます。ダイレクト I/O や書き込みのためにファイルが開かれなくなるまで、FS-Cache はファイルを再キャッシュしません。
- さらに、FS-Cache の今回のリリースでは、通常の NFS ファイルのみをキャッシュします。FS-Cache はディレクトリー、シンボリックリンク、デバイスファイル、FIFO、ソケットを キャッシュしません。
10.4. キャッシュカリング制限の設定
/etc/cachefilesd.conf
の設定で制御される制限は 6 つあります。
- brun N% (ブロックのパーセンテージ) , frun N% (ファイルのパーセンテージ)
- キャッシュの空き領域と利用可能なファイルの数がこれらの制限を上回ると、カリングはオフになります。
- bcull N% (ブロックのパーセンテージ), fcull N% (ファイルのパーセンテージ)
- キャッシュの空き領域と利用可能なファイルの数がこれらの制限のいずれかを下回ると、カリング動作が開始します。
- bstop N% (ブロックのパーセンテージ), fstop N% (ファイルのパーセンテージ)
- キャッシュ内の使用可能な領域または使用可能なファイルの数がこの制限のいずれかを下回ると、カリングによってこれらの制限を超える状態になるまで、ディスク領域またはファイルのそれ以上の割り当ては許可されません。
N
のデフォルト値は以下の通りです。
- brun/frun - 10%
- bcull/fcull - 7%
- bstop/fstop - 3%
- 0 DHE bstop < bcull < brun < 100
- 0 DHE fstop < fcull < frun < 100
10.5. 統計情報
# cat /proc/fs/fscache/stats
/usr/share/doc/kernel-doc-version/Documentation/filesystems/caching/fscache.txt
10.6. FS-Cache の参考資料
/usr/share/doc/cachefilesd-version-number/README
/usr/share/man/man5/cachefilesd.conf.5.gz
/usr/share/man/man8/cachefilesd.8.gz
/usr/share/doc/kernel-doc-version/Documentation/filesystems/caching/fscache.txt
を参照してください。
パート II. ストレージ管理
第11章 ストレージをインストールする際の注意点
11.1. 特に注意を要する事項について
/home、/opt、/usr/local には別々のパーティションを用意する
/home
、/opt
、および /usr/local
を別のデバイスに配置します。これにより、ユーザーデータやアプリケーションデータを保持しながら、オペレーティングシステムが含まれるデバイスやファイルシステムを再フォーマットできます。
IBM System Z における DASD デバイスと zFCP デバイス
DASD=
パラメーターとしてデバイス番号(またはデバイス番号の範囲)を一覧表示することを意味します。
FCP_x=
行を使用すると、インストーラーにこの情報を指定できます。
LUKS を使用したブロックデバイスの暗号化
古い BIOS RAID メタデータ
#
dmraid -r -E /device/
iSCSI の検出および設定
FCoE の検出および設定
DASD
DIF/DIX を有効にしているブロックデバイス
第12章 ファイルシステム検査
/etc/fstab
に一覧表示されている各ファイルシステムで実行されます。ジャーナリングファイルシステムの場合、ファイルシステムのメタデータジャーナリングはクラッシュ後も一貫性を保証するため、これは通常非常に短い操作になります。
/etc/fstab
の 6 番目のフィールドを 0
に設定すると、システムの起動時にファイルシステムの検査を無効にできます。
12.1. fsck のベストプラクティス
- Dry run
- ほとんどのファイルシステムチェッカーには、ファイルシステムを検査しますが修復しない操作モードがあります。このモードでは、チェッカーは、ファイルシステムを実際に変更することなく、検出したエラーと実行したアクションを出力します。注記整合性チェック後のフェーズでは、修復モードで実行していた場合に前のフェーズで修正されていた不整合が検出される可能性があるため、追加のエラーが出力される場合があります。
- 最初にファイルシステムイメージを操作する
- ほとんどのファイルシステムは、メタデータのみを含むファイルシステムのスパースコピーである メタデータイメージ の作成に対応しています。ファイルシステムチェッカーはメタデータのみを操作するため、このようなイメージを使用して、実際のファイルシステム修復のドライランを実行し、実際にどのような変更が行われるかを評価できます。変更が受け入れられる場合は、ファイルシステム自体で修復を実行できます。注記ファイルシステムが大幅に損傷している場合は、メタデータイメージの作成に関連して問題が発生する可能性があります。
- サポート調査のためにファイルシステムイメージを保存します。
- 破損がソフトウェアのバグによるものである可能性がある場合、修復前のファイルシステムメタデータイメージは、サポート調査に役立つことがよくあります。修復前のイメージに見つかる破損のパターンは、根本原因の分析に役立つことがあります。
- マウントされていないファイルシステムでのみ動作します。
- ファイルシステムの修復は、マウントされていないファイルシステムでのみ実行する必要があります。ツールには、ファイルシステムへの単独アクセスが必要であり、それがないと追加の損傷が発生する可能性があります。ほとんどのファイルシステムツールは、修復モードでこの要件を適用しますが、一部のツールは、マウントされたファイルシステムでチェックのみモードだけをサポートします。チェックのみモードが、マウントされたファイルシステムで実行されていると、マウントされていないファイルシステムで実行しても見つからない疑わしいエラーが検出されることがあります。
- ディスクエラー
- ファイルシステムの検査ツールは、ハードウェアの問題を修復できません。修復を正常に動作させるには、ファイルシステムが完全に読み取り可能かつ書き込み可能である必要があります。ハードウェアエラーが原因でファイルシステムが破損した場合は、まず dd (8) ユーティリティーなどを使用して、ファイルシステムを適切なディスクに移動する必要があります。
12.2. fsck のファイルシステム固有の情報
12.2.1. ext2、ext3、および ext4
e2fsck
バイナリーを使用して、ファイルシステムの検査と修復を実行します。ファイル名の fsck.ext2
、fsck.ext3
、および fsck.ext4
はこの同じバイナリーへのハードリンクです。これらのバイナリーは、システムの起動時に自動的に実行し、その動作は確認されるファイルシステムと、そのファイルシステムの状態によって異なります。
- -n
- 非変更モード。チェックのみの操作。
- -b スーパーブロック
- プライマリーシステムが破損している場合は、別のスーパーブロックのブロック番号を指定します。
- -f
- スーパーブロックに記録されたエラーがなくても、フルチェックを強制実行します。
- -j journal-dev
- 外部のジャーナルデバイス (ある場合) を指定します。
- -p
- ユーザー入力のないファイルシステムを自動的に修復または preen (修復) する
- -y
- すべての質問に yes の回答を想定する
- Inode、ブロック、およびサイズのチェック。
- ディレクトリー構造のチェック。
- ディレクトリー接続のチェック。
- 参照数のチェック。
- グループサマリー情報のチェック。
12.2.2. XFS
fsck.xfs
バイナリーがありますが、これは、システムの起動時に fsck.ファイルシステム
バイナリーを検索する initscripts を満たすためにのみ存在します。fsck.xfs
は、即座に終了コード 0 で終了します。
- -n
- 非変更モードです。チェックのみの操作。
- -L
- ゼロメタデータログ。マウントによってログを再生できない場合にのみ使用します。
- -m maxmem
- 最大 MB の実行時に使用されるメモリーを制限します。必要な最小メモリーの概算を出すために 0 を指定できます。
- -l logdev
- 外部ログデバイス (ある場合) を指定します。
- Inode および inode ブロックマップ (アドレス指定) のチェック。
- Inode 割り当てマップのチェック。
- Inode サイズのチェック。
- ディレクトリーのチェック。
- パス名のチェック。
- リンク数のチェック。
- フリーマップのチェック。
- スーパーブロックチェック。
12.2.3. Btrfs
- エクステントのチェック。
- ファイルシステムの root チェック。
- ルートの参照数のチェック。
第13章 Partitions
- 既存パーティションテーブルの表示
- 既存パーティションのサイズ変更
- 空き領域または他のハードドライブからのパーティションの追加
#
parted /dev/sda
使用中のデバイスでのパーティションの操作
パーティションテーブルの変更
#
partx --update --nr partition-number disk
- システムディスクの場合など、ディスクのパーティションのマウントを解除できない場合は、レスキューモードでシステムを起動します。
- ファイルシステムをマウントするように求められたら、を選択します。
コマンド | 説明 |
---|---|
help | 利用可能なコマンドのリストを表示します。 |
mklabel label | パーティションテーブル用のディスクラベルを作成します。 |
mkpart part-type [fs-type] start-mb end-mb | 新しいファイルシステムを作成せずに、パーティションを作成します。 |
name minor-num name | Mac と PC98 のディスクラベル用のみのパーティションに名前を付けます。 |
パーティションテーブルを表示します。 | |
quit | partedを終了します。 |
rescue start-mb end-mb | start-mb から end-mb へ、消失したパーティションを復旧します。 |
rm minor-num | パーティションを削除します。 |
select device | 設定する別のデバイスを選択します。 |
set minor-num flag state | パーティションにフラグを設定します。state はオンまたはオフのいずれかになります。 |
toggle [NUMBER [FLAG] | パーティション NUMBER 上の FLAG の状態を切り替えます。 |
unit UNIT | デフォルトのユニットを UNIT に設定します。 |
13.1. パーティションテーブルの表示
- parted を起動します。
- パーティションテーブルを表示するには、次のコマンドを使用します。
(parted)
print
例13.1 パーティションテーブル
Model: ATA ST3160812AS (scsi) Disk /dev/sda: 160GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 107MB 107MB primary ext3 boot 2 107MB 105GB 105GB primary ext3 3 105GB 107GB 2147MB primary linux-swap 4 107GB 160GB 52.9GB extended root 5 107GB 133GB 26.2GB logical ext3 6 133GB 133GB 107MB logical ext3 7 133GB 160GB 26.6GB logical lvm
- Model: ATA ST3160812AS (scsi): ディスクの種類、製造元、モデル番号、およびインターフェイスについて説明しています。
- Disk /dev/sda: 160GB: ブロックデバイスへのファイルパスと、ストレージキャパシティーを表示しています。
- Partition Table: msdos: ディスクラベルのタイプを表示しています。
- パーティションテーブルでは、
Number
はパーティション番号です。たとえば、マイナー番号 1 のパーティションは/dev/sda1
に対応します。Start
およびEnd
の値はメガバイト単位です。有効なタイプ
は、metadata、free、primary、extended、または logical です。File system
はファイルシステムのタイプです。Flags 列には、パーティションに設定されたフラグが一覧表示されます。利用可能なフラグは、boot、root、swap、hidden、raid、lvm、または lba です。
File system
は、以下のいずれかになります。
- ext2
- ext3
- fat16
- fat32
- hfs
- jfs
- linux-swap
- ntfs
- reiserfs
- hp-ufs
- sun-ufs
- xfs
システム
に値が表示されない場合は、ファイルシステムのタイプが不明であることを意味します。
13.2. パーティションの作成
手順13.1 パーティションの作成
- パーティションを作成する前に、レスキューモードで起動します (または、デバイス上のパーティションをアンマウントして、デバイス上のスワップ領域をすべてオフにします)。
- parted を起動します。
# parted /dev/sda
/dev/sda をパーティションを作成するデバイス名に置き換えます。 - 現在のパーティションテーブルを表示し、十分な空き領域があるかどうかを確認します。
(parted)
print十分な空き容量がない場合は、既存のパーティションのサイズを変更できます。詳細は、「fdisk でのパーティションのサイズ変更」 を参照してください。パーティションテーブルから、新しいパーティションの開始点と終了点、およびパーティションのタイプを決定します。プライマリーパーティションは、1 つのデバイス上に 4 つまで保有できます (この場合は拡張パーティションは含みません)。パーティションが 5 つ以上必要な場合は、プライマリーパーティションを 3 つ、拡張パーティションを 1 つにし、その拡張パーティションの中に複数の論理パーティションを追加します。ディスクパーティションの概要は、Red Hat Enterprise Linux 7 Installation Guide の付録 An Introduction to Disk Partitions を参照してください。 - パーティションを作成するには、以下を実行します。
(parted)
mkpart part-type name fs-type start endpart-type を必要に応じて、primary、logical、または extended に置き換えます。name を partition-name に置き換えます。GPT パーティションテーブルには name が必要です。fs-type を、btrfs、ext2、ext3、ext4、fat16、fat32、hfs、hfs+、linux-swap、ntfs、reiserfs、または xfs のいずれかに置き換えます。fs-type はオプションです。必要に応じて、start end をメガバイト単位で置き換えます。たとえば、ハードドライブの 1024 メガバイトから 2048 メガバイトに ext3 ファイルシステムのプライマリーパーティションを作成するには、以下のコマンドを入力します。(parted)
mkpart primary 1024 2048注記代わりに mkpartfs コマンドを使用すると、パーティションの作成後にファイルシステムが作成されます。ただし、parted は ext3 ファイルシステムの作成をサポートしていません。したがって、ext3 ファイルシステムを作成する場合は、mkpart を使用して、後述するように mkfs コマンドでファイルシステムを作成します。変更は Enter を押すとすぐに行われます。したがって、コマンドを確認してから確認してください。 - パーティションテーブルを表示し、次のコマンドを使用して、作成されたパーティションのパーティションタイプ、ファイルシステムタイプ、サイズが、パーティションテーブルに正しく表示されていることを確認します。
(parted)
print新しいパーティションのマイナー番号も覚えておいてください。そのパーティション上のファイルシステムにラベルを付けることができます。 - parted シェルを終了します。
(parted)
quit - parted を閉じた後、以下のコマンドを実行して、カーネルが新しいパーティションを認識していることを確認します。
#
cat /proc/partitions
13.2.1. パーティションのフォーマットとラベル付け
手順13.2 パーティションのフォーマットとラベル付け
- パーティションにファイルシステムがない。
ext4
ファイルシステムを作成するには、次のコマンドを実行します。#
mkfs.ext4 /dev/sda6Warningパーティションをフォーマットすると、そのパーティションに現存するすべてのデータが永久に抹消されます。 - パーティションにファイルシステムのラベルを付けます。たとえば、新しいパーティションのファイルシステムが
/dev/sda6
で、Work
のラベルを付ける場合は、以下を使用します。#
e2label /dev/sda6 "Work"デフォルトでは、インストールプログラムはパーティションのマウントポイントをラベルとして使用して、ラベルが固有なものとなるようにします。ユーザーは使用するラベルを選択できます。 - root でマウントポイント(例:
/work
)を作成します。
13.2.2. /etc/fstab
へのパーティションの追加
- root として、
/etc/fstab
ファイルを編集し、パーティションの UUID を使用して新しいパーティションを追加します。パーティションの UUID の完全なリストには blkid -o list コマンドを使用し、個々のデバイスの詳細には blkid device コマンドを使用します。/etc/fstab
の場合:- 最初の列には、
UUID=
の後にファイルシステムの UUID が含まれている必要があります。 - 2 番目の列には、新しいパーティションのマウントポイントが含まれている必要があります。
- 3 番目の列は、ファイルシステムのタイプ(
ext4
またはswap
など)である必要があります。 - 4 番目の列は、ファイルシステムのマウントオプションのリストになります。ここでの
defaults
という用語は、システムの起動時に、パーティションがデフォルトのオプションでマウントされることを意味します。 - 5 番目と 6 番目のフィールドは、バックアップとチェックのオプションを指定します。root 以外のパーティションの値の例は
0 2
です。
- システムが新しい設定を登録するように、マウントユニットを再生成します。
#
systemctl daemon-reload - ファイルシステムをマウントして、設定が機能することを確認します。
# mount /work
追加情報
/etc/fstab
の形式に関する詳細は、fstab(5) の man ページを参照してください。
13.3. パーティションの削除
手順13.3 パーティションの削除
- パーティションを削除する前に、以下のいずれかを行います。
- レスキューモードで起動します。
- デバイスのパーティションをアンマウントし、デバイスのスワップスペースをオフにします。
parted
ユーティリティーを起動します。# parted device
device を、パーティションを削除するデバイス(例:/dev/sda
)に置き換えます。- 現在のパーティションテーブルを表示して、削除するパーティションのマイナー番号を確認します。
(parted) print
- rm コマンドでパーティションを削除します。例えば、マイナー番号 3 のパーティションを削除するのは以下のコマンドです。
(parted) rm 3
変更は Enter を押すとすぐに行われるため、コマンドを確認してからコミットします。 - パーティションを削除したら、print コマンドを使用して、パーティションテーブルから削除されていることを確認します。
(parted) print
parted
シェルを終了します。(parted) quit
/proc/partitions
ファイルの内容を調べて、パーティションが削除されたことをカーネルが認識していることを確認します。# cat /proc/partitions
/etc/fstab
ファイルからパーティションを削除します。削除したパーティションを宣言している行を見つけ、ファイルから削除します。- システムが新しい
/etc/fstab
設定を登録するように、マウントユニットを再生成します。#
systemctl daemon-reload
13.4. パーティションタイプの設定
systemd-gpt-auto-generator
などのオンザフライジェネレーターにとって重要です。
fdisk
ユーティリティーを起動し、t コマンドを使用してパーティションタイプを設定できます。以下の例は、最初のパーティションのパーティションタイプを 0x83 (Linux のデフォルト) に変更する方法を示しています。
#
fdisk /dev/sdc Command (m for help): t Selected partition1
Partition type (type L to list all types):83
Changed type of partition 'Linux LVM' to 'Linux'.
parted
ユーティリティーは、パーティションタイプをflags にマッピングすることでパーティションタイプを制御します。これは、エンドユーザーにとっては役に立ちません。parted
ユーティリティーは、LVM や RAID などの特定のパーティションタイプのみを処理できます。たとえば、parted を使用した最初のパーティションから lvm フラグを削除するには、次のコマンドを実行します。
#
parted /dev/sdc 'set 1 lvm off'
13.5. fdisk でのパーティションのサイズ変更
fdisk
ユーティリティーを使用すると、GPT、MBR、Sun、SGI、および BSD パーティションテーブルを作成および操作できます。GUID パーティションテーブル(GPT)のディスクでは、fdisk
GPT サポートは実験的なフェーズであるため、parted
ユーティリティーを使用することが推奨されます。
fdisk
を使用してパーティションサイズを変更する唯一の方法は、パーティションを削除して再作成するため、パーティションのサイズを変更する前に、ファイルシステムに保存されているデータを バックアップ して手順をテストします。
手順13.4 パーティションのサイズ変更
fdisk
を使用してパーティションのサイズを変更するには、以下を実行します。
- デバイスをアンマウントします。
#
umount /dev/vda - fdisk disk_name を実行します。以下に例を示します。
#
fdisk /dev/vda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p
オプションを使用して、削除するパーティションの行番号を決定します。Command (m for help): p Disk /dev/vda: 16.1 GB, 16106127360 bytes, 31457280 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0006d09a Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 31457279 15215616 8e Linux LVM
- d オプションを使用してパーティションを削除します。複数のパーティションが利用可能な場合は、fdisk により、削除するパーティションの数を指定するようにプロンプトが表示されます。
Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 is deleted
n
オプションを使用してパーティションを作成し、プロンプトに従います。今後サイズを変更する場合は、十分な領域を確保してください。fdisk のデフォルト動作(Enter
を押す)は、デバイス上のすべての領域を使用することです。パーティションの終わりをセクターで指定するか、+ <size> <suffix> を使用して人間が判読できるサイズ を指定できます(例:+500M、または +10G)。fdisk はパーティションの終わりを物理セクターに合わせるため、すべての空き領域を使用しない場合は、人間が判読可能なサイズの指定を使用することを Red Hat は推奨しています。正確な数(セクター内)を指定してサイズを指定すると、fdisk はパーティションの終わりをあわせません。Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): *Enter* Using default response p Partition number (2-4, default 2): *Enter* First sector (1026048-31457279, default 1026048): *Enter* Using default value 1026048 Last sector, +sectors or +size{K,M,G} (1026048-31457279, default 31457279): +500M Partition 2 of type Linux and of size 500 MiB is set
- パーティションのタイプを LVM に設定します。
Command (m for help): t Partition number (1,2, default 2): *Enter* Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'
- エラーが選択したパーティションで不安定になる可能性があるため、変更が正しい場合は、w オプションで変更を書き込みます。
- デバイスで e2fsck を実行して、整合性をチェックします。
#
e2fsck /dev/vda e2fsck 1.41.12 (17-May-2010) Pass 1:Checking inodes, blocks, and sizes Pass 2:Checking directory structure Pass 3:Checking directory connectivity Pass 4:Checking reference counts Pass 5:Checking group summary information ext4-1:11/131072 files (0.0% non-contiguous),27050/524128 blocks - デバイスをマウントします。
#
mount /dev/vda
第14章 Snapper でのスナップショットの作成と管理
14.1. Snapper の初期設定の作成
手順14.1 Snapper 設定ファイルの作成
- 以下のいずれかを作成または選択します。
- シンプロビジョニングされた論理ボリューム (Red Hat がサポートするファイルシステムがその上にある)、または
- Btrfs サブボリューム。
- ファイルシステムをマウントします。
- このボリュームを定義する設定ファイルを作成します。LVM2 の場合:
#
snapper -c config_name create-config -f "lvm(fs_type)" /mount-pointたとえば、/lvm_mount にマウントした ext4 ファイルシステムを持つ LVM2 サブボリュームに、lvm_config という設定ファイルを作成する場合は、次のコマンドを実行します。#
snapper -c lvm_config create-config -f "lvm(ext4)" /lvm_mountBtrfs の場合:#
snapper -c config_name create-config -f btrfs /mount-point- -c config_name オプションは、設定ファイルの名前を指定します。
- create-config は snapper に設定ファイルを作成するように指示します。
- -f file_system は snapper に、使用するファイルシステムを指示します。これを省略すると、snapper がファイルシステムの検出を試みます。
- /mount-point は、サブボリュームまたはシンプロビジョニングされた LVM2 ファイルシステムがマウントされる場所です。
または、/btrfs_mount
にマウントされている Btrfs サブボリュームにbtrfs_config
という設定ファイルを作成するには、次のコマンドを実行します。#
snapper -c btrfs_config create-config -f btrfs /btrfs_mount
/etc/snapper/configs/
ディレクトリーに保存されます。
14.2. Snapper スナップショットの作成
- プレスナップショット
- プレスナップショットは、ポストスナップショットの作成元として機能します。この 2 つは密接に関連しており、2 つのポイント間でファイルシステムの修正を追跡するように設計されています。ポストスナップショットを作成する前に、プレスナップショットを作成する必要があります。
- ポストスナップショット
- ポストスナップショットは、プレスナップショットのエンドポイントとして機能します。結合されたプレスナップショットとポストスナップショットは、比較の範囲を定義します。デフォルトでは、すべての新しい snapper ボリュームは、関連するポストスナップショットが正常に作成された後にバックグラウンド比較を作成するように設定されています。
- シングルスナップショット
- 1 つのスナップショットとは、特定の時点で作成されたスタンドアロンのスナップショットのことです。これらを使用すると、修正のタイムラインを追跡し、後で戻るための一般的なポイントを持つために使用することができます
14.2.1. プレスナップショットとポストスナップショットのペアの作成
14.2.1.1. Snapper を使用したプレスナップショットの作成
#
snapper -c config_name create -t pre
pre
、post
または single
です。
lvm_config
設定ファイルを使用してプレスナップショットを作成するには、以下のコマンドを実行します。
#
snapper -c SnapperExample create -t pre -p
1
-p
オプションは、作成されたスナップショットの番号を出力しますが、使用するかどうかは任意です。
14.2.1.2. Snapper を使用しポストスナップショットの作成
手順14.2 ポストスナップショットの作成
- プレスナップショットの数を指定します。
#
snapper -c config_name listたとえば、設定ファイルlvm_config
を使用して作成されたスナップショットの一覧を表示するには、次のコマンドを実行します。#
snapper -c lvm_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+-------------------+------+----------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Mon 06<...> | root | | |この出力は、プレスナップショットが番号 1 であることを示しています。 - 事前に作成したプレスナップショットにリンクされる、ポストスナップショットを作成します。
#
snapper -c config_file create -t post --pre-num pre_snapshot_number- -t post オプションは、ポストスナップショットの作成を指定します。
- --pre-num オプションは、対応するプレスナップショットを指定します。
たとえば、lvm_config
設定ファイルを使用してポストスナップショットを作成し、プレスナップショット番号 1 にリンクするには、次のコマンドを実行します。#
snapper -c lvm_config create -t post --pre-num 1 -p 2-p
オプションは、作成されたスナップショットの番号を出力しますが、使用するかどうかは任意です。 - プレスナップショット 1 とポストスナップショット 2 が作成され、ペアになりました。list コマンドを使用してこれを確認します。
#
snapper -c lvm_config list Type | # | Pre # | Date | User | Cleanup | Description | Userdata -------+---+-------+-------------------+------+----------+-------------+--------- single | 0 | | | root | | current | pre | 1 | | Mon 06<...> | root | | | post | 2 | 1 | Mon 06<...> | root | | |
14.2.1.3. スナップショット前およびスナップショット後のコマンドのラップ
- snapper create pre snapshot コマンドを実行している。
- コマンドの実行、またはファイルシステムのコンテンツに影響を与える可能性があるアクションを実行するコマンドのリスト。
- snapper create post snapshot コマンドを実行している。
手順14.3 スナップショット前およびスナップショット後のコマンドのラップ
- プレスナップショットとポストスナップショットでコマンドをラップするには、以下のコマンドを実行します。
#
snapper -c lvm_config create --command "command_to_be_tracked"たとえば、/lvm_mount/hello_file
ファイルの作成を追跡するには、次のコマンドを実行します。#
snapper -c lvm_config create --command "echo Hello > /lvm_mount/hello_file" - これを確認するには、status コマンドを使用します。
#
snapper -c config_file status first_snapshot_number..second_snapshot_numberたとえば、最初の手順で行った変更を追跡するには、以下のコマンドを実行します。#
snapper -c lvm_config status 3..4 +..... /lvm_mount/hello_file必要に応じて、list コマンドを使用してスナップショットの番号を確認します。status コマンドの詳細は、「スナップショット間での変更の追跡」 を参照してください。
14.2.2. 1 つのスナップショットの作成
-t
オプションのみが単一を指定します。1 つのスナップショットを使用すれば、他のスナップショットとは無関係に、1 つのスナップショットを作成できます。ただし、比較を自動的に生成したり、追加情報をリスト表示したりせずに、LVM2 シンボリュームのスナップショットを簡単に作成したい場合は、「スナップショット」 で説明しているように、Red Hat では、この目的で Snapper の代わりに System Storage Manager を使用することを推奨しています。
#
snapper -c config_name create -t single
lvm_config
設定ファイルを使用して単一のスナップショットを作成します。
#
snapper -c lvm_config create -t single
14.2.3. 自動スナップショットを作成するための Snapper の設定
- 10 時間ごとのスナップショットと、最後の 1 時間ごとのスナップショットは、1 日単位のスナップショットとして保存されます。
- 1 日単位 10 のスナップショットと、1 カ月の最後の 1 日単位のスナップショットは、月単位のスナップショットとして保存されます。
- 月単位 10 のスナップショット、および最後の月単位のスナップショットは年単位のスナップショットとして保存されます。
- 年単位 10 のスナップショット
/etc/snapper/config-templates/default
ファイルで指定されます。snapper create-config コマンドを使用して設定を作成すると、指定されていない値はデフォルト設定に基づいて設定されます。/etc/snapper/configs/config_name
ファイルで定義されているボリュームの設定を編集できます。
14.3. スナップショット間での変更の追跡
- status
- status コマンドは、2 つのスナップショット間で作成、変更、または削除されたファイルおよびディレクトリーの一覧を表示します。これは、2 つのスナップショット間の変更の包括的なリストです。このコマンドを使用すると、詳細を必要以上に表示することなく、変更の概要を取得できます。詳細は、「status コマンドでの変更の比較」 を参照してください。
- diff
- diff コマンドは、少なくとも 1 つの変更が検出された場合に、status コマンドから受信した 2 つのスナップショット間で変更されたファイルおよびディレクトリーの差分を表示します。詳細は、「diff コマンドでの変更の比較」 を参照してください。
- xadiff
- xadiff コマンドは、ファイルまたはディレクトリーの拡張属性が 2 つのスナップショット間でどのように変更されたかを比較します。詳細は、「xadiff コマンドでの変更の比較」 を参照してください。
14.3.1. status コマンドでの変更の比較
#
snapper -c config_file status first_snapshot_number..second_snapshot_number
lvm_config
を使用して、スナップショット 1 から 2 の間に加えられた変更を表示します。
#
snapper -c lvm_config status 1..2
tp.... /lvm_mount/dir1
-..... /lvm_mount/dir1/file_a
c.ug.. /lvm_mount/file2
+..... /lvm_mount/file3
....x. /lvm_mount/file4
cp..xa /lvm_mount/file5
+..... /lvm_mount/file3 |||||| 123456
出力 | 意味 |
---|---|
. | 何も変更されていません。 |
+ | ファイルが作成されました。 |
- | ファイルが削除されました。 |
c | コンテンツが変更されました。 |
t | ディレクトリーエントリーのタイプが変更されました。(例: 以前のシンボリックリンクが同じファイル名の通常のファイルに変更されるなど。) |
出力 | 意味 |
---|---|
. | パーミッションは変更されませんでした。 |
p | パーミッションが変更されました。 |
出力 | 意味 |
---|---|
. | ユーザーの所有権は変更されていません。 |
u | ユーザーの所有権が変更されました。 |
出力 | 意味 |
---|---|
. | グループの所有権は変更されていません。 |
g | グループの所有権が変更されました。 |
出力 | 意味 |
---|---|
. | 拡張属性は変更されていません。 |
x | 拡張属性が変更されました。 |
出力 | 意味 |
---|---|
. | ACL は変更されていません。 |
a | ACL が変更されました。 |
14.3.2. diff コマンドでの変更の比較
#
snapper -c config_name diff first_snapshot_number..second_snapshot_number
lvm_config
設定ファイルを使用して作成されたスナップショット 1 とスナップショット 2 の間にファイルに加えられた変更を比較するには、次のコマンドを実行します。
#
snapper -c lvm_config diff 1..2
--- /lvm_mount/.snapshots/13/snapshot/file4 19<...>
+++ /lvm_mount/.snapshots/14/snapshot/file4 20<...>
@@ -0,0 +1 @@
+words
file4
が「単語」を追加するように変更されたことを示しています。
14.3.3. xadiff コマンドでの変更の比較
#
snapper -c config_name xadiff first_snapshot_number..second_snapshot_number
lvm_config
設定ファイルを使用して作成されたスナップショット番号 1 とスナップショット番号 2 の間の xadiff 出力を表示するには、次のコマンドを実行します。
#
snapper -c lvm_config xadiff 1..2
14.4. スナップショット間の変更を元に戻す
1
は最初のスナップショットで、2
は 2 番目のスナップショットです。
snapper -c config_name undochange 1..2
図14.1 時間の経過に伴う Snapper のステータス
[D]
snapshot_1
が作成された時点、file_a
が作成され、file_b
が削除されることを示しています。次に Snapshot_2
が作成され、その後に file_a
が編集され、file_c
が作成されます。これが、システムの現在の状態になります。現在のシステムには、編集バージョンの file_a
があり、file_b
はなく、新しく作成された file_c
があります。
file_a
が作成され、file_b
が削除されます)を作成し、それらを現在のシステムに適用します。そのため、以下に留意してください。
- 現在のシステムには
file_a
がありません。これは、snapshot_1
の作成時にまだ作成されていないためです。 file_b
は存在します。snapshot_1
から現在のシステムにコピーされます。file_c
は、作成が指定の時間外であったため、存在します。
file_b
と file_c
が競合すると、システムが破損する可能性があることに注意してください。
file_a
を snapshot_1
からコピーされたものに置き換えます。これにより、snapshot_2
の作成後に行われたファイルの編集が取り消されます。
mount および unmount コマンドを使用して変更を元に戻す
/etc/snapper/configs/config_name
ファイルには、ユーザーおよびグループを追加できる ALLOW_USERS= 変数および ALLOW_GROUPS= 変数が含まれています。次に、snapperd
を使用すると、追加したユーザーおよびグループのマウント操作を実行できます。
14.5. Snapper スナップショットの削除
#
snapper -c config_name delete snapshot_number
第15章 swap 領域
システム内の RAM の容量 | 推奨されるスワップ領域 | ハイバネートを許可する場合に推奨されるスワップ領域 |
---|---|---|
⩽ 2 GB | RAM 容量の 2 倍 | RAM 容量の 3 倍 |
> 2 GB ~ 8 GB | RAM 容量と同じ | RAM 容量の 2 倍 |
> 8 GB ~ 64 GB | 最低 4GB | RAM 容量の 1.5 倍 |
> 64 GB | 最低 4GB | ハイバネートは推奨されない |
レスキュー
モードで起動している間にスワップ領域を変更する必要があります。『Red Hat Enterprise Linux 7 Installation Guide』 の Booting Your Computer in Rescue Mode を参照してください。ファイルシステムをマウントするように求められたら、 を選択します。
15.1. スワップ領域の追加
15.1.1. LVM2 論理ボリュームでのスワップ領域の拡張
/dev/VolGroup00/LogVol01
が 2 GB 拡張するボリュームであると想定)。
手順15.1 LVM2 論理ボリュームでのスワップ領域の拡張
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
# swapoff -v /dev/VolGroup00/LogVol01
- LVM2 論理ボリュームのサイズを 2 GB 増やします。
# lvresize /dev/VolGroup00/LogVol01 -L +2G
- 新しいスワップ領域をフォーマットします。
# mkswap /dev/VolGroup00/LogVol01
- 拡張論理ボリュームを有効にします。
# swapon -v /dev/VolGroup00/LogVol01
- スワップの論理ボリュームの拡張に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。
$ cat /proc/swaps $ free -h
15.1.2. スワップの LVM2 論理ボリュームの作成
/dev/VolGroup00/LogVol02
が追加するスワップボリュームであると想定します。
- サイズが 2 GB の LVM2 論理ボリュームを作成します。
# lvcreate VolGroup00 -n LogVol02 -L 2G
- 新しいスワップ領域をフォーマットします。
# mkswap /dev/VolGroup00/LogVol02
- 以下のエントリーを
/etc/fstab
ファイルに追加します。/dev/VolGroup00/LogVol02 swap swap defaults 0 0
- システムが新しい設定を登録するように、マウントユニットを再生成します。
#
systemctl daemon-reload - 論理ボリュームでスワップをアクティブにします。
# swapon -v /dev/VolGroup00/LogVol02
- スワップ論理ボリュームの作成に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。
$ cat /proc/swaps $ free -h
15.1.3. スワップファイルの作成
手順15.2 スワップファイルの追加
- 新しいスワップファイルのサイズをメガバイト単位で指定してから、そのサイズに 1024 をかけてブロック数を指定します。たとえばスワップファイルのサイズが 64 MB の場合は、ブロック数が 65536 になります。
- 空のファイルの作成:
# dd if=/dev/zero of=/swapfile bs=1024 count=65536
希望のブロックサイズと同等の値に count を置き換えます。 - 次のコマンドでスワップファイルをセットアップします。
# mkswap /swapfile
- スワップファイルのセキュリティーを変更して、全ユーザーで読み込みができないようにします。
# chmod 0600 /swapfile
- システムの起動時にスワップファイルを有効にするには、root で
/etc/fstab
を編集して、以下のエントリーを追加します。/swapfile swap swap defaults 0 0
次にシステムが起動すると新しいスワップファイルが有効になります。 - システムが新しい
/etc/fstab
設定を登録するように、マウントユニットを再生成します。#
systemctl daemon-reload - スワップファイルをすぐに有効にするには、次のコマンドを実行します。
# swapon /swapfile
- 新しいスワップファイルを作成して有効にできたことをテストするには、アクティブなスワップ容量を調べます。
$ cat /proc/swaps $ free -h
15.2. スワップ領域の削除
15.2.1. LVM2 論理ボリュームでのスワップ領域の縮小
/dev/VolGroup00/LogVol01
が縮小するボリュームであると想定):
手順15.3 LVM2 の swap 論理ボリュームの削減
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
# swapoff -v /dev/VolGroup00/LogVol01
- LVM2 論理ボリュームのサイズを変更して 512 MB 削減します。
# lvreduce /dev/VolGroup00/LogVol01 -L -512M
- 新しいスワップ領域をフォーマットします。
# mkswap /dev/VolGroup00/LogVol01
- 論理ボリュームでスワップをアクティブにします。
# swapon -v /dev/VolGroup00/LogVol01
- スワップ論理ボリュームの縮小に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。
$ cat /proc/swaps $ free -h
15.2.2. スワップの LVM2 論理ボリュームの削除
/dev/VolGroup00/LogVol02
が削除するスワップボリュームであると想定)、以下を実行します。
手順15.4 swap ボリュームグループの削除
- 関連付けられている論理ボリュームのスワップ機能を無効にします。
#
swapoff -v /dev/VolGroup00/LogVol02 - LVM2 論理ボリュームを削除します。
#
lvremove /dev/VolGroup00/LogVol02 /etc/fstab
ファイルから、以下の関連エントリーを削除します。/dev/VolGroup00/LogVol02 swap swap defaults 0 0
- システムが新しい設定を登録するように、マウントユニットを再生成します。
#
systemctl daemon-reload - 削除されたスワップストレージへの参照をすべて
/etc/default/grub
ファイルから削除します。#
vi /etc/default/grub - grub 設定を再構築します。
- BIOS ベースのマシンでは、次を実行します。
#
grub2-mkconfig -o /boot/grub2/grub.cfg - UEFI ベースのマシンでは、次を実行します。
#
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
- 論理ボリュームの削除に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。
$ cat /proc/swaps $ free -h
15.2.3. スワップファイルの削除
手順15.5 swap ファイルの削除
- シェルプロンプトで次のコマンドを実行してスワップファイルを無効にします(
/swapfile
はスワップファイルです)。# swapoff -v /swapfile
/etc/fstab
ファイルからエントリーを削除します。- システムが新しい設定を登録するように、マウントユニットを再生成します。
#
systemctl daemon-reload - 実際のファイルを削除します。
# rm /swapfile
15.3. Swap 領域の移動
- スワップ領域の削除 「スワップ領域の削除」。
- スワップ領域の追加 「スワップ領域の追加」。
第16章 System Storage Manager (SSM)
16.1. SSM のバックエンド
ssmlib/main.py
のコア抽象化レイヤーを使用します。これは、基礎となるテクノロジーの詳細を無視して、デバイス、プール、およびボリュームの抽象化に準拠します。バックエンドを ssmlib/main.py
に登録して、作成、スナップショット、ボリュームやプールの 削除 など、特定のストレージテクノロジーメソッドを処理します。
16.1.1. Btrfs バックエンド
16.1.1.1. Btrfs プール
btrfs_pool
です。
btrfs_device_base_nameの形式で内部使用の名前
を生成します。
16.1.1.2. Btrfs ボリューム
/dev/lvm_pool/lvol001
と表示されます。ボリュームを作成するには、このパスにあるすべてのオブジェクトが存在している必要があります。ボリュームは、マウントポイントで参照することもできます。
16.1.1.3. Btrfs スナップショット
16.1.1.4. Btrfs デバイス
16.1.2. LVM バックエンド
16.1.2.1. LVM プール
lvm_pool
です。
16.1.2.2. LVM ボリューム
16.1.2.3. LVM スナップショット
スナップショット
ボリュームが作成されます。Btrfs とは異なり、LVM ではスナップショットと通常のボリュームを区別できるため、スナップショット名を特定のパターンに一致させる必要はありません。
16.1.2.4. LVM デバイス
16.1.3. 暗号化バックエンド
16.1.3.1. 暗号化ボリューム
16.1.3.2. 暗号化スナップショット
16.1.4. 複数のデバイス (MD) のバックエンド
16.2. 一般的な SSM タスク
16.2.1. SSM のインストール
# yum install system-storage-manager
- LVM バックエンドには
lvm2
パッケージが必要です。 - Btrfs バックエンドには
btrfs-progs
パッケージが必要です。 - Crypt バックエンドには、
device-mapper
パッケージおよびcryptsetup
パッケージが必要です。
16.2.2. 検出されたすべてのデバイスに関する情報の表示
#
ssm list
----------------------------------------------------------
Device Free Used Total Pool Mount point
----------------------------------------------------------
/dev/sda 2.00 GB PARTITIONED
/dev/sda1 47.83 MB /test
/dev/vda 15.00 GB PARTITIONED
/dev/vda1 500.00 MB /boot
/dev/vda2 0.00 KB 14.51 GB 14.51 GB rhel
----------------------------------------------------------
------------------------------------------------
Pool Type Devices Free Used Total
------------------------------------------------
rhel lvm 1 0.00 KB 14.51 GB 14.51 GB
------------------------------------------------
---------------------------------------------------------------------------------
Volume Pool Volume size FS FS size Free Type Mount point
---------------------------------------------------------------------------------
/dev/rhel/root rhel 13.53 GB xfs 13.52 GB 9.64 GB linear /
/dev/rhel/swap rhel 1000.00 MB linear
/dev/sda1 47.83 MB xfs 44.50 MB 44.41 MB part /test
/dev/vda1 500.00 MB xfs 496.67 MB 403.56 MB part /boot
---------------------------------------------------------------------------------
- devices 引数または dev 引数を実行すると、デバイスの一部が省略されます。たとえば、CDRoms デバイスや DM/MD デバイスは、ボリュームとして記載されているときに意図的に非表示になります。
- バックエンドの中にはスナップショットに対応していないものや、通常のボリュームとスナップショットを区別できないものがあります。これらのバックエンドのいずれかで snapshot 引数を実行すると、SSM はスナップショットを識別するためにボリューム名を認識しようとします。SSM の正規表現がスナップショットパターンと一致しない場合、スナップショットは認識されません。
- メインの Btrfs ボリューム (ファイルシステム自体) を除き、マウントされていない Btrfs ボリュームは表示されません。
16.2.3. 新しいプール、論理ボリューム、およびファイルシステムの作成
/dev/vdb
および /dev/vdc
、1G の論理ボリューム、および XFS ファイルシステムを持つデフォルト名で新しいプールが作成されます。
- --fs オプションは、必要なファイルシステムのタイプを指定します。現在対応しているファイルシステムの種類は次のとおりです。
- ext3
- ext4
- xfs
- btrfs
- -s は、論理ボリュームのサイズを指定します。単位を定義するために、次の接尾辞がサポートされています。
- キロバイトの場合は
k
または k M
またはm
(メガバイト)- ギガバイトの場合は
G
またはg
- テラバイトの場合は
T
またはt
p
また
は p (ペタバイト)e
またはe
(エクサバイト)
- また、-s オプションを使用すると、新しいサイズをパーセンテージで指定できます。例を参照してください。
- プールサイズの合計 10 パーセントで 10
%
- 10
%FREE
: 空きプール領域の 10 パーセントの場合 - 使用されているプール領域の 10
%USED
/dev/vdb
と /dev/vdc
)は、作成する 2 つのデバイスです。
#
ssm create --fs xfs -s 1G /dev/vdb /dev/vdc
Physical volume "/dev/vdb" successfully created
Physical volume "/dev/vdc" successfully created
Volume group "lvm_pool" successfully created
Logical volume "lvol001" created
lvm_pool
を使用していました。ただし、特定の名前を使用して、既存の命名規則に適合させるには、-p オプションを使用する必要があります。
#
ssm create --fs xfs -p new_pool -n XFS_Volume /dev/vdd
Volume group "new_pool" successfully created
Logical volume "XFS_Volume" created
16.2.4. ファイルシステムの整合性の確認
lvol001
内のすべてのデバイスをチェックするには、ssm check /dev/lvm_pool/lvol001
コマンドを実行します。
#
ssm check /dev/lvm_pool/lvol001
Checking xfs file system on '/dev/mapper/lvm_pool-lvol001'.
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- scan filesystem freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
- scan (but don't clear) agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
- traversing filesystem ...
- traversal finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
No modify flag set, skipping filesystem flush and exiting.
16.2.5. ボリュームのサイズを大きくする
/dev/vdb
に論理ボリュームが 1 つあり、これは 900MB の lvol001
です。
#
ssm list
-----------------------------------------------------------------
Device Free Used Total Pool Mount point
-----------------------------------------------------------------
/dev/vda 15.00 GB PARTITIONED
/dev/vda1 500.00 MB /boot
/dev/vda2 0.00 KB 14.51 GB 14.51 GB rhel
/dev/vdb 120.00 MB 900.00 MB 1.00 GB lvm_pool
/dev/vdc 1.00 GB
-----------------------------------------------------------------
---------------------------------------------------------
Pool Type Devices Free Used Total
---------------------------------------------------------
lvm_pool lvm 1 120.00 MB 900.00 MB 1020.00 MB
rhel lvm 1 0.00 KB 14.51 GB 14.51 GB
---------------------------------------------------------
--------------------------------------------------------------------------------------------
Volume Pool Volume size FS FS size Free Type Mount point
--------------------------------------------------------------------------------------------
/dev/rhel/root rhel 13.53 GB xfs 13.52 GB 9.64 GB linear /
/dev/rhel/swap rhel 1000.00 MB linear
/dev/lvm_pool/lvol001 lvm_pool 900.00 MB xfs 896.67 MB 896.54 MB linear
/dev/vda1 500.00 MB xfs 496.67 MB 403.56 MB part /boot
--------------------------------------------------------------------------------------------
~]# ssm resize -s +500M /dev/lvm_pool/lvol001 /dev/vdc Physical volume "/dev/vdc" successfully created Volume group "lvm_pool" successfully extended Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. Extending logical volume lvol001 to 1.37 GiB Logical volume lvol001 successfully resized meta-data=/dev/mapper/lvm_pool-lvol001 isize=256 agcount=4, agsize=57600 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=230400, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 230400 to 358400
#
ssm list
------------------------------------------------------------------
Device Free Used Total Pool Mount point
------------------------------------------------------------------
/dev/vda 15.00 GB PARTITIONED
/dev/vda1 500.00 MB /boot
/dev/vda2 0.00 KB 14.51 GB 14.51 GB rhel
/dev/vdb 0.00 KB 1020.00 MB 1.00 GB lvm_pool
/dev/vdc 640.00 MB 380.00 MB 1.00 GB lvm_pool
------------------------------------------------------------------
------------------------------------------------------
Pool Type Devices Free Used Total
------------------------------------------------------
lvm_pool lvm 2 640.00 MB 1.37 GB 1.99 GB
rhel lvm 1 0.00 KB 14.51 GB 14.51 GB
------------------------------------------------------
----------------------------------------------------------------------------------------------
Volume Pool Volume size FS FS size Free Type Mount point
----------------------------------------------------------------------------------------------
/dev/rhel/root rhel 13.53 GB xfs 13.52 GB 9.64 GB linear /
/dev/rhel/swap rhel 1000.00 MB linear
/dev/lvm_pool/lvol001 lvm_pool 1.37 GB xfs 1.36 GB 1.36 GB linear
/dev/vda1 500.00 MB xfs 496.67 MB 403.56 MB part /boot
----------------------------------------------------------------------------------------------
#
ssm resize -s-50M /dev/lvm_pool/lvol002
Rounding size to boundary between physical extents: 972.00 MiB
WARNING: Reducing active logical volume to 972.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvol002? [y/n]: y
Reducing logical volume lvol002 to 972.00 MiB
Logical volume lvol002 successfully resized
16.2.6. スナップショット
lvol001
のスナップショットを作成するには、次のコマンドを使用します。
#
ssm snapshot /dev/lvm_pool/lvol001
Logical volume "snap20150519T130900" created
#
ssm list
----------------------------------------------------------------
Device Free Used Total Pool Mount point
----------------------------------------------------------------
/dev/vda 15.00 GB PARTITIONED
/dev/vda1 500.00 MB /boot
/dev/vda2 0.00 KB 14.51 GB 14.51 GB rhel
/dev/vdb 0.00 KB 1020.00 MB 1.00 GB lvm_pool
/dev/vdc 1.00 GB
----------------------------------------------------------------
--------------------------------------------------------
Pool Type Devices Free Used Total
--------------------------------------------------------
lvm_pool lvm 1 0.00 KB 1020.00 MB 1020.00 MB
rhel lvm 1 0.00 KB 14.51 GB 14.51 GB
--------------------------------------------------------
----------------------------------------------------------------------------------------------
Volume Pool Volume size FS FS size Free Type Mount point
----------------------------------------------------------------------------------------------
/dev/rhel/root rhel 13.53 GB xfs 13.52 GB 9.64 GB linear /
/dev/rhel/swap rhel 1000.00 MB linear
/dev/lvm_pool/lvol001 lvm_pool 900.00 MB xfs 896.67 MB 896.54 MB linear
/dev/vda1 500.00 MB xfs 496.67 MB 403.56 MB part /boot
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Snapshot Origin Pool Volume size Size Type
----------------------------------------------------------------------------------
/dev/lvm_pool/snap20150519T130900 lvol001 lvm_pool 120.00 MB 0.00 KB linear
----------------------------------------------------------------------------------
16.2.7. 項目の削除
#
ssm remove lvm_pool
Do you really want to remove volume group "lvm_pool" containing 2 logical volumes? [y/n]: y
Do you really want to remove active logical volume snap20150519T130900? [y/n]: y
Logical volume "snap20150519T130900" successfully removed
Do you really want to remove active logical volume lvol001? [y/n]: y
Logical volume "lvol001" successfully removed
Volume group "lvm_pool" successfully removed
16.3. SSM リソース
- man ssm ページには、適切な説明と例が記載されています。また、記載するコマンドやオプションの詳細については、こちらを参照してください。
- SSM のローカルドキュメントは、
doc/
ディレクトリーに保存されます。 - SSM Wiki は、http://storagemanager.sourceforge.net/index.html からアクセスできます。
- https://lists.sourceforge.net/lists/listinfo/storagemanager-devel からメーリングリストのサブスクライブ、http://sourceforge.net/mailarchive/forum.php?forum_name=storagemanager-devel からメーリングリストのアーカイブが可能です。メーリングリストは、開発者がコミュニケーションをとる場所です。現在、ユーザーのメーリングリストはありませんので、そこにも質問を投稿してください。
第17章 ディスククォータ
17.1. ディスククォータの設定
/etc/fstab
ファイルを変更して、ファイルシステムごとのクォータを有効にします。- ファイルシステムを再マウントします。
- クォータデータベースファイルを作成して、ディスク使用状況テーブルを生成します。
- クォータポリシーを割り当てます。
17.1.1. クォータの有効化
手順17.1 クォータの有効化
- root でログインします。
/etc/fstab
ファイルを編集します。- クォータを必要とするファイルシステムに usrquota オプションまたは grpquota オプションのいずれか、または両方のオプションを追加します。
例17.1 /etc/fstab
を編集します。
vim
を使用するには、以下を入力します。
#
vim /etc/fstab
例17.2 クォータの追加
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol02 /home ext3 defaults,usrquota,grpquota 1 2 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 . . .
/home
ファイルシステムで、ユーザーおよびグループの両方のクォータが有効になっています。
/etc/fstab
ファイルでクォータポリシーを設定するために使用できます。
17.1.2. ファイルシステムの再マウント
fstab
エントリーが変更された各ファイルシステムを再マウントします。ファイルシステムがどのプロセスでも使用されていない場合は、以下のいずれかの方法を使用します。
- umount コマンドの後に mount コマンドを実行してファイルシステムを再 マウント します。さまざまなファイルシステムタイプのマウントとアンマウントを行う具体的な構文は、umount と mount の man ページを参照してください。
- mount -o remount file-systemコマンド( file-system はファイルシステムの名前)を実行して、ファイルシステムを再マウントします。たとえば、
/home
ファイルシステムを再マウントするには、mount -o remount /home コマンドを実行します。
17.1.3. クォータデータベースファイルの作成
手順17.2 クォータデータベースファイルの作成
- 次のコマンドを使用して、ファイルシステムにクォータファイルを作成します。
#
quotacheck -cug /file system - 次のコマンドを使用して、ファイルシステムごとの現在のディスク使用量の表を生成します。
#
quotacheck -avug
- c
- クォータファイルを、クォータを有効にしたファイルシステムごとに作成するように指定します。
- u
- ユーザークォータを確認します。
- g
- グループクォータを確認します。
-g
のみを指定すると、グループクォータファイルのみが作成されます。
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータファイルのみが作成されます。
- a
- クォータが有効にされた、ローカルマウントのファイルシステムをすべてチェック
- v
- クォータチェックの進行状態について詳細情報を表示
- u
- ユーザーディスククォータの情報をチェック
- g
- グループディスククォータの情報をチェック
/home
などの、クォータが有効になっているローカルにマウントされた各ファイルシステムのデータが取り込まれます。
17.1.4. ユーザーごとのクォータ割り当て
- ユーザーは、ユーザークォータを設定する前に存在する必要があります。
手順17.3 ユーザーごとのクォータ割り当て
- ユーザーにクォータを割り当てるには、次のコマンドを使用します。
#
edquota usernameusername を、クォータを割り当てるユーザーに置き換えます。 - ユーザーのクォータが設定されていることを確認するには、次のコマンドを使用します。
#
quota username
例17.3 ユーザーへのクォータの割り当て
/home
パーティションの /etc/fstab
でクォータが有効になっている場合(以下の例では/dev/VolGroup00/LogVol02
)、コマンド edquota testuser を実行すると、システムのデフォルトとして設定されているエディターに次のように表示されます。
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 0 0 37418 0 0
EDITOR
環境変数で定義されるテキストエディターは、edquota により使用されます。エディターを変更するには、~/.bash_profile
ファイルの EDITOR
環境変数を、選択したエディターのフルパスに設定します。
inodes
列には、ユーザーが現在使用している inode の数が表示されます。最後の 2 列は、ファイルシステムのユーザーに対するソフトおよびハードの inode 制限を設定するのに使用されます。
例17.4 必要な制限の変更
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440436 500000 550000 37418 0 0
#
quota testuser
Disk quotas for user username (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb 1000* 1000 1000 0 0 0
17.1.5. グループごとのクォータ割り当て
- グループは、グループクォータを設定する前に存在している必要があります。
手順17.4 グループごとのクォータ割り当て
- グループクォータを設定するには、次のコマンドを使用します。
#
edquota -g groupname - グループクォータが設定されていることを確認するには、次のコマンドを使用します。
#
quota -g groupname
例17.5 クォータのグループへの割り当て
devel
グループのグループクォータを設定するには、コマンドを使用します。
#
edquota -g devel
Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/VolGroup00/LogVol02 440400 0 0 37418 0 0
#
quota -g devel
17.1.6. ソフト制限の猶予期間の設定
#
edquota -t
17.2. ディスククォータの管理
17.2.1. 有効化と無効化
#
quotaoff -vaug
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータのみが無効になります。-g
のみを指定すると、グループクォータのみが無効になります。-v スイッチにより、コマンドの実行時に詳細なステータス情報が表示されます。
#
quotaon
#
quotaon -vaug
-u
オプションまたは -g
オプションのいずれも指定しない場合は、ユーザークォータのみが有効になります。-g
のみが指定されている場合は、グループのクォータのみが有効になります。
/home
などの特定のファイルシステムのクォータを有効にするには、次のコマンドを使用します。
#
quotaon -vug /home
17.2.2. ディスククォータに関するレポート
例17.6 repquota コマンドの出力
*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol02 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
-a
) のディスク使用状況レポートを表示するには、次のコマンドを使用します。
# repquota -a
--
は、ブロックまたは inode の制限を超えるかを簡単に判断できます。いずれかのソフト制限を超えると、対応する -
の代わりに +
が表示されます。最初の -
はブロックの制限を表し、2 つ目は inode の制限を表します。
grace
列は空白です。ソフト制限が超過した場合、その列には猶予期間に残り時間量に相当する時間指定が含まれます。猶予期間が過ぎると、代わりに 何も
表示されません。
17.2.3. クォータの精度維持
#
quotacheck
- 次回の再起動時に quotacheck を確実に実行する
- ほとんどのシステムに最適な方法この方法は、定期的に再起動する (ビジーな) 複数ユーザーシステムに最も適しています。シェルスクリプトを
/etc/cron.daily/
ディレクトリーまたは/etc/cron.weekly/
ディレクトリーに保存するか、次のコマンドを使用してシェルスクリプトをスケジュールします。#
crontab -ecrontab -e コマンドには、touch /forcequotacheck コマンドが含まれます。このスクリプトは root ディレクトリーに空のforcequotacheck
ファイルを作成するため、起動時にシステムの init スクリプトがこれを検索します。このディレクトリーが検出されると、init スクリプトは quotacheck を実行します。その後、init スクリプトは/forcequotacheck
ファイルを削除します。このように、cron
でこのファイルが定期的に作成されるようにスケジュールすることにより、次回の再起動時に quotacheck を確実に実行することができます。cron の詳細は、man cron を参照してください。 - シングルユーザーモードで quotacheck を実行
- quotacheck を安全に実行する別の方法として、クオータファイルのデータ破損の可能性を回避するためにシングルユーザーモードでシステムを起動して、以下のコマンドを実行する方法があります。
#
quotaoff -vug /file_system#
quotacheck -vug /file_system#
quotaon -vug /file_system - 実行中のシステムで quotacheck を実行
- 必要な場合には、いずれのユーザーもログインしておらず、チェックされているファイルシステムに開いているファイルがない状態のマシン上で quotacheck を実行することができます。quotacheck -vug file_system コマンドを実行します。このコマンドは、quotacheck が指定された file_system を読み取り専用に再マウントできない場合に失敗します。チェックの後には、ファイルシステムは読み込み/書き込みとして再マウントされることに注意してください。警告読み込み/書き込みでマウントされているライブのファイルシステム上での quotacheck の実行は、quota ファイルが破損する可能性があるため、推奨されません。
17.3. ディスククオータのリファレンス
- quotacheck
- edquota
- repquota
- quota
- quotaon
- quotaoff
第18章 RAID (Redundant Array of Independent Disks)
- 速度を高める
- 1 台の仮想ディスクを使用してストレージ容量を増加する
- ディスク障害によるデータ損失を最小限に抑える
18.1. RAID のタイプ
ファームウェア RAID
ハードウェア RAID
ソフトウェア RAID
- マルチスレッド設計
- 再構築なしで Linux マシン間でのアレイの移植性
- アイドルシステムリソースを使用したバックグラウンドのアレイ再