Linux基础教程学习笔记24——磁盘、分区和文件系统管理
Linux基础教程学习笔记24——磁盘、分区和文件系统管理
一、MBR主引导记录
MBR有512个字节,分为三个部分:第一部分446个字节,存储了引导分区;第二部分64字节为分区表;第三部分2个字节结束符;
每个分区需16个字节,所以MBR的模式下只能划分4个主分区或3个主分区和扩展分区;主分区可以直接使用,扩展分区不能直接使用,在扩展分区上划分逻辑分区再使用;
[root@linuxidc ~]# cat /proc/partitions
major minor #blocks name
2 0 4 fd0
8 0 20971520 sda
8 1 512000 sda1
8 2 20458496 sda2
11 0 3655680 sr0
253 0 18358272 dm-0
253 1 2097152 dm-1
二、GPT
GPT可以记录128个主分区;
三、使用命令管理磁盘分区
1、fdisk命令
使用fdisk划分磁盘,默认会划分为MBR格式的磁盘:
fdisk -l 查看当前的磁盘和分区情况:
[root@linuxidc ~]# fdisk /dev/sdb
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 0xac4a9d92.
Command action
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 退出并保存,然后使用partprobe或partx /dev/sdX刷新
x extra functionality (experts only)
添加分区:
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):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xac4a9d92
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
只能划分四个主分区,如果要划分多余四个分区,则需要在第四个分区创建扩展分区,在扩展分区上创建逻辑分区:
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 10485759 2096128 5 Extended
/dev/sdb5 6295552 6500351 102400 83 Linux
有*标识代表的是启动分区:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
分区类型,使用t命令可以修改分区的类型:
Command (m for help): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 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 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 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 hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f 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
2、gdisk命令
使用gdisk划分磁盘,默认划分为GPT格式的磁盘
[root@linuxidc ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-10485726, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-10485726, default = 10485726) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
Command (? for help): p
Disk /dev/sdb: 10485760 sectors, 5.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): DFDD30F8-C2A3-45BE-95B0-37A2CABBCF89
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 10485726
Partitions will be aligned on 2048-sector boundaries
Total free space is 8388541 sectors (4.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB 8E00 Linux LVM
3、parted命令:可以自行选择划分格式
parted命令可以将MBR结构修改为GPT结构,但是要慎重,因为分区表会丢失:
[root@linuxidc ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a
particular partition
quit exit program
rescue START END rescue a lost partition near START and END
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
使用mklabel转换分区类型:
(parted) mklabel
New disk label type?
aix amiga bsd dvh gpt loop mac msdos pc98 sun
New disk label type? gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
4、使用mkfs给分区设置文件系统:
[root@linuxidc ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
指定block size大小:
12345678910 [root@linuxidc ~]# mkfs.xfs -b size=1024 /dev/sdb2
meta-data=/dev/sdb2 isize=256 agcount=4, agsize=25600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=1024 blocks=102400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=1024 blocks=2564, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载分区到文件系统:
[root@linuxidc ~]# mkdir /aa
[root@linuxidc ~]# mount /dev/sdb1 /aa
[root@linuxidc ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 12G 5.8G 68% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 494M 84K 494M 1% /dev/shm
tmpfs 494M 7.1M 487M 2% /run
tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 377M 25% /boot
/dev/sdb1 97M 5.2M 92M 6% /aa
可以使用xfs_info查看文件系统信息:
[root@linuxidc ~]# xfs_info /aa
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
使用xfs_admin查看分区的blkid:
[root@linuxidc ~]# xfs_admin -u /dev/sdb1
UUID = 927317a3-92b9-4b6f-8696-30fe0dc26ac0
也可以使用blkid查看:
[root@linuxidc ~]# blkid
/dev/sda1: UUid="64d32c15-8708-44a2-893a-a437c0f43156" TYPE="xfs"
/dev/sda2: UUid="4Ice1U-52dB-jxhY-80pW-vWus-rv1n-MVBJQ5" TYPE="LVM2_member"
/dev/sdb1: UUid="927317a3-92b9-4b6f-8696-30fe0dc26ac0" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUid="2e1d4a03-14f5-4611-9267-c6b89e502dc9"
/dev/sdb2: UUid="102aa312-7b59-49fe-a924-520e20ef7a51" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUid="0c755c32-4c27-404d-9faa-fd86d4370b0e"
/dev/sr0: UUid="2014-05-07-03-58-46-00" LABEL="RHEL-7.0 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUid="6e18526c-e4fa-4854-adcd-d2e463a53bf9" TYPE="xfs"
/dev/mapper/rhel-swap: UUid="b4476c9f-7681-48d8-8cba-3904f4ebce61" TYPE="swap"
一个分区如果不格式的话,没有文件系统那么就不会有UUID:
可以使用xfs_admin -U修改分区的UUID:
[root@linuxidc ~]# uuidgen
292e2919-11fa-4f1c-8006-4a506095d377
[root@linuxidc ~]# xfs_admin -U 292e2919-11fa-4f1c-8006-4a506095d377 /dev/sdb2
Clearing log and setting UUID
writing all SBs
new UUID = 292e2919-11fa-4f1c-8006-4a506095d377
xfs文件系统大小可以增加,但是不能减少
Swap交换分区,类似于Windows的虚拟内存:
就是利用磁盘里面的一部分空间,来模拟内存:
1、使用分区;
2、创建文件;
查看Swap分区:
[root@linuxidc ~]# cat /proc/swaps
FilenameTypeSizeUsedPriority
/dev/dm-1 partition20971484620-1
使用mkswap命令修改分区为swap文件系统:
使用Swapon 和 Swapoff 启用或关闭swap分区:
创建文件作为swap分区:
[root@linuxidc ~]# #dd if=/dev/zero of=swapfile bs=1M count=200