歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux磁盤管理入門教程

Linux磁盤管理入門教程

日期:2017/2/28 13:53:57   编辑:Linux教程

我們看看在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"

Copyright © Linux教程網 All Rights Reserved