首頁 > 軟體

Linux基礎教學學習筆記24——磁碟、分割區和檔案系統管理

2020-06-16 18:03:20

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

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-03/115523.htm


IT145.com E-mail:sddin#qq.com