Linux系统磁盘管理基础版

Linux系统磁盘管理基础版

一、磁盘管理命令

1、df命令

查看系统挂载情况和大小
    df		-a	显示所有文件系统(包含特殊的proc)
    df		-h	常见单位显示大小
    df		-T	显示挂载的文件系统类型

2、du命令

读取文件大小
格式: du [选项] 目录
	du	-a	显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
	du	-h	常见单位显示大小
	du	-s	统计总占用和,不再列出子文件的占用量

3、fsck命令

修复出现问题的文件系统只受用于centos6和ext4文件系统
格式: fsck -y 分区名

4、dumpe2fs命令

显示重点:卷标、挂载点、UUID、挂载参数、文件系统状态、inode总量/空闲、block总量/空闲、单block 的大小等
此命令适用于ext4文件系统不支持xfs
格式: dumpe2fs -h 分区名

5、stat命令

显示文件的详细信息
文件名、文件大小、占用block数量、单block的大小、所在设备编号、inode号、硬链接数、权限、属主、属组、访问时间、数据修改时间、状态修改时间
格式:stat a.txt 

[root@k8s-node02 ~]# stat a.txt 
  文件:"a.txt"
  大小:13        	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:134347296   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2021-05-17 19:15:09.870602956 +0800
最近更改:2021-05-17 19:15:09.870602956 +0800
最近改动:2021-05-17 19:15:09.870602956 +0800
创建时间:-

6、file命令

判断文件的详细类型
格式:file 文件名
root@k8s-node02 ~]# file a.txt 
a.txt: UTF-8 Unicode text

7、type命令

