外付けHDDの追加について（Ubuntu22.04LTS）

# パーティションとは……？？ マウントとは……？？？？

　こんにちは。なんちゃってUbuntuユーザーです。Windowsだったら差し込むだけの物理記憶媒体なのにマウントとかって一体……？　ってなったので備忘録。タイトルのまんまですね。　正直言ってそのへんに詳しくなったかと言われればNoなのだが、なんとな〜〜く使えるぐらいの感じにはなったので。

　あとこれUbuntu使い始めてめっっっっちゃ思うんですけど
<br>
 　　<font size="7"><b>外付けHDDにプロンプトからアクセスできるのすっごく便利！！！！！！！！</b></font>  
<br>


#### マシンが認識している記憶媒体
```
sudo fdisk -l |grep /dev/sd
```
![Screenshot from 2024-07-22 19-14-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3256509/55c905f6-5e2c-2ecd-34ac-85f7978551c1.png)

　だいたい外付けのディスクたちは /dev/sda1, /dev/sdb1, ...って感じの名前なのでこれで認識されているのかどうかを確認することができる。

#### マウントされているやつら
```
df -h
```

　まず df でマウント済みのファイルシステムを表示することができる。/dev/sda1 のところにはメインの記憶媒体が表示されているはずである。Mounted on のところが　<b>/</b>　になっているやつである。もともとメインマシンの記憶容量は100GBちょっとあったはずなのだが、AnacondaとIntel&reg;oneAPIが <font color=grey>
アホみたいに
</font> 非常に容量を食っており、ほぼほぼ埋まりかけているのでなんか大規模な計算とかする人は外付けHDD必須と言ってもいい。

#### 新しく記憶媒体を追加したいとき
　基本的には
 <ol>
 <li>記憶媒体をぶっ差す</li>
 <li>パーティション作成</li>
 <li>フォーマット&マウントする</li>
 <li>UUIDを確認する</li>
 <li>設定ファイルに書き込む</li>
 <li>設定ファイルを読み込ませる（認識させる）</li>
 <li>（おまけ）取り外したいとき</li>
 </ol>
 
といった流れになるかと思う。UUID〜以降のやつはマシンを立ち上げたときに自動的にマウントするようにしておくためである。頻繁に抜き差しする予定なら書かなくて良い。何度もマウントするのめんどくさいな〜〜という場合用である。あとフォーマットについてはUbuntu onlyで使う予定の人はxfsやext4、Windowsとかでも使うよって人はFAT32を選択しておけばいいと思われる。私はext4（安牌）にしています。
詳しくは↓↓↓
https://www.rescue-center.jp/explanation/filesystem/type.html
<br>
<font color=grey>
<b>基本的にはと書いたとおり、基本的じゃないところもありまして、パーティションが存在しない場合なんかがあるのですが、それだけで１記事になるので今回は割愛します。</b>
</font>

<br>
<b>１.記憶媒体をぶっ差す</b><br>

　……好きなとこに差しといてください。ちなみにUSBポートの黒いやつはUSB2.0、青いやつはUSB3.0でちょっぴり規格が違ったりする。あまり気にならない人なら良いのだが、もしお持ちの記憶媒体のUSBハブのところを覗いてみて青色だったら青色同士でつなぐと通信速度が速くなる。
そんなに大規模なデータ通信しない限りはあまり実感することもないし、大きいデータやり取りするときはどのみち時間がかかるのでそのへんはお好みでどうぞ。
<br>
<b>２.パーティション作成 & フォーマット</b>
 まずはさっき差した装置がどこに認識されているのかを調べます。
```
sudo dmesg | grep sd
```
で <b>/dev/sda 以外</b> のメッセージ<b>（初めて追加する場合はおそらく/dev/sdb）</b> がでている場所を見ます。アンカーとか使ってる人は違うかもしれないけどもうそれ慣れてるでしょ。
```
sudo fdisk /dev/sdb
```
でパーティションを削除 & 新規作成したいストレージを指定します。

