硬盘管理
硬盘分区由主分区、扩展分区和逻辑分区组成
在一块硬盘上,如果是MBR分区方式,那么它的主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区
分区编号:主分区1-4 ,逻辑分区5+
LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上
分区作用:
主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中
如果你用的是GPT的分区方式,那么它没有限制主分区个数
注意:从MBR转到GPT分区或者说从GPT转到MBR会导致数据全部丢失
FDISK 命令
~]# fdisk /dev/sdb
常用命令
n :创建分区
d :删除分区
t :修改分区类型
l :查看所有分区id种类
w :保存退出
q :不保存退出
p :查看分区信息
创建一个主分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):n 输入n创建新分区
Partition type:
p primary (0 primary, 0 extended, 4 free) 创建主分区
e extended 创建扩展分区
Select (default p): p
分区号 (1-4,默认 1):1 选择分区号 主,扩展 1-4 逻辑5+
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G 使用+*G的方法划定分区大小
分区 1 已设置为 Linux 类型,大小设为 10 GiB
再创建一个扩展分区
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 10 GiB
创建逻辑分区
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-41943039,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-41943039,默认为 41943039):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):N
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): L
添加逻辑分区 6
起始 扇区 (25171968-41943039,默认为 25171968):
将使用默认值 25171968
Last 扇区, +扇区 or +size{K,M,G} (25171968-41943039,默认为 41943039):+3G
分区 6 已设置为 Linux 类型,大小设为 3 GiB
最后查看分区情况
命令(输入 m 获取帮助):P
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaeb746d7
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 41943039 10484736 5 Extended
/dev/sdb5 20975616 25169919 2097152 83 Linux
/dev/sdb6 25171968 31463423 3145728 83 Linux
最后保持退出
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
注意:在已经挂载的某个磁盘上创建新分区,内核在创建完成后无法正常读取
需要重读分区表 partx 磁盘
[root@localhost ~]# partx /dev/sdb
NR START END SECTORS SIZE NAME UUID
1 2048 20973567 20971520 10G
2 20973568 41943039 20969472 10G
5 20975616 25169919 4194304 2G
6 25171968 31463423 6291456 3G
[root@localhost /]# cat /proc/partitions 此文件是内核识别的分区信息
major minor #blocks name
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 1 sdb2
8 21 2097152 sdb5
8 22 3145728 sdb6
11 0 4415488 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
~]# mkfs.xfs /dev/sdb1
~]# mount /dev/sdb1 /tmp/1
逻辑分区5和6同理,查看挂载信息
~]# mount
...
/dev/sdb1 on /tmp/1 type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdb5 on /tmp/5 type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdb6 on /tmp/6 type xfs (rw,relatime,attr2,inode64,noquota)
硬盘挂载后再创建一个分区
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 7
起始 扇区 (31465472-41943039,默认为 31465472):
将使用默认值 31465472
Last 扇区, +扇区 or +size{K,M,G} (31465472-41943039,默认为 41943039):
将使用默认值 41943039
分区 7 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaeb746d7
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 41943039 10484736 5 Extended
/dev/sdb5 20975616 25169919 2097152 83 Linux
/dev/sdb6 25171968 31463423 3145728 83 Linux
/dev/sdb7 31465472 41943039 5238784 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
因为磁盘已经挂载出于安全所以内核不去同步
~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 0 sdb2
8 21 2097152 sdb5
8 22 3145728 sdb6
11 0 4415488 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
使用命令重读
~]# partx -a /dev/sdb
NR START END SECTORS SIZE NAME UUID
1 2048 20973567 20971520 10G
2 20973568 41943039 20969472 10G
5 20975616 25169919 4194304 2G
6 25171968 31463423 6291456 3G
7 31465472 41943039 10477568 5G
~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partitions 5-6
~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partitions 5-7
~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 0 sdb2
8 21 2097152 sdb5
8 22 3145728 sdb6
8 23 5238784 sdb7
11 0 4415488 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
重读成功
文件系统管理
格式化
低级格式化(分区之前进行,划分磁道)
高级格式化(分区之后对分区进行,创建文件系统)
元数据 inode
大小 权限 属主属组 时间戳 指向数据块
链接文件 设备文件 不占用block只占用i节点
数据区 block
存放数据
创建文件系统的工具 mkfs命令
~]# mkfs 有很多一样的命令后面的.xxx就是格式化后创建的文件系统
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签= (文件系统卷标)
OS type: Linux (操作系统类型)
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks (此分区一共多少inode和blocks)
26214 blocks (5.00%) reserved for the super user (预留给管理员的空间)
第一个数据块=0 (第一个数据块的编号)
Maximum filesystem blocks=536870912 (最大文件系统块编号)
16 block groups (一共多少块组)
32768 blocks per group, 32768 fragments per group (每个组有多少blocks)
8192 inodes per group (每个block有多少inode)
Superblock backups stored on blocks: (超级快的编号)
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
常用选项
-f 强制格式化 (如果磁盘是extx 无法直接格式化 需要强制格式化创建)
~]# mkfs.xfs /dev/sdb5
mkfs.xfs: /dev/sdb5 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.
~]# mkfs.xfs -f /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: UUID="52a76dc7-8fd9-410b-818a-ac2ca03dbfec" TYPE="xfs"
查看对应的文件系统属性 blkid 分区
~]# blkid /dev/sdb5
常用选项
-L 指明卷标 查找此卷标的文件系统
-U 根据UUID 定位文件系统
/dev/sdb5: UUID="e7416257-5c2c-4405-95d2-909a7feac074" TYPE="ext4"
分区名 - UUID - 文件系统类型
ext系列卷标的查看与设置
查看 e2label 分区
设定 e2label 分区 卷标
~]# e2label /dev/sdb5
~]# e2label /dev/sdb5 yang
~]# e2label /dev/sdb5
yang
fsck 用于检测文件系统
当磁盘意外中止或崩溃 可能造成文件损坏,此时应该修复文件系统 建议离线进行(umount)
常用选项
-a 无需交互自动修复所有错误
-f 交互式修复
swap文件系统
linux上交换分区必须要使用独立的文件系统
且文件系统的system id 必须为 82
mkswap [选项] 磁盘
-L 指明卷标
-f 强制
挂载 mount
挂载点用作与作为另一个文件系统的访问入口
1.事先存在的目录
2.应该使用未被使用或不会被其他进程使用的目录
3.挂载点下的原文件会被隐藏
mount [-nrw] [-t vfstype] [-o options] device dir
[-nrw]
-r : 只读挂载
-w : 读写挂载
-n : 默认情况下挂载或卸载会同步跟新到/etc/mtab/下 -n禁止
[-t vfstype]
-t :指明要挂载设备上的文件系统(多数可省略)
-U : 指明磁盘的UUID挂载
[-o options]
sync / async 同步 / 异步
atime / noatime 文件或目录在访问是是否跟新访问时间戳
diratime / nodiratime 目录在访问是是否跟新访问时间戳
remount 重新挂载
查看挂载信息
~]# mount
~]# cat /etc/mtab
~]# cat /proc/mounts
~]# mount 他会输出以下信息
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=486032k,nr_inodes=121508,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
文件系统 on 挂载点 type 类型 权限
权限的种类
ro 只读
rw 读写
dev / nodev 此设备上是否允许创建设备文件
exec / noexec 是否允许运行此设备上的程序文件
auto / noauto 是否决定自动挂载
user / nouser 是否允许普通用户挂载此文件系统
suid / nosuid 是否使suid生效
defaults Use default options: rw, suid, dev, exec, auto, nouser, and async.
一个使用技巧:
可以将一个目录绑定至另一个目录,作为其临时访问入口 mount --bind
~]# ls /mnt/
hgfs
~]# mount --bind /etc/ /mnt/
~]# ls /mnt/fstab
/mnt/fstab
~]# umount /mnt/
~]# ls /mnt/
hgfs
挂载光盘:
mount -r cdrom dir
光盘设备文件: 有时候是/dev/cdrom或者/dev/dvd 其实他们都是链接文件都指向sr0
sr0 是一个sata接口的光驱设备,真正的设备其实是这个
umount 磁盘 | 目录
注意:正在被访问和进程使用的挂载点无法被卸载;
可以使用命令确定是谁在使用挂载点
lsof 挂载点
fuser -v 挂载点
当你有权限时你可以使用
fuser -km 挂载点 (把在使用的用户踢出去。。。)
注意踢出去后那个用户的远程终端也会挂掉(一般别使用)
挂载本地的回环设备
mount -o loop 回环设备文件 挂载点
交换分区的启用和禁用
swapon swap分区 开启swap
-a 启用所有在/etc/fstab文件中swap设备
swapoff swap分区 禁用swap
记得用free -m 查看一下
除了/文件系统外 其他文件系统能够开机自动挂载必须在/etc/fstab/中指明
~]# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
这个文件下每行定义一个要挂载的文件系统及属性
6个字段
1. 要挂载的设备
设备文件名
LABEL
UUID
伪文件系统
2,挂载点
swap的挂载点为swap
3,文件系统类型
4,挂载选项
defaults 默认使用的挂载选项
如果使用多个挂载选项用,分开
5,转储频率
0 从不备份
1 每天备份1次
2 每隔一天备份
6,自检次序
0 不自检
1 首先自检,通常是能是跟文件系统可用1
2 次级
....
两个命令
df 查看挂载后各磁盘分区的使用状态
常用选项
-l 只显示本地文件系统
-h 人性化显示
-i 显示inode
du 查看目录或文件的大小
常用选项
-s 显示目录下所有文件大小之和
-h 人性化显示
lvm命令
首先磁盘的分区需要时linux lvm 符号为8e 才可以创建为 pv
创建PV的命令时
[root@xuexi ~]# pvcreate /dev/sdb{1,2,3,4}
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
pv查看物理卷信息
[root@xuexi ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb4 lvm2 --- 2.00g 2.00g
pv详细信息
[root@xuexi ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0 //PE使用情况
PV UUID BKr1CG-91rH-0Dsq-vGol-UTO6-xP83-hV7FTZ
创建vg卷组
[root@xuexi ~]# vgcreate vg1 /dev/sdb1
Volume group "vg1" successfully created
[root@xuexi ~]# vgcreate -s 16M vg2 /dev/sdb2
Volume group "vg2" successfully created
查看vg卷组
[root@xuexi ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- <2.00g <2.00g
vg2 1 0 0 wz--n- 1.98g 1.98g
vg详细信息
[root@xuexi ~]# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <2.00 GiB
PE Size 4.00 MiB //可以看到vg1的PE大小为4M
Total PE 511
Alloc PE / Size 0 / 0
Free PE / Size 511 / <2.00 GiB
VG UUID N0HBAX-50lM-3tJ3-xIho-pLrx-7hAh-1T1T0g
lv创建
[root@xuexi ~]# lvcreate -n lv1 -L 64M vg1
Logical volume "lv1" created.
[root@xuexi ~]# lvcreate -n lv2 -l 16 vg1
Logical volume "lv2" created.
查看lv信息
[root@xuexi ~]# lvs //因为vg1的PE大小是4M所以lv1与lv2的大小相等
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 64.00m
lv2 vg1 -wi-a----- 64.00m
vg动态扩容
[root@xuexi ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
lv动态扩容
[root@xuexi ~]# lvextend -L +100M /dev/vg1/lv1 // +100M是增加100M
Size of logical volume vg1/lv1 changed from 64.00 MiB (16 extents) to 164.00 MiB (41 extents).
Logical volume vg1/lv1 successfully resized.
[root@xuexi ~]# lvextend -L 100M /dev/vg1/lv2 //直接使用100M是增加到100M
Size of logical volume vg1/lv2 changed from 64.00 MiB (16 extents) to 100.00 MiB (25 extents).
Logical volume vg1/lv2 successfully resized.
[root@xuexi ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 164.00m
lv2 vg1 -wi-a----- 100.00m
文件系统也需要扩容。
ext4文件系统扩容使用 "resize2fs [逻辑卷名称]"
xfs文件系统扩容使用 "xfs_growfs [逻辑卷名称]"