「設定 - ストレージ」の版間の差分
302行目: | 302行目: | ||
* ソースコードからインストール場合 | * ソースコードからインストール場合 | ||
*: KDiskMarkのビルドに必要なライブラリをインストールする。 | *: KDiskMarkのビルドに必要なライブラリをインストールする。 | ||
*: <code>sudo zypper install cmake extra-cmake-modules libQt5Core-devel libQt5DBus-devel libQt5Widgets-devel libqt5-linguist \</code> | *: <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</code> | *: <code>libpolkit-qt5-1-devel libaio-devel libbfio-devel</code> | ||
*: <br> | *: <br> | ||
*: [https://github.com/JonMagon/KDiskMark/ KDiskMarkのGithub]にアクセスして、ソースコードをダウンロードする。 | *: [https://github.com/JonMagon/KDiskMark/ KDiskMarkのGithub]にアクセスして、ソースコードをダウンロードする。 |
2023年11月26日 (日) 06:52時点における版
概要
ここでは、ストレージのマウント方法および再マウント方法を記載する。
ストレージのマウント
アタッチした追加ストレージの情報を確認する。
sudo parted -l
マウント先のディレクトリを作成する。
sudo mkdir -p /run/media/Storage1
マウントを実行する。
sudo mount /dev/sdx /run/media/Storage1
マウントしたストレージが認識されているか確認する。
df -h
ストレージの再マウント
以下のコマンドを実行して、ストレージを再マウントする。
sudo mount -o remount -rw /run/media/Storage1
ストレージの自動マウント
.profileファイルに記述する方法
ホームディレクトリにある.profileファイルに、以下の設定を記述する。
RUNLEVEL=`echo <パスワード名> | LANG=C sudo -S mount -o /dev/sdx /run/media/<ストレージ名>`
また、NASを自動マウントする場合は、以下のように記述する。
RUNLEVEL=`echo <パスワード名> | LANG=C sudo -S mount -o username=<ユーザ名>,password=<パスワード> //<IPアドレスまたはホスト名>/<ディレクトリ名> /run/media/<ストレージ名>`
※注意
NASを使用する場合は、ミドルウェアとしてcifsが必要となるので、以下のコマンドを実行してインストールしておくこと。
sudo zypper install cifs
/etc/fstabファイルに記述する方法
/etc/fstabファイルに以下の行を追記する。
# ローカルストレージ /dev/sdx /run/media/Storage1 <ファイルシステム名:xfs、ext4、btrfs等> file_mode=0755,dir_mode=0755 0 0 # NAS //<IPアドレスまたはホスト名>/<ディレクトリ名> /run/media/NAS cifs username=<ユーザ名,password=<パスワード>,uid=<マウントするユーザのユーザID>,gid=<マウントするユーザのグループID>,file_mode=0755,dir_mode=0755 0 0
※注意
マウントを実行するユーザのUIDとGIDを調べるには、マウントするユーザで以下のコマンドを実行する。
id
ストレージのラベル
ストレージのラベルの確認および変更方法を記載する。
デバイスの確認
lsblk
で対象デバイスを確認する。
# 入力 lsblk # 出力 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 596.2G 0 disk ├─sda1 8:1 0 25G 0 part ├─sda2 8:2 0 250.1G 0 part /mnt/sda2 ├─sda3 8:3 0 317G 0 part / └─sda4 8:4 0 4.1G 0 part [SWAP] sdb 8:16 1 59.8G 0 disk └─sdb1 8:17 1 59.8G 0 part /run/media/user-name/Plamo5.1x64 sdc 8:32 0 1.8T 0 disk └─sdc1 8:33 0 1.8T 0 part /run/media/user-nanme/My Passport sr0 11:0 1 1024M 0 rom
ファイルシステムの種類を確認する
df
コマンドを-T
オプション付きで実行すると、ファイルシステムの種類を確認できる。
# 入力 df -T # 出力 ファイルシス タイプ 1K-blocks 使用 使用可 使用% マウント位置 /dev/sda3 ext4 327052076 62782264 247633500 21% / tmpfs tmpfs 4038320 0 4038320 0% /dev/shm /dev/sda2 fuseblk 262199292 255269036 6930256 98% /mnt/sda2 /dev/sdb1 fuseblk 62643196 3296388 59346808 6% /run/media/hoge/external1 /dev/sdc1 fuseblk 1953480700 818545888 1134934812 42% /run/media/hoge/external2
FAT32のラベル
FAT32のラベルを変更するには、次の書式でmlabel
コマンドを実行する。
::
を付ける必要があることに注意する。
mlabel -i デバイス名 ::ラベル名
mlabel
コマンドを使用するために、mtoolsをインストールする必要がある。
sudo zypper install mtools
例えば、/dev/sdc2のラベルをSAKURAにするには、以下のコマンドを実行する。
sudo mlabel -i /dev/sdc2 ::SAKURA
デバイスをアンマウントし、再びマウントすればラベルが変更されているのが確認できる。
または、例えば、/dev/sdc1をDドライブに割り当てる設定をして、以下のコマンドを実行する。
sudo vim /etc/mtools.conf
drive d: file="/dev/sdc1"
そのラベルを確認するには、-s
オプションを付ける。
sudo mlabel -s d:
ext2 / ext3 / ext4のラベル
- 現在のラベルを確認
e2label <デバイス名>
- ラベルを変更:
e2label <デバイス名> <ラベル名>
NTFSのラベル
- 現在のラベルを確認
sudo /usr/sbin/ntfslabel <デバイス名>
- ラベルを変更:
sudo /usr/sbin/ntfslabel <デバイス名> <ラベル名>
exFATのラベル
exfat-utilsをインストールする。
- 現在のラベルを確認
exfatlabel <デバイス名>
- ラベルを変更
exfatlabel <デバイス名> <ラベル名>
Btrfs
- 現在のラベルを確認
lsblk
- ラベル名を変更
sudo btrfs filesystem label <旧ラベル名のフルパス> <新ラベル名>
クローン
ddrescueコマンドの使用
ddrescueコマンドは、データの複製と復元のために設計されたツールである。
ファイルやブロックデバイス(HDD、SSD、光学式ドライブ等)から別のストレージにデータをコピーする。
もし、読み取りエラーが発生した場合は、最初に無事な箇所をコピーする。
まず、ddrescureをインストールする。
- パッケージ管理システムからインストール
sudo zypper install dd_rescue
- ソースコードからインストール
- GNUの公式Webサイトにあるddrescureページにアクセスして、ソースコードをダウンロードする。
- ダウンロードしたファイルを解凍する。
tar xf ddrescue-<バージョン>.tar.lz
cd ddrescue-<バージョン>
- ビルドディレクトリを作成する。
mkdir build && cd build
- ddrescueをビルドおよびインストールする。
../configure --prefix=<ddrescueのインストールディレクトリ>
make -j $(nproc)
make install
故障および故障寸前のストレージをクローンする場合は、以下に示すように、ddrescueコマンドを2回実行する。
以下の例では、/dev/sdXがクローン元のストレージ、/dev/sdYがクローン先のストレージである。
- まず、読み取りエラーが存在しないブロックを全てコピーして、エラーをrescue.mapにマッピングする。
sudo ddrescue -n /dev/sdX /dev/sdY ~/rescue1.map
- 次に、クローンされるデータの読み込みを3回試行して、不良ブロックのみをクローンする。
もし、読み込みできない場合は、該当ブロックのデータはクローンしない。sudo ddrescue -d -r3 /dev/sdX /dev/sdY ~/rescue2.map
- クローン先のストレージのファイルシステムが正常かどうかを確認する。
sudo fsck -f /dev/sdY
ストレージの総書き込み量(TBW)
SmartMonToolsのインストール
まず、SmartMonToolsをインストールする。
- パッケージ管理システムからインストールする場合
sudo zypper install smartmontools
- ソースコードからインストールする場合
- SmartMonToolsのGithubからソースコードをダウンロードする。
- ダウンロードしたファイルを解凍する。
tar xf smartmontools-<バージョン>.tar.gz
cd smartmontools-<バージョン>.tar.gz
- ビルドディレクトリを作成する。
mkdir build && cd build
- SmartMonToolsをビルドおよびインストールする。
../configure --prefix=<SmartMonToolsのインストールディレクトリ> \
--sbindir=/<SmartMonToolsのインストールディレクトリ>/sbin \
--sysconfdir=/<SmartMonToolsのインストールディレクトリ>/etc \
--localstatedir=/<SmartMonToolsのインストールディレクトリ>/var \
--datarootdir=/<SmartMonToolsのインストールディレクトリ>/share
--with-nvme-devicescan --without-libsystemd
make -j $(nproc)
make install
GSmartControlのインストール (任意)
必要ならば、GSmartControlをインストールしてもよい。
- パッケージ管理システムからインストールする場合
sudo zypper install gsmartcontrol
- ソースコードからインストールする場合
- GSmartControlのビルドに必要なライブラリをインストールする。
sudo zypper install pcre-devel gtk3-devel gtkmm3-devel
- GSmartControlの公式WebサイトまたはGSmartControlのGithubからソースコードをダウンロードする。
- ダウンロードしたファイルを解凍する。
tar xf gsmartcontrol-<バージョン>.tar.gz
cd gsmartcontrol-<バージョン>.tar.gz
- ビルドディレクトリを作成する。
mkdir build && cd build
- GSmartControlをビルドおよびインストールする。
../configure --prefix=<GSmartControlのインストールディレクトリ>
make -j $(nproc)
make install
- GSmartControlのPolKitポリシーファイルを作成する。
sudo vi /usr/share/polkit-1/actions/org.gsmartcontrol-UserAdd.policy
- GSmartControlのビルドに必要なライブラリをインストールする。
# /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>
GSmartControlのデスクトップエントリファイルを作成する。
vi ~/.local/share/applications/GSmartControl.desktop
# ~/.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
ストレージの総書き込み量(TBW)の確認
SmartMonToolsを実行して、以下の項目を確認する。
- Sector Size
- Total_LBAs_Written
- Total_Writes_GiB (Total_LBAs_Written項目が存在しない場合)
- Logical Sectors Written (Total_Writes_GiB項目およびTotal_LBAs_Written項目が存在しない場合)
sudo smartctl -ax /dev/sdX | grep '\(Total_LBAs_Written\|Total_Writes_GiB\|Logical Sectors Written\|Sector Size\)'
上記で確認した値から、ストレージの総書き込み量(TBW)を求める。
ストレージのベンチマーク
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
ベンチマーク用シェルスクリプトの使用
以下に示すリンクから、ベンチマーク用シェルスクリプトをダウンロードして、スーパユーザ権限で実行する。
このシェルスクリプトは、fio
コマンドとdf
コマンドが必要であることに注意する。
ファイル:Benchmark for NVMe.zip
KDiskMarkの使用
- パッケージ管理システムからインストールする場合
sudo zypper install kdiskmark
- ソースコードからインストール場合
- KDiskMarkのビルドに必要なライブラリをインストールする。
sudo zypper install cmake extra-cmake-modules libQt5Core-devel libQt5DBus-devel libQt5Widgets-devel libQt5Network-devel libqt5-linguist libqt5-linguist-devel \
libpolkit-qt5-1-devel libaio-devel libbfio-devel
- KDiskMarkのGithubにアクセスして、ソースコードをダウンロードする。
- ダウンロードしたファイルを解凍する。
tar xf kdiskmark-<バージョン>
cd kdiskmark-<バージョン>
- KDiskMarkをビルドおよびインストールする。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release --DCMAKE_INSTALL_PREFIX=<KDiskMarkのインストールディレクトリ> ..
make -j $(nproc)
make install
ブロックデバイスの暗号化
Linuxカーネルは、ブロックデバイスごと、および、作成済みのファイルシステムを暗号化する機能をサポートしている。
ブロックデバイスごとに暗号化する機能には、cryptsetup
コマンドやcryptmount
コマンド等を使用する。
作成済みのファイルシステムを暗号化するには、eCryptfs
やEncFS
等を使用する。
暗号化パーティションの作成
以下の例では、/dev/sdc4パーティションに対して、cryptsetupを使用して暗号化パーティションを作成している。
sudo cryptsetup luksFormat /dev/sdXY # 出力例 WARNING! ======== This will overwrite data on /dev/sdc4 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase for /dev/sdc4: # パスワードを入力する Verify passphrase: # 再度パスワードを入力する
初期化したLUKSパーティションをマッピング
sudo cryptsetup luksOpen /dev/sdXY <マッピング名>
暗号化されたパーティションをフォーマット(初回のみ)
sudo mkfs.<ファイルシステムの種類> <マッピング先のディレクトリ> # 例 sudo mkfs.ext4 <マッピング先のディレクトリ>
マウント
sudo mount <マッピング先のディレクトリ> <マウント先のディレクトリ>
暗号化したデバイスを削除
# アンマウント sudo umount <マウント先のディレクトリ> # LUKSパーティションの削除 sudo cryprsetup luksClose <マッピング名>
再度LUKSパーティションを作成する
LUKSパーティションを作成して、マウントする。(最初に設定したパスワードを入力する)
フォーマットする必要はない。(データが全て削除されてしまうため注意すること)
sudo cryptsetup luksOpen /dev/sdXY <マッピング名> sudo mount <マッピング先のディレクトリ> <マウント先のディレクトリ>
エラー関連
ファイルおよびディレクトリの削除
バックアップディレクトリ等を削除する時、以下のようなエラーが発生する場合がある。(ext4で確認済み)
rm: cannot remove '<ファイル名またはディレクトリ名>': Read-only file system
この時、ファイルシステムを読み書き可能な状態に再マウントする。
sudo mount -o remount,rw /run/media/<ユーザ名>/<ストレージのラベル名>
再マウントする時に、以下に示すようなエラーが出力される場合がある。
... read-write, is write-protected ...
この時、ファイルシステムを復元する。
sudo fsck /dev/sdXY # Xはドライブ名 # Yはパーティション名