📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の27版が非表示) | |||
| 38行目: | 38行目: | ||
/etc/fstabファイルに以下の行を追記する。<br> | /etc/fstabファイルに以下の行を追記する。<br> | ||
# ローカルストレージ | # ローカルストレージ | ||
/dev/ | /dev/sdX <マウントディレクトリ> <ファイルシステム名:xfs、ext4、btrfs等> file_mode=0755,dir_mode=0755 0 0 | ||
# NAS | # NAS | ||
//<IPアドレスまたはホスト名>/<ディレクトリ名> /run/media/NAS cifs username=<ユーザ名,password=<パスワード>,uid=<マウントするユーザのユーザID>,gid=<マウントするユーザのグループID>,file_mode=0755,dir_mode=0755 0 0 | //<IPアドレスまたはホスト名>/<ディレクトリ名> /run/media/NAS cifs username=<ユーザ名,password=<パスワード>,uid=<マウントするユーザのユーザID>,gid=<マウントするユーザのグループID>,file_mode=0755,dir_mode=0755 0 0 | ||
<br> | <br> | ||
<u> | <u>※注意</u><br> | ||
<u>マウントを実行するユーザのUIDとGIDを調べるには、マウントするユーザで以下のコマンドを実行する。</u><br> | |||
id | id | ||
<br> | |||
また、下表にfstabのフォーマットを示す。<br> | |||
# fstabのフォーマット例 | |||
# <span style="color:#C00000">X</span> : ストレージ番号, <span style="color:#C00000">Y</span> : パーティション番号 | |||
/dev/sd<span style="color:#C00000">X</span><span style="color:#C00000">Y</span> /mnt ext4 defaults 1 2 | |||
<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF;" | オプション | |||
! style="background-color:#66CCFF;" | 説明 | |||
|- | |||
| デバイスファイル名 || デバイスファイル名、LABEL、UUIDを指定する。 | |||
|- | |||
| マウントポイント || ファイルシステムのマウント先のディレクトリ | |||
|- | |||
| ファイルシステムの種類 || ファイルシステムの種類を指定する。 | |||
|- | |||
| マウントオプション || マウントする時のオプションを指定する。 | |||
|- | |||
| dumpフラグ || 1 : <code>dump</code>コマンドによるバックアップの対象になる。<br>1 : ファイルシステムがetx2 / ext3の場合は<code>1</code>を指定する。<br>0 : その他の場合は<code>0</code>を指定する。 | |||
|- | |||
| fsckのチェック || Linuxの起動時にfsckが確認する順序を指定する。<br>0、1、2を設定できる。<br><br>0 : ファイルシステムを確認しない。<br>1 : 確認する優先度が最も高い。ルートファイルシステム(/)は<code>1</code>である必要がある。<br>2 : その他のの場合 | |||
|} | |||
</center> | |||
<br><br> | <br><br> | ||
| 132行目: | 157行目: | ||
== クローン == | == クローン == | ||
==== | ==== ddrescueコマンド ==== | ||
ddrescueコマンドは、データの複製と復元のために設計されたツールである。<br> | ddrescueコマンドは、データの複製と復元のために設計されたツールである。<br> | ||
<br> | <br> | ||
| 154行目: | 179行目: | ||
*#: <code>make install</code> | *#: <code>make install</code> | ||
<br> | <br> | ||
故障および故障寸前のストレージをクローンする場合は、<code>ddrescue</code>コマンドを2回実行する。<br> | |||
# まず、読み取りエラーが存在しないブロックを全てコピーして、エラーをファイルにマッピングする。 | |||
# | #: <code>sudo ddrescue -n <クローン元のストレージ> <クローン先のストレージ> <エラーをマッピングするファイル></code> | ||
#: <code>sudo ddrescue -n /dev/sd<span style="color:#C00000">X</span> /dev/sd<span style="color:#C00000">Y</span> ~/rescue1.map</code> | #: 例 : <code>sudo ddrescue -n /dev/sd<span style="color:#C00000">X</span> /dev/sd<span style="color:#C00000">Y</span> ~/rescue1.map</code> | ||
#: <br> | #: <br> | ||
# 次に、クローンされるデータの読み込みを3回試行して、不良ブロックのみをクローンする。<br>もし、読み込みできない場合は、該当ブロックのデータはクローンしない。 | # 次に、クローンされるデータの読み込みを3回試行して、不良ブロックのみをクローンする。<br>もし、読み込みできない場合は、該当ブロックのデータはクローンしない。 | ||
#: <code>sudo ddrescue -d -r3 /dev/sd<span style="color:#C00000">X</span> /dev/sd<span style="color:#C00000">Y</span> ~/rescue2.map</code> | #: <code>sudo ddrescue -d -r3 <クローン元のストレージ> <クローン先のストレージ> <エラーをマッピングするファイル></code> | ||
#: 例 : <code>sudo ddrescue -d -r3 /dev/sd<span style="color:#C00000">X</span> /dev/sd<span style="color:#C00000">Y</span> ~/rescue2.map</code> | |||
#: <br> | #: <br> | ||
# クローン先のストレージのファイルシステムが正常かどうかを確認する。 | # クローン先のストレージのファイルシステムが正常かどうかを確認する。 | ||
#: <code>sudo fsck -f /dev/sd<span style="color:#C00000">Y</span></code> | #: <code>sudo fsck -f /dev/sd<span style="color:#C00000">Y</span></code> | ||
<br> | |||
==== sgdiskコマンド ==== | |||
<code>sgdisk</code>は、コンソールにおけるGPTマニピュレータである。<br> | |||
<br> | |||
<u>※GPTについて</u><br> | |||
<u>GPT(GUID Partition Table)とは、グローバル一意識別子(GUID)を使用したストレージ上のパーティションテーブルのレイアウトの規格である。</u><br> | |||
<u>GPTは、パーティションテーブルのレイアウトを定義するEFI標準の一部である。</u><br> | |||
<br> | |||
<code>sgdisk</code>コマンドを使用してGPTのストレージを別のストレージにクローンする。<br> | |||
sudo sgdisk -R <クローン先のストレージ> <クローン元のストレージ> | |||
<br> | |||
パーティションテーブルをクローンした後、クローン先のストレージに新しいGUIDを設定する。<br> | |||
sudo sgdisk -G /dev/sd<span style="color:#C00000">X</span> | |||
<br> | |||
==== Clonezilla ==== | |||
[https://clonezilla.org/downloads.php Clonezillaの公式サイト]からイメージファイル(Stable)をダウンロードする。<br> | |||
ダウンロードしたイメージファイルをUSBメモリ等へ書き込む。<br> | |||
<br> | |||
PCをシャットダウンして、クローン先のストレージとUSBメモリをPCに接続する。<br> | |||
PCの電源を投入して、UFEI/BIOS画面から起動ディスクを選択してUSBメモリからClonezillaを起動する。<br> | |||
<br> | |||
[Clonezilla live (VGA with large font & To RAM)]を選択して[Enter]キーを押下する。<br> | |||
表示言語を選択した後、[キーボードの種類]を選択する。<br> | |||
[Start Clonezilla] - [device-device] - [Beginner mode] - [disk_to_local_disk]を選択する。<br> | |||
<br> | |||
まず、[Choose local disk as source]画面に切り替わるので、<u>クローン元のストレージを選択</u>する。<br> | |||
次に、[Choose local disk as target]画面に切り替わるので、<u>クローン先のストレージを選択</u>する。<br> | |||
[オプション選択]画面では、[-sfsck]を選択する。<br> | |||
[-p choose]または[-p poweroff]を選択する。<br> | |||
<br> | |||
[クローン実行]画面に切り替わるので、[Enter]キーを押下する。<br> | |||
[Are you sure you want to continue?(y/n)]メッセージでは、クローン先のストレージを確認して[Y]キーを押下する。<br> | |||
再度、[Are you sure you want to continue?(y/n)]メッセージが表示されるので、[Y]キーを押下する。<br> | |||
クローンが実行される。<br> | |||
<br> | |||
クローンの終了後、[Enter]キーを押下する。<br> | |||
エラーメッセージが無ければ正常に成功している。<br> | |||
<br> | |||
[poweroff]を選択してClonezillaを終了する。<br> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>ただし、Clonezillaの場合、各パーティションのサイズが変化しないことに注意する。</u><br> | |||
<u>そのため、GPartedを使用して各パーティションを移動およびリサイズする必要がある。</u><br> | |||
<br> | |||
==== GParted ==== | |||
Partedコマンドをグラフィカルに使用できるツールがGPartedである。<br> | |||
GPartedのインストールについては、[[設定 - ストレージのフォーマットとパーティション#GPartedのインストール]]を参照すること。<br> | |||
<br> | |||
また、GPartedはソフトウェアだけでなく、イメージファイルをUSBメモリに書き込んで利用できる形でも提供されている。<br> | |||
[https://gparted.org/download.php GPartedの公式Webサイト]を参照すること。<br> | |||
<br> | |||
<u>※GPartedのイメージファイルを使用する場合</u><br> | |||
<u>[GParted Live(Default settings)]を選択する。</u><br> | |||
<u>[言語/キーボード選択]では、[Don't touch keymap]を選択して、[Which language do you prefer?]においてUSキーボードの場合は<code>33</code>、JPキーボードの場合は<code>15</code>を入力する。</u><br> | |||
<u>[Which mode do you prefer?]は<code>0</code>を入力する。</u><br> | |||
<br> | |||
下図のようにパーティションが区切られているとする。<br> | |||
例えば、Partition 2と未割り当て領域を結合する場合、隣接するパーティション同士のみ結合できるため、Partition 3を後方に移動する必要がある。<br> | |||
[[ファイル:Storage Clone GParted 1.png|フレームなし|中央]] | |||
<br> | |||
# まず、Partition 3を後方に移動する。<br>GPartedを起動して、[パーティション]メニューバー - [リサイズ/移動]を選択する。<br>または、移動するパーティションを右クリックして、[リサイズ/移動]を選択する。 | |||
# 警告アラートが出力される場合は、[OK]ボタンを押下する。 | |||
# [リサイズ/移動]画面が開くので、画面上部のグラフを右端までドラッグする。<br>[後方の空き領域]項目が<code>0</code>になっていることを確認して、[リサイズ/移動]ボタンを押下する。 | |||
#: <br> | |||
# 次に、Partition 2をリサイズする。<br>GPartedの[パーティション]メニューバー - [リサイズ/移動]を選択する。<br>または、リサイズするパーティションを右クリックして、[リサイズ/移動]を選択する。 | |||
# 警告アラートが出力される場合は、[OK]ボタンを押下する。 | |||
# [リサイズ/移動]画面が開くので、画面上部のグラフを右端までドラッグする。<br>[後方の空き領域]項目が<code>0</code>になっていることを確認して、[リサイズ/移動]ボタンを押下する。 | |||
# これにより、Partition 2と未割り当て領域が隣接状態となる。 | |||
#: <br> | |||
# 再度、Partiton 2を右クリックして、[リサイズ/移動]を選択する。 | |||
# 警告アラートが出力される場合は、[OK]ボタンを押下する。 | |||
# [リサイズ/移動]画面が開くので、画面上部のグラフを右端までドラッグする。<br>[後方の空き領域]項目が<code>0</code>になっていることを確認して、[リサイズ/移動]ボタンを押下する。 | |||
#: <br> | |||
# GPartedの画面下部に、上記の操作が表示されているので確認する。 | |||
# GPartedの画面上部にある[✓]ボタンを押下する。<br>最終確認アラートが表示されるので、[Apply]ボタンを押下する。 | |||
# 処理の完了後、エラーメッセージが出力されているかどうかを確認する。 | |||
<br><br> | <br><br> | ||
== ストレージの総書き込み量(TBW) == | == ストレージの総書き込み量(TBW) == | ||
==== SmartMonToolsのインストール ==== | |||
まず、SmartMonToolsをインストールする。<br> | まず、SmartMonToolsをインストールする。<br> | ||
* パッケージ管理システムからインストールする場合 | * パッケージ管理システムからインストールする場合 | ||
| 189行目: | 295行目: | ||
*#: <code>make install</code> | *#: <code>make install</code> | ||
<br> | <br> | ||
==== GSmartControlのインストール (任意) ==== | |||
必要ならば、GSmartControlをインストールしてもよい。<br> | 必要ならば、GSmartControlをインストールしてもよい。<br> | ||
* パッケージ管理システムからインストールする場合 | * パッケージ管理システムからインストールする場合 | ||
| 207行目: | 314行目: | ||
*#: <code>make -j $(nproc)</code> | *#: <code>make -j $(nproc)</code> | ||
*#: <code>make install</code> | *#: <code>make install</code> | ||
*#: <br> | |||
*# GSmartControlのPolKitポリシーファイルを作成する。 | |||
*#: <code>sudo vi /usr/share/polkit-1/actions/org.gsmartcontrol-UserAdd.policy</code> | |||
<br> | |||
<syntaxhighlight lang="xml"> | |||
# /usr/share/polkit-1/actions/org.gsmartcontrol-UserAdd.policyファイル | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE policyconfig PUBLIC | |||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" | |||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> | |||
<policyconfig> | |||
<action id="org.gsmartcontrol"> | |||
<message>Authentication is required to run GSmartControl</message> | |||
<icon_name>gsmartcontrol</icon_name> | |||
<defaults> | |||
<allow_any>no</allow_any> | |||
<allow_inactive>no</allow_inactive> | |||
<allow_active>auth_admin</allow_active> | |||
</defaults> | |||
<annotate key="org.freedesktop.policykit.exec.path">/GSmartControlのインストールディレクトリ/sbin/gsmartcontrol</annotate> | |||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> | |||
</action> | |||
</policyconfig> | |||
</syntaxhighlight> | |||
<br> | |||
GSmartControlのデスクトップエントリファイルを作成する。<br> | |||
vi ~/.local/share/applications/GSmartControl.desktop | |||
<br> | <br> | ||
# ~/.local/share/applications/GSmartControl.desktopファイル | |||
[Desktop Entry] | |||
Version=1.0 | |||
Type=Application | |||
Name=GSmartControl | |||
GenericName=Hard Disk and SSD Health Inspection | |||
Comment=Monitor and control SMART data on hard disk and solid-state drives | |||
# Run with root permissions. | |||
Exec="/<GSmartControlnのインストールディレクトリ>/bin/gsmartcontrol-root" | |||
# If it's a name only, it looks for "name.[png|xpm]" file in | |||
# $XDG_DATA_DIRS/icons and /usr/share/pixmaps. | |||
# An absolute file path is also supported. | |||
Icon=/<GSmartControlnのインストールディレクトリ>/share/icons/hicolor/128x128/apps/gsmartcontrol.png | |||
Categories=System;Monitor; | |||
# Run with root permissions. This should work with newer GNOME too. | |||
# It _should_ work with kde, but it hangs on mine, so use plain kdesu. | |||
#X-KDE-SubstituteUID=true | |||
#X-KDE-RootOnly=true | |||
<br> | <br> | ||
==== ストレージの総書き込み量(TBW)の確認 ==== | |||
SmartMonToolsを実行して、以下の項目を確認する。<br> | |||
* Sector Size | * Sector Size | ||
* Total_LBAs_Written | * Total_LBAs_Written | ||
* Total_Writes_GiB ( | * Total_Writes_GiB (<code>Total_LBAs_Written</code>項目が存在しない場合) | ||
* Logical Sectors Written ( | * Logical Sectors Written (<code>Total_Writes_GiB</code>項目および<code>Total_LBAs_Written</code>項目が存在しない場合) | ||
sudo smartctl -ax /dev/sd<span style="color:#C00000">X</span> | grep '\(Total_LBAs_Written\|Total_Writes_GiB\|Logical Sectors Written\|Sector Size\)' | sudo smartctl -ax /dev/sd<span style="color:#C00000">X</span> | grep '\(Total_LBAs_Written\|Total_Writes_GiB\|Logical Sectors Written\|Sector Size\)' | ||
<br> | <br> | ||
上記で確認した値から、ストレージの総書き込み量(TBW)を求める。<br> | 上記で確認した値から、ストレージの総書き込み量(TBW)を求める。<br> | ||
<math>\frac{\mbox{Sector Size} \times \mbox{Total LBAs Written} \, (or \quad \mbox{Total Writes GiB} \quad or \quad \mbox{Logical Sectors Written})}{1024^4} = \ | <math>\mbox{[TBW]} = \frac{\mbox{Sector Size} \times \mbox{Total LBAs Written} \, (or \quad \mbox{Total Writes GiB} \quad or \quad \mbox{Logical Sectors Written})}{1024^4}</math> | ||
<br><br> | |||
== ストレージのベンチマーク == | |||
==== fioコマンドの使用 ==== | |||
sudo fio --loops=3 --size=1000m --filename=/mnt/fs/fiotest.tmp --stonewall --ioengine=libaio --direct=1 \ | |||
--name=Seqread --bs=4m --rw=read \ | |||
--name=Seqwrite --bs=4m --rw=write \ | |||
--name=512Kread --bs=512k --rw=randread \ | |||
--name=512Kwrite --bs=512k --rw=randwrite \ | |||
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread \ | |||
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite | |||
sudo rm -f /mnt/fs/fiotest.tmp | |||
<br> | |||
==== ベンチマーク用シェルスクリプトの使用 ==== | |||
以下に示すリンクから、ベンチマーク用シェルスクリプトをダウンロードして、スーパユーザ権限で実行する。<br> | |||
このシェルスクリプトは、<code>fio</code>コマンドと<code>df</code>コマンドが必要であることに注意する。<br> | |||
[[ファイル:Benchmark for NVMe.zip|フレームなし]]<br> | |||
<br> | |||
==== KDiskMarkの使用 ==== | |||
* パッケージ管理システムからインストールする場合 | |||
*: <code>sudo zypper install kdiskmark</code> | |||
*: <br> | |||
* ソースコードからインストール場合 | |||
*: KDiskMarkのビルドに必要なライブラリをインストールする。 | |||
*: <code>sudo zypper install cmake extra-cmake-modules libQt5Core-devel libQt5DBus-devel libQt5Widgets-devel libQt5Network-devel libqt5-linguist libqt5-linguist-devel \</code> | |||
*: <code>libpolkit-qt5-1-devel libaio-devel libbfio-devel</code> | |||
*: <br> | |||
*: [https://github.com/JonMagon/KDiskMark/ KDiskMarkのGithub]にアクセスして、ソースコードをダウンロードする。 | |||
*: ダウンロードしたファイルを解凍する。 | |||
*: <code>tar xf kdiskmark-<バージョン></code> | |||
*: <code>cd kdiskmark-<バージョン></code> | |||
*: <br> | |||
*: KDiskMarkをビルドおよびインストールする。 | |||
*: <code>mkdir build && cd build</code> | |||
*: <code>cmake -DCMAKE_BUILD_TYPE=Release --DCMAKE_INSTALL_PREFIX=<KDiskMarkのインストールディレクトリ> ..</code> | |||
*: <code>make -j $(nproc)</code> | |||
*: <code>make install</code> | |||
<br><br> | <br><br> | ||
| 261行目: | 463行目: | ||
LUKSパーティションを作成して、マウントする。(最初に設定したパスワードを入力する)<br> | LUKSパーティションを作成して、マウントする。(最初に設定したパスワードを入力する)<br> | ||
フォーマットする必要はない。(<u>データが全て削除されてしまうため注意すること</u>)<br> | フォーマットする必要はない。(<u>データが全て削除されてしまうため注意すること</u>)<br> | ||
sudo cryptsetup luksOpen /dev/ | # <span style="color:#C00000">X</span> : ストレージ番号 | ||
# <span style="color:#008000">Y</span> : パーティション番号 | |||
sudo cryptsetup luksOpen /dev/sd<span style="color:#C00000">X</span><span style="color:#008000">Y</span> <マッピング名> | |||
sudo mount <マッピング先のディレクトリ> <マウント先のディレクトリ> | sudo mount <マッピング先のディレクトリ> <マウント先のディレクトリ> | ||
<br><br> | |||
== 外部ストレージの管理者認証 == | |||
ファイルマネージャでシステム以外のストレージにアクセスする場合、管理者認証を要求される場合がある。<br> | |||
管理者認証なしでアクセスできるようにするには、外部ストレージデバイスのマウント権限に関する設定を行う。<br> | |||
<br> | |||
この認証要求は、Linuxシステムのポリシー設定 (Polkit) によって管理されている。<br> | |||
<br> | |||
まず、現在のユーザをwheelユーザに登録する。<br> | |||
sudo usermod -aG wheel $USER | |||
<br> | |||
次に、Polkitのルールファイルを作成する。 | |||
sudo vi /etc/polkit-1/rules.d/50-external-storage.rules | |||
<br> | |||
<syntaxhighlight lang="javascript"> | |||
// /etc/polkit-1/rules.d/50-external-storage.rulesファイル | |||
javascriptpolkit.addRule(function(action, subject) { | |||
if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && | |||
subject.isInGroup("wheel")) { | |||
return polkit.Result.YES; | |||
} | |||
}); | |||
</syntaxhighlight> | |||
<br> | |||
上記のルールは、wheelグループに属するユーザに対して、ファイルシステムのマウント操作を認証なしで許可するものである。<br> | |||
<br><br> | |||
== エラー関連 == | |||
==== ファイルおよびディレクトリの削除 ==== | |||
バックアップディレクトリ等を削除する時、以下のようなエラーが発生する場合がある。(ext4で確認済み)<br> | |||
rm: cannot remove '<ファイル名またはディレクトリ名>': Read-only file system | |||
<br> | |||
この時、ファイルシステムを読み書き可能な状態に再マウントする。<br> | |||
sudo mount -o remount,rw /run/media/<ユーザ名>/<ストレージのラベル名> | |||
<br> | |||
再マウントする時に、以下に示すようなエラーが出力される場合がある。<br> | |||
... read-write, is write-protected ... | |||
<br> | |||
この時、ファイルシステムを復元する。<br> | |||
# <span style="color:#C00000">X</span>はストレージ番号 | |||
# <span style="color:#008000">Y</span>はパーティション番号 | |||
sudo fsck /dev/sd<span style="color:#C00000">X</span><span style="color:#008000">Y</span> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]] | ||