Linux磁盘管理

Linux磁盘管理

磁盘使用流程
第一步:磁盘进行分区
第二步:磁盘格式化,格式成合适的文件系统,如window的ntfs,linux的ext3,xfs
第三步:挂载目录
第四步:就可以进行读写数据

常用命令

  • 查看磁盘列表lsblk
[11:49:59 root@centos8 ~]#lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  154G  0 part 
  ├─centos-root 253:0    0  100G  0 lvm  /
  ├─centos-swap 253:1    0    4G  0 lvm  [SWAP]
  └─centos-data 253:2    0   50G  0 lvm  /data
sr0              11:0    1 1024M  0 rom  

## 查看磁盘文件系统信息-顯示文件系統類型
[10:50:55 root@centos8 ~]#lsblk -f
NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                      
├─sda1          xfs               ef4150c4-70be-4f12-a9c8-6fda16cef466   /boot
└─sda2          LVM2_member       o273p0-3OvZ-nieC-PuPT-AMS2-ONP3-MEgD74 
  ├─centos-root xfs               ba2440e2-c49a-4d0f-b189-18bc80241297   /
  ├─centos-swap swap              7b3d7c3f-ad45-4c22-b466-0d30d1e9c4c8   [SWAP]          # swap 交换文件系统
  └─centos-data xfs               cc5818b0-5fbc-4102-9e6a-960e943186d2   /data
                                                                
sr0                                   
  • 查看磁盘详情fdisk -l
[11:53:49 root@centos8 ~]#fdisk -l

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a9ec

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   325076991   161488896   8e  Linux LVM

Disk /dev/mapper/centos-root: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-data: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

  • 查看磁盘使用情况df -h
[11:53:59 root@centos8 ~]#df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 974M     0  974M   0% /dev
tmpfs                    991M     0  991M   0% /dev/shm
tmpfs                    991M   11M  981M   2% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root  100G  6.8G   94G   7% /
/dev/sda1               1014M  304M  711M  30% /boot
/dev/mapper/centos-data   50G  255M   50G   1% /data
overlay                  100G  6.8G   94G   7% /var/lib/docker/overlay2/1d44160e595ffc134242c36c9ee8f34b588f4832d2cdbf3dbe799cdd6d10815b/merged
tmpfs                    199M     0  199M   0% /run/user/0

  • 查看磁盘健康情况smartctl -a /dev/sda
[11:54:37 root@centos8 ~]#smartctl -a /dev/sda
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.119.1.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               VMware,
Product:              VMware Virtual S
Revision:             1.0
User Capacity:        214,748,364,800 bytes [214 GB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Device type:          disk
Local Time is:        Mon Mar 10 11:55:16 2025 CST
SMART support is:     Unavailable - device lacks SMART capability.

=== START OF READ SMART DATA SECTION ===
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C

Error Counter logging not supported

Device does not support Self Test logging

分区操作

MBR(主引导记录)和GPT(GUID 分区表)是两种不同的磁盘分区表格式。它们之间有几个重要的区别,主要体现在支持的磁盘大小、分区数量、兼容性和可靠性等方面。

  1. 磁盘支持大小
    MBR:最大支持 2TB 的磁盘。因为 MBR 使用 32 位来存储分区的起始位置和大小,最大只能表示 2^32(即 2^31 扩展到负数)个扇区(一个扇区通常为 512 字节),导致它无法处理超过 2TB 的磁盘。
    GPT:支持更大磁盘,最大可以支持到 9.4ZB(即 9.4 亿 TB)。GPT 使用 64 位来存储分区信息,理论上可以支持几乎无限制的大磁盘,远超当前实际使用的磁盘大小。
  2. 分区数量
    MBR:最多支持 4 个主分区,或者 3 个主分区和 1 个扩展分区。扩展分区可以包含多个逻辑分区,但实际上一个 MBR 分区表最多只能容纳 4 个分区。
    GPT:支持最多 128 个分区(Windows 中的默认值),理论上可以创建更多的分区。GPT 分区表没有像 MBR 那样的主分区和扩展分区限制,所有分区都可以是主分区。

MBR(主引导记录)

  • 硬盘结构默认分区1-4留给主分区和扩展分区

    • 主分区1 * (型号代表引导分区)
    • 主分区2
    • 主分区3
    • 主分区4(扩展分区)
      • 逻辑分区1
      • 逻辑分区2
      • 。。。
  • 分区编辑器fdisk

分区管理命令fdisk危险命令,谨慎使用

在这里插入图片描述

编辑分区 fdisk /dev/sda2

  • 操作说明
    在这里插入图片描述
  • 执行分区
# 查询磁盘列表信息,过滤sd相关行
[17:31:41 root@centos8 ~]#fdisk -l | grep sd
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   325076991   161488896   8e  Linux LVM
Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 sectors

# 对磁盘/dev/sdb进行分区处理
[17:31:50 root@centos8 ~]#fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x9f15ff09.

Command (m for help): n            # 输入n 添加分区操作
Partition type:
   p   primary (0 primary, 0 extended, 4 free)  # p 主分区
   e   extended									# e 扩展分区
Select (default p): p               # 选择P 添加主分区
Partition number (1-4, default 1):  # 直接回车,默认分区编号1 
First sector (2048-62914559, default 2048): # 直接回车 主分区开始扇区,默认值2048
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): +256M # 结束扇区 +256M  
Partition 1 of type Linux and of size 256 MiB is set

