「設定 - ストレージ」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
341行目: 341行目:


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]

2023年4月13日 (木) 20:35時点における版

概要

ここでは、ストレージのマウント方法および再マウント方法を記載する。


ストレージのマウント

アタッチした追加ストレージの情報を確認する。

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

  • ソースコードからインストール
    1. GNUの公式Webサイトにあるddrescureページにアクセスして、ソースコードをダウンロードする。
    2. ダウンロードしたファイルを解凍する。
      tar xf ddrescue-<バージョン>.tar.lz
      cd ddrescue-<バージョン>
    3. ビルドディレクトリを作成する。
      mkdir build && cd build
    4. ddrescueをビルドおよびインストールする。
      ../configure --prefix=<ddrescueのインストールディレクトリ>
      make -j $(nproc)
      make install


故障および故障寸前のストレージをクローンする場合は、以下に示すように、ddrescueコマンドを2回実行する。
以下の例では、/dev/sdXがクローン元のストレージ、/dev/sdYがクローン先のストレージである。

  1. まず、読み取りエラーが存在しないブロックを全てコピーして、エラーをrescue.mapにマッピングする。
    sudo ddrescue -n /dev/sdX /dev/sdY ~/rescue1.map

  2. 次に、クローンされるデータの読み込みを3回試行して、不良ブロックのみをクローンする。
    もし、読み込みできない場合は、該当ブロックのデータはクローンしない。
    sudo ddrescue -d -r3 /dev/sdX /dev/sdY ~/rescue2.map

  3. クローン先のストレージのファイルシステムが正常かどうかを確認する。
    sudo fsck -f /dev/sdY



ストレージの総書き込み量(TBW)

SmartMonToolsのインストール

まず、SmartMonToolsをインストールする。

  • パッケージ管理システムからインストールする場合
    1. sudo zypper install smartmontools

  • ソースコードからインストールする場合
    1. SmartMonToolsのGithubからソースコードをダウンロードする。
    2. ダウンロードしたファイルを解凍する。
      tar xf smartmontools-<バージョン>.tar.gz
      cd smartmontools-<バージョン>.tar.gz
    3. ビルドディレクトリを作成する。
      mkdir build && cd build
    4. 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をインストールしてもよい。

  • パッケージ管理システムからインストールする場合
    1. sudo zypper install gsmartcontrol

  • ソースコードからインストールする場合
    1. GSmartControlのビルドに必要なライブラリをインストールする。
      sudo zypper install pcre-devel gtk3-devel gtkmm3-devel

    2. GSmartControlの公式WebサイトまたはGSmartControlのGithubからソースコードをダウンロードする。
    3. ダウンロードしたファイルを解凍する。
      tar xf gsmartcontrol-<バージョン>.tar.gz
      cd gsmartcontrol-<バージョン>.tar.gz
    4. ビルドディレクトリを作成する。
      mkdir build && cd build
    5. GSmartControlをビルドおよびインストールする。
      ../configure --prefix=<GSmartControlのインストールディレクトリ>
      make -j $(nproc)
      make install

    6. GSmartControlのPolKitポリシーファイルを作成する。
      sudo vi /usr/share/polkit-1/actions/org.gsmartcontrol-UserAdd.policy


 # /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)を求める。




ブロックデバイスの暗号化

Linuxカーネルは、ブロックデバイスごと、および、作成済みのファイルシステムを暗号化する機能をサポートしている。

ブロックデバイスごとに暗号化する機能には、cryptsetupコマンドやcryptmountコマンド等を使用する。
作成済みのファイルシステムを暗号化するには、eCryptfsEncFS等を使用する。

暗号化パーティションの作成

以下の例では、/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はパーティション名