CHAPTER 3 磁盘管理
创始人
2024-05-30 02:47:12
0

磁盘管理

    • 1 磁盘管理
      • 1.1 块设备信息(lsblk)
      • 1.2 挂载硬盘
        • 1.2.1 挂载单个硬盘(mkfs、mount)
        • 1.2.2 磁盘分区工具(fdisk)
        • 1.2.3 创建分区
        • 1.2.4 相关命令
          • 1. df
          • 2. partprobe
          • 3. mkfs
      • 1.3 逻辑卷管理器(LVM)
        • 1. 涉及概念
        • 2. 使用LVM流程
      • 1.4 磁盘检测及修复(fsck)

1 磁盘管理

1.1 块设备信息(lsblk)

lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。lsblk命令包含util-linux中。通过yum provides lsblk命令查看命令对应的软件包

[root@dbc-server-554 zabbix]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  1.8T  0 disk
├─sda1            8:1    0  200M  0 part /boot/efi
├─sda2            8:2    0    1G  0 part /boot
└─sda3            8:3    0  1.8T  0 part├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0  7.8G  0 lvm  [SWAP]└─centos-home 253:3    0  1.8T  0 lvm  /home
sdb               8:16   0  1.8T  0 disk
└─sdb1            8:17   0  1.8T  0 part└─DBCVG-DBCLV 253:2    0  3.7T  0 lvm  /mnt/DBC_Data
sdc               8:32   0  1.8T  0 disk
└─sdc1            8:33   0  1.8T  0 part└─DBCVG-DBCLV 253:2    0  3.7T  0 lvm  /mnt/DBC_Data

字段含义

字段说明
NAME这是块设备名。
MAJ:MIN本栏显示主要和次要设备号。
RM本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
RO该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE本栏显示块设备是否是磁盘或磁盘上的一个分区。sda和sdb是磁盘,而sr0是只读存储(rom)
MOUNTPOINT本栏指出设备挂载的挂载点。

从上述输出信息中,可以直观地了解到目前系统的硬盘分区及挂载情况。你也许可以发现,lsblk 显示的块设备的名字十分特别。事实上,Linux 中的块设备的命名是有一定规则的。

① 对于 SATA、SCSI 或 USB 接口的硬盘或 U 盘,其命名规则如下

主设备文件名次设置文件名(分区)
sd[小写字母],如 sda、sdb 等sd[小写字母][正整数],如 sda1、sdc1 等

② 对于 NVMe(M.2)接口的硬盘,其命名规则如下:

主设备文件名次设置文件名(分区)
nvme[非负整数],如 nvme0、nvme1 等nvme[非负整数]n[正整数]p[正整数],如 nvme0n1p1、nvme1n1p3 等

③ 对于 CD 或 DVD (ROM)光驱设备,其命名规则如下:

主设备文件名次设置文件名(分区)
sr[非负整数]如 sr0、sr1 等光驱不能分区

1.2 挂载硬盘

1.2.1 挂载单个硬盘(mkfs、mount)

查看linux下的硬盘

df -h
df -t tmpfs			#查看指定文件系统类型 

① 格式化:

mkfs -t ext4 /dev/sda1

② 创建挂载目录:

mkdir /data

③ 把空间挂在/data :

mount /dev/sda1 /data

④ 将以下信息添加到 /etc/fstab

/dev/sda1    /data    ext4    defaults    0    0

⑤ 立即执行 fstab 的内容:

mount -a

至此,硬盘挂载完毕。前三步为临时挂载,下次重启前挂载均有效,重启后挂载失效,当完成第四步后,已完成永久挂载

⑥ 若硬盘无法访问:
如出现报错: permission denied
同样修改文件权限即可:

sudo chmod 777 /media/sda1

⑦ 若需要解除挂载:

sudo umount /dev/sda1

⑧ 若需要临时挂载:
只是把硬盘插上,开机时可能会自动挂载硬盘,但是这样硬盘无法使用,需要先解除挂载:

sudo umount /dev/sdd1

重新挂载:

sudo mount /dev/sdd1 /snowstorm

1.2.2 磁盘分区工具(fdisk)

如果要挂载的硬盘,需要划分为多个分区,则需要创建分区,然后进行挂载,这个时候需要使用fdisk命令

Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。

语法

# 更改分区表
fdisk [options] 
# 列出分区表
fdisk [options] -l 
# 给出分区大小
fdisk -s 

