简介
硬件上的存储设备目前有两类,通过磁头读写信息的机械硬盘和用主控芯片将信息写入晶体管的固态硬盘,硬盘调理算法等知识可以通过前面的操作系统设备管理文章学习,本章只先容Linux中能对存储设备的操作。
为了让操作系统识别和管理物理磁盘上的不同分区,必要在设备前加上一些信息来记载硬盘的分区情况,这些信息称为分区表,目前分区表有MBR和GPT两种格式:
MBR
- 管理的硬盘大小不能超过2T
- 有主分区和扩展分区两种,不管是哪种分区,总数不能超过4个分区
- 扩展分区内部可以逻辑上划分多个区域,但是在分区表中都算在一个分区内
- 如果作为系统盘,必须要设置一个激活分区,用于存放系统的引导文件
复制代码 GPT
- 管理硬盘大小不能超过18EB,目前人类还没制造出单块这么大的硬盘
- 理论上支持无限分区,在win10系统上,最多可以分128个分区
- 如果作为系统盘,必须要创建一个EFI分区,用于存放系统的引导文件建议ESP分区512M,对齐8扇区4096字节
复制代码 Linux存储结构
前面的小思考中相识了Linux系统中是一个/根目次下存放所有其他文件,平凡用户存在home文件夹下,超级管理员使用root文件夹,其他的文件都是干啥的呢?现在具体展示如下:
- /boot 开机所需文件—内核、开机菜单以及所需配置文件等
- /dev 以文件形式存放任何设备与接口
- /etc 配置文件
- /home 用户家目录
- /bin 存放单用户模式下还可以操作的命令
- /lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
- /sbin 开机过程中需要的命令
- /media 用于挂载设备文件的目录
- /opt 放置第三方的软件
- /root 系统管理员的家目录
- /srv 一些网络服务的数据文件目录
- /tmp 任何人均可使用的“共享”临时目录
- /proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
- /usr/local 用户自行安装的软件
- /usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
- /usr/share 帮助与说明文件,也可放置共享文件
- /var 主要存放经常变化的文件,如日志
- /lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里
复制代码 设备文件dev中存储如下:
- IDE设备 /dev/hd[a-d]
- SCSI/SATA/U盘 /dev/sd[a-p]
- 软驱 /dev/fd[0-1]
- 打印机 /dev/lp[0-15]
- 光驱 /dev/cdrom
- 鼠标 /dev/mouse
- 磁带机 /dev/st0或/dev/ht0
复制代码 分区管理
Linux系统中使用lsblk下令查看磁盘信息,Linux用sd[a-z]给物理盘定名,分区用物理盘名加序号的形式定名,如sda1,为了后续实行,提前添加了4块10G硬盘,示比方图:
建立分区
fdisk管理MBR分区
fdisk 选项 磁盘方式管理,具体选项如下:
- m 查看全部可用的参数
- n 添加新的分区
- d 删除某个分区信息
- l 列出所有可用的分区类型
- t 改变某个分区的类型
- p 查看分区信息
- w 保存并退出
- q 不保存直接退出
复制代码 gdisk管理GPT分区与fdisk雷同。
parted高级分区操作
该操作及时见效,使用需警惕注意,使用方法为parted 选项 设备 下令 参数,一些下令示比方下:
- parted /dev/sda print # 查看分区情况
- parted /dev/sdb mklabel msdos # 用于声明磁盘分区类型,标签类型为MBR,可修改为GPT,修改后磁盘原有数据全部丢失
- parted /dev/sdb mkpart primary 起点 终点 # 创建磁盘分区,设定起点终点
- parted /dev/sdb rm 逻辑盘号 # 删除磁盘
复制代码 上述过程与Windows系统的磁盘新建卷雷同,只是在Linux中使用下令行逐步完成。
建立文件系统
此步调对应Windows中的格式化操作,使用mkfs工具完成,给划分好的分区建立文件系统,使用格式为mkfs.ext4 盘符给磁盘设置ext4文件系统,该文件系统是Linux中的主流系统,Windows中则是NTFS。
系统挂载
将格式化好的磁盘挂载到系统中,此步调对应Windows中的分盘操作,使用mount工具完成,格式为mount 磁盘 挂载目次,使用这种方法只是临时挂载,重启时挂载失效,在/etc/fstab中写入才是永久挂载,到场字段为磁盘 挂载目次 文件系统 权限默认为defualt 是否备份默认为0 是否自检默认为0,文件展示如下:
未设置挂载目次的文件,默认占用/磁盘工具,且如果磁盘更换后,目次中的内容也更换,我们查看的文件内容,实质是磁盘内容。
取消挂载使用unmount 设备名实现。
查看文件系统信息
df操作显示文件系统的磁盘使用情况,可加参数-T显示文件系统类型,-h以人类可读的格式显示磁盘空间,使用K、M、G等单元。
du查看某个目次下文件数据的占用率,可加参数-s查看整个目次,-h以人可读形式输出。
交换分区
内存会将暂时不用的数据放入硬盘,操作系统中学到这是内存扩展的方式,用于接收内存转出数据的硬盘为交换分区,大小一般设置为物理内存的1.5到2倍,使用mkswap 磁盘设置交换分区,再使用swpon 磁盘添加交换分区。
可以通过free下令查看内存信息,其中包含交换分区的信息,展示如下:
下令行中设置同样是临时的,如果要永久设置必要在/etc/fstab 文件中写入,此时只需将挂载目次和文件系统全部设置为swap即可,示例/dev/sdb2 swap swap defaults 0 0。
磁盘容量配额
Linux是多用户的操作系统,可以通过该方法限制用户使用的空间。
使用该方法可能导致辩论,所以必要关闭SELinux服务etenforce 0,为确保文件系统支持,此时使用getenforce 查看,如果输出为Permissive阐明关闭成功,还必要先查抄挂载点是否支持配额mount | grep 挂载点,再重新挂载硬盘mount -o remount,usrquota,grpquota 挂载点,使之支持quota。
使用yum install -y quota安装配额服务,首先使用quotacheck -avug扫描硬盘,选项解释如下:
- -a:扫描所有在/etc/mtab内含有quota参数的文件系统
- -u:针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
- -g:针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
- -v:显示扫描过程的信息
复制代码 然后使用quotaon -avug开启quota服务,此后就可以开始编辑配额,使用edquota -u user1即可,对用户的限制规则可以使用edquota -p user1 -u user2进行复制,设置完成后可以使用repquota -as查看限制情况。
软限制指用户超出限额原有内容仍可使用,硬限制指用户超出限额后立即停止。
链接文件
Linux中有软硬两种链接方式,文件存储由指向文件的指针inode号和真实存储block构成
软链接指仅包含文件路径的方式,与Windows系统中的快捷方式一致
硬链接是指向原始文件inode的指针,是文件的本质,当文件删除或移动后仍然能找到文件,但不可跨分区链接。
创建链接文件使用ln -s 源文件 链接文件下令,参数-s表示软毗连文件,缺省默认为硬链接。
磁盘阵列RAID
Linux系统存储多为企业使用,为了维护企业数据安全稳定,多数企业会选择使用磁盘阵列,用冗余来确保安全性,肯定程度也可提高效率,磁盘阵列重要有以下几种:
- RAID 0 数据条带,将数据分别存在多个盘中,可以提高读写效率,但不能保证安全性
- RAID 1 数据镜像,数据存在多个硬盘中,主要目的是保护数据,一个盘挂了还有备份
- RAID 5 最少三块盘组成,分开存放数据,一块盘挂了可以通过奇偶校验的方法恢复
- RAID 10 先做镜像再数据条带,最少4块盘组成阵列,也可以01即先做阵列再做条带
复制代码 部署磁盘阵列
使用mdadm工具实现,其常用选项如下:
- -a 检测设备名称
- -n 指定设备数量
- -l 指定RAID级别
- -C 创建
- -v 显示过程
- -f 模拟设备损坏
- -r 移除设备
- -Q 查看摘要信息
- -D 查看详细信息
- -S 停止RAID磁盘阵列
- -x 备份盘数量
复制代码 部署首先安装服务yum -y install mdadm,再使用mdadm -Cv 新盘名 -a yes -n 数量 -l 阵列级别10 /dev/sdb /dev/sdc /dev/sdd /dev/sde部署磁盘阵列,再将磁盘格式化,挂载到目次中,使用mdadm -D 新盘名可查看具体信息,若要永久见效,同样必要将信息写入到fstab文件中,可使用echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab 实现。
可以看到新部署的磁盘容量为20G,而本章开始我们设置了四块容量为10G的磁盘,这是由于部署了10阵列,做了镜像冗余,磁盘容量少了一半。读写测试如下:
dd下令可从标准输入中读写数据,zero文件中可取出无限的数据,
关闭阵列
unmount 磁盘 挂载文件取消挂载
mdadm -S 磁盘停止阵列服务
mdadm --zero-superblock /dev/sd[b-e]清除阵列超级快信息,否则开机主动重做阵列
vim /etc/fstab修改文件,取消开机主动挂载
修复粉碎阵列
使用mdadm -D 阵列名查看阵列状态,找到粉碎的磁盘后卸载挂载,遇到设备忙时可以查看占用磁盘的进程,强制杀死后再卸载。
然后使用mdadm /dev/md0 -r /dev/sdb移除磁盘,再使用mdadm /dev/md0 -a /dev/sdb加上新的磁盘即可。
备份盘
为了进一步增加阵列健壮性,我们可以设置一块备份盘,当挂了一块盘后备份盘主动补上,通过如下下令设置, mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 其中-x 1表示有一块备份盘,之后正常挂载使用即可,当一块盘挂了后,就会有备份盘接替。
LVM逻辑卷管理器
物理盘的大小在建立分区后确定,以后不易扩容调整,逻辑卷管理LVM是在硬盘和文件系统间加了逻辑层,从而提供了逻辑上管理磁盘的方法。
LVM构成
LVM又下至上分别由物理卷PV,卷组VG,逻辑卷LV,最小存储单元PE构成,
其中,卷组由多个物理卷构成,可以往其中添加物理卷,卷组通过物理卷组合最小存储单元,再形成逻辑卷从卷组中分离出来供挂载使用。
部署逻辑卷
pvcreate 物理盘路径 声明逻辑卷的物理卷
vgcreate 卷组名 物理盘路径 创造卷组
vgdisplay 卷组名 查看卷的信息
lvcreate -n 逻辑卷名 -l 基本单元个数/-L 指定大小 卷组名 划分卷组形成逻辑卷,通常最小存储单元为4M
lvdispaly 逻辑卷名 查看信息
mkfs.ext4 逻辑卷路径格式化
mount 逻辑卷路径 挂载目的挂载
扩容逻辑卷
umount 挂载点取消挂载
lvextend -L 新容量 逻辑卷名 扩容逻辑卷
e2fsck -f 逻辑卷名 查抄硬盘完整性,告知系统更新信息
resize2fs 逻辑卷名 重置硬盘容量
mount 逻辑卷名 挂载点重新挂载
df -h 查看挂载状态
缩小逻辑卷
在真正的生产活动中很少使用,由于该操作易粉碎数据,而硬盘价格远远小于内部存储的信息,故一般没有公司会缩小磁盘,但在学习中照旧都要相识。
取消挂载
查抄完整性
resize2fs 逻辑卷名 新容量 重置容量
lvreduce -L 新容量 逻辑卷名 减小容量
重新挂载逻辑卷
逻辑卷快照
雷同假造机快照,以后磁盘内容被修改时可使用快照进行恢复,但逻辑卷快照仅可使用一次,实行还原操作后立即主动删除,且要求快照卷的容量必须等于逻辑卷的容量。
使用-s参数天生快照卷,使用-L参数指定切割大小,使用lvcreate -L 容量-s -n 快照名 逻辑卷路径创建快照卷,还原使用lvconvert --merge 快照卷路径,实行后快照主动删除,若修改的文件大于快照大小,则恢复不会成功。
删除逻辑卷
逻辑卷自下而上建立,故删除必要自上而下实行,即从LV向PV删除,具体步调如下:
umount 挂载点取消挂载
vi /etc/fstab删除配置文件中永久见效的配置参数
lvremove 逻辑卷路径删除逻辑卷
vgremove 卷组名 删除卷组,只需卷组名即可
pvremove 物理卷路径 删除物理卷
总结
本章学习了Linux系统中管理磁盘存储的方法,具体分为分区管理,设置磁盘配额,部署磁盘阵列和使用逻辑卷管理器,具体解释过程为:
分区管理使用parted工具声明磁盘分区类型,进行大小划分,再建立文件系统,重要是ext4,最后挂载到想要的文件夹上即可使用,对应与Windows系统新增磁盘的步调基本雷同。
设置磁盘配额使用quota工具,关闭安全服务并开启自身服务后,使用edquota -u user1管理用户限额即可。
磁盘阵列是使用冗余磁盘包管读写效率或安全性的方法,具体由条带、镜像、奇偶校验或其组合的形式,使用mdadm -Cv 新盘名 -a yes -n 数量 -l 阵列级别10 /dev/sdb /dev/sdc /dev/sdd /dev/sde实现。
逻辑卷管理器是借助文件和物理磁盘的中心层实现对硬盘容量动态修改的方法,分别对物理卷PV、卷组LG和逻辑卷LV进行创建和管理的方法实现,扩展和缩小只需使用lvextend或lvreduce即可。
Linux系统中好像没有回收站机制,且系统文件保护并不严密,使用下令又不很直观,使用务必警惕。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |