linux磁盘管理

磁盘管理

分区
分区是为了便于数据分门别类的存储;分区有两种方式
MBR:主引导记录,用来找到磁盘上的操作系统, 并且引导启动(0磁道,1扇区,512字节
GPT:新型的分区表 支持分配128个主分区。

添加一个硬盘(20G)
热添加刷新磁盘

echo  '- - -' >  /sys/class/scsi_host/host0/scan 
echo  '- - -' >  /sys/class/scsi_host/host1/scan 
echo  '- - -' >  /sys/class/scsi_host/host2/scan
root@localhost ~]# ls  /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

建立分区

Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 83 Linux
/dev/sdb3 20973568 31459327 5242880 83 Linux
/dev/sdb4 31459328 39847935 4194304 83 Linux

格式化类型

[root@localhost ~]# mkfs
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs     
[root@localhost ~]# mkfs
[root@localhost ~]# mkfs.xfs  /dev/sdb1
[root@localhost ~]# mkfs.xfs  /dev/sdb2
[root@localhost ~]# mkfs.xfs  /dev/sdb3
[root@localhost ~]# mkfs.xfs  /dev/sdb4



gdisk分区

gdisk 支持分配大于查看当前设备
对设备进行分区
分区命令
?:显示帮助
n:创建新分区
p:打印分区
w:保存分区q:退出 默认会以GPT的格式分区

一般企业都可以不用分区直直接挂载使用  当然也是可以分区 不过gdisk 没有扩展分区 
[root@localhost ~]# mount   -t  xfs    /dev/sdc   data2/

mkfs 格式化系统

-b :设定数据区块占用空间大小,目前支持1024,2048,4096,byte每个 块
-t : 用来指定什么类型的文件系统,可以是ext4,xfs
1.分区工具,可以针对整块磁盘,或者单个分区进行格式化操作
2一般情况下建议,不要直接格式化使用整磁盘, 要分区后再格式化,头部有预留空间

mkfs -t  ext4  /dev/sdb1  ==   mkfs.ext4  /dev/sdb1  

3.使用mkfs命令指定一个数据块的大小 4096字节=4k 一般默认也是4字节

[root@localhost ~]# mkfs.xfs  -b  size=4096  /dev/sdb2  -f 

挂载管理

挂载:
		临时:mount -t xfs /dev/sdb1 /data
		永久:变更配置; /etc/fstab   关机后,在开机,会自动装载配置文件中的挂载点;

umount: 当我们断开磁盘和文件之间的挂载点时挂载点的文件会恢复成原来的状态
因为当我们在向挂载点写入数据的时候其实 是分区所对应的磁盘写入数据

-t 指定文件系统挂载分区
-a 检查并且挂载/etc/fstab 配置文件中未挂载的设备
-o 指定挂载参数ro rw

挂载成只读
[root@localhost ~]# mount   -t xfs   -o   ro  /dev/sdc   dbc/
[root@localhost ~]# touch   dbc/2.txt
touch: cannot touch ‘dbc/2.txt’: Read-only file system



卸载umount

-l 强制卸载

[root@localhost dbc]# pwd
/root/dbc
[root@localhost dbc]# umount  ./  -l

永久挂载

配置/etc/fstab
配置文件规范; 设备名称| 挂载入口目录| 文件系统类型|挂载参数|是否备份|是否检查

获取设备名称,或者获取设备UUID
手动临时挂载测试
写入/etc/fstab 配置文件
使用mount -a 检查是否存在错误

获取设备名称 或设备的UUID

[root@localhost dbc]# blkid  | grep 'sda1' | awk   -F '"' '{print  $2}'
c50bae73-0ef7-4369-bba3-07e8fbb7a3f0

手动挂载测试

[root@localhost ~]# mount  UUID="c50bae73-0ef7-4369-bba3-07e8fbb7a3f0"    ~/sda1

手动编入/etc/fstab
在这里插入图片描述

检查下是否fstab文件是否配置有问题
mount  -a 

fstab文件参数详解

