情報ソース:
- man mount
- man umount
- ファイルシステムのマウント
mount
コマンドを使う
device
はブロックデバイスへの完全パス(ex: /dev/sda3
)やボリュームラベルを指定するmount -a
は /etc/fatab
に書かれているファイルシステムについてすべてマウントするという動きSYNOPSIS mount [-lhV] mount -a [-fFnrsvw] [-t vfstype] [-O optlist] mount [-fnrsvw] [-o option[,option]...] device|dir mount [-fnrsvw] [-t vfstype] [-o options] device dir
mount
で確認できる[ec2-user@ip-172-31-40-79 ~]$ mount proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=499560k,nr_inodes=124890,mode=755) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /dev/shm type tmpfs (rw,relatime) /dev/xvda1 on / type ext4 (rw,noatime,data=ordered) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
情報ソース: マウントオプションの指定
async ファイルシステム上での非同期の入/出力を許可します。 auto mount -a コマンドを使ったファイルシステムの自動マウントを許可します。 defaults async,auto,dev,exec,nouser,rw,suid のエイリアスを指定します。 exec 特定のファイルシステムでのバイナリーファイルの実行を許可します。 loop イメージをループデバイスとしてマウントします。 noauto mount -a コマンドを使ったファイルシステムの自動マウントをデフォルトの動作として拒否します。 noexec 特定のファイルシステムでのバイナリーファイルの実行を拒否します。 nouser 普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントを拒否します。 remount ファイルシステムがすでにマウントされている場合は再度マウントを行います。 ro 読み取り専用でファイルシステムをマウントします。 rw ファイルシステムを読み取りと書き込み両方でマウントします。 user 普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントを許可します。
# 以下のような形で用いる mount -o options device directory
umount
で行えるumount
の man の DESCRIPTION は以下のとおりThe umount command detaches the file system(s) mentioned from the file hierarchy. A file system is specified by giving the directory where it has been mounted. Giving the special device on which the file system lives may also work, but is obsolete, mainly because it will fail in case this device was mounted on more than one directory. Note that a file system cannot be unmounted when it is 'busy' - for example, when there are open files on it, or when some process has its working directory there, or when a swap file on it is in use. The offending process could even be umount itself - it opens libc, and libc in its turn may open for example locale files. A lazy unmount avoids this problem.
AWS でサクッと実験
情報ソース: Amazon EBS ボリュームを使用できるようにする
/dev/sdb
, /dev/sdc
というデバイス名で EBS ボリュームをアタッチした/dev/xvda1
のみが、マウントポイント /
にマウントされている状態であることがわかる[ec2-user@ip-172-31-40-79 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdc 202:32 0 8G 0 disk xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdb 202:16 0 8G 0 disk
sudo file -s /dev/xvdb
などと打っておく
data
と表示された場合はファイルシステムが作られていない[ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvda /dev/xvda: DOS/MBR boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, 1st sector stage2 0x800, stage2 segment 0x200, GRUB version 0.94, extended partition table (last) [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdc /dev/xvdc: data [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdb /dev/xvdb: data
xvdc
, xvdb
に ext4 ファイルシステムを作成する[ec2-user@ip-172-31-40-79 ~]$ sudo mkfs -t ext4 /dev/xvdc mke2fs 1.42.12 (29-Aug-2014) Creating filesystem with 2097152 4k blocks and 524288 inodes Filesystem UUID: e95fa823-347a-4f25-bbdc-f02c65bc924b Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [ec2-user@ip-172-31-40-79 ~]$ sudo mkfs -t ext4 /dev/xvdb mke2fs 1.42.12 (29-Aug-2014) Creating filesystem with 2097152 4k blocks and 524288 inodes Filesystem UUID: 9fa3d955-b3db-4cd4-8f71-dc034a2db50f Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdc /dev/xvdc: Linux rev 1.0 ext4 filesystem data, UUID=e95fa823-347a-4f25-bbdc-f02c65bc924b (extents) (large files) (huge files) [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdb /dev/xvdb: Linux rev 1.0 ext4 filesystem data, UUID=9fa3d955-b3db-4cd4-8f71-dc034a2db50f (extents) (large files) (huge files)
umount マウントポイント
でイケる[ec2-user@ip-172-31-40-79 ~]$ df -ha Filesystem Size Used Avail Use% Mounted on proc 0 0 0 - /proc sysfs 0 0 0 - /sys devtmpfs 488M 64K 488M 1% /dev devpts 0 0 0 - /dev/pts tmpfs 497M 0 497M 0% /dev/shm /dev/xvda1 7.8G 1.1G 6.6G 15% / devpts 0 0 0 - /dev/pts none 0 0 0 - /proc/sys/fs/binfmt_misc #=> まだマウントされていない [ec2-user@ip-172-31-40-79 ~]$ sudo mkdir -p /mnt/c [ec2-user@ip-172-31-40-79 ~]$ sudo mkdir -p /mnt/b [ec2-user@ip-172-31-40-79 ~]$ sudo mount /dev/xvdc /mnt/c [ec2-user@ip-172-31-40-79 ~]$ sudo mount /dev/xvdb /mnt/b [ec2-user@ip-172-31-40-79 ~]$ df -ha Filesystem Size Used Avail Use% Mounted on proc 0 0 0 - /proc sysfs 0 0 0 - /sys devtmpfs 488M 64K 488M 1% /dev devpts 0 0 0 - /dev/pts tmpfs 497M 0 497M 0% /dev/shm /dev/xvda1 7.8G 1.1G 6.6G 15% / devpts 0 0 0 - /dev/pts none 0 0 0 - /proc/sys/fs/binfmt_misc /dev/xvdc 7.8G 18M 7.4G 1% /mnt/c /dev/xvdb 7.8G 18M 7.4G 1% /mnt/b #=> xvdc, xvdb がマウントされていることが確認できた
/etc/fstab
に書いておけばブート時にマウントされるようになる
[ec2-user@ip-172-31-40-79 ~]$ #=> UUID の確認 [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdb /dev/xvdb: Linux rev 1.0 ext4 filesystem data, UUID=9fa3d955-b3db-4cd4-8f71-dc034a2db50f (needs journal recovery) (extents) (large files) (huge files) [ec2-user@ip-172-31-40-79 ~]$ sudo file -s /dev/xvdc /dev/xvdc: Linux rev 1.0 ext4 filesystem data, UUID=e95fa823-347a-4f25-bbdc-f02c65bc924b (needs journal recovery) (extents) (large files) (huge files) [ec2-user@ip-172-31-40-79 ~]$ [ec2-user@ip-172-31-40-79 ~]$ #=> fstab のバックアップ [ec2-user@ip-172-31-40-79 ~]$ sudo cp /{etc,tmp}/fstab [ec2-user@ip-172-31-40-79 ~]$ [ec2-user@ip-172-31-40-79 ~]$ #=> fstab の編集 [ec2-user@ip-172-31-40-79 ~]$ sudo /etc/fstab [ec2-user@ip-172-31-40-79 ~]$ [ec2-user@ip-172-31-40-79 ~]$ diff /{tmp,etc}/fstab 6a7,8 > UUID=9fa3d955-b3db-4cd4-8f71-dc034a2db50f /mnt/b ext4 defaults,nofail 0 2 > UUID=e95fa823-347a-4f25-bbdc-f02c65bc924b /mnt/c ext4 defaults,nofail 0 2 [ec2-user@ip-172-31-40-79 ~]$ [ec2-user@ip-172-31-40-79 ~]$ #=> 設定がうまくできたか確認(エラーがでなければ OK) [ec2-user@ip-172-31-40-79 ~]$ sudo mount -a
この状態で AMI を作り、新たなインスタンスを起動したときのシステムログをマネジメントコンソールからのぞいてみた
[ 0.000000] Linux version 4.9.81-35.56.amzn1.x86_64 (mockbuild@gobi-build-64010) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC) ) #1 SMP Fri Feb 16 00:18:48 UTC 2018 [ 0.000000] Command line: root=LABEL=/ console=tty1 console=ttyS0 selinux=0 nvme_core.io_timeout=4294967295 ...中略... [ 1.377030] blkfront: xvda: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled; [ 1.466646] xvda: xvda1 [ 1.470952] blkfront: xvdb: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled; [ 1.483846] blkfront: xvdc: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled; ...中略... [ 1.945052] EXT4-fs (xvda1): mounted filesystem with ordered data mode. Opts: (null) [ 2.246964] dracut: Remounting /dev/disk/by-label/\x2f with -o noatime,ro [ 2.254239] EXT4-fs (xvda1): mounted filesystem with ordered data mode. Opts: (null) [ 2.261316] dracut: Mounted root filesystem /dev/xvda1 [ 2.287777] dracut: Switching root image_name="amzn-ami-hvm" image_version="2017.09" image_arch="x86_64" image_file="amzn-ami-hvm-2017.09.1.20180307-x86_64.ext4.gpt" image_stamp="4f0a-5dc5" image_date="20180307064742" recipe_name="amzn ami" recipe_id="c9c871d2-7d71-8baa-e873-c70f-cbbe-ddb2-79ee86e7" Welcome to Amazon Linux AMI [ 4.039394] random: crng init done Starting udev: [ 4.090251] udevd[1557]: starting version 173 [ 4.155430] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3 [ 4.254276] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input4 [ 4.264165] ACPI: Power Button [PWRF] [ 4.267003] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input5 [ 4.281774] ACPI: Sleep Button [SLPF] [ 4.285643] mousedev: PS/2 mouse device common for all mice [ OK ] Setting hostname localhost.localdomain: [ OK ] Setting up Logical Volume Management: WARNING: Failed to connect to lvmetad. Falling back to device scanning. [ OK ] Checking filesystems Checking all file systems. [/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/xvda1 /: clean, 37254/524288 files, 330862/2096635 blocks [/sbin/fsck.ext4 (1) -- /mnt/b] fsck.ext4 -a /dev/xvdb [/sbin/fsck.ext4 (2) -- /mnt/c] fsck.ext4 -a /dev/xvdc /dev/xvdb: clean, 12/524288 files, 70287/2097152 blocks /dev/xvdc: clean, 11/32768000 files, 2107224/131072000 blocks [ OK ] Remounting root filesystem in read-write mode: [ 5.954268] EXT4-fs (xvda1): re-mounted. Opts: (null) [ OK ] Mounting local filesystems: [ 5.972827] EXT4-fs (xvdb): mounted filesystem with ordered data mode. Opts: (null) [ 5.994295] EXT4-fs (xvdc): mounted filesystem with ordered data mode. Opts: (null) [ OK ] Enabling local filesystem quotas: [ OK ] Enabling /etc/fstab swaps: [ OK ] ...中略... Amazon Linux AMI release 2017.09 Kernel 4.9.81-35.56.amzn1.x86_64 on an x86_64 ip-172-31-41-132 login:
ro
オプションをつけると当然ながら、書き込みができない[ec2-user@ip-172-31-40-161 ~]$ sudo mount -o ro /dev/xvdb /mnt/b [ec2-user@ip-172-31-40-161 ~]$ mount proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=499564k,nr_inodes=124891,mode=755) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /dev/shm type tmpfs (rw,relatime) /dev/xvda1 on / type ext4 (rw,noatime,data=ordered) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) /dev/xvdb on /mnt/b type ext4 (ro,relatime,data=ordered) [ec2-user@ip-172-31-40-161 ~]$ [ec2-user@ip-172-31-40-161 ~]$ #=> read-only でマウントしているので書き込めない [ec2-user@ip-172-31-40-161 ~]$ sudo touch /mnt/b/test touch: cannot touch ‘/mnt/b/test’: Read-only file system
/mnt/b
に cd
して、cwd を マウントポイントにします[ec2-user@ip-172-31-40-161 b]$ mount proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=499564k,nr_inodes=124891,mode=755) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /dev/shm type tmpfs (rw,relatime) /dev/xvda1 on / type ext4 (rw,noatime,data=ordered) devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) /dev/xvdb on /mnt/b type ext4 (rw,relatime,data=ordered) [ec2-user@ip-172-31-40-161 b]$ pwd /mnt/b [ec2-user@ip-172-31-40-161 b]$ sudo umount /mnt/b umount: /mnt/b: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
また、cwd がマウントポイントなプロセスが動いている状態で、umount しても(あたりまえではあるが)同様
[ec2-user@ip-172-31-40-161 tmp]$ cd /mnt/b/ [ec2-user@ip-172-31-40-161 b]$ [ec2-user@ip-172-31-40-161 b]$ [ec2-user@ip-172-31-40-161 b]$ [ec2-user@ip-172-31-40-161 b]$ [ec2-user@ip-172-31-40-161 b]$ bash & [2] 2758 [ec2-user@ip-172-31-40-161 b]$ cd /tmp/ [ec2-user@ip-172-31-40-161 tmp]$ ps aux | grep 2758 ec2-user 2758 0.0 0.2 115220 2980 pts/0 T 15:10 0:00 bash ec2-user 2760 0.0 0.2 110468 2140 pts/0 S+ 15:10 0:00 grep --color=auto 2758 [ec2-user@ip-172-31-40-161 tmp]$ ls -l /proc/2758/cwd lrwxrwxrwx 1 ec2-user ec2-user 0 Apr 13 15:11 /proc/2758/cwd -> /mnt/b [ec2-user@ip-172-31-40-161 tmp]$ sudo umount /mnt/b/ umount: /mnt/b: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))