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

20200123

新品のHDDを ext4 で使えるようにする

gnome-disks を起動。

gnome-disks

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

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

GPTを選んで「初期化」を押す。

UEFIを使うときはGPTが推奨されている。

確認画面で「初期化」を押す。

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

サイズとタイプを指定し、ディスクに名前をつける。

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

再起動して指定したサイズ/タイプ/名前で認識されるか確認する。

「▶」を押してマウントする。

SMARTのデータを確認する

gnome-disks

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

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

7秒ごとにディスク情報を読み込めばアンロード(ヘッド退避)を回避できる。HDDを差し込む前に次のコマンドを実行する(sdX は場所なので環境によって変わる)。

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

WD60EZAZ では IntelliPark を無効にできないのでこの方法が有効。IntelliPark を回避しないと頻繁にアンロードが発生する。ファイルを開くときに0.5秒ほど間が空き、もっさりとした動作になる。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は断片化しにくいので、そのスコアになったことはない。

HDDを別のHDDにまるごとバックアップする

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

-a を付けるとタイムスタンプが維持される。

HDDのファイルリストを保存する

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

DISKNAME="20190320"
DISKPATH="/run/media/username/${DISKNAME}"
mkdir -p ~/downloads/hdd_index
# HDDの空き容量を書き込む
df -BG ${DISKPATH} > ${DISKPATH}/${DISKNAME}.txt
# HDDのファイルリストを書き込む
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

頻繁にHDDの内容を検索する場合は ~/.bashrc にエイリアスを作る。

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

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

HOME