配置文件格式
第一列:指定需要挂载的设备 设备名称: /dev/sdb1 设备ID: UUID
第二列:挂载的入口目录
第三列:文件系统类型
xfs类型
ext4类型
第四列:挂载参数
async/sync :使用同步或异步方式存储数据; 默认async
user/nouser :是否允许普通用户使用mount 命令挂载。默认nouser
exec/noexe :是否允许可执行文件执行。默认exec
suid/nosuid :是否允许存在suid 属性的文件。默认suid
auto/noauto :执行 命令时,此文件
系统是否被主动挂载。默认auto
rw/ro :是否以只读或者读写模式进行挂载。默人rw
defaults :具有rw,suid,dev,exec,auto,nouser,async 等参数;
第五列:是否要备份磁盘
0:不做备份
1:每天进行备份操作
2:不定日期的进行备份操作
第六列: 开机是否检验扇区
0:不要检验磁盘是否有坏道
1:检验
2:校验 (当1级别检验完成之后进行2级别检验

虚拟磁盘SWAP

swap 分区在系统的物理内存不够时,将硬盘中的一部分空间供当前运行的程序使用。

查看swap分区大小

root@localhost ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:            846         130         497           6         219         544
Swap:          2047           0        2047

新建swap

[root@localhost ~]# mkswap   /dev/sdb3
Setting up swapspace version 1, size = 1000 KiB
no label, UUID=d97ab089-85b5-4e0d-a07c-026320614dbf

扩展swap分区

扩展swap 分区,使用 swapon命令
swapon device :将某个磁盘大小添加到swap分区中
swapon -a :添加所有swap分区

[root@localhost ~]# swapon  /dev/sdb3

文件系统

Windows : FAT32、NTFS

Linux : EXT2、EXT3、EXT4、XFS、VFAT、NTFS-3g

磁盘被划分为两大存储区域,一类是存储元数据
inode ,一类是存储真实数据data block

data 划分了很多data block ,每个block 块为4k 如下图所示:磁盘在存储文件时,至少占用一个 inode 、与一个block

在这里插入图片描述
文件删除原理
首先删除目录下的文件名称,然后将inode、 block 的bitmap 状态修改为可用状态,但文件并没有真正的被删除,还有恢复的可能性,而一旦有新的数据写入,将其覆盖,数据才算真正的删除

文件移动原理
仅仅将文件名称从一个目录移动到另一个目录下面,并不会修改其inode 和block ;

文件系统故障修复

在LINUX系统中,为了增加系统性能,通常系统会将一些数据先写入内存中,然后在刷新至磁盘中;万一公司服务器突然断电或者其他未知原因,再次启动后,会造成文件系统错误;

模拟下断电的场景

mount /dev/sdc1  /mnt/  
echo  "hello" > /mnt/1.txt
dd  if=/dev/zero  of=/dev/sdc1  bs=300M count=1
umount  /mnt 
mount /dev/sdb
然后该文件就锁着主了不能挂载
root@localhost ~]# mount /dev/sdc1  /mnt/
mount: /dev/sdc1 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'


解决办法 :
修复文件系统

[root@localhost ~]# xfs_repair    /dev/sdc1
不行得话就强制修复
[root@localhost ~]# xfs_repair   -L  /dev/sdc1
再不行那就得找数据恢复公司去做硬件修复了


显然我这儿又行了/mnt 能正常挂载
在这里插入图片描述但是里面的数据没了

root@localhost ~]# ls  /mnt/
[root@localhost ~]# 

Inode满了导致磁盘空间不足但是实际还有空间

磁盘满了;会提示错误;无法写入数据;
磁盘没有满,但还是提示磁盘空间不足—> Inode满了造成的问题:
一个文件,至少占用1个inode、1个block块;

模拟下场景

创建一个虚拟的文件,大约100m 格式为xfs

[root@localhost ~]# dd if=/dev/zero  of=/opt/bigdag bs=100M count=1
1+0 records in
1+0 records out
104857600 bytes (105 MB) copied, 0.779595 s, 135 MB/s

创建目录,挂载

mdkir  /new

mount  /tmp/bigdag  /new/

df  -h  | grep new
df  -i  | grep new 


cd  /new/
touch {1..100000}.txt


df -i | grep new
df -h | grep new 




显示还/new/空间没满

在这里插入图片描述

我们再往里写入数据


写入不了空间不足
[root@localhost new]# touch  xxxx /new/
touch: cannot touch ‘xxxx’: No space left on device




[root@localhost new]# df -i /new/
Filesystem     Inodes  IUsed IFree IUse% Mounted on
/dev/loop0     153664 153664     0  100% /new


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值