判断命令是外部命令还是shell内置命令
[root@k8s-node02 ~]# type  yum
yum 是 /usr/bin/yum
[root@k8s-node02 ~]# type  which
which 是 `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 的别名

8、xfs_info命令

显示xfs文件系统相关分区的详细信息,只适用与centos7
格式:xfs_info 分区名称
root@localhost ~]# xfs_info /dev/sdd1 
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

9、xfs_repair命令

检测并修复xfs文件只适用于centos7
xfs_repair 选项 分区名称 注意分区必须是卸载状态
-d:专门针对/分区的修复,但必须在单用户模式修复
[root@k8s-node02 ~]# xfs_repair /dev/sdb2
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3

10、mount命令

此命令用于挂载
格式:mount /dev/sdb2 /home/
mount 分区名称 挂载的目录名称
[root@k8s-node02 ~]# df -h 
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G   12M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   97G  3.5G   94G    4% /
/dev/sda1               1014M  166M  849M   17% /boot
tmpfs                    394M     0  394M    0% /run/user/0
[root@k8s-node02 ~]# mount /dev/sdb2 /home/
[root@k8s-node02 ~]# df -h 
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G   12M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   97G  3.5G   94G    4% /
/dev/sda1               1014M  166M  849M   17% /boot
tmpfs                    394M     0  394M    0% /run/user/0
/dev/sdb2                100G   33M  100G    1% /home

11、umount命令

此命令用于卸载挂载点
格式:umount /home/
-f是强制卸载
[root@k8s-node02 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G   12M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   97G  3.5G   94G    4% /
/dev/sda1               1014M  166M  849M   17% /boot
tmpfs                    394M     0  394M    0% /run/user/0
/dev/sdb2                100G   33M  100G    1% /home
[root@k8s-node02 ~]# umount /home/
[root@k8s-node02 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
tmpfs                    2.0G   12M  2.0G    1% /run
tmpfs                    2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/mapper/centos-root   97G  3.5G   94G    4% /
/dev/sda1               1014M  166M  849M   17% /boot
tmpfs                    394M     0  394M    0% /run/user/0

12、blkid和lsblk命令

blkid命令查看磁盘uuid
[root@k8s-node02 ~]# blkid 
/dev/sda1: UUID="b8b5a2a5-b07b-4bce-83a8-5d915c8247c0" TYPE="xfs" 
/dev/sda2: UUID="oASINu-xRJr-IfbW-cIvt-O4aO-EUC8-TN3Pof" TYPE="LVM2_member" 
/dev/sdb2: UUID="a83fb5f0-c63f-44de-8be8-300ca0f9cbbc" TYPE="xfs" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="042efe72-64c6-41b8-8759-5d7f9739e36b" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="cbc4419c-c4ae-4788-91db-fe60521609ab" TYPE="swap" 
lsblk以树形结构查看磁盘大小和数量
[root@k8s-node02 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0   97G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  
sdb               8:16   0  100G  0 disk 
└─sdb2            8:18   0  100G  0 part 
sdc               8:32   0  100G  0 disk 
sr0              11:0    1  4.3G  0 rom 

二、磁盘分区命令

xfs文件系统

xfs文件系统是一种高性能的日志文件系统,工作原理和ext4基本一致;相较而言,xfs的格式化速度较为快速,非常适合目前磁盘空间很大的情况

xfs文件系统的三个部分

数据区(Data section):类似于ext4文件系统的块组
文件系统活动登录区(Log section):记录文件变化,最终将变化同步到数据块
u 实时运行区(Realtime section):默认64k(4k-1G),作用类似于缓存,数据先保存在此处,对应文件的块和inode分配完成后将数据移到指定位置

1、fdisk命令

fdisk -l 查看系统所有的分区
[root@k8s-node02 ~]# fdisk  -l
fdisk 磁盘名称(/dev/sdb) #创建或修改磁盘的分区结构

​ 参数:

​ p:打印分区表

​ n:新建一个新分区

​ d:删除一个分区

​ m:输出菜单

		  q:退出不保存

		  w:把分区写进分区表,保存并退出
root@k8s-node02 ~]# fdisk  /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n   
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):
将使用默认值 209715199
分区 1 已设置为 Linux 类型,大小设为 100 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

2、partprobe

将磁盘的最新分区状况发送给内核
parted--.rpm
格式:partprobe 磁盘名
partprobe /dev/sdb1
此命令执行过后需要重启

3、mkfs命令

格式:mkfs.xfs -f /dev/sdb1

​ -f参数是强制格式化不加也可以

详解:mkfs.指定的文件系统 指定的分区名称

指定文件系统类型ext3、ext4、xfs等

mkfs命令非常简单易用,不过不能调整分区的默认参数

[root@k8s-node02 ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6553536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=26214144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

4、mke2fs命令

格式:mke2fs 选项 分区名称

​ -t 文件系统:指定格式化成哪种文件系统类型ext3、ext4、#暂不支持xfs

​ -b 字节:指定格式化时,每个block 的大小

​ -i 字节:指定多少字节分配一个inode号

​ 使用-i 指定分区的inode数量时,必须同时指定block的大小

[root@k8s-node02 ~]# mke2fs -t  ext4 -b4096 -i4096 /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
26214400 inodes, 26214144 blocks
1310707 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
32768 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

5、磁盘开机自启配置文件

/etc/fstab 自动挂载

​ 设备文件名(UUID)

​ 挂载点

​ 文件系统类型

​ 挂载特殊选项

​ 是否备份: 0 不备份 1 每天备份 #备份

​ 是否检查磁盘状态: 0 不检查 1 启动时检查 2 启动后检查

注意挂载时最好以磁盘UUID信息进行挂载

比如:UUID=62ef1ba2-50ec-4992-8f0b-b361446cb375 /home xfs defaults 0 0

或者:/dev/sdb1 /home xfs defaults 0 0

详解: 设备名称 挂载目录 文件系统类型 defaults 是否备份 是否检查

[root@k8s-node02 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Tue May 11 19:47:32 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=b8b5a2a5-b07b-4bce-83a8-5d915c8247c0 /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

6、dumpe2fs -h命令查看分区信息

GPT分区表详解

Linux中常见的分区表类型有两种: MBR 、GPT(GUID)

两种分区表的区别

MBR:磁盘最大识别到2TB;最多四个主分区,或三主一扩展
GPT:单分区最大识别到128EB;分区数无限制、windows最大支持128分区
GPT(GUID Partition Table)其含义为“全局唯一标识磁盘分区表”,主要用来代替MBR分区表,突 破存储限制产生

GPT分区表的构成

LBA 0 **:**GPT分区的最开头(第一个扇区),考虑兼容性问题,开头仍然存放MBR分区表,只是里面存放 有0xEE标识,以此声明该磁盘使用的是GPT分区表。

​ LBA 1:存储了硬盘的总存储空间,以及GPT分区表的信息,定义最多能创建128个分区(windows), 每个分信息占用的空间是128字节;128个分区中有一个是用来存储备份分区表的,所以可以手动指定 的分区数为127个分区。

​ LBA 2-33:每个分区信息存放的位置,上边说了每个分信息占用的空间是128字节。2-33正好是32个扇 区。32*512=16384,每个分区信息占用了128字节,16384/128=128个分区。

​ LBA 34:后面是第一个分区的开始

1、parted分区命令
        cp			将文件系统复制到另一个分区 
        help		打印通用求助信息
        mklabel		创建新的磁盘标签 (分区表)
        mkfs		创建文件系统
        mkpart		创建一个分区 
        mkpartfs	创建一个带有文件系统的分区 
        move		移动分区 
        name		将分区命名为“xx” 
        print		打印分区表,或者分区 
        quit		退出程序 
        resize		改变分区中文件系统的大小 
        rm			删除分区 
        select		选择要编辑的设备 
        set			改变分区的标志
[root@k8s-node02 ~]# parted /dev/sdb 
GNU Parted 3.1
使用 /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
(parted)                                                                  
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
创建新分区
parted) mkpart 
分区名称?  []? disk1
文件系统类型?  [ext2]?                                                   
起始点? 1MB                                                              
结束点? 5GB                                                              
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name   标志
 1      1049kB  5000MB  4999MB               disk1

分区时注意,默认的文件系统类型是ext2,默认就可以,完事出来自己mkfs再重新格式化。还有就是大家会发现我们的Type字段没有了,原来在MBR中时,Type是用来标示分区类型的(主分区、扩展分区、逻辑分区),但是现在我们是GPT分区表,所有不再有那些分区类型的概念
删除指定分区
(parted) rm                                                               
分区编号? 1                                                              
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  标志
注意:parted 中所做的操作,全都是立即生效,不需要w保存

8、gdisk分区命令

gdisk命令和fdisk命令很相似,主要针对GPT分区表的分区工具
b	将GPT数据备份到一个文件
c	更改分区名称
d	删除一个分区
i	显示分区详细信息
l	列出已知分区类型。此处8200是Linux swap,8300是Linux filesystem(对应fdisk的82和83)。还	 有一个8e00是Linux LVM
n	增加一个新的分区
o	创建一个新的空白的GPT分区表
p	显示当前磁盘的分区表
q	退出gdisk程序,不保存任何修改
r	恢复和转换选项(仅限专家)
s	排序分区
t	改变分区的类型
v	验证磁盘分区表
w	将分区表写入裁判并退出(保存并退出)
x	额外功能(仅限专家)
?	显示帮助信息
gdisk /dev/sdc

Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-209715166, default = 2048) or {+-}size{KMGTP}: +10G
Last sector (20973568-209715166, default = 209715166) or {+-}size{KMGTP}: +10G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):  ##默认8300 如何是swap是8200
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdc: 209715200 sectors, 100.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E7411689-E3BF-4158-8369-7AB04807D384
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 209715166
Partitions will be aligned on 2048-sector boundaries
Total free space is 188743613 sectors (90.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1        20973568        41945087   10.0 GiB    8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

swap格式化
分完swap区后执行
mkswap /dev/sdc1
启用swap
swapon /dev/sdc1
关闭swap
swapoff /dev/sdc1
添加到/etc/fstab,让swap分区自动挂载
UUID=41745d4a-ac53-4054-be0c-0b3f32601068 swap swap defaults 0 0

版权声明:本文为weixin_51134188原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。