TOC
AutoFS
外付けHDDを使う場合に、普通にHDDとしてマウントするのもいいのですが、万一切断されても縮退構成として運用を続けられるようにAutoFSを使って接続します。AutoFSは読み書きが一定時間ないと自動的に切断するマウント方法です。
本稿では、未フォーマットなHDDを繋いでbtrfsでフォーマット、AutoFSでマウントする手順で記載します。1OSはArmbian Bionic serverです。
HDD準備
HDD接続
NanoPi M4V2のUSBポートに接続します。接続後にどのデバイスファイルが使われるか確認するため、dmesg
コマンドを実行して確認します。
[ 1416.548666] usb 7-1.2: new high-speed USB device number 3 using xhci-hcd
[ 1416.569605] usb 7-1.2: New USB device found, idVendor=152d, idProduct=2339, bcdDevice= 1.00
[ 1416.569619] usb 7-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[ 1416.569629] usb 7-1.2: Product: USB to ATA/ATAPI Bridge
[ 1416.569639] usb 7-1.2: Manufacturer: JMicron
[ 1416.569649] usb 7-1.2: SerialNumber: DA50176188FF
[ 1416.571336] usb-storage 7-1.2:1.0: USB Mass Storage device detected
[ 1416.573339] scsi host0: usb-storage 7-1.2:1.0
[ 1416.591530] usbcore: registered new interface driver uas
[ 1417.663548] scsi 0:0:0:0: Direct-Access WDC WD10 EADS-00M2B0 PQ: 0 ANSI: 2 CCS
[ 1417.664617] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[ 1417.665289] sd 0:0:0:0: [sda] Write Protect is off
[ 1417.665305] sd 0:0:0:0: [sda] Mode Sense: 3c 00 00 00
[ 1417.665812] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 1417.677026] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 1425.811503] sda: sda1
[ 1425.813425] sd 0:0:0:0: [sda] Attached SCSI disk
今回は/dev/sda
が使われます。
パーティション切り
fdisk
コマンドでパーティションを切ります。cfdisk /dev/sda
の方がわかりやすいかもしれません。
# fdisk /dev/sda
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): p
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x61661c6d
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1953525167, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525167, default 1953525167):
Created a new partition 1 of type 'Linux' and of size 931.5 GiB.
Command (m for help): p
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x61661c6d
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 1953525167 1953523120 931.5G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
btrfsフォーマット
fdisk
コマンドで作成した/dev/sda1
パーティションをbtrfsでフォーマットします。
# mkfs.btrfs /dev/sda1
btrfs-progs v4.15.1
See http://btrfs.wiki.kernel.org for more information.
Label: (null)
UUID: 3efe13e5-c7e5-4b6b-ac49-a3e539026d36
Node size: 16384
Sector size: 4096
Filesystem size: 931.51GiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 1.00GiB
System: DUP 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 1
Devices:
ID SIZE PATH
1 931.51GiB /dev/sda1
ここで得られたUUIDである3efe13e5-c7e5-4b6b-ac49-a3e539026d36を使うと他のパーティションと間違えて操作する不安がなくなるので、以降の手順ではUUIDを指定します。
また、デバイスファイル→UUIDの確認はblkid
コマンド、UUID→デバイスファイルの確認はls
で確認できます。
$ blkid /dev/sda1
/dev/sda1: UUID="3efe13e5-c7e5-4b6b-ac49-a3e539026d36" UUID_SUB="6646f669-4e18-4534-81c3-c5900034788d" TYPE="btrfs" PARTUUID="61661c6d-01"
$ ls -l /dev/disk/by-uuid/3efe13e5-c7e5-4b6b-ac49-a3e539026d36
lrwxrwxrwx 1 root root 10 3月 26 11:49 /dev/disk/by-uuid/3efe13e5-c7e5-4b6b-ac49-a3e539026d36 -> ../../sda1
AutoFS設定
パッケージのインストール
# apt-get install autofs
設定ファイルの記述
AutoFSの全体の設定は/etc/autofs.conf
にあり、どこに設定を書けば良さそうかというと
master_map_name = /etc/auto.master
なので、/etc/auto.master
を見てみると
+dir:/etc/auto.master.d
+auto.master
となっていて、/etc/auto.master.d
の下に設定ファイル(拡張子.autofs)を作ると後々管理が楽そうなので、/etc/auto.master.d
ディレクトリを作成して、
# mkdir /etc/auto.master.d
/etc/auto.master.d/usbhdd1.autofs
を作成します。
/- /etc/auto.usbhdd1
ここで指定した/etc/auto.usbhdd1
を作成します。
/autofs/usbhdd1 -fstype=btrfs,rw :/dev/disk/by-uuid/3efe13e5-c7e5-4b6b-ac49-a3e539026d36
ここで記述したマウントポイントを作ります。
# mkdir -p /autofs/usbhdd1
設定ファイルの反映確認
上で指定した設定値が反映されているか確認します。
# automount -m
autofs dump map information
===========================
global options: none configured
Mount point: /-
source(s):
instance type(s): file
map: /etc/auto.usbhdd1
/autofs/usbhdd1 | -fstype=btrfs,rw :/dev/disk/by-uuid/3efe13e5-c7e5-4b6b-ac49-a3e539026d36
反映されてそうなので、serviceを再起動してステータスを確認します。
# systemctl restart autofs.service
# systemctl status autofs.service
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: e
Active: active (running) since Thu 2020-03-26 00:58:24 JST; 6s ago
Process: 5162 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /var/run/autof
Main PID: 5163 (automount)
Tasks: 4 (limit: 4611)
CGroup: /system.slice/autofs.service
└─5163 /usr/sbin/automount --pid-file /var/run/autofs.pid
3月 26 00:58:24 nanopim4v2 systemd[1]: Starting Automounts filesystems on deman
3月 26 00:58:24 nanopim4v2 systemd[1]: Started Automounts filesystems on demand
マウントされているかどうか確認します。
$ mount | egrep "(autofs|usbhdd)"
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
/etc/auto.usbhdd1 on /autofs/usbhdd1 type autofs (rw,relatime,fd=6,pgrp=5163,timeout=300,minproto=5,maxproto=5,direct)
autofsとしてはマウントされていますが、実際のファイルシステムはマウントされていなので、lsでマウントされているはずの/autofs/usbhdd1
を見てみます。
$ ls /autofs/usbhdd1/
$ mount | egrep "(autofs|usbhdd)"
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
/etc/auto.usbhdd1 on /autofs/usbhdd1 type autofs (rw,relatime,fd=6,pgrp=5163,timeout=300,minproto=5,maxproto=5,direct)
/dev/sda1 on /autofs/usbhdd1 type btrfs (rw,relatime,space_cache,subvolid=5,subvol=/)
実際にアクセスすることでbtrfsとしてマウントされることを確認できました。
スポンサーリンク
- 実際にはRaspberry Pi3Bでパーティションを切って使っていたHDDを繋いでいるので多少違いはあるかもしれません [return]
comments powered by Disqus