该命令支持的选项有:

选项说明
-b 扇区大小(512、1024、2048或4096)
-c兼容模式:“dos”或“nondos”(默认)
-h打印此帮助文本
-u 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v打印版本信息
-C 指定柱面数
-H 指定磁头数
-S 指定每个磁道的扇区数

当进入分区界面后,可以输入如下命令进行操作:

命令命令说明
a切换可引导标志
b编辑bsd磁盘标签
c切换dos兼容性标志
d删除分区
g创建一个新的空GPT分区表
G创建一个IRIX(SGI)分区表
l列出已知的分区类型
m打印此菜单
n添加一个新分区
o创建一个新的空DOS分区表
p打印分区表
q退出而不保存更改
s创建一个新的空Sun磁盘标签
t更改分区的系统id
u更改显示/输入单位
v验证分区表
w将表写入磁盘并退出
x额外功能(仅限专家)

查看支持的分区类型

Command (m for help): l0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS accessa  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/Ob  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStorc  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fse  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPTf  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix

1.2.3 创建分区

通过fdisk -l lsblk,我们可以知道那些磁盘是空闲并未使用
如果要为指定硬盘创建分区,命令格式如下:

# 语法
fdisk 指定磁盘
# 示例,给磁盘 /dev/sdb 进行分区,/dev/sdb 是查询出来的磁盘名
fdisk /dev/sdb

创建分区基本流程:

  • fdisk /dev/device
  • > p(显示设备详细信息)
  • > n(创建新分区)
  • >1(partition number)
  • > 回车,即选择默认(first sector)
  • > +20G(last sector)
  • 提示 Partition 1 of type Linux and of size 5 GiB is set
  • > p
  • > w(保存退出)
