CHAPTER 3 磁盘管理
磁盘管理
- 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] <disk>
# 列出分区表
fdisk [options] -l <disk>
# 给出分区大小
fdisk -s <partition>
该命令支持的选项有:
选项 | 说明 |
---|---|
-b <size> | 扇区大小(512、1024、2048或4096) |
-c | 兼容模式:“dos”或“nondos”(默认) |
-h | 打印此帮助文本 |
-u <size> | 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) |
-v | 打印版本信息 |
-C <number> | 指定柱面数 |
-H <number> | 指定磁头数 |
-S <number> | 指定每个磁道的扇区数 |
当进入分区界面后,可以输入如下命令进行操作:
命令 | 命令说明 |
---|---|
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 命令查看文件系统类型,进而判断出哪个是我们需要的文件。
示例:
- 例如,出现
contains a file system with errors, check forced
磁盘问题
fsck.ext4 -C0 /dev/sda1
建议根据系统提示进行修复
- 采用互动的修复模式
[root@localhost ~]#fsck -r /dev/sdb1
相关文章:
CHAPTER 3 磁盘管理
磁盘管理1 磁盘管理1.1 块设备信息(lsblk)1.2 挂载硬盘1.2.1 挂载单个硬盘(mkfs、mount)1.2.2 磁盘分区工具(fdisk)1.2.3 创建分区1.2.4 相关命令1. df2. partprobe3. mkfs1.3 逻辑卷管理器(LVM)1. 涉及概念2. 使用LVM流程1.4 磁盘检测及修复(fsck)1 磁盘…...
MS python学习(7)
Managing Keys - dotenv Managing keys usage of .env module 项目地址:https://github.com/theskumar/python-dotenv Reads the key,value pair from .env and adds them to environment variable. 将key明文(hard code)形式写在script里…...
工业物联网“杀手级”应用—预测性维护
一、预测性维护的必要性 随着新一轮科技革命和产业变革的兴起,工业物联网、大数据、人工智能等技术正与经济社会各领域加速渗透融合。由于市场竞争对精细化成本管控的要求,设备的重要性越来越凸显,设备的维护对策也必然从响应式维护…...
Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)
弱点描述 Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。 Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。 在Java语…...
一元导数与多元求导数总结
前序:文章结构 1.一元导数 ①一般函数求导 因为太简单的原因,事实上一般函数求导不会单独出现,大多数都是出现在各种特殊的求导过程中。只要掌握16个基本求导公式没问题。 ②复合函数求导(主要链式法则) 这种一般是…...
通过堆栈分析深拷贝、浅拷贝、赋值的差异
前言数据类型分为:基本数据类型String、Number、Boolean、Null、Undefined、Symbol对象数据类型Object、Array基本数据类型的特点:直接存储在栈(stack)中的数据引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内…...
网络割接概述
网络割接概述割接背景企业网络的变化割接概述割接难点割接的操作流程情景模拟及解决方案常见的割接场景割接背景 随着企业业务的不断发展,企业网络为了适应业务的需求不断的改造和优化。无论是硬件的扩容、软件的升级、配置的变更,凡是影响现网运行业务…...
开放开源开先河(下)
目录 1.唯一性定义品牌 2.打造爆款塑造品牌 3.生态系统传播品牌 打造爆款塑造品牌 目前全球100多个开源基金会大部分都在美国,已成功孵化了800多个项目。而开放原子开源基金会现有136家捐赠单位,2020年9月,百度将区块链项目超级链࿰…...
maven的学习
为啥要用maven 1、不用认为添加jar包所依赖的其他jar包 2、能在本地仓库只保留一份jar包,避免了多个工程使用相同jar包,需要重复导入的问题,减少冗余 3、能够规范添加jar包,在下载需要的jar包时有多种方法,但是不能保…...
从前端到后端全面解析文件上传
从前端到后端全面解析文件上传1.前端准备(vueelement-ui)2.后端准备(SpringBootminiomysql)2.1解决跨域2.2配置minio与mysql2.3controller层2.4service层1.前端准备(vueelement-ui) <!DOCTYPE html> <html lang"en"> <head><meta charset"…...
全网火爆,软件测试面试题大全,接口测试题+回答 (18k+的offer)
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 面试测试工程师的时…...
【iOS】—— 浅看block源码
block 文章目录block如何通过终端clang生成源码cpp文件block实质截获自动变量全局变量和静态变量的截获__block说明符iOS开发“强弱共舞”——weak和strong配套使用解决block循环引用问题如何通过终端clang生成源码cpp文件 之前在学习block中学习的比较浅,只看了oc…...
I.MX6ULL_Linux_系统篇(23) busybox文件系统构建
Linux“三巨头”已经完成了 2 个了,就剩最后一个 rootfs(根文件系统)了,本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是 Linux 移植的最后一步,根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系…...
shpjs将.zip文件转成geoJson
一、npm install shpjs二、import shp from shpjs三、async setLayerSource() {const geoJsonData await shp(dataUrl)}一直报错:是因为Buffer这个插件一直没找到Uncaught Error: nodebuffer is not supported by this browser解决办法npm install node-polyfill-w…...
eBay是不是一定要养号?是的
相信每个运营过eBay的用户遇到过这个棘手的问题,eBay个人账户的刊登数量是有限的,尤其是新账户只有5个sku,所以一开始的运营会比较艰难。想要快点走上正轨的话,就一定要去注重这个“养号”。eBay运营模式 1.拍卖 eBay最开始是一个…...
宝塔(二):升级JDK版本
目录 背景 一、下载JDK17 二、配置环境变量 三、配置新的JDK路径 背景 宝塔的软件商店只有JDK8,不满足我当前项目所需的JDK版本,因此想对JDK版本进行升级,升级为JDK17。 一、下载JDK17 先进入 /usr/lib/jvm 目录 点击终端,进…...
【LeetCode】螺旋矩阵 [M](数组)
54. 螺旋矩阵 - 力扣(LeetCode) 一、题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,…...
实验二:动态规划
1.双11的红包雨 问题描述 双11到了,据说这2天会下红包雨,每个红包有不同的价值,小k好开心,但有个规则,就只能接掉落在他身旁的10米范围内的红包(0-10这11个位置)。小k想尽可能的多抢红包&…...
华为机试 HJ27 查找兄弟单词
题目链接:https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68?tpId37&tqId21250&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26t…...
佩戴舒适的蓝牙耳机有哪些?佩戴舒适的蓝牙耳机推荐
音乐对许多人而言,都是一种抚慰生命的力量,特别是在上下班的时候,在熙熙攘攘的人流中,戴着耳机听一首动听的曲子,无疑会让人心情变得更加舒畅,要想获得出色的音乐体验,没有一副出色的耳机可不行…...
ESXI主机安装Zabbix 6.2
1:首先下载Zabbix Appliance 2:还需要下载VMware converter ,这个需要VMware的账号,或者从其他地方下载也可以。 3:vmdk格式的 image 可直接在 VMware Player、 Server 和 Workstation 产品中使用。要在 ESX,、ESXi 和 vSphere 中…...
【Linux 网络编程1】使用UDP/TCP编写套接字,多进程/多线程版本的TCP编写的套接字,将套接字封装
目录 1.学习网络编程前的一些基础知识 2.UDP(user datagram protocol)协议的特点 3.使用有UPD编写套接字 4.使用TCP编写套接字 4.2.TCP客服端 4.3.TCP服务器端 4.4.单进程版本(没有人会使用) 4.5.多进程版本 4.6.多线程版本 5.把套接字封装 1…...
滑动窗口求最大和最小
滑动窗口 要区分最小和最大滑窗,内层while循环的条件和更新结果的地方 核心: 关键的区别在于,最大滑窗是在迭代右移右边界的过程中更新结果,而最小滑窗是在迭代右移左边界的过程中更新结果。 最小滑窗 给定数组 nums࿰…...
跟ChatGPT学量化,菜鸟炒股也不怕
你是一个python资深量化开发工程师,请介绍量化交易的基本框架 量化交易的基本框架包括以下几个步骤: 数据获取:获取市场数据和公司财务数据等,可以使用API接口、爬虫等方式获取。数据清洗和预处理:对获取到的数据进行清…...
扬帆优配|2600亿新能源巨头狂飙!外资唱多中国:再涨15%
全国停摆的危机,正在迫临法国。 大停工正在将法国推向风险境地。法国政府估计,当地时间3月7日,将迸发全国大型停工游行。法国总工会宣告,到时将让全法国停摆。法国担任交通业务的部长级代表克莱蒙博讷正告称,7日将成为…...
ChatGPT技术与商业模式及产业发展布局方案
文章目录模块一:概念模块二:架构模块三:技术模块四:算力模块五:体验模块六:应用模块七:商业模块八:产业模块九:建议结语主要内容: 采用模块化教学方法&#x…...
CIMCAI port ai shipping ai artificial intelligence smart port
上海人工智能独角兽中集集团高科技中集飞瞳,是全球应用落地最广,规模最大,最先进的的港航人工智能高科技企业,工业级成熟港航人工智能产品全球规模化落地应用,全球前三大船公司及港口码头应用落地。上海人工智能独角兽…...
《数据解构》HashMap源码解读
👑作者主页:Java冰激凌 📖专栏链接:数据结构 目录 了解HashMap HashMap的构造 两个参数的构造方法 一个参数的构造方法 不带参数的构造方法 哈希表初始化的长度 HashMap源码中的成员 Pt Get 了解HashMap 首先我们要明…...
Databend 开源周报 第 83 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.com 。Whats New探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。Support for WebHDFSHDFS 是大数…...
Spring | 基础
1. IOC和DI IOC:控制反转,其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了 IOC 之后,则是**容器主动地将资源推送给它所管理的组件…...
嘉祥网站建设多少钱/网络营销以什么为中心
打开文件,路径为 C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallSqlState.sql v2.0.50727 版本根据自己的framework版本选择 ASPState 存放的是.NET 访问的session,避免了session丢失的问题,但是会影响交互的效率转载于:https://w…...
水果电商网站建设相关文献/搜索引擎优化服务公司哪家好
React是个啥 React 是一个用于构建用户界面的 JAVASCRIPT 库。 React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。 React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。 …...
深圳住房建设部官方网站/网站设计公司有哪些
Android 的 layout 文件中有时候可能会指定具体的单位,比如有时候为 px 、 dip 或者 sp 等。他们的区别如下: 1. px (pixels)像素:这个大家用得比较多,一般我们HVGA代表320x480像素。 2. dip或dp (device independent pixels)设…...
搜索引擎入口官网/关键词优化报价
项目中使用了tomcat,Nginx,测试阶段,生产阶段经常会有些bug需要调查。 需要有些日志管理工具,在没有ELK的情况下,可以通过配置nginx来实现基本的日常查看。不需要登录到Linux服务器上,通过浏览器即可快速获…...
wordpress降级/百度快照入口官网
1.使类和成员的可访问性最小化 封装(数据私有化,方法公开化)/对外提供可调用的,稳定的功能可访问性应该明确修饰符本类同包类子类其他类public√√√√protected√√√默认√√private√实例域绝不能是公有的包级私有的…...
微信小程序开发技术介绍/seo网站排名优化案例
目录缓冲区溢出的保护机制缓冲区溢出原理CANNARY(栈保护)FORTIFYNX(DEP)PIE(ASLR)RELRO检测工具checksec缓冲区溢出的保护机制 缓冲区溢出原理 缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢…...