磁盘存储
Posted -one
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘存储相关的知识,希望对你有一定的参考价值。
磁盘系统:
一、磁盘分区
1、MRB:最大支持存储2T,单文件最大支持不超过4G
一块硬盘最多支持4个主分区,亦或者3个主分区+1扩展(n个逻辑分区)
2、GPT :支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
128位UUID表示磁盘和分区GPT分区表自动备份头尾并有CRC校验位
UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系 统可以启动
二、分区管理
1、管理工具 fdisk:专业管理GPT分区的工具,也可以用于管理MBR
fdisk -l [-u] [device...] 查看分区 fdisk [device...] 管理MBR分区 子命令: p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 v 校验分区 u 转换单位 w 保存并退出 q 不保存并退出 #查看内核是否已经识别新的分区 cat /proc/partations #新增分区 partx -a /dev/DEVICE #同步分区表 kpartx -a /dev/DEVICE -f: force #删除分区 partx -d --nr M-N /dev/DEVICE #范例:非交互式创建分区 echo -e ‘n p +2G w ‘ | fdisk /dev/sdc
gdisk:专业管理MBR分区的工具
parted:分区实时管理工具,保存即生效!谨慎使用!!
1 #格式: 2 parted [选项]... [设备 [命令 [参数]...]...] 3 #示例 4 parted /dev/sdb mklabel gpt|msdos 5 parted /dev/sdb print 6 parted /dev/sdb mkpart primary 1 200 (默认M) 7 parted /dev/sdb rm 1 8 parted –l 列出所有硬盘分区信息
二:文件系统
Linux常用的文件系统:ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件
(16TB)、最大1EB的文件系统,以及速度的提升
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本
Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
理论上支持无限数量的子目录
Ext4文件系统使用64位空间记录块数量和 inode数量
Ext4的多块分配器支持一次调用分配多个数据块
修复速度更快
xfs:SGI,支持最大8EB的文件系统
根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
用优化算法,日志记录对整体文件操作影响非常小
是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB
能以接近裸设备I/O的性能存储数据
swap:交换空间
iso9660:光盘
brtfs(Oracle):家庭用
RAW:未经处理和格式化的产生的文件系统,存储格式一般为二进制的格式
windows常用文件系统:FAT32 :最多只能支持16TB的文件系统和4GB的文件
NTFS :最多只能支持16EB的文件系统和16EB的文件
exFAT :移动存储设备的格式常见的U盘
1、文件系统管理
创建文件系统工具
#mkfs命令 (1) mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat (2) mkfs -t FS_TYPE /dev/DEVICE -L ‘LABEL‘ 设定卷标 mke2fs:ext系列文件系统专用管理工具 常用选项 -t {ext2|ext3|ext4} 指定文件系统类型 -b {1024|2048|4096} 指定块 block 大小 -L ‘LABEL’ 设置卷标 -j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小 -N # 指定分区中创建多少个inode -I 一个inode记录占用的磁盘空间大小,128---4096 -m # 默认5%,为管理人员预留空间占总空间的百分比 -O FEATURE[,...] 启用指定特性 -O ^FEATURE 关闭指定特性 #blkid 可以查看块设备属性信息 blkid [OPTION]... [DEVICE] 常用选项: -U UUID 根据指定的UUID来查找对应的设备 -L LABEL 根据指定的LABEL来查找对应的设备 e2label:管理ext系列文件系统的LABEL(卷标) e2label DEVICE [LABEL] findfs :查找分区 findfs [options] LABEL=<label> findfs [options] UUID=<uuid tune2fs:重新设定ext系列文件系统可调整参数的值 -l 查看指定文件系统超级块信息;super block -L ‘LABEL’ 修改卷标 -m # 修预留给管理员的空间百分比 -j 将ext2升级为ext3 -O 文件系统属性启用或禁用, –O ^has_journal -o 调整文件系统的默认挂载选项,–o ^acl -U UUID 修改UUID号 dumpe2fs:显示ext文件系统信息,将磁盘块分组管理 -h:查看超级块信息,不显示分组信息 xfs_info:显示示挂载或已挂载的 xfs 文件系统信息 xfs_info mountpoint|devname(挂载点)
2、文件系统检查和修复
文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下执行下面命令修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
注意:FS_TYPE 一定要与分区上已经文件类型相同
常用选项:
-a 自动修复
-r 交互式修复错误
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题
xfs_repair:xfs文件系统专用检测修复工具
常用选项:
-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot
3、文件挂载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程
fsck.FS_TYPE
fsck -t FS_TYPE
#格式: mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint device:指明要挂载的设备 设备文件:例如:/dev/sda5 卷标:-L ‘LABEL‘, 例如 -L ‘MYDATA‘ UUID: -U ‘UUID‘:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘ 伪文件系统名称:proc, sysfs, devtmpfs, configfs dir:挂载点 事先存在,建议使用空目录 mount常用命令选项 -t vsftype 指定要挂载的设备上的文件系统类型 -r readonly,只读挂载 -w read and write, 读写挂载 -n 不更新/etc/mtab,mount不可见 -a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能) -L ‘LABEL‘ 以卷标指定挂载设备 -U ‘UUID‘ 以UUID指定要挂载的设备 -B, --bind 绑定目录到另一个目录上 -o options:(挂载文件系统的选项),多个选项使用逗号分隔 async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中 sync 同步模式,内存更改时,同时写磁盘 atime/noatime 包含目录和文件 diratime/nodiratime 目录的访问时间戳 auto/noauto 是否支持自动挂载,是否支持-a选项 exec/noexec 是否支持将文件系统上运行应用程序 dev/nodev 是否支持在此文件系统上使用设备文件 suid/nosuid 是否支持suid和sgid权限 remount 重新挂载 ro 只读 rw 读写 user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用 acl 启用此文件系统上的acl功能 loop 使用loop设备 _netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统 defaults 相当于rw, suid, dev, exec, auto, nouser, async 挂载规则: 一个挂载点,同一时间只能挂载一个设备 一个挂载点,同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏 一个设备可以同时挂载到多个挂载点 通常挂载点一般是已存在空的目录
永久挂载实现:将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载
/etc/fstab格式 帮助:man 5 fstab
每行定义一个要挂载的文件系统,,其中包括共 6 项
1. 要挂载的设备或伪文件系统
设备文件*可以选择文件系统的卷名或者唯一UUID
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2. 挂载点:必须是事先存在的目录
3. 文件系统类型:ext4,xfs,iso9660,nfs,none
4. 挂载选项:defaults ,acl,bind
5. 转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6. fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检 ,1:首先自检;一般只有rootfs才用 2:非rootfs使用
添加了新的挂载项,必须执行下面的命令生效
mount -a
注意:在挂在的情况下修改了fstab文件后如需生效需要重新挂载对应的磁盘
mount -o remount /挂载设备、挂载的系统文件
把设备关联挂载点:mount Point
挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空
进程正在使用中的设备无法被卸载
4、 卸载文件系统 umount
卸载时:可使用设备,也可以使用挂载点
umount 设备名|挂载点
5、挂载信息查看
#通过查看/etc/mtab文件显示当前已挂载的所有设备 mount #查看内核追踪到的已挂载的所有设备 cat /proc/mounts #查看挂载点情况 findmnt MOUNT_POINT|device #看出正在访问指定文件系统的进程 lsof MOUNT_POINT fuser -v MOUNT_POINT #终止所有正在访问文件系统的进程,强制剔除登录进程的账号 fuser -km MOUNT_POINT
三:SWAP交换分区扩展、删除
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据
时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过
多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露
注意:为优化性能,可以将swap 分布存放,或高性能磁盘存放
交换分区扩展实现的过程:
1、创建交换分区或者文件
2、使用mkswap写入特殊签名
3、在/etc/fstab文件中写入自己挂载条目
4、使用swapon -a激活交换空间
启用swap分区 swapon [OPTION]... [DEVICE] 选项: -a:激活所有的交换分区 -p PRIORITY:指定优先级,也可在/etc/fstab 在第4列指定:pri=value [root@centos8 ~]#echo -e ‘n p +2G t 82 w ‘ | fdisk /dev/sdc [root@centos8 ~]#mkswap /dev/sdc1 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f [root@centos8 ~]#blkid /dev/sdc1 /dev/sdc1: UUID="d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f" TYPE="swap" PARTUUID="b094d43d-01 [root@centos8 ~]#vim /etc/fstab UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f swap swap defaults 0 0 [root@centos8 ~]#swapon -a [root@centos8 ~]#free -h total used free shared buff/cache available Mem: 3.7Gi 264Mi 3.2Gi 9.0Mi 261Mi 3.2Gi Swap: 4.0Gi 0B 4.0Gi [root@centos8 ~]#cat /proc/swaps Filename Type Size Used Priority /dev/sda5 partition 2097148 0 -2 /dev/sdc1 partition 2097148 0 -3 #禁用swap分区 swapoff -a swapon -a 启用wap分区 SWAP的优先级 可以指定swap分区0到32767的优先级,值越大优先级越高 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数) swap的使用策略 /proc/sys/vm/swappiness 的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间 范例: [root@centos8 ~]# cat /proc/sys/vm/swappiness 说明:内存在使用到100-30=70%的时候,就开始出现有交换分区的使用。简单地说这个参数定义了系统对swap的使用倾向,默认值为30,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性
四、逻辑卷
1、实现过程
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
可以在逻辑卷上创建文件系统并挂载
#逻辑卷实现过程 第一个逻辑卷对应设备名:/dev/dm-# dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块 软链接: /dev/mapper/VG_NAME-LV_NAME /dev/VG_NAME/LV_NAME 范例 /dev/mapper/vol0-root /dev/vol0/root 逻辑卷的管理: #1、创建pv pvs:简要pv信息显示 pvdisplay:详细显示pv信息显示 创建pv pvcreate /dev/设备 删除pv pvmover /dev/设备 #2、创建vg vgs:简要vg信息显示 vgdisplay:详细显示vg信息显示 创建卷组 vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 管理卷组 vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 删除卷组 先做pvmove 再做vgremove #3、创建lv lvs:简要显示lv信息 Lvdisplay详细显示lv信息 创建逻辑卷 lvcreate -L #[mMgGtT] -n NAME VolumeGroup lvcreate -l 60%VG -n mylv testvg lvcreate -l 100%FREE -n yourlv testvg 删除逻辑卷 lvremove /dev/VG_NAME/LV_NAME 文件系统大小设置 fsadm [options] resize device [new_size[BKMGTEP]] resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size] xfs_growfs /mountpoint #创建物理卷 pvcreate /dev/sda3 #为卷组分配物理卷 vgcreate vg0 /dev/sda3 #从卷组创建逻辑卷 l vcreate -L 256M -n data vg0 #mkfs.xfs /dev/vg0/data #挂载 mount /dev/vg0/data /mnt/data# 4扩展逻辑卷 lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #针对ext resize2fs /dev/VG_NAME/LV_NAME #针对xfs xfs_growfs MOUNTPOINT lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME 缩减逻辑卷 umount /dev/VG_NAME/LV_NAME e2fsck -f /dev/VG_NAME/LV_NAME resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME mount 跨主机迁移卷组 源计算机上 1 在旧系统中,umount所有卷组上的逻辑卷 2 禁用卷组 vgchange –a n vg0 lvdisplay 3 导出卷组 vgexport vg0 pvscan vgdisplay 4拆下旧硬盘在目标计算机上,并导入卷组: vgimport vg0 5 启用 vgchange –ay vg0 6 mount 所有卷组上的逻辑卷 实现逻辑卷快照 逻辑卷快照工作原理 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据 #为现有逻辑卷创建快照 lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data #挂载快照 mkdir -p /mnt/snap mount -o ro /dev/vg0/data-snapshot /mnt/snap #恢复快照 umount /dev/vg0/data-snapshot umount /dev/vg0/data lvconvert --merge /dev/vg0/data-snapshot #删除快照 umount /mnt/databackup lvremove /dev/vg0/databackup
以上是关于磁盘存储的主要内容,如果未能解决你的问题,请参考以下文章
sql 这些代码片段将演示如何逐步使用PolyBase。你应该有一个blob存储和存储秘密方便
Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题
Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题