Gentooの創設者によるLinuxの基本。 パート4(1/4):ファイルシステム、パーティション、およびブロックデバイス

初心者向けチュートリアルシリーズの第4部の最初の部分では、ブロックデバイス、パーティション、およびファイルシステムについて説明します。 fdiskユーティリティを使用してハードドライブをパーティション分割し、ファイルシステムを作成してマウントする方法を学習します。 fstab構成ファイルの構文をよく理解してください。



Gentooの創設者によるLinuxの基本ナビゲーション:

パートI: 1、2、3、4

パートII: 1、2、3、4、5

パートIII: 1、2、3、4

パートIV
  1. ファイルシステム、パーティション、およびブロックデバイス (はじめに)
  2. システムブートとブートレベル
  3. ファイルシステムクォータ
  4. システムログ(合計とリンク)



まえがき


このガイドについて


101 Linux Professional Instituteの試験準備ガイドの4つのパートの最後であるシステム管理へようこそ。 このセクションでは、ファイルシステム、ブートプロセス、ランレベル、ファイルクォータ、システムログ(ログ)などのLinux管理スキルに精通します。



このガイドは、システム管理者が知っておくべき多くの基本的な問題があるため、システム管理者として初めて自分自身を試してみたい人に特に役立ちます。 Linuxを初めて使用する場合は、 パート1から学習を始めることをお勧めします。 一部の人にとっては、この資料のほとんどは新しいものですが、経験豊富なLinuxユーザーはこのガイドで新しいものを見つけるかもしれません。これは、Linuxシステム管理に関する知識を更新し、LPI認定の次のレベルに備える素晴らしい方法です。



このチュートリアルシリーズの終わりまでに(LPI 101および102試験には合計8つあります)、Linuxシステム管理者になるために必要な知識が得られ、必要に応じてLinux Professional InstituteからLPIC認定の第1レベルを達成する準備が整います。



ファイルシステム、パーティション、ブロックデバイス


ブロックデバイスの概要


このセクションでは、ファイルシステム、パーティション、ブロックデバイスなど、ディスクを操作するLinuxの側面について説明します。 ディスクとファイルシステムの長所と短所を理解したらすぐに、Linuxでパーティションとファイルシステムをセットアップするプロセスを分析します。



最初に、「ブロックデバイス」に精通します。 最もよく知られているブロックデバイスは、Linuxシステムの最初のIDEドライブである可能性があります: /dev/ h da



システムにSCSIディスクがある場合(または、おそらく最新のlibATAドライバーを使用します-約)、その後、次のように呼び出されます: /dev/ s da



抽象化レベル


ブロックデバイスは、ディスクへの抽象的なインターフェースを提供します。 ユーザープログラムは、これらのブロックデバイスを使用して、IDE、SCSI、またはその他のドライブを心配することなく、ドライブと対話できます。 プログラムは、512バイトのランダムアクセスブロックのシーケンスとしてディスク領域を簡単にアドレス指定できます。



セクション


Linuxでは、特定のブロックデバイスを引数として指定して、特別なmkfsコマンド(またはmke2fsmkreiserfsなど)を使用してファイルシステム(FS)が作成されます。



ただし、単一のファイルシステムに対して/dev/hda/dev/sdaなど、ディスク全体を表すブロックデバイスを使用することは可能ですが、実際にはほとんど使用されません。 代わりに、ディスクブロックデバイスは、パーティションと呼ばれる、より小さく便利なブロックデバイスに分割されます。 パーティションはfdiskというツールを使用して作成されます。このツールは、各ディスクにあるパーティションテーブルを作成および編集するために使用されます。 パーティションテーブルは、ディスク全体のスペースを正確に分割する方法を決定します。



fdiskの概要


fdiskを実行して、ディスク全体を表すブロックデバイスを指定することにより、ディスクパーティションテーブルを確認できます。



注:

