Mark24
WIP_linux Systemd挂载硬盘相关
记录一些硬盘相关的闭环操作
查看挂在磁盘的容量
df - report file system disk space usage
df -h
-h友好查看硬盘使用
例如输出如下
➜ system df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/root 117G 8.6G 104G 8% /
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 186M 1.7G 11% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 49M 204M 20% /boot
tmpfs 367M 0 367M 0% /run/user/1000
查看挂在设备
lsblk - list block devices
lsblk
默认输出分区、大小、挂载点等信息
➜ system lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
└─sda1 8:1 0 111.8G 0 part
mmcblk0 179:0 0 119.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 118.9G 0 part /
硬盘分区操作
fdisk - manipulate disk partition table
fdisk是常用的硬盘、分区操作工具,需要root权限执行,-l参数可以打印硬盘信息。
sudo fdisk -l
.....
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Disk model: SDSSDA120G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 52087BC0-B53D-4CDE-AEF7-13C8DCBE3E33
Device Start End Sectors Size Type
/dev/sda1 2048 234440703 234438656 111.8G Microsoft basic data
分区
GNU Parted - a partition manipulation program
sudo parted -l
挂载磁盘
mount - mount a filesystem
mount常用来挂载硬盘、分区等,和查看挂载信息。
mount
输出
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=1709216k,nr_inodes=84560,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmod
......
卸载操作
umount - unmount file systems
# 卸载硬件
umount /dev/sda1
# 卸载挂载点
umount /share/udisk
挂载情景
1. 简单挂载
例如把 /dev/foo
设备挂载到 /dir
sudo mount /dev/foo /dir
默认这种情况的用户是 root,普通用户无法写
drwxr-xr-x 8 root root 131072 11月 25 13:28 udisk
2. 赋予当前用户
假设当前用户是 pi
使用 -o 选项
-o, --options opts
Use the specified mount options. The opts argument is a comma-separated list. For example:
mount LABEL=mydisk -o noatime,nodev,nosuid
For more details, see the FILESYSTEM-INDEPENDENT MOUNT OPTIONS and FILESYSTEM-SPECIFIC MOUNT OPTIONS sections.
这里我们把 userid、groupid 都设置为当前用户,当前用户组,再正常挂载。
用户pi
正常拥有读写能力。
sudo mount -o uid=pi -o gid=pi /dev/sda1 /home/pi/udisk
#ls -al
drwxr-xr-x 8 pi pi 131072 11月 25 13:32 udisk
systemd 挂载
这里使用systemd挂载命令
系统自动命令放在 /etc/systemd/system/
下
mount的命令文件名字必须符合约定,比如 挂载点是 home/pi/udisk
约定使用 home-pi-udisk.mount
命名。
方便systemd统一管理
sudo vim /etc/systemd/system/home-pi-udisk.mount
编辑配置文件
[Unit]
Description=SSD 120G Disk
[Mount]
What=/dev/sda1
Where=/home/pi/udisk
[Install]
WantedBy=multi-user.target
这里可能会存在格式的问题,无法挂在成功,比如我的 SSD的格式为了兼容平台 是 exfat,这里systemd就直接报错无法识别文件格式。
这里需要安装支持exfat的库,重启服务即可成功
sudo apt install exfat-fuse exfat-utils
角色挂载
上面使用systemd创建的挂载,有人会发现他是默认root的,这个会面临不可写的问题。