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 等 | 光驱不能分区 |
查看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
如果要挂载的硬盘,需要划分为多个分区,则需要创建分区,然后进行挂载,这个时候需要使用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
通过fdisk -l
和lsblk
,我们可以知道那些磁盘是空闲并未使用
如果要为指定硬盘创建分区,命令格式如下:
# 语法
fdisk 指定磁盘
# 示例,给磁盘 /dev/sdb 进行分区,/dev/sdb 是查询出来的磁盘名
fdisk /dev/sdb
创建分区基本流程:
>
p(显示设备详细信息)>
n(创建新分区)>
1(partition number)>
回车,即选择默认(first sector)>
+20G(last sector)>
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,或重启系统让系统更新分区表
df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
语法格式:
df [参数] [指定文件]
常用参数:
--
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
partprobe
命令用于重读分区表,将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。如果删除文件后,仍然提示占用空间,可以用partprobe在不重启的情况下重读分区 。
语法格式:
partprobe [参数]
常用参数:
参考实例:
在安装Linux系统之后,创建分区并且在不重新启动机器的情况下,让系统识别这些分区(sdb6为新创建的分区):
[root@linux265 ~]# partprobe /dev/sdb6
在磁盘分区上创建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 [参数]
常用参数:
参考实例:
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来:
[root@linux265 ~]# mkfs -V -t msdos -c /dev/hda5
将sda6分区格式化为ext3格式:
[root@linux265 ~]# mfks -t ext3 /dev/sda6
注意:
LVM缺点:单个硬盘损坏,会造成多个逻辑卷无法访问
LVM2引入快照,条带化,镜像
① 通过fdisk创建LVM分区(更换文件系统类型):
>
t(更换文件系统类型 )>
5(Partition number)>
8e (Partition type,Centos7 8e)>
p>
w② 创建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/
计算机难免会由于某些系统因素或人为误操作(突然断电)出现系统异常,这种情况下非常容易造成文件系统的崩溃,严重时甚至会造成硬件损坏。这也是我们一直在强调的“服务器一定要先关闭服务再进行重启”的原因所在。
那么,如果真出现了文件系统损坏的情况,有办法修复吗?可以的,对于一些小问题,使用 fsck 命令就可以很好地解决。
fsck 命令用于检查文件系统并尝试修复出现的错误。该命令的基本格式如下:
SYNOPSISfsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...] [--] [fs-specific-options]
参数
/
根目录的文件系统不予检查。注意事项:
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