linux磁盘管理
本文架构
磁盘基础介绍
磁盘的分类:
IDE磁盘 | 特点价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。 |
SCSI磁盘 | 传输速率高,读写性能好,运行稳定,可连接多个设备。可支持热插拔,占用CPU低,但是价格相对来说比较贵,一般用于工作站或服务器上。 |
SATA磁盘 | 结构简单、支持热插拔 |
USB |
其中IDE的磁盘的文件名为 /dev/hd[a-d]
而SCSI、SATA、USB的磁盘文件名为 /dev/sd[a-p]
查看当前挂载的设备信息
系统真实存在的不一定能被识别,能识别的不一定能使用,能用的不一定是正在使用的
fdisk -l | 查看系统真实存在的设备 |
cat /proc/partition | 查看被系统已经识别的设备 |
blkid | 查看系统可以使用的设备 |
df | 查看系统正在挂载使用的设备 |
fdisk -l查看系统真实存在的设备
cat /proc/partition 查看被系统已经识别的设备
blkid查看系统可以使用的设备
df查看系统正在挂载使用的设备
设备的挂载和卸载
mount命令及参数
mount | |
---|---|
-a | 依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来 |
-l | 单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称! |
-t | 可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4, reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型) |
-n | 在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运行。 但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。 |
-o | 后面可以接一些挂载时额外加上的参数!比方说帐号、密码、读写权限等: async, sync: 此文件系统是否使用同步写入 (sync) 或非同步 (async) 的 内存机制,默认为 async。 |
-o | |
---|---|
atime,noatime | 是否修订文件的读取时间(atime)。为了性能,某些时刻可使用 noatime |
ro, rw | 挂载文件系统成为只读(ro) 或可读写(rw) |
auto, noauto | 允许此 filesystem 被以 mount -a 自动挂载(auto) |
dev, nodev | 是否允许此 filesystem 上,可创建设备文件? dev 为可允许 |
suid, nosuid | 是否允许此 filesystem 含有 suid/sgid 的文件格式? |
exec, noexec | 是否允许此 filesystem 上拥有可执行 binary 文件? |
user, nouser | 是否允许此 filesystem 让任何使用者执行 mount ?一般来说, mount 仅有 root 可以进行,但下达 user 参数,则可让 一般 user 也能够对此 partition 进行 mount 。 |
defaults | 默认值为:rw, suid, dev, exec, auto, nouser, and async |
remount | 重新挂载,这在系统出错,或重新更新参数时,很有用! |
临时挂载
mount 设备目录挂载点目录:将一个东西挂载到另外一个地方,使它生效
umount /dev/sdb1 卸载这个东西
原先是只读挂载
mount -o remount,rw /dev/sdb1 | /mnt
重新读写挂载
变成读写挂载
永久挂载
实现开机自动挂载只需修改/etc/fstab配置文件即可,可用vi编辑器修改或图形界面下用gedit命令修改
/etc/fstab配置文件解读
第一列 | ①设备名/dev/sda1或②卷标label或③设备UUID(红帽6)(查看设备的UUID blkid/dev/sda1) |
第二列 | 挂载点 |
第三列 | 文件系统类型 |
第四列 | 挂载选项,通常使用defaults就可以 |
第五列 | 是否进行备份,1表示备份,0表示不备份 |
第六列 | 是否检查文件系统,1表示检验,0表示不检验 |
应用举例
实现插U盘自动挂载U盘到/usb目录,不备份且不检查文件系统:
/dev/sdb1 /usb auto defaults 0 0
将上述命令添加到/etc/fstab配置文件中即可完成插U盘自动挂载,为了避免可能的错误,使用mount -a 命令来检验编辑的内容是否有错
第四列选项
参数 | 内容意义 |
---|---|
async/sync | 非同步/同步 设置磁盘是否以非同步方式运行!默认为 async(性能较佳) |
auto/noauto | 自动/非自动 当下达 mount -a 时,此文件系统是否会被主动测试挂载。默认为 auto。 |
rw/ro | 可读 写/只读 让该分区以可读写或者是只读的型态挂载上来,如果你想要分享的数据 是不给使用者随意变更的, 这里也能够设置为只读。则不论在此文件系 统的文件是否设置 w 权限,都无法写入喔! |
exec/noexec | 可执行/不可 执行 限制在此文件系统内是否可以进行“执行”的工作?如果是纯粹用来储存数 据的目录, 那么可以设置为 noexec 会比较安全。不过,这个参数也不 能随便使用,因为你不知道该目录下是否默认会有可执行文件。举例来 说,如果你将 noexec 设置在 /var ,当某些软件将一些可执行文件放置 于 /var 下时,那就会产生很大的问题喔! 因此,建议这个 noexec 最多 仅设置于你自订或分享的一般数据目录。 |
user/nouser | 允许/不允许 使用者挂载 是否允许使用者使用 mount指令来挂载呢?一般而言,我们当然不希望 一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要设 置为 nouser 啰! |
suid/nosuid | 具有/不具有 suid 权限 该文件系统是否允许 SUID 的存在?如果不是可执行文件放置目录,也 可以设置为 nosuid 来取消这个功能! |
defaults | 同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上, 默认情况使用 defaults 设置即可! |
设备 | 挂载点 | 文件系统 | 挂载参数 | 是否备份 | 是否检测 | |
/dev/vdb1 | /mnt | xfs | defaults | 0 | 0 |
解决设备正忙情况
方法一
查看设备挂载情况,有一个磁盘正在挂载
fuser -kvm /dev/sdb1(查看使用并且强制解决使用)
umount /dev/sdb1(此时就可以直接卸载了)
方法二
lsof 该挂载设备(查看使用情况
kill -9 PID
umount 该挂载设备
磁盘分区
硬盘 0磁道 1扇区的 512个字节中记录的信息如下 512=446 字节 + 64 字节 + 2
字节
---------- ^-------------- ^ ------- ^ mbr(主引导记录) mpt(主分区标) (硬盘的有效性标实)
dos或者mbr方式分区的分区表如下:主分区+扩展分区(扩展分区里面的分区块叫逻辑分区)不能超过16个(id=0~16)
dos(mbr)单个分区大小不能超过2t
1个分区占用16个字节
1块硬盘上最多可以划分4个主分区,1个分区占用16个字节,但是当不够用时,我们可以建立第四个分区为扩展分区,在逻辑分区内可以建立多个逻辑分区。
主分区 :真实存在的,Windows系统一般需要安装在这个主分区中,这样才能保证开机自动进入系统。简单来说,主分区就是可以引导电脑开机读取文件的一个磁盘分区,一块硬盘,最多可以同时创建4个主分区,当创建完四个主分区后,就无法再创建扩展分区和逻辑分区了。
此外,主分区是独立的,对应磁盘上的第一个分区,目前绝大多数电脑,在分区的时候,一般都是将C盘分成主分区。
扩展分区 扩展分区是虚拟的。除了主分区外,剩余的磁盘空间就是扩展分区了。 是一个容器,为划分逻辑分区而存在,容器坏了,里面也就坏了。
注意:上图中/dev/sda1 后面有个*,表示该磁盘用于引导系统进行启动。
start、end | 表示分区开始的扇区位置和结束的扇区位置。 |
blocks | 表示块的信息,一个块里面有多个扇区。 |
Id | 表示磁盘编号 |
system | 表示Linux系统分区的一个分区信息。 |
fdisk /dev/vdb 对该分区进行管理
-m 显示管理参数
d delete a partition 删除
n add a new partition 新建
p print the partition table 显示分区信息
q quit without saving changes 退出分区界面
t change a partition’s system id 修改分区id
w write table to disk and exit 保存分区标信息到硬盘
磁盘格式化
格式化:指将分区格式化成不同的文件系统。
文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法。
格式化为xfs文件系统的分区
mkfs -t ext4 /dev/sdb1或 mkfs.ext4 /dev/sdb1 两者命令皆可
Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs. 然后用按TAB键来查看都有哪些文件类型
swap分区建立
1块硬盘上最多可以划分4个主分区,1个分区占用16个字节,但是当不够用时,我们可以建立第四个分区为扩展分区,在逻辑分区内可以建立多个逻辑分区。
主分区:真实存在的,Windows系统一般需要安装在这个主分区中,这样才能保证开机自动进入系统。简单来说,主分区就是可以引导电脑开机读取文件的一个磁盘分区,一块硬盘,最多可以同时创建4个主分区,当创建完四个主分区后,就无法再创建扩展分区和逻辑分区了。此外,主分区是独立的,对应磁盘上的第一个分区,目前绝大多数电脑,在分区的时候,一般都是将C盘分成主分区。
扩展分区是虚拟的。除了主分区外,剩余的磁盘空间就是扩展分区了。 是一个容器,为划分逻辑分区而存在,容器坏了,里面也就坏了。
选3分区为swap分区
同步分区
格式化swap分区
查看swap分区有哪些
删除swap分区
磁盘配额
磁盘配额:限制磁盘资源的使用,磁盘配额是系统对用户能使用磁盘资源的控制(或者说限制).在Linux中,磁盘配额可以对用户的空间使用情况,文件数量(实际上是inode的数量,文件数量是限制inode的结果)进行限制。如果超出此范围则用户不能再往磁盘里写入数据。
限制原因:因为资源不是无限的
限制对象:普通用户,限制用户组
新建一个空目录/pub,将一个磁盘挂载上去
建立quota的配额数据库 (EXT4文件系统 需要 )
-c | 必选项 create |
-v | 显示详细信息 |
-u user | 建立“用户”配额数据库,会新建一个aquota.user文件 |
-g group | 建立“用户组”配额数据库,会新增一个aquota.group文件 |
-a all | 检测所有磁盘 (不加 -a 的话 ,需要明确指定分区设备 /dev/sdb1 ) |
-f | 原先已经有分区建立的配额数据库的话,想清空并重新建立, 需要加该参数选项强制重新检测 |
要先挂载再给权限(否则权限会变小)
quotacheck -cvuf /dev/vdb2 会在相应的分区挂载目录下,创建 aquota.user 数据库文件。
quotaon -uv /dev/vdb2 数据库建立后,开启该分区的磁盘配额功能
edquota -u studnet 给用户student配置磁盘配额
repquota -auvs 本地磁盘用户配额报表
给目录权限
单位要用小写字母
执行给用户配额后会出现一个文件,对额度进行设置,所以是非交互式命令
参数 | |
---|---|
blocks | 1028 用户在该分区下 “已经使用” 的空间 “K” 为单位。 |
soft | 磁盘空间的软限制:用户使用的空间达到该值的时候,会报警。 |
hard | 磁盘空间的硬限制:最大能使用的空间。 |
inodes | 用户 “已经创建的” 文件数量。 |
soft | 用户创建的文件数量,达到该值的时候,报警。(一般不进行限制,或者限制值很大) |
hard | 用户最多只能创建多少个文件。 |
验证,当用户超过额度就会报错
https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html
磁盘加密
加密
必须是新的闲置设备,比如新建一个分区
加密了就不能挂载,要挂载需要先开放设备
cryptsetup luksFormat /dev/vdb6 给自己的硬盘设备加密,设置一个有强度的密码(YES要大写)
cryptsetup open /dev/vdb6 westos 开放这个设备,打开盖子,盖子名字随便写 ,输入YES
ls /dev/mapper/ 此时出现了westos,即为你的加密文件
mkfs.xfs /dev/mapper/westos 格式化这个虚拟的设备
mount /dev/mapper/westos /mnt 挂载在/mnt下
磁盘解锁
umount /mnt 卸载
cryptsetup close westos 或者 /dev/mapper/ 关闭了wetos加密文件
mount /dev/mapper/westos 或者 /dev/mapper/ /mnt 此时挂载不了。
cryptsetup open /dev/vdb1 westos 解开(此时就可以挂载)
加密磁盘永久挂载
vim /root/diskpass 建立你的密码文件
chmod 600 /root/diskpass #加可执行权限
vim /etc/crypttab
westos /dev/vdb1 /root/diskpass
vim /etc/fastab
/dev/mapper/westos /mnt xfs defaults 0 0
reboot #重启
5.reboot #重启
删除加密磁盘
vim /etc/fstab #删除刚才编写的内容
vim /etc/crypttab #删除刚才编写的内容
rm -fr /root/diskpass #删除密码文件
umount /mnt #卸载
cryptsetup close westos #关闭解密文件
mkfs.xfs /dev/vdb1 -f #强制格式化
参考链接
https://www.cnblogs.com/Wolf-Dreams/p/10693115.html#auto-id-0
https://www.cnblogs.com/zhang-jun-jie/p/9266810.html
https://blog.csdn.net/a1766855068/article/details/84942745