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的,这个会面临不可写的问题。

Mark24

Everything can Mix.