ファイルシステム
セクタ
ファイルはハードディスクに保存されます。ハードディスクの最小のストレージユニットは「セクター」と呼ばれ、各セクターは512バイトを保存します。
ブロック
一般に、8つの連続するセクターが「ブロック」を形成し、ブロックのサイズは4Kであり、これはファイルアクセスの最小単位です。オペレーティングシステムがハードディスクを読み取るとき、一度に複数のセクターを連続して読み取ります。つまり、ブロックごとに読み取ります。
ファイルデータ
- ファイルデータには、実際のデータとメタ情報(ファイル属性と同様)が含まれます。
- ファイルデータは「ブロック」に保存され、ファイルのメタ情報(ファイルの作成者、作成日、ファイルサイズ、ファイルのアクセス許可など)を保存する領域はiノードと呼ばれます。
- ファイルは、1つのiノードと少なくとも1つのブロックを占有する必要があります。
iノード(インデックスノードまたはiノード)
- iノードにファイル名が含まれていません。ファイル名はディレクトリに保存されます。Linuxシステムのすべてがファイルであるため、ディレクトリも一種のファイルです。
- 各iノードには番号があり、オペレーティングシステムはiノード番号を使用してさまざまなファイルを識別します。ファイル名はLinuxシステムの内部では使用されませんが、iノード番号はファイルを識別するために使用されます。システムの場合、ファイル名は、iノード番号を簡単に識別できるようにするための単なる別名です。ファイル名とiノード番号は1対1で対応しており、各iノード番号はファイル名に対応しています。
概要:
ユーザーがLinuxシステム内のファイルにアクセスしようとすると、システムは最初にファイル名に従って対応するiノード番号を見つけます。iノード番号からiノード情報を取得し、iノード情報に従ってユーザーがファイルにアクセスする権限があります。ある場合は、対応するデータブロックをポイントしてデータを読み取ります。
iノードコンテンツ
iノードにはファイルのメタ情報が含まれています
- ファイルのバイト数
- ファイル所有者のユーザーID
- ファイルのグループID
- ファイルの読み取り、書き込み、および実行のアクセス許可
- ファイルのタイムスタンプ
注:ファイル名は含めないでください
Linuxシステムファイルの3つの主な時間属性
- ctime(change time)#ファイルまたはディレクトリ(属性)が最後に変更された時刻
- atime(access time)#ファイルまたはディレクトリが最後にアクセスされた時刻
- mtime(modify time)#ファイルまたはディレクトリ(コンテンツ)が最後に変更された時刻
iノード番号クエリ
ls -i 文件名 #查普通文件
stat 文件名 #查普通文件和目录
iノードサイズ
- ノードはハードディスク領域も消費するため、フォーマット時に、オペレーティングシステムはハードディスクを自動的に2つの領域に分割します。1つはファイルデータを格納するデータ領域で、もう1つはiノードに含まれる情報を格納するiノード領域です。
- 各iノードのサイズ
- -一般的に128バイトまたは256バイト
- iノードの総数は、ファイルシステムのフォーマット時に決定されます
- df -iコマンドを使用して、各ハードディスクパーティションに対応するiノードの総数と使用されたiノードの数を表示します。
iノードの特別な役割
iノード番号とファイル名が分離されているため、一部のUnix / Linuxシステムには次の現象があります。
- ファイル名には特殊文字が含まれているため、正常に削除されない場合があります。このとき、iノードを直接削除します。これはファイルを削除する役割を果たすことができます。
- ファイルを移動したりファイルの名前を変更したりできます。iノード番号に影響を与えることなくファイル名を変更するだけです。
- ファイルを開いた後、システムはファイル名に関係なく、iノード番号を使用してファイルを識別します。
- ファイルデータを変更して保存すると、新しいiノード番号が生成されます。
iノード番号でファイルを削除する
find ./ -inum 52305140 -exec rm -i {} \;
find ./ -inum 50464299 -delete
iノードノードの枯渇障害処理をシミュレートする
#使用fdisk创建分区/dev/sdb1,分区大小30M即可
fdisk /dev/sdb #创建分区
mkfs.ext4 /dev/sdb1 #对于centos 7系统,节点耗尽故障处理的文件类型可以是ext3或ext4
mkdir /test
mount /dev/sdb1 /test
df -i
#模拟inode节点耗尽故障
for ((i=1; i<=7680; i++));do touch /test/file$i;done
或者 touch {1..7680}.txt
df -i
df -hT
#删除文件恢复
rm -rf /test/*
df -i
df -hT
最初にハードディスクを追加し、fdiskを使用してパーティション/ dev / sdb1を作成し、フォーマットしてマウントします
iノードノードの枯渇障害をシミュレートする
ファイルの回復を削除
EXTファイルの回復
extundeleteは、ext3およびext4ファイルシステムをサポートするオープンソースのLinuxデータ復旧ツールです。(Ext4はcentos6バージョンでのみ復元できます)
1、使用fdisk创建分区/dev/sdb1,格式化ext3文件系统
fdisk /dev/sdb
mkfs.ext3 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df -hT
2、安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs
3、编译安装 extundelete
cd /test 切换到test目录中
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 #联网下载安装包
tar jxvf extundelete-0.2.4.tar.bz2 #解压tar包
cd extundelete-0.2.4/ #切换到解压出来的目录中
./configure --prefix=/usr/local/extundelete && make && make install #指定安装目录,开始安装
ln -s /usr/local/extundelete/bin/* /usr/bin/ #创建软连接,让系统识别命令
4、模拟删除并执行恢复操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdb1 --inode 2 #查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。
rm -rf a b
extundelete /dev/sdb1 --inode 2
cd ~
umount /test
extundelete /dev/sdb1 --restore-all #恢复/dev/sdb1 文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/
最初にハードディスクを追加し、fdiskを使用してパーティション/ dev / sdb1を作成し、フォーマットしてマウントします
依存パッケージをyumモードでインストールする
インストールパッケージをダウンロードしてインストールします
削除と復元をシミュレートする
a、bを削除します
xfsタイプのファイルのバックアップとリカバリ
- CentOS 7システムはデフォルトでxfsタイプのファイルを使用し、xfsタイプのファイルはxfsdumpおよびxfsrestoreツールを使用してバックアップおよび復元できます。
- xfsdumpには2つのバックアップレベルがあります。0は完全バックアップを意味し、1〜9は増分バックアップを意味します。xfsdumpのデフォルトのバックアップレベルは0です。
xfsdumpのコマンド形式は次のとおりです。
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdumpコマンドの一般的に使用されるオプション:
オプション | 効果 |
---|---|
-f | バックアップファイルのディレクトリを指定します |
-L | ラベルセッションラベルを指定します |
-M | デバイスラベルメディアラベルを指定します |
-s | 単一のファイルをバックアップします。パスの直後に-sを続けることはできません。 |
Xfsdumpの使用制限:
1。マウントされたファイルシステムのみをバックアップできます
2.操作するにはroot権限を使用する必要があります3.XFSファイルシステム
のみを
バックアップできます4.バックアップ後のデータはxfsrestore5でのみ解析でき
ます。同じUUIDを持つファイルシステムで2つをバックアップすることはできません(blkidコマンドで表示できます)
オペレーティング:
1、使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb #重读分区表,磁盘查询不到时使用
mkfs.xfs [-f] /dev/sdb1
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a
2、使用 xfsdump 命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
3、模拟数据丢失并使用 xfsrestore 命令恢复文件
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/
fdiskを使用してパーティション/ dev / sdb2を作成し、フォーマットしてマウントします
xfsdumpコマンドを使用して、パーティション全体をバックアップします
データ損失をシミュレートし、xfsrestoreコマンドを使用してファイルを復元します
ログファイル
ログ機能
- システムおよびプログラムの操作中に発生するさまざまなイベントを記録するために使用されます
- ログを読み取ることにより、システム障害の診断と解決に役立ちます
ログファイルの分類
- カーネルとシステムのログ
- システムサービスrsyslogによる統合管理、ログ形式は基本的に同様です
- メイン設定ファイル/etc/rsyslog.conf
- ユーザーログ
- システムユーザーのログインとログアウトに関連する情報を記録する
- メイン設定ファイル/ var / log / secure
- プログラムログ
- さまざまなアプリケーションによって独立して管理されるログファイル、レコード形式が統一されていない
ログの保存場所
デフォルトでは、ディレクトリ/ var / log /に配置されます
常用対数ファイル:
#カーネルとパブリックメッセージログ:
- / var / log / messages:起動、roエラー、ネットワークエラー、プログラム障害など、さまざまなアプリケーションのLinuxカーネルメッセージとパブリックログ情報を記録します。別のログファイルを使用しないアプリケーションまたはサービスの場合、通常、ログファイルから関連するイベントレコード情報を取得できます。
#計画タスクログ:
- / var / log / cron:crondのスケジュールされたタスクによって生成されたイベント情報を記録します。
#システムブートログ:
- / var / log / maillog:システムに出入りする電子メールアクティビティを記録します。
#ユーザーログインログ:
- / var / log / secure:ユーザー認証に関連するセキュリティイベント情報を記録します。
- / var / log / lastlog:各ユーザーの最新のログインイベントを記録します。バイナリ形式
- / var / log / wtmp:各ユーザーのログイン、ログアウト、システムの起動およびシャットダウンイベントを記録します。バイナリ形式
- / var / run / btmp:失敗した、間違ったログイン試行と検証イベントを記録します。バイナリ形式
カーネルとシステムのログ
-
システムサービスrsyslogによる統合管理
- ソフトウェアパッケージ:rsyslog-7.4.7-16.el7.x86_64、
- メインプログラム:/ sbin / rsyslogd
- 構成ファイル:/etc/rsyslog.cont
rsyslog.conf構成ファイルを表示する
vim /etc/rsyslog.conf #查看rsyslog.conf配置文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)
ログメッセージの優先度
Linuxシステムカーネルログメッセージの優先度レベル(数値レベルが小さいほど、優先度が高くなり、メッセージの重要性が高くなります):
グレード番号 | 優先度 | 説明 |
---|---|---|
0 | EMERG(緊急) | ホストシステムが使用できなくなります。 |
1 | アラート(アラート) | すぐに解決しなければならない問題。 |
2 | CRIT(深刻) | より深刻な状況。 |
3 | ERR(エラー) | 動作中にエラーが発生しました。 |
4 | 警告 | システム機能に影響を与える可能性があり、ユーザーに通知する必要がある重要なイベント。 |
5 | 通知 | 通常の機能には影響しませんが、注意が必要なイベントには影響しません。 |
6 | INFO(情報) | 一般情報。 |
7 | DEBUG(デバッグ) | プログラムまたはシステムのデバッグ情報など。 |
ログの一般的な形式
- #パブリックログ/ var / log / messagesファイルレコード形式
- タイムスタンプ:メッセージが送信された日時。
- ホスト名:メッセージを生成したコンピューターの名前。
- サブシステム名:メッセージを発行したアプリケーションの名前。
- メッセージ:メッセージの特定の内容。
ユーザーログ
- システムのユーザーログインおよびログアウトの関連情報を保存します
- / var / log / secure:ユーザー認証に関連するセキュリティイベント情報を記録します。
- / var / log / lastlog:各ユーザーの最新のログインイベントを記録します。バイナリ形式
- / var / log / wtmp:各ユーザーのログイン、ログアウト、システムの起動およびシャットダウンイベントを記録します。バイナリ形式
- / var / run / btmp:失敗した、間違ったログイン試行と検証イベントを記録します。バイナリ形式
- 分析ツール
- ユーザー、who、w、last、lastb
- 最後のコマンドは、システムに正常にログインしたユーザーレコードを照会するために使用されます
- lastbコマンドは、ログインに失敗したユーザーレコードを照会するために使用されます
プログラムログ
-
さまざまなアプリケーションによって独立して管理されるログファイル、レコード形式が統一されていない
- Webサービス:Nar / log / httpd /
- access_log //顧客アクセスイベントを記録する
- error_log //エラーイベントを記録します
- プロキシサービス:/ var / log / squid /
- access.log、cache.log
- Webサービス:Nar / log / httpd /
-
分析ツール
- テキストビュー、grepフィルター検索、Webmin管理スイートでのビュー
- awkやsedなどのテキストフィルタリング、フォーマット、編集ツール
- Webalizer、Awstats、その他の専用ログ分析ツール
ログ管理
- タイムリーなバックアップとアーカイブを作成する
- ログ保存期間を延長する
- ログアクセスの制御
- ログには、アカウント、パスワードなど、さまざまな機密情報が含まれる場合があります。
- ログの一元管理
- サーバーのログファイルを統合ログファイルサーバーに送信します
- ログ情報の統合された収集、並べ替え、分析を容易にします
- 偶発的な損失、悪意のある改ざん、またはログ情報の削除を防止します