```
fdisk (util-linux 2.37.2) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。

This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.


コマンド (m でヘルプ): p

ディスク /dev/sdd: 3.64 TiB, 4000787030016 バイト, 7814037168 セクタ
Disk model: ####ディスクのモデル名####  
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: ####英数字がいっぱい書いてあります####

デバイス   開始位置   最後から     セクタ サイズ タイプ
/dev/sdd1      2048 7814035455 7814033408   3.6T Linux ファイルシステム
```
fdisk に入ったあとpコマンドを打つとこんな感じでパーティションが表示されます。この場合は/dev/sdd1ですね。<br>
次に
・<b>dコマンドで指定したストレージ内のパーティションを全て削除します</b>
・再びpコマンドでパーティションが消えたことを確認して<b>wコマンドで変更を適用します</b>

<font color=grey>
なんかこういう取り返しのつかない変更ってちょっと怖くないですか？
</font>
　これで一度 fdisk の対話モードを抜けたと思うので、今度はパーティションを新規作成するためにもう一度入ります。
```
fdisk /dev/sdb
```
対話モードに入ったら<b>nコマンド</b>でパーティションを新規作成します。基本パーティションを選んだらあとはデフォルトでOKです。
念の為<b>pコマンド</b>でパーティションが作成されているのを確認し、<b>wコマンド</b>で設定を反映します。<br>

<b>３. マウントする</b>
```
# ext4 でフォーマット
sudo mkfs -t ext4 /dev/sdb1
# /dev/sdb1をマウント
sudo mount /dev/sdb1 mount_point
```
上の mount_point はどこに入口を作ろうかな〜ということである。そしてとても重要なことがある。それは
<br>　　　　　　　<b><b><u>マウントポイントには空のディレクトリを指定する</u></b></b><br>
ということだ。絶対に覚えておいてください。ちなみにマウントポイントはホームディレクトリだと/home/user の配下に作ることになる。のだが、一般的には<b>マウントした装置用のディレクトリが存在していて　/media とか /mnt とかだったりする</b>ので、その配下に作っておくものである。らしい。使いづらかったらあとからシンボリックリンクつくればいいもんね。
```
mkdir /media/user/hdd1
```
とかで予めそれ用のディレクトリを作っておくと良い。名前はお好きにつけてもらって構わない。

<b>４. UUIDを確認する</b>
　UUIDってディスクのマインバーを確認してるような感じですね。たとえば <b>sudo fdisk -l |grep /dev/sd</b> で確認したファイルシステムの名前が <b>/dev/sdb1</b> だったとする。（さっき/dev/sdbにパーティション作成したのでその設定で行く。）このとき
```
sudo blkid /dev/sdb1
```
でUUIDが確認できる。ついでに他のいろいろな情報も見ることができるぞ！<br>
<b>５.設定ファイルに書き込む</b>

　設定用のファイルを管理者権限でオープン
```
sudo vim /etc/fstab
```
ファイルの中身は下のような感じになっていると思う。UUIDはなんかいっぱい数字とアルファベットが並んでいるはずだ。一番最後の行が今回追記する部分である。すでにUUIDは確認したと思うので、あとはマウントポイントとフォーマットタイプを指定しておく。<b>４.でTYPEのところにフォーマットタイプが書いてある</b>のでちょっとスクロールバックして確認してみてほしい。
```
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=### UUID for your filesystem ### /               ext4    errors=remount-ro 0       1
/swapfile                                 none            swap    sw              0       0

UUID=### enter UUID for your filesystem ### mount_point ext4 nofail  0      0 
```

<b>６.設定ファイルを読み込ませる</b><br>
```
sudo systemctl daemon-reload
```


<b>７.（おまけ）取り外したいとき</b>

```
umount /dev/sdb1
```
おわりです。一度設定が終わってしまえばあとは簡単なのでここまでなんとか済ませていただいて……。間違いとかありましたらご容赦&ご連絡ください。

## 参考

https://nonbiri-tereka.hatenablog.com/entry/2014/11/21/090050

https://qiita.com/kihoair/items/03635447591358210772

https://zenn.dev/tochiman/articles/a3c4ace8e20874

https://www.rescue-center.jp/explanation/filesystem/type.html

https://qiita.com/makomi/items/21e9cc9347a5df29b406

https://blog.panicblanket.com/archives/4357