首頁 > 軟體

Linux磁碟管理入門教學

2020-06-16 17:45:29

我們看看在Linux系統中磁碟是如何分割區的
磁碟分割區:
fdisk:是Linux的一個操作磁碟分割區表的常用工具:
    常用的格式:fdisk -l列出使用的磁碟裝置

[root@linux ~]# fdisk -l
 
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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: 0x00029f42
 
  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *        2048    1026047      512000  83  Linux
/dev/sda2        1026048    84912127    41943040  83  Linux
/dev/sda3        84912128  126855167    20971520  83  Linux
/dev/sda4      126855168  419430399  146287616    5  Extended
/dev/sda5      126859264  131055615    2098176  82  Linux swap / Solaris

下面我們根據實驗一點點講解Linux磁碟的管理操作
0.建立主分割區(MBR):
a)  Fdisk /dev/sda進入磁碟分割區環境
[root@bogon ~]# fdisk /dev/sda
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
        switch off the mode (command 'c') and change display units to
        sectors (command 'u').
 
Command (m for help):

當然,執行在這的時候,你可以使用m便會列出命令選項:
Command (m for help): m
Command action
  a  toggle a bootable flag
  b  edit bsd disklabel
  c  toggle the dos compatibility flag
  d  delete a partition
  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)
 
Command (m for help):

b)  n 新增一個新的磁碟
Command (m for help): n
Command action
  e  extended
  p  primary partition (1-4)

e:表示擴充套件分割區,p:表示主分割區(1-4)
[延伸]我們之後主分割區的數量是由分割區表限制的,64的分割區表最多只能分為4個主分割區,或者三個主分割區一個擴充套件分割區或者其他,常見的window中的就是一個主分割區一個擴充套件分割區(明白了嗎)
Command action
  e  extended
  p  primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859):

c)  回車選擇預設的起始磁區
123 Partition number (1-4): 3
First cylinder (7859-15665, default 7859): 
Using default value 7859

這裡我們直接回車表示使用的是起始的柱面(在系統版本的不同,有的是根據柱面,有的是磁區,不過呢,也沒啥大礙)

d)  輸入格式為”+[M,G]”磁碟空間大小
1 Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G

根據我們自己個人客製化,使用括號裡面的單位,或者你也可以選擇使用柱面表示,但是前面有一個加號

e)  w儲存退出
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.

這一切的操作其實都是在記憶體中完成,只有使用w才是儲存下來,下面我們來驗證一下

f)  ls /dev/sda*或者cat /proc/partitions檢視是否有新建立的分割區
[root@bogon ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2
[root@bogon ~]# cat /proc/partitions 
major minor  #blocks  name
 
  8        0  125829120 sda
  8        1    204800 sda1
  8        2  62914560 sda2
 253        0  20971520 dm-0
 253        1    2097152 dm-1
 253        2  10485760 dm-2
 253        3  20971520 dm-3
[root@bogon ~]#

奇怪,這是怎麼回事呢?難道沒有成功?不是的,這是因為沒有同步到核心罷了

g)  執行parted –a/dev/sda一次或多次直到顯示建立的新的分割區
[root@bogon ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[root@bogon ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
[root@bogon ~]# fdisk -l
 
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004a6ba
 
  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *          1          26      204800  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560  8e  Linux LVM
/dev/sda3            7859        9164    10489446  83  Linux

partx -a 其實就是通知(告訴)核心,磁碟資訊變動了,你更新一下,一次沒有顯示,我們可以多執行一下看看結果,是不是10G的主分割區就建立成功了。因此,這裡特別留意兩個命令partx 和fdisk
主分割區我們建立了,可是我想建立一個交換分割區,怎麼建立呢?下面我們就來看看
大家知道swap分割區就是記憶體空間,空間前後那就是不一樣的了,我們先來檢視一下記憶體空間

[root@bogon ~]# free -m
            total      used      free    shared    buffers    cached
Mem:          845        157        687          0        12        55
-/+ buffers/cache:        90        754 
Swap:        2047          0      2047

現在開始建立一個swap分割區

[root@bogon ~]# mkswap /dev/sda4
mkswap: /dev/sda4: warning: don't erase bootbits sectors
        (dos partition table detected). Use -f to force.
Setting up swapspace version 1, size = 31463296 KiB
no label, UUID=c0c990f9-9d68-41d6-8e75-1eb41b08c4fc
[root@bogon ~]# mkswap -f /dev/sda4
Setting up swapspace version 1, size = 31463296 KiB
no label, UUID=5017d30a-1d96-4e47-b4ba-274d132afeb9
[root@bogon ~]# free -m
            total      used      free    shared    buffers    cached
Mem:          845        157        687          0        12        55
-/+ buffers/cache:        90        754 
Swap:        2047          0      2047 
[root@bogon ~]# swapon /dev/sda4
[root@bogon ~]# free -m
            total      used      free    shared    buffers    cached
Mem:          845        180        664          0        12        55
-/+ buffers/cache:        112        732 
Swap:        32773          0      32773 
[root@bogon ~]#

當然我們也是可以把一個已經建立的分割區調整為swap分割區
a)  Fdisk /dev/sda進入磁碟分割區環境
b)  n 新增一個新的磁碟
c)  回車選擇預設的起始磁區
d)  輸入格式為”+[MG]”磁碟空間大小
e)  l 顯示調整分割區的系統ID,swap(82)
f)  t 調整分割區
g)  輸入調整的分割區號
h)  輸入要想調整的分割區型別ID(82)
i)  p 檢視分割區調整的結果
j)  w 儲存
k)  kpartx  -af /dev/sda重讀一次或者兩次,或者手動調整,使用kpartx –a /dev/sda#,#是調整的那個分割區號,手動的新增一個分割區
l)  fdisk –l /dev/sda 檢視顯示是否成功
下面是原始碼展示:步驟很清楚
[root@bogon ~]# fdisk /dev/sda
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
        switch off the mode (command 'c') and change display units to
        sectors (command 'u').
 