パーティションテーブルにアクセスするための代替ツール: cfdiskpartedおよびpartimagecfdisk使用を避けることをお勧めします(fdiskマニュアルで述べられていることにもかかわらず)。



# fdisk /dev/hda
# fdisk /dev/sda

重要!

現在使用中または重要なデータを保存しているファイルシステムのいずれかがディスクパーティションテーブルに含まれている場合は、ディスクパーティションテーブルを保存または変更しないでください 。 これらのアクションにより、ディスク上のデータが失われる可能性があります。



内部fdisk


fdiskを実行すると、次のようなプロンプトが表示されます。



 コマンド(ヘルプはm): 

pを入力して、ディスクの現在のパーティションテーブルを表示します。



 コマンド(ヘルプはm):p

ディスク/ dev / hda:240ヘッド、63セクター、2184シリンダー
単位= 15120のシリンダー* 512バイト

   デバイスブートスタートエンドブロックIDシステム
 / dev / hda1 1 14 105808+ 83 Linux
 / dev / hda2 15 49 264600 82 Linuxスワップ
 / dev / hda3 50 70 158760 83 Linux
 / dev / hda4 71 2184 15981840 5拡張
 / dev / hda5 71209 1050808+ 83 Linux
 / dev / hda6 210348 1050808+ 83 Linux
 / dev / hda7 349626 2101648+ 83 Linux
 / dev / hda8 627904 2101648+ 83 Linux
 / dev / hda9 905 2184 9676768+ 83 Linux

コマンド(ヘルプはm): 

このディスクは、7つのLinuxファイルシステム(それぞれ「Linux」とラベル付けされた対応するパーティション)と、スワップパーティション(「Linuxスワップ」とラベル付け)をホストするように構成されています。



ブロックデバイスとパーティションの概要


/dev/hda1から/dev/hda9始まるセクションに対応する左側のブロックデバイスの名前に注意してください。 PC時代の初めには、パーティションプログラムは最大4つのセクション(プライマリと呼ばれる)を許可していました。 これは少なすぎるため、この制限を回避するために拡張セクションが考案されました。 拡張セクションはプライマリに非常に似ており、4つのプライマリセクションの制限にカウントされます。 ただし、拡張セクションには、いわゆる任意の数を含めることができます。 4つのパーティションの制限を効果的にバイパスする、それ自体内の論理パーティション。



ディスクレイアウト


hda5以降のすべてのパーティションは論理パーティションです。 hda1からhda4までのhda4 、プライマリパーティションまたはhda4パーティション用に予約されhda4ます。



