しおむすび

ごった煮ブログになる予定です。

Windowsで使っていたHDDをUbuntuで使う

目次

 

前提

Windowsで使っていた、データが入っているHDD(以下、HDD A)をUbuntuに移し替えて、ファイルサーバのHDDとして使おうと思います。
他のブログでも使い方紹介がありますが、初心者の自分用の備忘録として書いていきます。
環境は以下の通りです。

事前準備

念のためHDD Aの中のデータをWindows上で別のHDD(以下HDD B)へコピーします。HDD Bは以前もデータ退避用等で使っており、HDD Aと共にNTFSでフォーマットされています。このNTFSフォーマットが後で問題となるのですが…
HDD Bへのコピーは無事に完了し、HDD Aと共にSATAで接続します。ここまでは順調です。

UbuntuにてHDDを使う

本来はUbuntuLinux)で使うためHDD Aを再フォーマットした方が良いとは思いましたが、データが入ったままであり、バックアップをHDD Bへ取ったとはいえ、万が一のことも考えてそのまま使えないか試してみます。
まずHDD Aを使うには、Ubuntuにてマウントしなければいけないらしく、コマンドを打っていきます。接続されているHDD Aの確認から。

$ sudo fdisk -l

ディスク /dev/sdb: 1.82 TiB, 2000398934016 バイト, 3907029168 セクタ
Disk model: HGST HUS726020AL
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: ***********************************

バイス   開始位置   最後から     セクタ サイズ タイプ
/dev/sdb1        34      32767      32734    16M Microsoft 予約領域
/dev/sdb2     32768 3907026943 3906994176   1.8T Microsoft 基本データ

この/dev/sdbにデータが保存されているみたいです。そしてマウントしていきます。マウントポイントは「storage_hdd」にします。

$ sudo mount /dev/sdb2 /storage_hdd
mount: /storage_hdd: マウントポイントが存在しません.

「マウントポイントが存在しない」が出たということは、そのマウントポイントを作らないといけないとだろうと推察し、mkdirでディレクトリをルート直下に作ります。

$ sudo mkdir storage_hdd

再度試すと、

$ sudo mount /dev/sdb2 /storage_hdd
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)

”このディスクには、クリーンでないファイルシステム(0, 0)が含まれています。
メタデータWindows のキャッシュに保存され、マウントは拒否されました。
NTFS パーティションが安全でない状態なので、読み取り専用にフォールバックしてマウントしています。
安全でない状態です。Windows をレジュームして完全にシャットダウンしてください (ハイバネーションや高速再起動は不可。または高速再起動。)”

マウントポイントの作成は成功したみたいです。事前にディレクトリを作らないと行けないようです。
ただし「安全ではない状態です」と言われると、このまま常用し続けるのは厳しいでしょう。このメッセージの対処法を調べてみます。

precure-3dprinter.hatenablog.jp

freefielder.jpこの先人達によると、デュアルブート、特にWin側の高速スタートアップによって引き起こされるエラーのようです。
Ubuntu側でntfsfixコマンドで修復を行い、Win側で高速スタートアップ機能を無効にするのが良さそうです。

エラーの修復

ではUbuntu側にて

$ sudo ntfsfix /dev/sdb2
Mounting volume... The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb2 was processed successfully.

successfullyと出たので上手くいったのでしょう。高速スタートアップ機能の無効化は、

コントロールパネルの開き方

Windowsマーク」→「Windowsシステムツール」→「コントロールパネル」の順でコントロールパネルを開き、緑の「ハードウェアとサウンド」を選択します。

ハードウェアとサウンドを選ぶ

次に「電源オプション」を選択します。

電源オプションを選択

その後、左リスト上の「電源ボタンの動作を選択する」を選択し、

「電源ボタンの動作の選択する」を選ぶ

シャットダウン設定のバー下にある「高速スタートアップを有効にする」のチェックボックスからチェックを外すだけです。もし画像のようにチェックボックスがブレーアウトしていたら、「現在利用可能ではない設定を変更します」をクリックすると選択できるようになります。後は忘れずに変更の保存をして下さい。

高速スタートアップを無効にする
再マウント

保存できればPCを再起動して再度Ubuntuにてログインします。そしてマウントを再実施します。

$ sudo mount /dev/sdb2 /storage_hdd/
$

今度は何もエラー無く、マウントできました。一応マウントできたかどうか確認します。

~$ cd /storage_hdd/
/storage_hdd$ ll
合計 16
drwxrwxrwx  1 root root 4096 12月 12  2021 '$RECYCLE.BIN'/
drwxrwxrwx  1 root root 4096  8月 28 00:57  ./
drwxr-xr-x 21 root root 4096 10月  6 00:54  ../
drwxrwxrwx  1 root root 4096  9月  2 16:55 'System Volume Information'/
drwxrwxrwx  1 root root    0 10月 31  2021  メディアディスク/

しっかりとHDD Aの中が見ることができました。

自動マウントの設定

ただし現状では再起動するとアンマウントされ、起動の度にマウントが必要です。それではとても不便なので自動マウントされるようにします。

qiita.comこのブログによると、自動マウントにはUUIDが必要とのこと。このような点がWindowsとは異なりますね。
まずはUUIDを取得します。

$ sudo blkid /dev/sdb2
/dev/sdb2: LABEL="STORAGE_HDD" BLOCK_SIZE="512" UUID="7***********" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="*****************"

その後、/etc/fstabに設定として書き込みます。

$ sudo nano /etc/fstab
(以下を最終行に追記する)
# /storage_hddを自動でマウントする
UUID=7*********** /storage_hdd ntfs defaults 0 0

追記する内容は以下の通りです。

  1. UUID
  2. マウントポイント
  3. フォーマットタイプ
  4. マウントオプション(通常はdefaultsで良い)
  5. dump設定
    0でdump不要
  6. fsck設定
    0で無実行、1でルートファイルで実行、2でルートファイル以外で実行

1.でパスを指定することもできますが(/dev/sdb2等)、もしHDDを換装し別のHDDがそのパスを使用した場合でも、新しいHDDが/storage_hddにマウントされます。
今回はそのような使い方を想定していないため、HDD AのUUIDを用いて固定的に設定します。
一度設定が上手く出来ているか、以下のコマンドで確認します。

$ sudo mount -a

エラーが出ないので、無事に設定できたようです。更に再起動をかけて確認しても自動的にHDD Aがマウントされました。

これから

無事にHDD AをUbuntuにてマウントできたので、今度はファイルサーバの機能をUbuntuに入れていきます。LinuxのファイルサーバはSambaがベターなのでこれを用いたいと思います。