Command (m for help): n     # 添加分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e                # 选择e 添加扩展分区
Partition number (2-4, default 2):   # 直接回车
First sector (526336-62914559, default 526336): # 直接回车 扩展分区开始扇区
Using default value 526336
Last sector, +sectors or +size{K,M,G} (526336-62914559, default 62914559): # 直接回车 扩展分区结束扇区 把所有剩余空间分配给扩展分区
Using default value 62914559
Partition 2 of type Extended and of size 29.8 GiB is set

Command (m for help): n      # 添加逻辑分区
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)  
Select (default p): l        # 选择l 添加逻辑分区
Adding logical partition 5
First sector (528384-62914559, default 528384): # 直接回车,开始扇区
Using default value 528384
Last sector, +sectors or +size{K,M,G} (528384-62914559, default 62914559): +10G # +10G 结束扇区,分配10G空间
Partition 5 of type Linux and of size 10 GiB is set

Command (m for help): n        # 添加逻辑分区
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l         # 选择l 添加逻辑分区
Adding logical partition 6
First sector (21501952-62914559, default 21501952):                        # 直接回车,开始扇区
Using default value 21501952
Last sector, +sectors or +size{K,M,G} (21501952-62914559, default 62914559): # 直接回车 ,结束扇区,分配剩余空间
Using default value 62914559
Partition 6 of type Linux and of size 19.8 GiB is set

Command (m for help): p                                                   # p 打印分配信息

Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9f15ff09

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      526335      262144   83  Linux
/dev/sdb2          526336    62914559    31194112    5  Extended
/dev/sdb5          528384    21499903    10485760   83  Linux
/dev/sdb6        21501952    62914559    20706304   83  Linux

Command (m for help): w                                            # 确认无误,输入w 保存分区信息,写入硬盘 (如果有误,输入n,退出重新执行上述流程)

The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


在这里插入图片描述

  • 分区编号信息存在在/proc/partitions文件中
[17:51:18 root@centos8 ~]#cat /proc/partitions 
major minor  #blocks  name

   8        0  209715200 sda
   8        1    1048576 sda1
   8        2  161488896 sda2
   8       16   31457280 sdb
   8       17     262144 sdb1
   8       18          1 sdb2
   8       21   10485760 sdb5
   8       22   20706304 sdb6
  11        0    1048575 sr0
 253        0  104857600 dm-0
 253        1    4194304 dm-1
 253        2   52428800 dm-2

