Linuxでハードディスクを使うときのメモ

2020-05-03

新品のハードディスクを ext4 で使えるようにする

gnome-disks

フォーマットするディスクを選択。

右上の「≡」を押して「ディスクを初期化」を押す。

GPTを選んで「初期化」を押す。UEFIを使うときはGPTが推奨されている。
確認画面で「初期化」を押す。

「+」を押して未割り当て領域にパーティションを作成。

サイズとタイプを指定し、ディスクに名前をつける。ディスク名はマウントしたときディレクトリ名になるので、短めにする。長いとフルパスが見づらくなる。使用を開始した年月日を入れると交換の目安になって便利。

「▶」を押してマウントすれば使用できる。

SMARTのデータを確認する

gnome-disks

右上の「≡」を押して「SMART のデータとセルフテスト」を押す。

Western Digital の IntelliPark を一時的に回避する

7秒ごとにディスク情報を読み込めば IntelliPark を回避できる。次のコマンドを実行してからハードディスクを挿入する(sdX は環境によって変わる)。

sudo watch -n 7 hdparm -I /dev/sdX

WD60EZAZ では IntelliPark を無効にできないのでこの方法が有効。IntelliPark を回避しないと頻繁にアンロードが発生し、ファイルを開くときに毎回ヘッドの始動を待つので時間がかかる。SMARTの「Load/Unload Cycle Count」の値も急激に増える。

Western Digital の IntelliPark を永続的に無効にする

この方法は WD60EZAZ では使えない。WD40EZRZ-RT2, WD30EZRZ, WD30EZRX で動作確認済み(ただし無保証)。

sudo pacman -S idle3-tools
sudo idle3ctl -d /dev/sdX

設定後は電源を切る。再起動だとアイドルタイマーが無効にならない。

起動したらアイドルタイマーの状態を確認。

sudo idle3ctl -g /dev/sdX
# Idle3 timer is disabled

アイドルタイマーが無効になっている。

/home パーティションの予約ブロックを 0 にする

ext4 では5%の領域が予約ブロックになっている。これを解放すると空き容量が増える。

/home パーティションの番号を確認する。

df | grep home
# /dev/sda3  440G  137G  303G  32%  /home

/dev/sda3 の予約ブロックを 0 にする。

sudo tune2fs -m 0 /dev/sda3

その他

ディスクの断片化状態をチェックする

sudo e4defrag -c /dev/sdX1
# Fragmentation score 0
# [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
# This device (/dev/sdX1) does not need defragmentation.

スコアが56以上でデフラグが必要になる。ただしext4は断片化しにくいので、そのスコアになったことはない。

ハードディスクを別のハードディスクにまるごとバックアップする

cp -a /media/2018/ /media/2019/

-a を付けるとタイムスタンプを維持する。古いファイルを削除するとき役に立つ。

ハードディスクのファイルリストを保存する

ハードディスクのファイルリストを保存しておくと、どのファイルがどのハードディスクにあるのか検索できて便利。

DISKNAME="20190320"
DISKPATH="/run/media/username/${DISKNAME}"
mkdir -p ~/downloads/hdd_index

# ハードディスクの空き容量を書き込む
df -BG ${DISKPATH} > ${DISKPATH}/${DISKNAME}.txt

# ハードディスクのファイルリストを書き込む
find ${DISKPATH} -type f |sort -f >> ~/downloads/hdd_index/${DISKNAME}.txt

例として「backup」を検索する。

cd ~/downloads/hdd_index/
ag backup
# /home/username/hdd_index/20191213.txt
# 17:/run/media/username/20191213/_backup/backup.tar.lz4

「20191213」という名前のハードディスクに存在する。

頻繁にハードディスクの内容を検索する場合は ~/.bashrc にエイリアスを作る。

printf '\nfunction agg () {
   ag "$1" ~/downloads/hdd_index/
}' >> ~/.bashrc

「agg backup」で「ag backup ~/downloads/hdd_index/」相当になる。

HOME