[root@node1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   35G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part├─centos-root 253:0    0   25G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm
sdb               8:16   0   10G  0 disk
└─centos-root   253:0    0   25G  0 lvm  /
sdc               8:32   0    5G  0 disk
sr0              11:0    1  973M  0 rom
[root@node1 ~]# fdisk /dev/sdc
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 0xf1526ce9.Command (m for help): n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is setCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[root@node1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   35G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part├─centos-root 253:0    0   25G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm
sdb               8:16   0   10G  0 disk
└─centos-root   253:0    0   25G  0 lvm  /
sdc               8:32   0    5G  0 disk
└─sdc1            8:33   0    5G  0 part
sr0              11:0    1  973M  0 rom
[root@node1 ~]# mkfs -t ext4 /dev/sdc
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@node1 ~]# mkdir /mnt/sdc
[root@node1 ~]# mount /dev/sdc /mnt/sdc
[root@node1 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 866M     0  866M   0% /dev
tmpfs                    878M     0  878M   0% /dev/shm
tmpfs                    878M   87M  791M  10% /run
tmpfs                    878M     0  878M   0% /sys/fs/cgroup
/dev/mapper/centos-root   25G   18G  7.6G  70% /
/dev/sda1               1014M  225M  790M  23% /boot
tmpfs                    176M     0  176M   0% /run/user/0
/dev/sdc                 4.8G   20M  4.6G   1% /mnt/sdc
[root@node1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   35G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part├─centos-root 253:0    0   25G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm
sdb               8:16   0   10G  0 disk
└─centos-root   253:0    0   25G  0 lvm  /
sdc               8:32   0    5G  0 disk /mnt/sdc
sr0              11:0    1  973M  0 rom

注意:

分区可以按主分区(primary partition)或扩展分区(extended partition)创建,主分区可以被系统直接格式化,而扩展分区则只能容纳逻辑分区。扩展分区出现是因为每个存储设备只能有4个分区,可通过创建多个扩展分区,在扩展分区内创建分区

有的版本不会自动更新linux系统新分区的生成,需要使用partprobe或hdparm,或重启系统让系统更新分区表

1.2.4 相关命令

1. df

df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。

日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。

语法格式:

df [参数] [指定文件]

常用参数:

  • -a 显示所有系统文件
  • -B <块大小> 指定显示时的块大小
  • -h 以容易阅读的方式显示
  • -H 以1000字节为换算单位来显示
  • -i 显示索引字节信息
  • -k 指定块大小为1KB
  • -l 只显示本地文件系统
  • -t <文件系统类型> 只显示指定类型的文件系统
  • -T 输出时显示文件系统类型
  • --sync 在取得磁盘使用信息前,先执行sync命令

参考实例:

[root@node1 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 866M     0  866M   0% /dev
tmpfs                    878M     0  878M   0% /dev/shm
tmpfs                    878M   87M  791M  10% /run
tmpfs                    878M     0  878M   0% /sys/fs/cgroup
/dev/mapper/centos-root   25G   18G  7.6G  70% /
/dev/sda1               1014M  225M  790M  23% /boot
tmpfs                    176M     0  176M   0% /run/user/0
/dev/sdc                 4.8G   20M  4.6G   1% /mnt/sdc
[root@node1 ~]# df -t ext4 -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        4.8G   20M  4.6G   1% /mnt/sdc
2. partprobe

partprobe命令用于重读分区表,将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。如果删除文件后,仍然提示占用空间,可以用partprobe在不重启的情况下重读分区 。

语法格式:

partprobe [参数]

常用参数:

  • -d 不更新内核
  • -s 显示摘要和分区
  • -h 显示帮助信息
  • -v 显示版本信息

参考实例:
在安装Linux系统之后,创建分区并且在不重新启动机器的情况下,让系统识别这些分区(sdb6为新创建的分区):

[root@linux265 ~]# partprobe /dev/sdb6
3. mkfs

在磁盘分区上创建ext2、ext3、ext4、ms-dos、vfat文件系统,默认情况下会创建ext2。mkfs用于在设备上构建Linux文件系统,通常是硬盘分区。文件要么是设备名称(例如/dev/hda1,/dev/sdb2),要么是包含文件系统的常规文件。成功返回0,失败返回1。

实际上,mkfs只是Linux下可用的各种文件系统构建器(mkfs.fstype)的前端,在可能/sbin、/sbin/fs、/sbin/fs.d、/etc/fs、/etc/fs等多个目录中搜索特定于文件系统的生成器(编译时定义了精确的列表,但至少包含/sbin和/sbin/fs),最后在PATH环境变量中列出的目录中搜索。

mkfs.ext4 等价于 mkfs -t ext4

语法格式:

mkfs [参数]

常用参数:

  • device 预备检查的硬盘分区,例如:/dev/sda1
  • -V 详细显示模式
  • -t 给定档案系统的型式,Linux 的预设值为 ext2
  • -c 在制做档案系统前,检查该partition 是否有坏轨
  • -l bad_blocks_file 将有坏轨的block资料加到 bad_blocks_file 里面
  • block 给定 block 的大小

参考实例:
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来:

[root@linux265 ~]# mkfs -V -t msdos -c /dev/hda5 

将sda6分区格式化为ext3格式:

[root@linux265 ~]# mfks -t ext3 /dev/sda6      

1.3 逻辑卷管理器(LVM)

1. 涉及概念

  • 逻辑卷管理器-LVM(logical volume manager)是linux对磁盘分区进行管理的一种机制,能为已有的文件系统添加额外的空间。
  • 物理卷-PV:在逻辑卷的世界里,磁盘分区称为物理卷PV(physical volume),每个物理卷都映射到磁盘的特定物理分区
  • 实体延伸区块-PE(Physical Extend)是LVM最小的存储单位,一般为4MB大小,它是构成VG的基本单位,PE对于VG来说就如block对于分区来讲,它是存储数据的单元。而pe的大小并不是固定的,而是可以变化的,所以pe决定了LVM的灵活性,即能扩增,也能缩减。
  • 卷组-VG:多个物理卷组成卷组VG(volume group),逻辑卷管理器将VG视为一个物理硬盘,实际上VG可能是由分布在多个物理硬盘上的多个物理分区组成,VG提供了一个创建逻辑分区的平台,而这些逻辑分区包含了文件系统。
  • 逻辑卷-LV:整个结构中最后一层是逻辑卷LV(logical volume),为创建文件系统提供了分区环境,linux视逻辑卷为物理分区。

在这里插入图片描述

注意:

LVM缺点:单个硬盘损坏,会造成多个逻辑卷无法访问
LVM2引入快照,条带化,镜像

2. 使用LVM流程

在这里插入图片描述

① 通过fdisk创建LVM分区(更换文件系统类型):

  • fdisk /dev/sda1
  • > t(更换文件系统类型 )
  • > 5(Partition number)
  • > 8e (Partition type,Centos7 8e)
  • > p
  • > w
    参考其他文档,在n之后有t选项,笔者的系统没有,所以只能先创建分区,之后更换文件系统类型

② 创建PV

pvcreate /dev/sda1
pvdisplay /dev/sda1 #查看pv

pv相关命令

pvcreate(创建)
pvremove(删除)
pvscan(扫描)
pvs(列表)
pvdisplay(详情)
pvmove(移动数据)

示例:

[root@node1 ~]# pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created.
[root@node1 ~]# pvsPV         VG     Fmt  Attr PSize   PFree/dev/sdc1         lvm2 ---    1.00g  1.00g
[root@node1 ~]# pvdisplay"/dev/sdc1" is a new physical volume of "1.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdc1VG NamePV Size               1.00 GiBAllocatable           NOPE Size               0Total PE              0Free PE               0Allocated PE          0PV UUID               3bi7tx-83U9-rI4i-UyRh-z1wM-YpSF-IzCrpo[root@node1 ~]# pvscanPV /dev/sdc1                      lvm2 [1.00 GiB]Total: 3 [29.99 GiB] / in use: 2 [28.99 GiB] / in no VG: 1 [1.00 GiB]

③ 创建VG

vgcreate Vol2 /dev/sda1
vgdisplay Vol2  #查看vg

vg相关命令:

vgcreate(创建)
vgscan(扫描)
vgs(列表)
vgchange	#激活和禁用卷组
vgremove	#删除卷组
vgextend	#扩展卷组
vgreduce	#缩减卷组

示例:

[root@node1 ~]# vgcreate vg01 /dev/sdc1 /dev/sdc2Volume group "vg01" successfully created
[root@node1 ~]# vgsVG     #PV #LV #SN Attr   VSize  VFreecentos   2   2   0 wz--n- 28.99g <2.00gvg01     2   0   0 wz--n-  2.99g  2.99g
[root@node1 ~]# vgdisplay--- Volume group ---VG Name               vg01System IDFormat                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               2.99 GiBPE Size               4.00 MiBTotal PE              766Alloc PE / Size       0 / 0Free  PE / Size       766 / 2.99 GiBVG UUID               fkjcPk-XXXR-B5bA-YA4n-KMya-UT6w-r32kzc
[root@node1 ~]# vgscanReading volume groups from cache.Found volume group "vg01" using metadata type lvm2Found volume group "centos" using metadata type lvm2
[root@node1 ~]# vgextend vg01 /dev/sdc3Volume group "vg01" successfully extended
[root@node1 ~]# vgdisplay--- Volume group ---VG Name               vg01System IDFormat                lvm2Metadata Areas        3Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                3Act PV                3VG Size               <3.48 GiBPE Size               4.00 MiBTotal PE              890Alloc PE / Size       0 / 0Free  PE / Size       890 / <3.48 GiBVG UUID               fkjcPk-XXXR-B5bA-YA4n-KMya-UT6w-r32kzc[root@node1 ~]# vgreduce vg01 /dev/sdc3Removed "/dev/sdc3" from volume group "vg01"
[root@node1 ~]# vgdisplay--- Volume group ---VG Name               vg01System IDFormat                lvm2Metadata Areas        2Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               2.99 GiBPE Size               4.00 MiBTotal PE              766Alloc PE / Size       0 / 0Free  PE / Size       766 / 2.99 GiBVG UUID               fkjcPk-XXXR-B5bA-YA4n-KMya-UT6w-r32kzc

④ 创建LV

lvcreate -l 100%FREE -n lvtest1 Vol2
lvdisplay Vol2	#查看lv

lv相关命令:

lvcreate option_args position_args
options_args:-l 	#指定分配给新逻辑卷的逻辑区段数,或要用的逻辑区段百分比,或用-L指定分配给新逻辑卷的硬盘大小可以为KB,MB,GB为单位,-n 	#指定名称lvextend	#扩容逻辑卷
lvreduce	#缩容逻辑卷
lvremove(删除) 
lvscan(扫描)
lvs(列表)
lvdisplay(详情)

示例:

[root@node1 ~]# lvcreate -L 1G -n lv01 vg01Logical volume "lv01" created.
[root@node1 ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <25.00gswap centos -wi-a-----   2.00glv01 vg01   -wi-a-----   1.00g
[root@node1 ~]# lvdisplay--- Logical volume ---LV Path                /dev/vg01/lv01LV Name                lv01VG Name                vg01LV UUID                Ue866C-n3VA-uRrN-ha1d-jOob-cICY-EcExZxLV Write Access        read/writeLV Creation host, time node1, 2023-03-07 12:40:11 -0500LV Status              available# open                 0LV Size                1.00 GiBCurrent LE             256Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2
[root@node1 ~]# lvextend -L +500M  /dev/vg01/lv01Size of logical volume vg01/lv01 changed from 1.00 GiB (256 extents) to <1.49 GiB (381 extents).Logical volume vg01/lv01 successfully resized.
[root@node1 ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <25.00gswap centos -wi-a-----   2.00glv01 vg01   -wi-a-----  <1.49g
[root@node1 ~]# lvreduce -L -500M /dev/vg01/lv01WARNING: Reducing active logical volume to 1.00 GiB.THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/lv01? [y/n]: ySize of logical volume vg01/lv01 changed from <1.49 GiB (381 extents) to 1.00 GiB (256 extents).Logical volume vg01/lv01 successfully resized.
[root@node1 ~]# lvsLV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot centos -wi-ao---- <25.00gswap centos -wi-a-----   2.00glv01 vg01   -wi-a-----   1.00g

⑤ 创建文件系统

mkfs.ext4 /dev/Vol2/lvtest1

⑥ 挂载

mount /dev/Vol2/lvtest1 /mnt/lvtest2/

1.4 磁盘检测及修复(fsck)

计算机难免会由于某些系统因素或人为误操作(突然断电)出现系统异常,这种情况下非常容易造成文件系统的崩溃,严重时甚至会造成硬件损坏。这也是我们一直在强调的“服务器一定要先关闭服务再进行重启”的原因所在。

那么,如果真出现了文件系统损坏的情况,有办法修复吗?可以的,对于一些小问题,使用 fsck 命令就可以很好地解决。

fsck 命令用于检查文件系统并尝试修复出现的错误。该命令的基本格式如下:

SYNOPSISfsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...]  [--] [fs-specific-options]

参数

  • -a 自动修复文件系统,不询问任何问题。
  • -A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。
  • -N 不执行指令,仅列出实际执行会进行的动作。
  • -P 当搭配"-A"参数使用时,则会同时检查所有的文件系统。
  • -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。
  • -R 当搭配"-A"参数使用时,则会略过/根目录的文件系统不予检查。
  • -s 依序执行检查作业,而非同时执行。
  • -t<文件系统类型> 指定要检查的文件系统类型。
  • -T 执行fsck指令时,不显示标题信息。
  • -V 显示指令执行过程。
  • -C 显示检查分区的进度条。

注意事项:

  • 此命令通常只有身为 root 用户且文件系统出现问题时才会使用,否则,在正常状况下使用 fsck 命令,很可能损坏系统。另外,如果你怀疑已经格式化成功的硬盘有问题,也可以使用此命令来进行检查。
  • 使用 fsck 检查并修复文件系统是存在风险的,特别是当硬盘错误非常严重的时候,因此,当一个受损文件系统中包含了非常有价值的数据时,务必首先进行备份!
  • 在使用 fsck 命令修改某文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是非常不安全的,数据可能会遭到破坏,也有可能会损坏磁盘。

fsck 命令在执行时,如果发现存在没有文件系统依赖的文件或目录,就会提示用户是否把它们找回来,因为这些没有文件系统依赖的文件或目录对用户来说是看不到的,换句话说,用户根本无法使用,这通常是由文件系统内部结构损坏导致的。如果用户同意找回(输入 y),fsck 命令就会把这些孤立的文件或目录放到 lost+found 目录中,并用这些文件自己对应的 inode 号来命名,以便用户查找自己丢失的文件。

因此,当用户在利用 fsck 命令修复磁盘分区以后,如果发现分区中有文件丢失,就可以到对应的 lost+found 目录中去查找,但由于无法通过文件名称分辨各个文件,这里可以利用 file 命令查看文件系统类型,进而判断出哪个是我们需要的文件。

示例:

  1. 例如,出现contains a file system with errors, check forced磁盘问题
fsck.ext4 -C0 /dev/sda1

建议根据系统提示进行修复

  1. 采用互动的修复模式
[root@localhost ~]#fsck -r /dev/sdb1

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...