1.lsblk
观察硬盘的分区状态,以树型结构列出系统上所有的磁盘列表
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4.9T 0 disk
└─sdb1 8:17 0 4.7G 0 part
sr0 11:0 1 10G 0 rom
-d:仅列出磁盘本身,并不会列出该磁盘的分区数据
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4.9T 0 disk
└─sdb1 8:17 0 4.7G 0 part
sr0 11:0 1 10G 0 rom
[root@localhost ~]# lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sdb 8:16 0 4.9T 0 disk
sr0 11:0 1 10G 0 rom
-f:同时列出该磁盘内的文件系统名称
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs b04f77f1-253f-4c56-bee4-32ab55731275 /boot
└─sda2 LVM2_member 5H9vhG-Gwsg-u4Xz-Kxt2-7sn8-MkXW-Yqc7Br
├─centos-root xfs 0bf285bc-f3e5-46b8-91a7-2615d3ecb569 /
└─centos-swap swap 6c3b97ba-b0e4-4a4b-b044-b712e410696d [SWAP]
sdb
└─sdb1 ext4 125c4ba8-995c-43d5-b614-55c3a74f741b
sr0 iso9660 CentOS 7 x86_64 2018-11-26-14-22-58-00
-i:使用ASCII的字符输出,不要使用复杂的编码
[root@localhost ~]# lsblk -i
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 19G 0 part
|-centos-root 253:0 0 17G 0 lvm /
`-centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4.9T 0 disk
`-sdb1 8:17 0 4.7G 0 part
sr0 11:0 1 10G 0 rom
-m:同时输出该设备在/dev下面的权限信息(rwx数据)
[root@localhost ~]# lsblk -m
NAME SIZE OWNER GROUP MODE
sda 20G root disk brw-rw----
├─sda1 1G root disk brw-rw----
└─sda2 19G root disk brw-rw----
├─centos-root 17G root disk brw-rw----
└─centos-swap 2G root disk brw-rw----
sdb 4.9T root disk brw-rw----
└─sdb1 4.7G root disk brw-rw----
sr0 10G root cdrom brw-rw----
-p:列出该设备的完整文件名,而不是仅列出最后的名字而已
[root@localhost ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 20G 0 disk
├─/dev/sda1 8:1 0 1G 0 part /boot
└─/dev/sda2 8:2 0 19G 0 part
├─/dev/mapper/centos-root 253:0 0 17G 0 lvm /
└─/dev/mapper/centos-swap 253:1 0 2G 0 lvm [SWAP]
/dev/sdb 8:16 0 4.9T 0 disk
└─/dev/sdb1 8:17 0 4.7G 0 part
/dev/sr0 11:0 1 10G 0 rom
-t:列出该磁盘设备的详细数据,包括磁盘阵列机制,预读写的数据量大小
[root@localhost ~]# lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sda 0 512 0 512 512 1 deadline 128 4096 32M
├─sda1 0 512 0 512 512 1 deadline 128 4096 32M
└─sda2 0 512 0 512 512 1 deadline 128 4096 32M
├─centos-root 0 512 0 512 512 1 128 4096 32M
└─centos-swap 0 512 0 512 512 1 128 4096 32M
sdb 0 512 0 512 512 1 deadline 128 4096 32M
└─sdb1 0 512 0 512 512 1 deadline 128 4096 32M
sr0 0 2048 0 2048 2048 1 deadline 128 128 0B
2.磁盘分区命令fdisk gdisk
MBR分区表建议使用fdisk分区,GPT分区建议使用gdisk分区
fdisk
该命令主要针对MBR分区表。虽然MBR分区表在未来可能会被淘汰,因为现在得磁盘容量基本都是大于2TB,fdisk命令不支持大于 2TB 的分区,目前还无法完整支持GPT,不过还是有小磁盘存在的空间,这时处理MBR分区表就得使用fdisk
用法:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
选项:
-b <大小> :扇区大小(512、1024、2048或4096)
-c[=<模式>] :兼容模式:“dos”或“nondos”(默认)
-u[=<单位>] :显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-C <数字> :指定柱面数
-H <数字> :指定磁头数
-S <数字>:指定每个磁道的扇区数
使用fdisk进行分区:
因为fdisk和gdisk使用的方式几乎一样,只是一个使用问号(?)作为命令提示信息,一个使用字母m显示提示而已。此外,fdisk有时会使用柱面(cylinder)作为分区的最小单位,与gdisk默认使用扇区不太一样
在 fdisk 交互界面中输入 m 可以得到帮助,帮助里列出了 fdisk 可以识别的交互命令
[root@localhost ~]# fdisk /dev/sdb
WARNING: The size of this disk is 5.4 TB (5368709120000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):?
?: unknown command
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
a toggle a bootable flag <-----设置可引导标记
b edit bsd disklabel <-----编辑 bsd 磁盘标签
c toggle the dos compatibility flag
d delete a partition <------删除一个磁盘分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types <-----显示已知的文件系统类型
m print this menu <-----显示帮助菜单
n add a new partition <------新增一个磁盘分区
o create a new empty DOS partition table
p print the partition table <-------在屏幕上显示分区表
q quit without saving changes <------不保存离开fdisk程序
s create a new empty Sun disklabel <-----新建空白 SUN 磁盘标签
t change a partition's system id <-----改变一个分区的系统 ID
u change display/entry units <-----改变显示记录单位
v verify the partition table <-----验证分区表
w write table to disk and exit <-------将刚刚的操作写入分区表
x extra functionality (experts only) <-----附加功能(仅专家)
在/dev/sdb磁盘中新增一个2G且文件系统是Linux LVM的主分区
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): LVM
无效的分区类型“l”
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (9766912-4294967295,默认为 9766912):
将使用默认值 9766912
Last 扇区, +扇区 or +size{K,M,G} (9766912-4294967294,默认为 4294967294):
将使用默认值 4294967294
分区 2 已设置为 Linux 类型,大小设为 2 TiB
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):l
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / 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 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368.7 GB, 5368709120000 字节,10485760000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5b4c0fe2
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 9766911 4882432 83 Linux
/dev/sdb2 9766912 4294967294 2142600191+ 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 4.9T 0 disk
├─sdb1 8:17 0 4.7G 0 part
└─sdb2 8:18 0 2T 0 part
sr0 11:0 1 10G 0 rom
gdisk对大于2TB的硬盘进行分区
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition <--------删除一个分区
i show detailed information on a partition
l list known partition types
n add a new partition <-----增加一个分区
o create a new empty GUID partition table (GPT)
p print the partition table <--------打印出分区表
q quit without saving changes <------不保存分区就直接离开gdisk
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit <------保存分区操作后离开gdisk
x extra functionality (experts only)
? print this menu
Command (? for help):
新增分区
使用 p 可以列出这块磁盘的分区表信息,输出信息为:
第一行:磁盘容量:3.0T,共有6442450944个扇区
第二行:每个扇区的容量为512B(现在的分区主要是以扇区为最小单位)
Number:分区编号,对于当前设备来说,1号指的是/dev/sdc1,2号便指的是/dev/sdc2……
Start(sector):每一个分区的开始扇区号码位置
End (sector):每一个分区的结束扇区号码位置,通过与Start之间可以计算出分区的总容量
Size:分区的容量
Code:分区的文件类型
Name:文件系统的名称
3.parted分区
”parted”,这个工具既可以做MBR分区,又可以做GPT分区,当然还是主要用它来做GPT分区
该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。
选项:
-h:显示此求助信息
-l:列出系统系统中所有的磁盘设备,和fdisk -l命令的作用差不多。
-m:进入交互模式,如果后面不加设备则对第一个磁盘进行操作
-s:脚本模式
-v:显示版本
2、交互模式:parted [option] device 类似于使用 fdisk /dev/xxx
(parted) help <--parted 的等待输入交互命令的位置,输入 help,可以看到在交互模式下支持的所有命令
help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息
mklabel,mktable LABEL-TYPE #创建新的磁盘标签 (分区表
mkpart PART-TYPE [FS-TYPE] START END #创建一个带有文件系统的分区
name NUMBER NAME #将编号为 NUMBER 的分区命名为“名称”
print [devices|free|list,all|NUMBER] #打印分区表,或者分区
quit #退出程序
rescue START END #挽救临近“起始点”、“终止点”的遗失的分区
resizepart NUMBER END #改变位于编号为 MINOR 的分区中文件系统的大小
rm NUMBER #删除编号为 NUMBER 的分区
select DEVICE #选择要编辑的设备
set NUMBER FLAG STATE #改变编号为 NUMBER 的分区的标志
unit UNIT #设置单位
version #版本
(parted) mkpart #输入mkpart新建分区,如果输入mkpart指令不带任何参数,parted会一步步提示用户输入相关信息最终完成创建
分区名称? []? p1 #分区的名字,这里可以直接回车不给分区命名,也可以输入用来标记的名字
文件系统类型? [ext2]? #分区被格式化的文件系统,可以按两次Tab键查看支持的文件系统
affs0 affs5 amufs1 apfs1 ext3 hfs+ linux-swap(new) ntfs
affs1 affs6 amufs2 apfs2 ext4 hfsx linux-swap(old) reiserfs
affs2 affs7 amufs3 asfs fat16 hp-ufs linux-swap(v0) sun-ufs
affs3 amufs amufs4 btrfs fat32 jfs linux-swap(v1) swsusp
affs4 amufs0 amufs5 ext2 hfs linux-swap nilfs2 xfs
文件系统类型? [ext2]? xfs #输入被格式化的文件系统为xfs,这里必须要输入文件系统
起始点? 0% #开始位置
结束点? 1024G #结束位置,在数字后面加上单位
(parted) mkpart p2 ext2 1024G 1524G #如果想一步就把分区创建好就可以这样,p2表示分区名,这样分区这里必须有,后面3项目分别是文件系统,开始位置,结束位置
(parted) mkpart p3 ext3 1524G 100% #如果不想创建文件系统这里可以不加这个选项,后面两项分别是开始位置,和结束位置,100%表示使用全部剩余空间
(parted) p #输入p查看分区情况,也可以使用print。如果指令是唯一的直接输入指令的首字母也可以
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB #磁盘的总容量
Sector size (logical/physical): 512B/512B #扇区的大小
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 1024GB 1024GB xfs p1 #通过一步步创建的第一个分区
2 1024GB 1524GB 500GB p2 #通过一步就创建的分区
3 1524GB 3299GB 1775GB p3 #创建不带文件系统的分区
(parted)
设置默认单位
(parted) unit
Unit? [compact]? GB
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
2 0.00GB 0.00GB 0.00GB
1 0.00GB 537GB 537GB ext4
3 1024GB 3000GB 1976GB p3
4 3000GB 3000GB 0.00GB
更改分区名
(parted) name
分区编号? 1
分区名称? []? 4
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
2 0.00GB 0.00GB 0.00GB
1 0.00GB 537GB 537GB ext4 4
3 1024GB 3000GB 1976GB p3
4 3000GB 3000GB 0.00GB
配置分区的标记
(parted) set
分区编号? 1
Flag to Invert?
atvrecv boot hidden legacy_boot msftres raid 隐藏分区
bios_grub diag hp-service lvm prep 启动
Flag to Invert? lvm
新状态? [开]/on/关/off? on
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
2 0.00GB 0.00GB 0.00GB
1 0.00GB 537GB 537GB ext4 4 lvm
3 1024GB 3000GB 1976GB p3
4 3000GB 3000GB 0.00GB
取消标记名
(parted) set
分区编号? 1
Flag to Invert? lvm
新状态? 开/on/[关]/off? off
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
2 0.00GB 0.00GB 0.00GB
1 0.00GB 537GB 537GB ext4 4
3 1024GB 3000GB 1976GB p3
4 3000GB 3000GB 0.00GB
删除分区
(parted) rm
分区编号? 1
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
2 0.00GB 0.00GB 0.00GB
3 1024GB 3000GB 1976GB p3
4 3000GB 3000GB 0.00GB
对MBR类型进行分区
(parted) mklabel msdos
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be
lost. Do you want to continue?
是/Yes/否/No? Yes
(parted) mkpart
分区类型? primary/主分区/extended/扩展分区?
**
对磁盘进行格式化
**
分区完成后,如果不格式化写入文件系统,则是不能正常使用的。这时就需要对硬盘分区进行格式化
mkfs命令进行格式化
对于MBR分区而言:扩展分区不能格式化,主分区和逻辑分区可以格式化;对于GPT则不存在,因为没有扩展分区而言了
mkfs
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-4294967295,默认为 2048):20^H^H
值超出范围。
起始 扇区 (2048-4294967295,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4294967294,默认为 4294967294):3000
分区 1 已设置为 Linux 类型,大小设为 476.5 KiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.ext2 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 476 blocks
23 blocks (4.83%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
查看是否格式化成功
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2"
如果将sdb1分区使用mkfs格式化为xfs类型,那么便不能再将sdb1格式化ext系列其它类型;但是,如果sdb1格式化ext系列类型时,可以二次将 sdb1格式化为xfs类型;ext系列之间可以互相格式化
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2"
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2"
[root@localhost ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统小得无法记录日志
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 476 blocks
23 blocks (4.83%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
虽然 mkfs 命令非常简单易用,但其不能调整分区的默认参数(比如块大小是 4096 Bytes),这些默认参数除非特殊清况,否则不需要调整。如果想要调整,就需要使用 mke2fs 命令重新格式化
mke2fs
用法: mke2fs [选项] 分区设备文件名
注意:此命令不适用于xfs文件类型
选项:
-t 文件系统:指定格式化成哪个文件系统, 如 ext2、ext3、ext4;
-b 字节:指定 block 的大小;
-i 字节:指定"字节 inode "的比例,也就是多少字节分配一个 inode
-j :建立带有 ext3 日志功能的文件系统
-L 卷标名:给文件系统设置卷标名,就不使用 e2label 命令设定了
文件系统管理工具
ext系列
e2label命令:卷标的查看与设定
查看:e2label device
设定:e2label device LABEL
tune2fs命令:查看或修改ext系列文件系统的某些属性
tune2fs [OPTIONS] device
-l:查看超级块的内容
-j:ext2 --> ext3;
-L LABEL:修改卷标;
-m #:调整预留空间百分比;
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h] device
resize2fs [选项] device [size]
调整ext2\ext3\ext4文件系统的大小
选项:
-d debug-flags: 打开resize2fs调试特性
-f:强制执行
-F:执行之前刷新文件系统缓冲区
-M:将文件系统缩小到最小值
-p:显示已完成任务的百分比
-P:显示文件系统的最小值
e2fsck:磁盘修复 检查时先卸载
选项:
-a: 检查 partition,如发现问题会自动修复。
-b: 设定 superblock 位置。 www.2cto.com
-B size: 指定 size 作为区块大小。
-c: 检查 partition 是否有坏轨。
-C file: 将检查结果储存到 file。
-d: 输出 e2fsck debug 结果。
-f: e2fsck 预设只会对错误的文件系统检查,加上 -f 是强制检查。
-F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。
-l list: 记录了坏轨区块加入 list 中。
-d : 打印 e2fsck 的 debug 结果。
-f : 强制检查。
-n: 以 (read-only) 开启档案系统
-p: 关闭互动模式,如有问题自动修复,等同 -a。
-v: 显示详细报告。
-y: 启用使用者互动模式。
fsck:检查与修复文件系统,可以同时检查一个或者多个
fsck [-sACVRP] [-t fstype] [–] [fsck-options] filesys […]
选项:
filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
-t : 给定文件系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 partition 做检查
-C : 显示完整的检查进度
-d : 列印 e2fsck 的 debug 结果
-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V : 详细显示模式
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复
xfs系列
xfs_repair处理XFS文件系统,当有xfs文件系统错乱才需要使用这个命令
提示:由于xfs_repair与fsck.ext4 在扫描磁盘的时候,可能会造成部分文件系统的改变,所以执行xfs_repair与fsck.ext4 时,被检查的硬盘分区务必不可挂载到系统上,亦即是需要在卸载状态
文件系统的挂载与卸载
磁盘分区和格式化完成后,磁盘分区要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点
挂载: 将新的文件系统关联至当前文件系统
卸载: 将某文件系统与当前文件系统的关联关系移除;卸载时设备没有进程在使用
挂载点: 作为要挂载文件系统的访问入口;挂载点事先必须存在;不会被进程使用到的目录;挂载点下原有文件 将会被临时隐藏
tips:我们可以对挂载的含义进行引申,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。文件系统要想能够被访问,都必须通过“关联”至文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”
(一)各硬件设备在Linux中的文件名
设备 在Linux中的文件名
SCSI、SATA、USB磁盘驱动器 /dev/sd/[a-p]
U盘 /dev/sd[a-p] (与SATA相同)
CD-ROM、DVD-ROM /dev/scd[0-1]、/dev/sr[0-1]、/dev/cdroom(当前CD-ROM)
Virto接口 /dev/vd[a-p](用于虚拟机内)
软盘驱动器 /dev/fd[0-7]
IDE磁盘驱动器 /dev/hd[a-d](旧式系统)
磁带机 /dev/ht0(IDE接口)、/dev/st0(SATA/SCSI接口)、/dev/tape(当前磁带)
打印机 /dev/lp[0-2](25针打印机)、/dev/usb/lp[0-15](USB接口)
鼠标 /dev/input/mouse[0-15]、/dev/psaux(PS/2接口)、/dev/mouse(当前鼠标)
挂载
-a:自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。
/etc/fstab 文件,此文件是自动挂载文件,系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。
-l:单纯的输入mount命令会显示目前挂载的信息,加上-l可增列Label名称
-t:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;常见的Linux支持类型有:xfs、ext3、ext4、vfat、iso9660(光盘格式)、nfs、cifs、smbfs
-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性
-o:后面可以接一些挂载时额外加上的参数。比如:权限,密码等
sync/async:同步/异步操作;默认为async
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
remount:重新挂载;
facl:支持使用facl功能;
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:是否允许此文件系统被以mount -a 自动挂载
user/nouser:是否允许普通用户挂载此文件系统,一般情况下,mount仅有root可以使用
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
defaults:默认值为:rw、suid、dev、exec、auto、nouser、async 、and relatime
-r:readonly,只读挂载;
-w:read and write, 读写挂载;
-L LABEL:挂载时以卷标的方式指明设备;
-U UUID:挂载时以UUID的方式指明设备;
–bind 源目录 目标目录:可以实现将目录绑定至另一个目录上,作为其临时访问入口;
查看已经挂载的设备
**
[root@admin ~]# mount
[root@admin ~]# cat /etc/mtab
[root@admin ~]# cat /proc/mounts
**
可通过lsblk查看文件系统是否挂载
[root@admin ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 4G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 4G 0 part
└─sdb6 8:22 0 9G 0 part
查看data是否有挂载
[root@admin ~]# df /data
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb1 1038336 32992 1005344 4% /data
临时挂载
通过UUID方式挂载
[root@admin ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="juanbiao" UUID="9ad7d089-347b-409b-8972-79a427a00b88" SEC_TYPE="ext2" TYPE="ext3"
[root@admin ~]# mount -U 9ad7d089-347b-409b-8972-79a427a00b88 /data1
[root@admin ~]# lsblk /dev/sdb2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb2 8:18 0 2G 0 part /data1
通过卷标名进行挂载
#修改设备/dev/sdb3的卷标名为juan3
[root@admin ~]# blkid /dev/sdb3
/dev/sdb3: UUID="77c770b2-e166-41cd-aa5f-8eb4481d84af" TYPE="ext4"
[root@admin ~]# e2label /dev/sdb3 juan3 #e2label命令只能对ext系列文件系统使用
[root@admin ~]# blkid /dev/sdb3
/dev/sdb3: LABEL="juan3" UUID="77c770b2-e166-41cd-aa5f-8eb4481d84af" TYPE="ext4"
[root@admin ~]# mount -L juan3 /data2
[root@admin ~]# lsblk /dev/sdb3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb3 8:19 0 4G 0 part /data2
将/dev/sdb5以只读方式挂载、指明系统类型且支持使用facl功能
[root@admin ~]# mount -r -t ext4 -o acl /dev/sdb5 /data3
[root@admin ~]# lsblk /dev/sdb5
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb5 8:21 0 4G 0 part /data3
当退出当前shell,那么就得重新进行手动挂载。如果需要永久挂载(即启动挂载)则需要将挂载命令写入挂载配置文件/etc/fstab文件中
(1)/etc/fstab文件
磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。
系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。
(2)挂载限制
根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的跟目录,其他木有都是由根目录 /衍生出来的。
挂载点必须是已经存在的目录。
挂载点的指定可以任意,但必须遵守必要的系统目录架构原则
所有挂载点在同一时间只能被挂载一次
所有分区在同一时间只能挂在一次
若进行卸载,必须将工作目录退出挂载点(及其子目录)之外
fstab中的参数
/dev/mapper/centos-root / xfs defaults 0 0
UUID=4dd7e68d-866e-45c4-90fa-a874f9860a3a /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
第一列:Divice 磁盘设备文件或者设备的Lable页或UUID
①使用设备名和label及uuid作为标识的不同
使用设备名称(/dev/sda)来挂载分区时是被固定死的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称是会改变的。不过使用label挂载就不用担心插槽顺序方面的问题。不过要随时注意你的Label name。至于UUID,每个分区被格式化以后都会有一个UUID作为唯一的标识号。使用uuid挂载的话就不用担心会发生错乱的问题了
②可以通过两个命令查看UUID和Lable
[root@admin ~]# dumpe2fs -h /dev/sda1 #该命令只适用于ext系列文件系统
[root@admin ~]# blkid /dev/sda1
第二列:Mount point 设备的挂载点,就是你要挂载到哪个目录下
第三列:filesystem 磁盘文件系统的格式,包括ext2、ext3、xfs、reiserfs、nfs、vfat等
第四列:parameters 文件系统的参数,即mount命令中-o选项后的参数(如果是defaults则包括rw、suid、dev、exec、auto、nouser、async 、and relatime)
第五列:能否被dump备份命令作用 dump是一个用来作为备份的命令。通常这个参数的值为0或者1(0 代表不要做dump备份;1 代表要每天进行dump的操作;2 代表不定日期的进行dump操作)
第六列:是否检验扇区 开机的过程中,系统默认会以fsck检验我们系统是否为完整(0代表不要检验;1代表最早检验(一般根目录会选择使用2);2代表1级别检验完成之后进行检验)
卸载
[root@admin var]# umount [-fn] 设备文件名或挂载点
选项与参数:
-f:强制卸载,可用在类似网络文件系统(NFS)无法读取到的情况下
-l:立即卸载文件系统,比-f还强
-n:不更新/etc/mtab情况下卸载
注意:正在被进程访问到的挂载点无法被卸载
查看被哪个或哪些进程所占用:
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
#fuser -km MOUNT_POINT
[root@admin var]# lsblk /dev/sdb3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb3 8:19 0 4G 0 part /data2
[root@admin var]# umount /data2
umount: /data2:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@admin var]# fuser -v /data2 #查看被哪些进程所占用
用户 进程号 权限 命令
/data2: root kernel mount /data2
dxk 2084 ..c.. bash
[root@admin var]# lsof /data2 #查看被哪些进程所占用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2084 dxk cwd DIR 8,19 4096 2 /data2
[root@admin var]# fuser -km /data2 #终止所有正在访问该挂载点的进程
/data2: 2084c
[root@admin var]# umount /data2 #这时便可以卸载
[root@admin var]# lsblk /dev/sdb3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb3 8:19 0 4G 0 part
df命令
用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等同时也可以查看挂载信息
与整个文件系统有关的数据,都保存在 Super block(超级块)中,而 df 命令主要读取的数据几乎都针对的是整个文件系统,所以 df 命令主要是从各文件系统的 Super block 中读取数据。
用法: df [选项] [目录或文件名]
选项:
-a:显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统
-m:以 MB 为单位显示容量
-k:以 KB 为单位显示容量,默认以 KB 为单位
-h:使用人们习惯的 KB、MB 或 GB 等单位自行显示容量
-H:以M=1000K替换M=1024K的进位方式计算
-T:连同该硬盘分区的文件系统名称(例如xfs)也列出
-i:不用硬盘容量显示,而是以含有 inode 的数量来显示
du命令
统计目录或文件所占磁盘空间大小
使用"ls -r"命令是可以看到文件的大小的。但是大家会发现,在使用"ls -r"命令査看目录大小时,目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小
我们在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。
用法:du [选项] [目录或文件名]
选项:
-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量
-S:不包括子目录下的总计,与-s有差别
-m:以 MB 为单位显示容量
-k:以 KB 为单位显示容量
du命令和df命令的区别
有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的
用法: lsof [选项] [文件]
选项:
[-a] 文件名:列出打开文件存在的进程
-c<进程名> :列出指定进程所打开的文件
-g [PGID] :列出GID号进程详情
-d<文件号> :列出占用该文件号的进程
+d<目录> :列出目录下被打开的文件
+D<目录> :递归列出目录下被打开的文件
-n<目录> :列出使用NFS的文件;
-i<条件> :列出符合条件的进程(4、6、协议、:端口、 @ip )
-p<进程号> :列出指定进程号所打开的文件;
-u :列出UID号进程详情;
-s <套接字>:列出指定套接字所打开的文件信息
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。