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

相关推荐