GPT(GUID 分区表

  • 分区管理工具 partedgdisk

gdisk 命令操作和fdisk 操作类似
注意parted命令是实时生效的,使用的时候一定要小心!

文件系统

  • fat16 fat32 ,最早的windows的文件系统,确定是单文件,不能超过2GB
  • NTFS文件系统,支持文件加密,采用日志形式的文件系统,详细记录磁盘读写操作,支持数据恢复,能搞提高磁盘数据的安全性,突破当个4GB大小限制
  • exFAT 文件系统 新式文件系统,单个文件支持16GB大小,能够在windows和Linux,macos同时识别

Linux 支持多種文件系統,每個文件系統都有其特點和適用範圍。以下是一些常見的文件系統類型:

  • Ext4(Fourth Extended File System):目前最常用的 Linux 文件系統,提供穩定性、性能和支持大容量磁碟。它是 Ext3 的升級版,支持更大的文件和分區。
  • Ext3(Third Extended File System):舊版的 Ext 文件系統,具有日誌功能(journaling),比 Ext2 更穩定,但速度和擴展性較差。
  • Ext2(Second Extended File System):不具備日誌功能,速度較快,但一旦系統崩潰,數據損壞的風險較高。
  • Btrfs(B-tree File System):一個新的 Linux 文件系統,旨在提供高效的數據完整性、快照、壓縮和自動修復等功能。
  • XFS:一種高性能的文件系統,特別適合於處理大文件,通常用於企業級存儲解決方案。
  • F2FS(Flash-Friendly File System):專為 NAND 閃存設備設計,能夠優化其性能。
  • ZFS:雖然原本是 Sun Microsystems 開發的,但現在也能在 Linux 上使用。它有強大的數據保護、快照和壓縮功能。
  • VFAT/FAT32:用於小型存儲設備(如 USB 驅動器),兼容性強,但不支持 Linux 特有的高級特性。

mkfs 针对磁盘分区进行格式化文件系统

  • mkfs.xfs /dev/sda分区编号 格式成xfs類型文件系統 ,centos7/8后常用
  • mkfs.ext4 /dev/sda分区编号 格式成ext4 类型文件系统,ubuntu/debain系统常用
[19:46:04 root@centos8 ~]#mkfs # tab補全
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.fat     mkfs.minix   mkfs.msdos   mkfs.vfat    mkfs.xfs   

fsck命令,修复文件系统的命令, 默认读取、etc/fstab 开机挂载文件的

查看文件系统属性

  • centos7之前的系统,使用dumpe2fs命令,打印文件系统块组信息,适用于ext2,ext3,ext4
  • centos7之后的系统默认使用xfs文件系统,使用xfs_info 打印文件系统信息
  • tune2fs命令,设置linux是否开机自动检查文件系统是否正常

lsblk命令,列出所有与设备及文件系统信息

同步磁盘分区表到内存

# centos7/8 直接执行就ok
partprobe 

# centos6 指定硬盘进行刷新(新增时)
partx -a /dev/sda 
# centos6 指定硬盘进行刷新(删除时)
partx -d --nr 6-8 /dev/sda

挂载

  • 挂载操作
mount [选项] <设备> <挂载点>
  • 取消挂载
umount <设备>
# 或
umount <挂载点>
  • 查看设备或设备中文件是否被使用
lsof /dev/sd[a/b/c] 
## 如下
[10:13:39 root@centos8 dir_xfs]#lsof /dev/sdb1
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    6682 root  cwd    DIR   8,17     4096    2 /data/dir_xfs
bash    6849 root  cwd    DIR   8,17     4096    2 /data/dir_xfs
lsof    6908 root  cwd    DIR   8,17     4096    2 /data/dir_xfs
lsof    6909 root  cwd    DIR   8,17     4096    2 /data/dir_xfs

  • 挂载点存在被占用时,可以使用fuser -km 挂载点,把全部使用者全部踢出

  • 永久挂载

fstab 文件是 Linux 系统用于配置文件系统挂载点的文件。通过编辑该文件来实现持久挂载。

  • 查看磁盘信息
    通过 lsblk 或 fdisk 等命令查看系统中所有可用的硬盘及其分区。
lsblk
  • 查找分区的 UUID

使用 blkid 命令获取硬盘分区的 UUID(唯一标识符),因为 UUID 是最推荐的持久化方式,因为它不会随着设备的插拔而变化。
也可以用设备名称 进行挂载(不推荐),设备插拔或增删会改变设备名称

sudo blkid /dev/sdX1

例如,假设输出如下:

/dev/sdb1: UUID="1234abcd-56ef-78gh-90ij-1234567890ab" TYPE="ext4"
  • 使用编辑器打开 /etc/fstab 文件:
sudo nano /etc/fstab
  • 添加挂载信息

在 fstab 文件中,添加一行来配置硬盘分区的持久挂载。行的格式如下:

UUID=1234abcd-56ef-78gh-90ij-1234567890ab /mnt/data ext4 defaults 0 2
  • UUID=1234abcd-56ef-78gh-90ij-1234567890ab:硬盘分区的 UUID(在步骤 2 中获得)。
  • /mnt/data:挂载点,表示你希望硬盘挂载到的目录。你可以根据需要修改此路径。
  • ext4:文件系统类型,根据你硬盘的实际文件系统来设置,如 ext4, ntfs, vfat 等。
  • defaults:挂载选项,defaults 是一个常用的默认选项。
  • 0:表示是否需要进行文件系统备份(通常设置为 0)。
  • 2:表示文件系统检查顺序,根文件系统通常为 1,其他文件系统为 2。

扩展lsof

lsof(List Open Files)是一个用于列出当前系统中所有已打开文件的命令。它可以显示与文件相关的进程信息,包括文件描述符、文件类型、访问模式以及打开这些文件的进程。

在 Linux 或类 Unix 系统中,几乎所有的资源(如设备、目录、库文件、网络连接等)都被视为文件,因此 lsof 可以帮助用户查看所有打开的文件以及它们被哪些进程使用。

常见用法:

  • 列出所有打开的文件:
lsof
  • 查看某个进程打开的文件:
lsof -p <PID>
#其中 <PID> 是进程 ID。
  • 查看某个文件被哪些进程打开:
lsof <filename>
  • 查看某个网络端口的使用情况:
lsof -i :<port>
#例如,要查看 80 端口的使用情况,可以使用 lsof -i :80。
  • 查看特定用户打开的文件:
lsof -u <username>

lsof 是一个非常强大的工具,用于诊断文件系统、网络连接等方面的故障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值