この例では、パーティションc hda1がプライマリパーティションです。 hda4は、 hda5からhda9までの論理パーティションを含む拡張パーティションです。 /dev/hda4を使用してFSを保存することはありませんhda5パーティション( hda9コンテナーとして機能するだけです。



パーティションの種類


また、各セクションには、セクションタイプとも呼ばれる「 Id 」があることに注意してください。 新しいパーティションを作成するたびに、パーティションの種類が正しく設定されていることを確認する必要があります。 83の値はLinux FSパーティションに有効で、82はスワップパーティションに有効です。 タイプ値を設定するには、 fdisk 「t」オプションを使用します。 Linuxカーネルは、ファイルシステムデバイスとスワップの起動中にディスク上の自動検出にパーティションタイプ設定を使用します。



fdiskを使用してパーティションを作成する


Linuxのディスクパーティションの概念がわかったので、LinuxをインストールするためにディスクとFSにパーティションを作成するプロセスを開始します。 ディスク上のパーティションを構成してから、それらにファイルシステムを作成します。 この段階で、データのディスクを完全にクリアし、それを使用してLinuxシステムの新しいコピーをインストールします。



重要!

これらの手順を実行するには、重要な情報が含まれていないハードディスクが必要です。これは、この段階でディスク上のデータが削除されるためです。 これがまったく初めての場合は、これらの手順を読むか、テストシステム(たとえば、仮想マシン-およそEd。)でLinuxブートディスクを使用して、データが危険にさらされないようにすることができます。



破壊後のディスクはどのようになりますか


ディスクにパーティションを作成するプロセスを完了すると、パーティションテーブルは次のようになります。



 ディスク/ dev / hda:30.0 GB、30005821440バイト
 240ヘッド、63セクター/トラック、3876シリンダー
単位= 15120のシリンダー* 512 = 7741440バイト

   デバイスブートスタートエンドブロックIDシステム
 / dev / hda1 * 1 14 105808+ 83 Linux
 / dev / hda2 15 81 506520 82 Linuxスワップ
 / dev / hda3 82 3876 28690200 83 Linux

コマンド(ヘルプはm): 

例のコメント


提案した新しい構成では、3つのセクションがあります。 最初は、ブートパーティションと呼ばれる、ディスクの先頭にある小さなパーティション( /dev/hda1 )です。 ブートパーティションの目的は、ブートに関連するすべての重要なデータ(GRUBブートローダーとLinuxカーネル)を保存することです。 ブートセクションは、ダウンロード関連の情報を保存する安全な場所を提供します。 通常の操作中、ブートパーティションはセキュリティのためにマウント解除したままにしておく必要があります。 SCSIディスクがある場合(または、最新のlibATAライブラリ(およそ)を使用する場合)、ブートパーティションは/dev/sda1と呼ばれる可能性が高いです。



ディスクの先頭にブートパーティション(ブートに必要なものすべてを含む)を保持することをお勧めします。 LILOブートローダーがディスクの1024シリンダーの背後にあるファイルシステムからカーネルをロードできなかった過去からそのルートを取得するため、これは必要ありません。



2番目のセクション( /dev/hda2 )はスワップに使用されます。 カーネルは、RAMにスペースがほとんどない場合、スワップメモリ​​スペースを仮想メモリとして使用します。 パーティションサイズは比較的大きくなく、通常は約512 MBです。 SCSIシステムの場合(および新しいlibATAの場合-約)このセクションは/dev/sda2と呼ばれます。



3番目のパーティション( /dev/hda3 )は大きく、残りのディスクを占有します。 このセクションはルートセクションになり、メインのLinuxファイルシステムを保存します。 SCSIディスク(または新しいlibATA-ed。)の場合、このセクションは/dev/sda3と呼ばれます。



はじめに


ここで、上記の例のようにパーティションを作成するには、IDEディスクまたはSCSIディスク(または最新のlibATA-およそEd。)を使用するかどうかに応じて、それぞれfdisk /dev/hdaまたはfdisk /dev/sdaを入力します。 次に、「p」と入力して、現在のパーティションテーブルを表示します。 ディスク上に保存する必要があるものはありますか? もしそうなら、今すぐやめてください。 続行すると、ディスク上の既存の情報はすべて破棄されます。



重要!

次の手順は、ディスク上のすべての既存データを破壊します! ディスク上にデータがある場合は、その情報が重要ではないことを確認してください。 また、別のドライブのデータを誤って消去しないように、正しいドライブを選択してください。



既存のパーティションを削除する


今こそ、既存のパーティションをすべて削除するときです。 これを行うには、「d」と入力してEnterキーを押します。 削除するパーティション番号を選択するよう求められます。 既存の/dev/hda1パーティションを削除するには、次を入力する必要があります。



Command (m for help): d

Partition number (1-4): 1


セクションは削除がスケジュールされます。 「p」を入力すると表示されなくなりますが、変更を保存するまで削除されません。 間違えてアクションをキャンセルしたい場合は、「q」と入力してEnterキーを押すと、パーティションは削除されません。



システム上のすべてのパーティションを本当に削除したい場合、「p」と入力してパーティションを再度リストし、「d」と削除するパーティションの番号を入力します。 その結果、空のパーティションテーブルが取得されます。



 ディスク/ dev / hda:30.0 GB、30005821440バイト
 240ヘッド、63セクター/トラック、3876シリンダー
単位= 15120のシリンダー* 512 = 7741440バイト

デバイスブートスタートエンドブロックIDシステム

コマンド(ヘルプはm): 

ブートパーティションを作成する


メモリ内のパーティションテーブルが空になったので、ブートパーティションを作成する準備ができました。 これを行うには、「n」と入力して新しいパーティションを作成し、「p」と入力してfdiskにプライマリパーティションが必要であることを伝えます。 次に、「1」を入力して最初のプライマリパーティションを作成します。 最初のシリンダーについて尋ねられたら、Enterを押します。 最後のシリンダーについて尋ねられたら、「+ 100M」と入力して100 MBのパーティションを作成します。 完了したアクションの結論:



Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1

First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +100M


「p」と入力すると、次のパーティションテーブルが表示されます。



Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux


スワップパーティションを作成する


それでは、スワップパーティションを作成しましょう。 これを行うには、「n」と入力して新しいパーティションを作成し、次に「p」と入力してfdiskにプライマリパーティションを作成するよう指示します。 次に、「2」を入力して、2番目のプライマリパーティション、この例では/dev/hda2します。 次に、最初のシリンダーの番号を入力するよう求められ、Enterを押します。最後のシリンダーの番号を入力するよう求められたら、「+ 512M」を入力してサイズ512 MBのスワップパーティションを作成します。 これを行った後、「t」を入力してパーティションのタイプを設定し、「82」を入力してタイプを「Linuxスワップ」に設定します。 これらの手順を完了したら、「p」と入力してパーティションテーブルを表示します。次のようになります。



Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap


ブーツ作り


最後に、ブートフラグをブートパーティションに設定し、変更をディスクに書き込む必要があります。 /dev/hda1パーティションを「ブート」パーティションとしてマークするには、メニューに「a」を入力し、パーティション番号として「1」を入力します。 ここで「p」と入力すると、 /dev/hda1のブート列に文字「*」が含まれていることがわかります。 次に、変更をディスクに書き込みましょう。 これを行うには、「w」と入力してからEnterキーを押します。 Linuxをインストールするようにディスクパーティションが正しく構成されました。



注:

fdiskが再起動を要求する場合は、システムが新しいパーティション設定を決定するように再起動してください。



拡張パーティションと論理パーティション


上記の例では、すべてのデータを保存するFSを含む1つのプライマリセクションを作成しました。 これは、Linuxのインストール後、メインファイルシステムが「/」にマウントされ、すべてのファイルを含むディレクトリツリーが含まれることを意味します。



これは一般的なアプローチですが、別のアプローチも知っておく必要があります。 このアプローチでは、いくつかのファイルシステムの場所としていくつかのパーティションを使用し、それらが一緒になってファイルシステムツリーを形成します。 たとえば、 /home/varを別々のファイルシステムに配置することは非常に一般的です。



hda2は、プライマリパーティションとしてではなく、拡張hda2として作成できます。 次に、論理パーティションhda5hda6hda7 (技術的にはhda2内に配置されhda2 )を作成します。これには、/、 /home/var FSがそれぞれ含まれます。



これらのタイプのマルチシステム構成の詳細については、以下のリソースをご覧ください。



ファイルシステムの作成


パーティションが既に作成されているので、ブートパーティションとルートパーティションにFSをインストールして、データを保存できるようにします。 また、スワップパーティションを構成して、スワップデータを提供します。



LinuxはさまざまなタイプのFSをサポートしています。 それぞれに長所と短所があり、それぞれに特徴があります。 このガイドでは、ext2、ext3、XFS、JFS、ReiserFSファイルシステムの作成について説明します。 この例でファイルシステムを作成する前に、Linuxで使用可能なさまざまなファイルシステムについて簡単に説明します。



ご注意 Ed 。:残念ながら、このサイクルは2003年頃に作者によって書かれたという事実のため、それ以降に登場した、たとえばext4やbtrfsなどの多くの最新の関連ファイルシステムについては言及していません。 しかし、好奇心reader盛な読者であれば、他の場所で簡単に情報を見つけることができると思います。

Ext2ファイルシステム


ext2は長年にわたってLinuxで実績のあるファイルシステムですが、メタデータロギングツールはありません。つまり、起動時にファイルシステムをチェックする時間が非常に長くなる可能性があります。 現在、整合性を非常に迅速にチェックできるジャーナルされたファイルシステムの幅広い選択肢があり、したがって、ジャーナルされていないファイルシステムよりも優先されます。 ジャーナリングされたFSを使用すると、FSの整合性が侵害された場合(たとえば、停電の場合-約Ed。)にシステムの開始時に長い遅延を回避できます。



Ext3ファイルシステム


ext3はext2ファイルシステムのジャーナリングバージョンで、すべてのデータの完全なジャーナリングや順序付けされたジャーナリングなど、他のジャーナリングモードと同様に、迅速な回復のためのメタデータジャーナリングを提供します。 ext3は非常に優れた信頼性の高いFSです。 ほとんどの場合、まともなパフォーマンスを提供します。 内部デバイスで「ツリー」をほとんど使用しないため、うまくスケーリングしません。つまり、このタイプのファイルシステムは、非常に大きなファイルシステム、または1つのディレクトリで大きなファイルまたは多数のファイルを処理する状況には最適ではありません。 しかし、それが設計された環境で使用された場合、ext3は優れたファイルシステムです。



ext3の優れた点の1つは、既存のext2システムをインプレースでext3に非常に簡単にアップグレードできることです。 これにより、すでにext2を使用している既存のLinuxシステムをスムーズにアップグレードできます。



ReiserFSファイルシステム


ReiserFSは、Bツリーベースのファイルシステムであり、パフォーマンスが非常に優れており、小さなファイル(4 kB未満のファイル)で作業する場合、多くの場合10〜15回、ext2およびext3よりもはるかに優れています。 ReiserFSも拡張性が高く、メタデータのログが記録されます。 2.4.18 , ReiserFS , , , , , , . ReiserFS .



XFS


XFS – . . Linux SCSI / Fibre Channel . XFS , (. . , ( )) , .



JFS


JFS IBM . , , .




, ext3. – ReiserFS; ext3 ReiserFS , .



, :



# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3


ext3 /dev/hda1 , . mkswap /dev/hda2 – . /dev/hda3 ReiserFS, . .




mkswap – :



# mkswap /dev/hda2

, . , swapon :



# swapon /dev/hdc6

Linux . , swapon, , , . , cat /proc/swaps .



ext2, ext3, ReiserFS


ext2 mke2fs :



# mke2fs /dev/hda1

ext3, mke2fs -j :



# mke2fs -j /dev/hda3

ReiserFS mkreiserfs :



# mkreiserfs /dev/hda3

XFS JFS


XFS mkfs.xfs :



# mkfs.xfs /dev/hda3

:

mkfs.xfs : “-d agcount=3 -l size=32m”. “-d agcount=3” . XFS 4 , , , 20, “agcount=5”. “-l size=32m” 32 , .



. : . , , , 6 , (allocation group) XFS .

JFS, mkfs.jfs :



# mkfs.jfs /dev/hda3


, , mount :



# mount /dev/hda3 /mnt

, , « » – . «» . /mnt . , . , /mnt ReiserFS, .



, /mnt . , :



# mkdir /mnt/boot
# mount /dev/hda1 /mnt/boot


, /mnt/boot . /mnt/boot , ext3 , /dev/hda1 . /mnt , /mnt/boot, ReiserFS /dev/hda3 . /mnt , ( ), Linux .



, mount . mount Linux , , :



 /dev/root on / type reiserfs (rw,noatime)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
tmpfs on /dev/shm type tmpfs (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hde1 on /boot type ext3 (rw,noatime) 

cat /proc/mounts . /dev/hda3 /dev/hda3. /dev/hda3 , /dev/root , , :



# ls -l /dev/root
lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/root -> ide/host0/bus0/target0/lun0/part3

# ls -l /dev/hda3
lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/hde3 -> ide/host0/bus0/target0/lun0/part3



, /dev/ide/host0… ? , , devfs /dev, , Linux . , /dev/ide/host0/bus1/target0/lun0/part7 /dev/hdc7 , /dev/hdc7 – () . devfs, /dev/.devfsd ; – devfs .



mount , . , -t , :



# mount /dev/hda1 /mnt/boot -t ext3

または


# mount /dev/hda3 /mnt -t reiserfs


. , « » “ro”:



# mount /dev/hdc6 /mnt -o ro

/dev/hdc6 , /mnt – . «/» « », remount :



# mount /mnt -o remount,ro

, , . . mount /mnt /dev/hdc6 . , «/»:



# mount /mnt -o remount,rw

, , /mnt - . mount Linux, man mount .



fstab


. , Linux, , ? , Gentoo Linux . , /dev/hda3 ? - – , , – , ?



, Linux , , Linux . , Linux , /etc/fstab . .



fstab


/etc/fstab :



 <fs> <mountpoint> <type> <opts> <dump/pass>

/dev/hda1 /boot ext3 noauto,noatime 1 1
/dev/hda3 / reiserfs noatime 0 0
/dev/hda2 none swap sw 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0
# /proc should always be enabled
proc /proc proc defaults 0 0 

/etc/fstab , , , , . , dump . , dump , . fsck , . fsck .



/dev/hda1 ; , /dev/hda1 ext3, /boot . opts. “noauto” /dev/hda1 ; /dev/hda1 /boot .



“noatime”, atime ( ) . , atime .



/proc “defaults”. “defaults”, . . . /etc/fstab , .



/dev/hda2 /etc/fstab . /dev/hda2 . , . /etc/fstab , /dev/hda2 , .



/dev/cdrom , /etc/fstab CD-ROM . :



# mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro

:



# mount /dev/cdrom

, /etc/fstab “user”. , . , CD-ROM. , root CD-ROM.




, . , .



, . , , , - . , umount , :



# umount /mnt

または


# umount /dev/hda3

, /mnt , , .



fsck


- , . , . , fsck , , /etc/fstab .



!

, fsck , “pass” ( ) /etc/fstab . , “1”, , . , , “pass” “2” . , ReiserFS, “0”, ( fsck ) .



, , fsck . , , , fsck , . fsck , . , “y” () , fsck .



fsck


fsck , , ( ) , . , , fsck .



この問題を解決するために、ジャーナルファイルシステムと呼ばれる新しいタイプのファイルシステムが設計されました。ジャーナルされたFSは、ファイルシステムメタデータへの最近の変更のログをディスクに書き込みます。障害が発生した場合、FSドライバーはログを確認します。ジャーナルにはディスク上の最新の変更に関する正確なレポートが含まれているため、FSメタデータのこれらの部分のみにエラーのチェックが必要です。この重要な違いにより、FSのサイズに関係なく、ジャーナリングシステムの整合性を確認するのに通常数秒しかかかりません。そのため、ジャーナリングFSはLinuxコミュニティで人気を集めています。FSのジャーナリングの詳細については、Funtooファイルシステムガイド、パート1:ジャーナリングとReiserFSを参照してください



この部分andrewwwを翻訳してくれてありがとう続行するには...




Daniel Robbins


— Gentoo Gentoo Linux. - . Funtoo , IBM developerWorks , Intel Developer Services C/C++ Users Journal.



Chris Houser


UNIX c 1994 , (, ), . , -, , UNIX . Sentry Data Systems. , Gentoo Linux Clojure, The Joy of Clojure .



Aron Griffis


, Hewlett-Packard , UNIX- Tru64, Linux, Xen KVM , — HP ePrint . , , « ».

Source: https://habr.com/ru/post/J116907/


All Articles