Linux从入门到精通——系统分区及文件系统的管理
一.磁盘的管理
1.关于磁盘与硬盘
这两个东西不是一个概念。二者是互相交叉的。
磁盘,是计算机的外部存储器中类似磁带的装置,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。磁盘有软磁盘,硬磁盘。硬磁盘就是机械硬盘。
硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
2.本地存储设备的判别
fdisk -l ##查看本机真实存在的设备,真实存在的设备不一定能被系统识别
cat /proc/partition ##查看系统能识别的设备,系统能识别的设备不一定可以使用
blkid ##查看系统可使用的设备
df ##查看系统正在挂载的设备
查看本机真实存在的设备
查看系统能识别的设备
查看系统正在使用的设备
查看系统正在挂载的设备
3.设备的挂载和卸载
(1).设备的名称
用df进行查看可以看到一般的存储设备名称都是 /dev/xdx ,例如:
/dev/hd0 /dev/hd1 这类设备都是并口硬盘,简称IDE硬盘,使用的是并口接口(LPT),数字代表第几块硬盘,如hd0代表第一块并口硬盘,下面也可以类推
/dev/sda /dev/sdb 这类设备为串口硬盘,现在使用的是sata接口,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别
在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具
有结构简单、支持热插拔的优点。
/dev/sr0 /dev/sr1 光驱设备
/dev/mapper/xxx 虚拟设备
(2).设备的挂载
使用的命令:mount
命令格式为:mount + 要挂载的设备 + 挂载点
mount /dev/sdb1 /mnt ##把sdb1挂载到/mnt上
umount /mnt /dev/sdb1 ##卸载挂载mnt上的sdb1
mount -o ro /dev/sdb1 /mnt ##只读挂载sdb1
mount ##查看挂载信息
mount -o remount,rw /dev/sdb1 |/mnt ##重新挂载并设定为读写挂载
注:我是在虚拟机上做的实验,所以硬盘是虚拟的,看到设备名称就为vda vdb 而不是sda sdb
挂载设备,设备必须是真实存在且能被系统识别的设备并使用的设备,否则是无法挂载的
卸载设备
设定为只读挂载,只能查看目录内的文件,不能对其进行写或执行操作
重新挂载并设定为读写挂载
查看挂载的详细信息
3.解决设备正忙情况
当有程序正在使用挂载目录时,正常的卸载是无法完成的,这时需要以下操作完成强行卸载
方法一:
fuser -kvm /挂载点 ##强行停止程序对该目录的使用,该操作会关闭当前的shell
umount /挂载点
方法二:
lsof /挂载点 ##列出相关进程
kill -9 进程IP ##强制关闭进程
umount /挂载点
4设定永久挂载
方法一:使用开机自启动脚本
vim /etc/rc.d/rc.local
编辑内容如下:
mount /dev/vdb1 /mnt
注:rc.local是个脚本,在其中编辑的内容为shell的命令
方法二:使用自动挂载策略
vim /etc/fstab
编辑内容如下:
/dev/vdb1 /mnt/ xfs defaults 0 0 ##xfs表示挂载的文件系统格式,defaults表示默认自动挂载,第一个0代表不备份,第二个0代表不检测
保存退出以后用df命令查看,发现没有挂载
mount -a ##读取文件中的挂载策略,使没有生效的策略立即生效
vim /etc/fstab
编辑策略文件
读取挂载策略
注:策略的书写格式和脚本不同,且开机执行顺序优先于rc.local,具体格式可以man 5 fstab查看
5.fstab的报错
策略文件书写格式错误时,例如:
/dev/vdb1 /mnt defa 0 0 ##错误的写法
重启会导致系统无法正常启动
解决方法:
输入root的密码登陆,之后上面会有报错的信息
在无图形的界面输入vim /etc/fstab
把错误的行命令用#注释起来,wq退出保存
reboot
系统即可重启
partprobe ##手动同步分区表
当电脑某一个设备正在被系统使用的时候,他自动读取分区表就会失败,所以需要手动读取
6.swap分区管理
(1)swap分区的建立(设定分区并设定分区标签为swap,以vdb1为例)
fdisk /dev/vdb ##管理磁盘及分区
t ##修改分区标签
分区数字 ##修改第几个的标签
l ##列出所有代码,可以看到所有的标签及对应分区含义
82 ##修改为swap分区
wq ##退出保存
partprobe ##同步分区表
mkswap /dev/vdb1 ##对设备进行swap格式化
swapon -a /dev/vdb1 ##激活
swapon -s ##查看是否激活
修改vdb第一分区的标签
注:这个操作也是临时的,重启后会消失,如果想要永久激活,还是要写入 /dev/fstab
vim /etc/fstab
/dev/vdb1 swap
swap defaults 0
0
(2)swap的删除
vim /etc/fstab
#/dev/vdb3 swap
swap defaults 0 0 ##将这行删除或者注释掉
swapoff /dev/vdb3 ##删除swap分区
swapon -s ##查看
7.用户配额设定(分配额度,最大能使用额度)
配额是针对分区(比方:student用户在某一个设备的配额是定的,在别的不一定,如果配额是针对用户的话,那就代表在电脑里只能编写定额的文件)
mount -o usrquota /dev/vdb7 /student
chmod 777 /student
edquota -u student ##设定所有人的配额,在开机的时候会失效,因为挂载是临时的
永久挂载:
vim /etc/fstab
/dev/vdb7 /student
xfs defaults,usrquota(参数)
0 0
测试:(用设定的用户测)
dd if=/dev/zero
of=/student/studentfile bs=1M count=200
du -sh /student
示例:
重新建立一个磁盘分区/dev/vdb7
mkdir /student
chmod 777 /student
ls -ld /student
mount /dev/vdb7 /student
ls -ld /student ##此时权限改成了755
注意:先挂设备再改目录权限,因为目录权限本身是记录在设备里的,每挂载之前和挂载之后度的设备不一样,刚开始读的是/dev/vda1,挂载后读的是/dev/vdb7.
8.设备的加密——luks(基于文件系统的加密)
cryptsetup luksFormat /dev/vdb8 ##加密格式化
YES ##必须要大写
cryptsetup open /dev/vdb8 hello(名字任意的)
mkfs.xfs /dev/mapper/hello ##格式化 mapper虚拟设备
mount /dev/mapper/hello /mnt
touch /mnt/file{1..6}
umount /mnt
cryptsetup close hello
查看:
cryptsetup open /dev/vdb8 hello ##需要密码
mount /dev/mapper/hello /mnt