Command (m for help): n
First cylinder (9165-13081, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-13081, default 13081): +100M
 
Command (m for help): l
 
 0  Empty          24  NEC DOS        81  Minix / old Lin bf  Solaris       
 1  FAT12          39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux          c4  DRDOS/sec (FAT-
 3  XENIX usr      40  Venix 80286    84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot  85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS            86  NTFS volume set da  Non-FS data   
 6  FAT16          4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS      4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX            4f  QNX4.x 3rd part 8e  Linux LVM      df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 b  W95 FAT32      52  CP/M            9f  BSD/OS          e4  SpeedStor     
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD        ee  GPT           
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD        ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk    a8  Darwin UFS      f1  SpeedStor     
12  Compaq diagnost 61  SpeedStor      a9  NetBSD          f4  SpeedStor     
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot    f2  DOS secondary 
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS   
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs        fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap      fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX          bb  Boot Wizard hid fe  LANstep       
1c  Hidden W95 FAT3 80  Old Minix      be  Solaris boot    ff  BBT           
1e  Hidden W95 FAT1
 
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)
 
Command (m for help): p
 
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004a6ba
 
  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *          1          26      204800  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560  8e  Linux LVM
/dev/sda3            7859        9164    10489446  83  Linux
/dev/sda4            9165      13081    31463302+  5  Extended
/dev/sda5            9165        9178      112423+  82  Linux swap / Solaris
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.
[root@bogon ~]# kpartx -a /dev/sda
device-mapper: reload ioctl on sda1 failed: Invalid argument
create/reload failed on sda1
device-mapper: reload ioctl on sda2 failed: Invalid argument
create/reload failed on sda2
device-mapper: reload ioctl on sda3 failed: Invalid argument
create/reload failed on sda3
device-mapper: reload ioctl on sda4 failed: Invalid argument
create/reload failed on sda4
device-mapper: reload ioctl on sda5 failed: Invalid argument
create/reload failed on sda5

2.檔案系統的建立
這裡使用的是mkfs格式化工具,他可以把分割區格式化為mkfs.cramfs  mkfs.ext2 mkfs.ext3    mkfs.ext4    mkfs.ext4dev  mkfs.msdos    mkfs.vfat這些檔案系統例如:
[root@bogon ~]# mkfs.ext4 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=           
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

a)  mkfs.ext2 /dev/sda#  格式化sda#分割區成為ext2的檔案系統型別(破壞已有的檔案系統型別)
[root@bogon ~]# mkfs.ext2 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622361 blocks
131118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 
Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

b)  blkid /dev/sda# 檢視分割區是否格式化成目標檔案系統型別
[root@bogon ~]# blkid /dev/sda3
/dev/sda3: UUID="228c109c-b9f8-4339-90eb-b072c60b3433" TYPE="ext2"

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2016-03/129297p2.htm


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