硬盘在linuxlinux根文件系统统中的命名顺序是否与state插槽顺序有关

更多最新文章相关作者文章搜狗:感谢您阅读Linux磁盘及文件系统管理 本文版权归原作者所有,本文由网友投递产生,如有侵权请联系 ,会第一时间为您处理删除。宋成勇 的BLOG
用户名:宋成勇
评论数:16
访问量:72607
注册日期:
阅读量:5863
阅读量:12276
阅读量:421316
阅读量:1109615
[匿名]BriGuy:
51CTO推荐博文
& 在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混乱,最常见的比如Linux文件系统的启动问题。很多人在遇到这种问题的时候都去找磁盘、阵列厂家,怀疑是他们的问题,其实这种底层的磁盘(单个磁盘或者RAID阵列)和Linux下磁盘设备文件的映射并不是磁盘、阵列厂家来决定的,而是Linux内核自身的原因。
&&&&&& 目前Linux内核对于这种磁盘设备的映射基本上取决于三个顺序,一是磁盘驱动程序的加载;二是主机PCI插槽的监测;三是磁盘本身的监测,先来的当然是a,以此类推。所以,在出现热插拔了某些设备、重启等特殊情况下,实际磁盘在Linux下映射的设备文件可能由于这种“排队”的原因而发生改变,而这种底层“偷偷的”变化有时候会让管理员犯一些低级错误。
&&&&&& 这是Linux Kernel的限制,所以目前还没办法来正面的克服应对,但有两个“迂回战术”的办法来减少可能出现的问题,一个是采用UUID设备唯一识别的方法,另一个是采用对设备卷做Label标识的办法。
一、 UUID (globally unique identifier),唯一的身份识别,是采用SCSI Inquiry命令的Page 83信息来映射磁盘设备的。例如我们可以在Linux下查询一些磁盘设备的UUID标识代码。
bash# ls -la /dev/disk/by-id
drwxr-xr-x 2 root root 280 Mar 11 12:29 .
drwxr-xr-x 5 root root 100 Mar 11 12:28 ..
lrwxrwxrwx 1 root root&& 9 Mar 11 12:29 edd-int13_dev80 -& ../../sda
lrwxrwxrwx 1 root root& 10 Mar 11 12:29 edd-int13_dev80-part1 -& ../../sda1
lrwxrwxrwx 1 root root& 10 Mar 11 12:29 edd-int13_dev80-part3 -& ../../sda3
lrwxrwxrwx 1 root root& 10 Mar 11 12:29 edd-int13_dev80-part4 -& ../../sda4
lrwxrwxrwx 1 root root& 10 Mar 11 12:29 edd-int13_dev80-part5 -& ../../sda5
lrwxrwxrwx 1 root root& 10 Mar 11 12:29 edd-int13_dev80-part6 -& ../../sda6
lrwxrwxrwx 1 root root&& 9 Mar 11 12:28 scsi-d7c6f890000 -
& ../../sda
lrwxrwxrwx 1 root root& 10 Mar 11 12:28 scsi-d7c6f890000-p
art1 -& ../../sda1
lrwxrwxrwx 1 root root& 10 Mar 11 12:28 scsi-d7c6f890000-p
art3 -& ../../sda3
lrwxrwxrwx 1 root root& 10 Mar 11 12:28 scsi-d7c6f890000-p
art4 -& ../../sda4
lrwxrwxrwx 1 root root& 10 Mar 11 12:28 scsi-d7c6f890000-p
art5 -& ../../sda5
lrwxrwxrwx 1 root root& 10 Mar 11 12:28 scsi-d7c6f890000-p
art6 -& ../../sda6
&&& 找到了磁盘设备唯一的UUID代码后,就可以加到/etc/grub.conf和/etc/fstab中,这样即使初始的系统盘sda变成了sdb,但Linux和文件系统的启动加载都是按照UUID来的,所以上层也不会受到影响,例如,
&&& 在 /etc/grub.conf系统启动入口中做以下更改:
&&&&&&&&&&& kernel /boot/vmlinuz-2.6.27.7 root=/dev/disk/by-id/scsi-d7c6f890000-part1
&&& 在 /etc/fstab文件系统启动入口中做以下更改:
&&&&&&&&&&& /dev/disk/by-id/scsi-d7c6f890000-part1 /&&&&&&&&& ext3&& 1& 1
&&&&&&&&&&& /dev/disk/by-id/scsi-c8fbecf38289-part2 /home&&&&& ext3&& 1& 1
二、 第二种算是比较老式的解决方法,即对磁盘卷设置Label标签,同样的道理,系统启动的时候只看标签,不看底层的sda/sdb等设备号,所以也不会影响到系统、文件系统的启动。例如,
&& 使用e2label命令对sda1和sdb1设置标签:
& &&&&&/sbin/e2label /dev/sda1 myroot
&&&&&& /sbin/e2label /dev/sdb1 myhome
&&&&之后在 /etc/grub.conf 系统启动入口中做以下更改:
&&&&&&&&&&& kernel /boot/vmlinuz-2.6.29 ro root=LABEL=myroot
&&& 在 /etc/fstab文件系统启动入口中做以下更改:
&&&&&&&&&&& LABEL=myroot&&&&& /&&&&& ext3& defaults& 1 1
&&&&&&&&&&& LABEL=myhome &/home& ext3& defaults& 1 1
&&&&& 当然,以上两种都是为了不影响系统和文件系统的启动采用的变通方法,在实际的系统管理时还是要密切注意底层设备的变化,否则如果出现了磁盘分区误删除的事情罪过可就大了L
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:未分类┆阅读(0)┆评论(0)
11:20:33 16:01:40 00:21:55磁盘分区与管理
1、Linux系统设备文件
crw-rw----. 1 root root&&& 253,&&0 Apr 18 15:31 rtc0&& #字符文件
lrwxrwxrwx. 1 root root&&&&&&&&&& 3 Apr 18 15:31 scd0 -& sr0
brw-rw----. 1 root disk&&&&& 8,&&0 Apr 18 15:31 sda &&&#设备文件
brw-rw----. 1 root disk&&&&& 8,&&1 Apr 18 15:31 sda1
brw-rw----. 1 root disk&&&&& 8,&&2 Apr 18 15:31 sda2
brw-rw----. 1 root disk&&&&& 8,&&3 Apr 18 15:31 sda3
crw-rw----. 1 root disk&&&& 21, &&0 Apr 18 15:31 sg0
(1)设备类型:
&&& 1)块设备:block,存取单位“块”,磁盘
&&& 2)字符设备:char,存取单位“字符”,键盘
(2)设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
(3)设备号码:
&&& 1)主设备号:major number, 标识设备类型
&&& 2)次设备号:minor number, 标识同一类型下的不同设备
2、磁盘分区
(1)磁盘分区的作用:优化I/O性能、实现磁盘空间配额限制、提高修复速度、隔离系统和程序、安装多个OS、采用不同文件系统
(2)磁盘分区原理――MBR分区
1)磁盘分区就是对0磁道0扇区的前446字节后面接下来的64字节的分区表进行设置,
2)一块硬盘的分区表仅有64bytes大小,仅支持4个分区(主分区+扩展分区)
3)磁盘分区的最小单位为柱面
4)扩展分区不能直接使用,还需在扩展分区的基础上创建逻辑分区才行,
5)扩展分区有自己的分区表,因此,扩展分区可以有多个
[root@dayi123-6 ~]$hexdump -C /dev/sda -n 512?v #查看磁盘分区表前512字节
&eb 48 90 10 8e d0 bc 00& b0 b8 0000 8e d8 8e c0&&&& |.H..............|
&00 00 00 00 00 00 00 00& 00 00
55 aa& |..............U.|
[root@dayi123-6 ~]$fdisk ?l&& #查看磁盘分区
&&Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&&Id& System
/dev/sda1&&*&&&&&&&&&& 1&&&&&&&&& 26&&&&& & Linux
[root@dayi123-6 ~]$dd if=/dev/sda of=mbr bs=1count=512 #备份分区表
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0. s, 179kB/s
[root@dayi123-6 ~]$dd if=/dev/zeroof=/dev/sda bs=1 count=512 #破坏分区表
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.0781299 s, 6.6kB/s
[root@dayi123-6 ~]$hexdump -C /dev/sda -n 512?v& #分区表信息已被破坏
00 00 00 00 00 00 00& 00 00
00 00& |................|
00 00 00 00 00 00 00& 00 00
00 00& |................|
[root@dayi123-6 ~]$fdisk ?l&&& #看不到分区信息
Disk /dev/sda: 21.5 GB,
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x
[root@dayi123-6 ~]$dd if=mbr of=/dev/sda& #恢复分区表信息
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0. s, 146kB/s
(3)磁盘分区原理――GPT分区
1)GPT:GUID(Globals Unique Identifiers)partition table 支持128个分区,使用64位,支持8Z(512Byte/block)64Z (4096Byte/block)
2)使用128位UUID(UniversallyUnique Identifier) 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位
3)UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
(3)磁盘分区工具――GPT分区
& &1)gnome-disks(一种图形界面的分区工具,在图形界面终端中输入”gnome-disks”命令即可打开)
& &2)fdisk分区:
&&& 分区方法:fdisk /dev/sda(设备名称)
&&& 作用:MBR分区工具
[root@dayi123 ~]$lsblk&&&& #查看现有的磁盘信息
NAME&&MAJ:MIN RM& SIZE RO TYPEMOUNTPOINT
sda&&&&&8:0&&& 0&& 20G& 0disk
├─sda1&& 8:1&&&0& 200M& 0 part /boot
├─sda2&& 8:2&&&0&&& 2G& 0 part [SWAP]
└─sda3&& 8:3&&&0 17.8G& 0 part /
sr0&&&&11:0&&& 1& 3.7G& 0rom& /mnt/cdrom&&&
#如果新添加的磁盘在虚拟机上识别不到,可用下面命令进行扫描识别&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[root@dayi123 ~]$echo '- - -'&/sys/class/scsi_host/host0/scan
[root@dayi123 ~]$lsblk
NAME&&MAJ:MIN RM& SIZE RO TYPEMOUNTPOINT
sda&&&&&8:0&&& 0&& 20G& 0disk
├─sda1&& 8:1&&&0& 200M& 0 part /boot
├─sda2&& 8:2&&&0&&& 2G& 0 part [SWAP]
└─sda3&& 8:3&&&0 17.8G& 0 part /
sr0&&&&11:0&&& 1& 3.7G& 0rom& /mnt/cdrom
sdb&&&&&8:16&& 0&& 20G& 0disk
[root@dayi123 ~]$fdisk /dev/sdb
Command (m for help): m
Command action
&&a&& toggle a bootable flag&&&& &#设置可引导标识&
&&b&& edit bsd disklabel&& &&&&&&#编辑bsd磁盘标签
&&c&& toggle the dos compatibilityflag #设置dos系统兼容标记
&&d&& delete a partition&&&&&&&&& #删除一个分区
&&l&& list known partition types& #显示已知Linux磁盘分区类型,83为Linux分区
&&m&& print this menu&&&&&&&&&&&& #显示帮助信息
&&n&& add a new partition&&&&&&&&& #创建一个新的分区
&&o&& create a new empty DOSpartition table
&&p&& print the partition table&&& # 打印现有磁盘分区信息
&&q&& quit without savingchanges& #退出
&&s&& create a new empty Sundisklabel #新建空的sun磁盘标签
&&t&& change a partition's system id&& #改变一个分区的系统ID
&&u&& change display/entry units&&&&&& #改变显示记录单位
&&v&& verify the partition table&&&&&& #验证分区表
&&w&& write table to disk and exit&&&& #保存退出
&&x&& extra functionality (expertsonly)& #附加功能
Command (m for help): n&&&&&&& #创建一个分区
Command action
&&e&& extended
&&p&& primary partition (1-4)
e&&&&&&&&&&&&&&&&&&&&&&&&&&&& #选择扩展分区(选择主分区或扩展分区,p为主分区)
Partition number (1-4): 4&&&& #磁盘号选择4
First cylinder (1-2610, default 1):& #选择开始柱面(默认从1开始)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-2610, default 2610): +10G#分区大小
Command (m for help): n&&&&&& #继续分区
Command action&&&&&&&&&&&&&&&
&&l&& logical (5 or over)
&&p&& primary partition (1-4)
l&&&&&&&&&&&&&&&&&&&&&&&&&&&& #此时只能选择扩展分区和逻辑分区
First cylinder (1-1306, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-1306, default 1306): +5G&&&
Command (m for help): P&&&&& #打印当前的磁盘分区情况
Disk /dev/sdb: 21.5 GB,
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0xe5e9eac4
&&Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&&Id& System
/dev/sdb4&&&&&&&&&&&&&& 1&&&&&&& 1306&&&+&& 5& Extended
/dev/sdb5&&&&&&&&&&&&&& 1&&&&&&&& 654&&&&5253192&& 83& Linux
Command (m for help): w&&&&& #选择w保存退出
& &&3)gdisk分区工具
&&& 分区方法:fdisk /dev/sda(设备名称)
&&& 作用:类fdisk 的GPT分区工具
[root@dayi123 ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
& MBR:not present
& BSD:not present
& APM:not present
& GPT:not present
Command (? for help): ?
b&&&&&&back up GPT data to a file
c&&&&&&change a partition's name
d&&&&&&delete a partition
i&&&&&&show detailed information on a partition
l&&&&&&list known partition types
n&&&&&&add a new partition
o&&&&&&create a new empty GUID partition table (GPT)
p&&&&&&print the partition table
q& &&&&&quit without saving changes
r&&&&&&recovery and transformation options (experts only)
s&&&&&&sort partitions
t&&&&&&change a partition's type code
v&&&&&&verify disk
w&&&&&&write table to disk and exit
x&&&&&&extra functionality (experts only)
?&&&&&&print this menu
Command (? for help): n&&&&&& #创建一个分区
Partition number (1-128, default 1): 1&&&&&& #选择分区号
First sector (34-, default = 2048) or{+-}size{KMGTP}: #选择开始扇区
Last sector (6, default =) or {+-}size{KMGTP}: +2G #大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter =8300):
Changed type of partition to 'Linuxfilesystem'
Command (? for help): P&&&&&&&&&&& #打印当前分区信息
Number&Start (sector)&&& End(sector)& Size&&&&&& Code&Name
&&1&&&&&&&&&&& 2048&&&&&&&& 4196351&& 2.0 GiB&&&&8300& Linux filesystem
&&& 4)parted分区工具
&&& 作用:磁盘分区管理工具,比fdisk更加灵活,功能更加丰富,同时支持GUID分区表,支持交互模式和非交互模式,除了能够进行分区的添加,删除操作外,还可以移动分区,制作文件系统,调整文件系统大小,复制文件系统。
&&& 用法:parted [选项]... [设备[命令[参数]...]...]
&&& 非交互模式分区:
&&& 用法:
&&& parted /dev/sdb mklabel gpt|msdos & & & &#标记磁盘分区格式
&&& parted/dev/sdb print & & & & & & & & #打印当前磁盘分区
&&& parted/dev/sdb mkpart primary 1 200 (默认M)#分区
&&& parted /dev/sdb rm 1 & & & & & & & & #删除分区
&&& parted ?l & &&
[root@dayi123 ~]# parted /dev/sdb mklabelgpt&&&& #将/dev/sdb标记为gpt分区&&&&&&&&&&&&&&&&&&&&
Warning: The existing disk label on /dev/sdbwill be destroyed and all data on this disk will be lost. Do you want tocontinue?
Yes/No? yes&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Information: You may need to update/etc/fstab.
[root@dayi123 ~]# parted /dev/sdb mkpart primary1 200& #创建一个200M的分区&&&&&&&&&&&&&&&&&&
Information: You may need to update/etc/fstab.
[root@dayi123 ~]# parted /dev/sdb print&&&&&&&&& #打印当前的分区&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number&Start&& End&&& Size&&File system& Name&&&& Flags
&1&&&&& 1049kB&200MB& 199MB&&&&&&&&&&&&&& primary
[root@dayi123 ~]# parted /dev/sdb rm 1&&&&&&& #删除第一块分区
Information: You may need to update/etc/fstab.
交互模式分区(同fdisk):
[root@dayi123 ~]# parted /dev/sdb&&&& #使用parted交互式分区
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view alist of commands.
(parted) help&&&&&&&&&&&&&&&&&&&&&&&& #显示提示信息
&align-check TYPE N&&&&&&&&&&&&&&&&&&&&&&&check partition N for TYPE(min|opt)
&&&&&&&alignment
& help[COMMAND]&&&&&&&&&&&&&&&&&&&&&&&&&& printgeneral 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
& nameNUMBER NAME&&&&&&&&&&&&&&&&&&&&&&&& namepartition 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
& rmNUMBER&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&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
& setNUMBER FLAG STATE&&&&&&&&&&&&&&&&&&&change the FLAG on partition NUMBER
&toggle [NUMBER [FLAG]]&&&&&&&&&&&&&&&&&&toggle the state of FLAG on partition
&&&&&&&NUMBER
& unitUNIT&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&set the default unit to UNIT
&version&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&display the version number and
&&&&&&&copyright information of GNU Parted
(parted) mktable gpt&&&&&&&&&&&&&&& #将此硬盘标记为gpt分区
(parted) mkpart primary 1 200&&&&&& #创建一个200M的分区&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(parted) print&&&&&&&&&&&&&&&&&&&&& #打印创建的分区&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number&Start&& End&&& Size&&File system& Name&&&& Flags
&1&&&&& 1049kB&200MB& 199MB&&&&&&&&&&&&&& primary
(parted) rm 1&&&&&&&&&&&&&& #删除一个分区,rm后面跟分区号
(parted) quit&&&&&&&&&&&&&& #parted创建分区时实时生效的,不需要保存退出即可
3、同步分区表
(1)查看分区表
&&& 1)查看内核内核是否已经识别新的分区:cat /proc/partations
&&& 2)查看块文件(加载到内存中的分区信息):lsblk
&&& 3)查看磁盘中的分区信息:fdisk ?l
&&&&&&&&&&&&&&&&&&&&&&&& &&& parted?l
(2)有些时候分区完时不能立即查看内存中及内核中的分区信息,需要重新读取硬盘分区表
&&& 1)centos6重新读取硬盘分区表
&&& 新增分区用:
&&& partx -a/dev/DEVICE
&&& 删除分区用:
&&& partx -d ?nr M-N/dev/DEVICE
2)centos7重读分区表:partprobe
&&& partprobe[/dev/DEVICE]
[root@dayi123 ~]$partx -a /dev/sdb&&& #重读分区表
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
[root@dayi123 ~]$cat /proc/partitions/dev/sdb&& #查看加载到内核中分区
major minor&#blocks& name
&&8&&&&&&& 0&&
&&8&&&&&&& 1&&&& 204800 sda1
&&8&&&&&&& 2&&& 2097152 sda2
&&8&&&&&&& 3&&
&&8&&&&&& 16&&
&&8&&&&&& 20&&&&&&&&& 1 sdb4
&&8&&&&&& 21&&& 5253192 sdb5
[root@dayi123 ~]$fdisk -l /dev/sdb& #查看硬盘分区
&&Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&&Id& System
/dev/sdb4&&&&&&&&&&&&&& 1&&&&&&& 1306&&&+&& 5& Extended
/dev/sdb5&&&&&&&&&&&&&& 1&&&&&&&& 654&&&&5253192&& 83& Linux
[root@dayi123 ~]$parted -l /dev/sdb&&&&&& #查看硬盘分区 & &
Number&Start&& End&&&& Size&&&Type&&&& File system&&&& Flags
&1&&&&& 1049kB&211MB&& 210MB&& primary&ext4&&&&&&&&&&& boot
&2&&&&& 211MB&&2358MB& 2147MB& primary&linux-swap(v1)
&3&&&&& 2358MB&21.5GB& 19.1GB& primary&ext4
Number&Start&& End&&&& Size&&&Type&&&&& File system& Flags
&4&&&&& 32.3kB&10.7GB& 10.7GB& extended
&5&&&&& 64.5kB&5379MB& 5379MB& logical您所在的位置: &
Linux系统下的分区和文件系统详解
Linux系统下的分区和文件系统详解
Ian Shields
学习如何在磁盘驱动器上创建分区,以及如何格式化分区以便将其用作 Linux 系统上的交换或数据空间。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是探究分区和 Linux 文件系统。
我们的文章 &学习 Linux,101:硬盘布局& 介绍了硬盘驱动器布局、分区、以及使用 fdisk 命令来查看分区信息的基本知识。您学习了主分区、扩展分区 和逻辑分区 等分区的相关知识,了解到 Linux 文件系统包含一些文件,它们存储在磁盘上或目录 中的块存储设备 上。与许多其他系统一样,Linux 系统上的目录也可能包含其他目录,这些目录称为子目录。这篇文章还讨论了一些指导您进行分区选择的注意事项。
本文将首先回顾一下块设备和分区,然后进一步展示如何使用 fdisk 命令创建、修改或删除块设备上的分区。您还将学习 mkfs(mkfs 代表 make filesystem) 命令的各种形式;mkfs 命令用于将分区格式化为一种特殊的文件系统类型。
注意:除了 LPI 考试要求的工具和文件系统外,您可能会遇到或需要其他工具和文件系统。其他工具和文件系统 小节提供了其他可用工具的一个简单摘要。
块设备 是能够以固定大小块 格式化的任意存储设备的抽象层。单独的块的访问可以独立于其他块的访问。这样的访问通常称为随机访问。
随机可访问的固定大小块的抽象层允许程序使用这些块设备,而无需担心底层设备是硬盘驱动器、软盘、CD、固态(solid-state)驱动器、网络驱动器,还是某种虚拟设备,比如内存中文件系统。
块设备示例包括系统上的第一 IDE 硬盘驱动器(/dev/sda 或 /dev/hda)或第二 SCSI、IDE 或 USB 驱动器(/dev/sdb)。使用 ls -l 命令来显示 /dev 条目。每行输出的第一个字符是 b(针对一个块设备,比如软盘、CD 驱动器、IDE 硬盘驱动器或 SCSI 硬盘驱动器)和 c(针对一个字符设备,比如 a、终端(tty)或空设备。清单 1 展示了一些示例。
清单 1. Linux 块设备和字符设备
[ian@echidna ~]$ ls -l /dev/loop1 /dev/null /dev/sd[ab] /dev/sr0 /dev/tty0
brw-rw----. 1 root disk
07:25 /dev/loop1
crw-rw-rw-. 1 root root
07:25 /dev/null
brw-rw----. 1 root disk
07:25 /dev/sda
brw-rw----. 1 root disk
07:25 /dev/sdb
brw-rw----+ 1 root cdrom 11,
07:25 /dev/sr0
crw--w----. 1 root root
07:25 /dev/tty0
对于某些块设备,比如软盘和 CD 或 DVD 磁盘,通常使用整个媒体作为单个文件系统。但是,对于大型硬盘驱动器,甚至是 USB 存储器,更常见的用法是将可用空间划分为几个不同的分区。
分区的大小可能不同,不同的分区上可以拥有不同的文件系统,因此一个磁盘可以用于多种目的,包括在多个操作系统之间共享该磁盘。例如,我使用的测试系统包含几个不同的 Linux 发行版,有时还包含一个 Windows& 系统,它们都共享一个或两个硬盘驱动器。
文章 &学习 Linux,101:硬盘布局& 介绍过,硬盘驱动器拥有一个几何参数(geometry),根据术语柱面、磁头和扇区定义。即使是现代驱动器也使用逻辑块寻址 (LBA),这使得几何参数变得几乎无关紧要,用于分区目的的基本分配单元通常仍旧是柱面。
显示分区信息
分区信息存储在磁盘上的分区表 中。分区表列示每个分区的起始柱面和结束柱面的相关信息,关于它的类型 的信息,以及它是否标记为可引导。要创建和删除分区,需要使用一个专门设计的程序来编辑分区表。对于 LPI 考试,您需要了解 fdisk 程序,这也是本文介绍的程序,尽管也可以使用其他几个工具。本文末尾将提到其中几个工具。
fdisk 命令加上 -l 选项用于列示分区。如果想查看一个特定驱动器上的分区,需要添加一个设备名称,比如 /dev/sda。注意,分区工具需要根访问权限。清单 2 展示了我的系统的两个主硬盘驱动器上的分区。
清单 2. 使用 fdisk 列示分区
[root@attic4 ~]# fdisk -l /dev/sda
Disk /dev/sda: 640.1 GB,
255 heads, 63 sectors/track, 77825 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: 0x00064a1a
Device Boot
Linux swap / Solaris
Partition table entries are not in disk order
[root@echidna ~]# fdisk -l /dev/sda
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
标题信息显示磁盘大小和几何参数。大多数使用 LBA 的磁盘每个柱面拥有 255 个磁头,每个磁道拥有 63 个扇区,总共拥有 16065 个扇区,或者每个柱面 8225280 字节。
在第二个示例中,第一个主分区(/dev/sda1)标记为 bootable(或 active)。这允许标准 DOS PC 主引导记录引导该分区。这个标志对 LILO 或 GRUB 引导装载程序没有意义。第一个示例使用 GRUB 作为引导装载程序,/dev/sda3 被标记为 bootable 的原因可能是我以前使用这个驱动器的一次意外。
Start 和 End 列显示每个分区的起始和结束柱面。这些分区不能重叠且通常应该相邻,即中间没有空间。
Blocks 列显示大小为 1K(1024 字节)的块的数量。对于本文撰写之时使用的大多数磁盘而言,扇区大小是 512 字节,因此一个分区中的块的最大数量是柱面数量(End&+&1&-&Start)和每个柱面的扇区数量的乘积的一半。块数量后面的 + 号表示分区中的扇区没有全部使用。
Id 列表示分区的预定用途。类型 82 是表示 Linux 交换分区,类型 83 表示 Linux 数据分区。已定义的分区类型大概有 100 种。第二个磁盘由几个操作系统共享,其中包括 Windows/XP,因此出现了 Windows NTFS(也可能是 FAT32)分区。
使用 fdisk 进行分区
您刚刚已经看到如何使用 fdisk 命令来显示分区信息。这个命令还提供了一个菜单驱动的环境来编辑分区表,以便创建或移除分区。
开始修改分区之前,需要记住一些重要事项。如果不遵守以下这些原则,就会出现丢失您的现有数据的风险。
开始之前备份重要数据,进行任何可能会导致数据丢失的操作之前都应这样做。
不要更改正在使用的分区。事先详细计划,然后小心执行。从 CD、DVD 或 USB 启动一个实时发行版是确保没有硬盘驱动器分区正在使用的一个好办法。
了解您的工具。fdisk 命令不会向您的磁盘提交任何更改,除非您要求它那样做。其他工具,其中包括 parted 可能会随着您的操作提交更改。
如果的确犯了错误,那么应立即停止。分区工具对分区表进行写操作。除非您使用的工具还包含对您的磁盘的数据区域的移动、大小重置、格式化等写操作功能,否则您的数据将不会受到影响。如果您的确犯了错误,尽快停止操作并寻求帮助。您仍然有可能恢复此前的分区表定义,从而恢复您的分区和数据。
启动 fdisk
要以交互模式启动 fdisk,只需提供一个磁盘的名称(比如 /dev/hda 或 /dev/sdb)作为参数。以下示例启动一个 Knoppix 实时 DVD。您需要根权限,并将看到类似于清单 3 的输出。
清单 3. 启动交互式 fdisk
knoppix@Microknoppix:~$ su -
root@Microknoppix:~# fdisk /dev/sda
The number of cylinders for this disk is set to 121601.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
大多数磁盘拥有超过 1024 个柱面,因此您通常会看到清单 3 中显示的警告。类型 m 将显示一个可用的单字母命令列表,如清单 4 所示。
清单 4. fdisk 中的帮助
Command (m for help): m
Command action
toggle a bootable flag
edit bsd disklabel
toggle the dos compatibility flag
delete a partition
list known partition types
print this menu
add a new partition
create a new empty DOS partition table
print the partition table
quit without saving changes
create a new empty Sun disklabel
change a partition's system id
change display/entry units
verify the partition table
write table to disk and exit
extra functionality (experts only)
Command (m for help):
使用 p 命令来显示这个特定磁盘上的现有分区,清单 5 显示输出。
清单 5. 显示现有分区表
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Command (m for help):
这个特殊磁盘是一个 1TB 磁盘,包含一个略低于 80GB 的 Windows/XP 分区。它是一个主分区,标记为 bootable,这是 Windows 系统的典型特征。
现在我们使用部分闲置空间来添加一些分区。
我们将创建一个交换分区:/dev/sda4。这将是一个主分区,填充 /dev/sda1 的结束柱面和 /dev/sda2 的起始柱面之间的 521 个柱面空隙。您不必对导致这个空隙的奇怪原因感到好奇;我只是为了撰写本文而创建这个空隙。
我们将创建一个 40GB 的逻辑分区:/dev/sda8。
最后,我们将创建一个 2000MB 的小型逻辑分区,以便在 Linux 和 Windows 系统之间共享数据。这个分区最终将格式化为 FAT32(或 vfat)。这个分区将命名为 /dev/sda9。
创建我们的分区
我们首先使用 n 命令来创建一个新分区,如清单 6 所示。
清单 6. 创建第一个分区
Command (m for help): n
Command action
logical (5 or over)
primary partition (1-4)
Selected partition 4
First cylinder (, default 9112):
Using default value 9112
Last cylinder, +cylinders or +size{K,M,G} (, default 9633): +521
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Partition table entries are not in disk order
Command (m for help):
我们采用默认值作为第一个柱面并指定值 +521 作为柱面的数量。清单 6 显示,我们的分区大小约为 4GB。由于它是一个主分区,因此它的编号必须为 1 至 4。顺序指定分区编号是个好主意;否则一些工具会报告错误,fdisk 将警告我们:我们的分区表条目不再按磁盘顺序排列。
还要注意一点:我们的新分区类型被指定为 83,表明这是一个 Linux 数据分区。可以将这个数字视为分区预定用途的操作系统的指示符。分区的最终用途应该匹配这个设置,但这时我们的分区甚至还没有格式化,更谈不上有数据了。我们将首先创建其他分区,然后介绍如何更改分区类型。
您可能已经注意到,当我们输入 n 子命令创建一个新分区时,惟一的选择是 &l&(表示逻辑分区)和 &p&(表示主分区)。您只能看到剩余的可能分区类型的选项。如果驱动器还没有扩展分区,您将看到选项 &e&(表示扩展分区)。还要注意,我们的扩展分区(/dev/sda3)为类型 5。
现在我们来定义 40GB Linux 分区和 2000MB FAT32 分区。这次我们只需指定大小 +40G 和 +2000M,分别表示 40GB 和 2000MB。结果如清单 7 所示。
清单 7. 创建数据分区
Command (m for help): n
First cylinder (, default 53906):
Using default value 53906
Last cylinder, +cylinders or +size{K,M,G} (, default 116679): +40G
Command (m for help): n
First cylinder (, default 59129):
Using default value 59129
Last cylinder, +cylinders or +size{K,M,G} (, default 116679): +2000M
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Partition table entries are not in disk order
Command (m for help):
更改分区类型
在离开 fdisk 之前,我们将更改 swap 和 vfat 分区的分区类型。为此,我们使用 t 子命令来设置分区类型。我们将 /dev/sda4 设置为类型 82(Linux 交换分区),将 /dev/sda9 设置为类型 9(FAT32)。如果您想查看受支持类型的完整列表,请输入 L,如清单 8 所示。
清单 8. 更改分区类型
Command (m for help): t
Partition number (1-9): 4
Hex code (type L to list codes): 82
Changed system type of partition 4 to 82 (Linux swap / Solaris)
Command (m for help): t
Partition number (1-9): 9
Hex code (type L to list codes): b
Changed system type of partition 9 to b (W95 FAT32)
Command (m for help):
保存分区表
到目前为止,我们只是对分区表进行了内存中编辑。我们可以用 q 命令退出,不保存更改。如果某些分区不能满足您的要求,您可以使用 d 命令来删除一个或多个分区,以便重新定义它们。如果您对设置满意,则可以使用 v 命令来验证您的设置,然后使用 w 命令来写入新的分区表并退出。参见清单 9。如果您再次运行 fdisk -l 命令,您将看到,Linux 现在已能够识别新分区。与其他操作系统不同的是,Linux 并不总是需要重新启动才能看到更改。举例来说,如果 /dev/hda3 变成 /dev/hda2,则需要重新启动,因为原来的 /dev/hda2 已被删除。如果需要重新启动,fdisk 应该会告诉您。
清单 9. 保存分区表
Command (m for help): v
unallocated 512-byte sectors
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@Microknoppix:~# fdisk -l /dev/sda
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Linux swap / Solaris
Partition table entries are not in disk order
高级 fdisk
您可能已注意到,我们没有更改任意分区上的 bootable 标志。现在,我们的磁盘还有 Windows Master Boot Record (MBR),因此将启动标记为 bootable 的第一个主分区(我们的示例中为 NTFS 分区)。
LILO 和 GRUB 都不使用 bootable 标志。如果其中一个安装在 MBR 中,那么它就能够引导 Windows/XP 分区。您也可以将 LILO 或 GRUB 安装到您的 /boot 分区(/dev/hda2)中,将该分区标记为 bootable 并移除 /dev/hda1 的 bootable 标志。如果机器今后将恢复为 Windows 专用机器,那么保留原始 MBR 可能会有用。
如果需要,您还可以使用 fdisk 来修复分区表中的分区顺序。这通常将会更改分区编号,因此您可能需要完成其他工作才能将您的系统恢复为工作系统。要进行这个更改,使用 f 子命令切换到专家模式,然后使用 r 子命令修复分区顺序,如清单 10 所示。如果您只是想看看新的分区顺序而不实际更改,可以使用 q 子命令退出(本例的做法),而不是将更新后的分区表写到磁盘中。
清单 10. 修复分区表顺序
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Linux swap / Solaris
Partition table entries are not in disk order
Command (m for help): x
Expert command (m for help): f
Expert command (m for help): r
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 6 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f
Device Boot
Linux swap / Solaris
Command (m for help): q
您现在已经了解了向 Linux 工作站添加分区的一种方法。文章 &学习 Linux,101:查找并放置文件系统& 介绍了其他可能的方法。
文件系统类型
Linux 支持几种不同的文件系统。每个文件系统都有自己的优缺点和性能特征。文件系统的一个重要属性是日志,它允许系统在崩溃后更快地恢复。通常,日志文件系统比非日志文件系统更好。您可能还需要考虑,您选择的文件系统是否支持 Security Enhanced Linux(或 SELinux)。以下是备考 LPI 考试需要了解的文件系统类型的一个简单摘要。参考 参考资料 了解其他背景信息。
ext2 文件系统
ext2 文件系统(也称为第二扩展文件系统)旨在克服早期 Linux 版本中使用的 Minix 文件系统的缺点。多年来,该文件系统一直广泛应用于 Linux。但 ext2 中没有日志,现在基本上已被 ext3 取代。
ext3 文件系统
ext3 文件系统向标准 ext2 文件系统添加了日志功能,因此是一个非常稳定的文件系统的一个演化发展。它在大多数情况下提供合理的性能并且仍旧在改进。由于它在可靠的 ext2 文件系统之上添加了日志功能,因此可以将现有 ext2 文件系统转换为 ext3 文件系统,并且在必要时还可以转换回来。
ReiserFS 文件系统
ReiserFS 是一个基于 B 状树的文件系统,拥有非常好的总体性能,特别是对于大量小文件。ReiserFS 拥有良好的伸缩性并具有日志功能。但该文件系统不再受到积极开发,不支持 SELinux,基本上已被 Reiser4 取代。
XFS 文件系统
XFS 文件系统拥有日志功能,包含一些健壮的特性,并针对可伸缩性进行了优化。XFS 在 RAM 中强制缓存中转(in-transit)数据,因此如果使用 XFS,建议采用不间断电源供应。
交换文件系统
交换空间在使用之前必须相应格式化,当它通常不被视为文件系统。
vfat 文件系统
vfat 文件系统(也称为 FAT32)没有日志功能,且缺乏完整的 Linux 文件系统实现所需的许多特性。它可用于在 Windows 和 Linux 系统之间交换数据,因为 Windows 和 Linux 都能读取它。不要将这个文件系统用于 Linux,除非要在 Windows 和 Linux 之间共享数据。如果您在一个 vfat 磁盘上解压缩一个 Linux 归档文件,那么您将丢失权限(比如执行权限),还会丢失该归档文件中可能存储的符号链接。
ext3 文件系统是一个成熟的文件系统,用作几个发行版上的默认文件系统。ReiserFS 文件系统多年来一直用作一些发行版(包括 SUSE)的默认文件系统,但现在用得少了。
创建文件系统
Linux 使用 mkfs 命令来创建文件系统,用 mkswap 命令来创建交换空间。mkfs 命令实际上是几个特定于文件系统的命令的前端,这些命令包括针对 ext3 的 mkfs.ext3 和针对 ReiserFS 的 mkfs.reiserfs。
您的文件系统上安装的是什么文件系统支持?使用 ls&/sbin/mk* 命令来找到答案。清单 11 展示了一个示例。
清单 11. 文件系统创建命令
[ian@echidna ~]$ ls /sbin/mk*
/sbin/mkdosfs
/sbin/mkfs.ext2
/sbin/mkfs.ntfs
/sbin/mke2fs
/sbin/mkfs.ext3
/sbin/mkfs.vfat
/sbin/mkfs
/sbin/mkfs.ext4
/sbin/mkfs.xfs
/sbin/mkfs.btrfs
/sbin/mkfs.ext4dev
/sbin/mkhomedir_helper
/sbin/mkfs.cramfs
/sbin/mkfs.msdos
/sbin/mkswap
您将注意到一些命令的各种形式。例如,您通常会发现,文件 mke2fs、mkfs.ext2 和 mkfs.ext3 是一样的,文件 mkreiserfs 和 mkfs.reiserfs 也一样。启动系统可能需要的文件系统将使用多个名称不同的相同文件。不能用于 Linux 中的 / 文件系统的那些文件系统(比如 vfat 或 msdos)可能会使用符号链接代替。
所有 mkfs 命令都有几个公共选项。根据在 -type 选项中指定的文件系统类型,特定于正在创建的文件系统类型的选项将被传递到适当的创建命令。我们的示例使用 mkfs&-type,但您也可以直接使用其他类型,效果一样。例如,您可以使用 mkfs&-type&ext2、mk2fs 或 mkfs.ext2。要获取一个特定文件系统的手册页,使用适当的 mkfs 命令作为名称,比如 man&mkfs.ext3。下面的输出示例中显示的许多值都能通过 mkfs 的选项控制。
既然我们已经创建了所有分区,我们将重新启动 Fedora 12 系统(而不是有点缓慢的实时 Knoppix DVD)并格式化文件系统。当然,如果愿意,您也可以继续使用 Knoppix 系统。注意,创建文件系统需要根权限。
创建一个 ext3 文件系统
我们使用 mkfs 命令将 /dev/sda8 分区格式化为 ext3,如清单 12 所示。
清单 12. 创建一个 ext3 文件系统
[root@echidna ~]# mkfs -t ext3 /dev/sda8
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2624496 inodes,
524421 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=
321 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
3, , 2, 2654208,
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.
Use tune2fs -c or -i to override.
注意,一个日志与 ext3 一同创建。如果您想向一个现有 ext2 系统添加一个日志,使用 tune2fs 命令和 -j 选项。
针对 ext2 和 ext3 文件系统的一个有用选项是带有一个名称的 -L 选项,该选项为分区指定一个标签。这个标签可用于在挂载文件系统时代替设备名称;它针对可能需要在各种控制文件中反映的更改提供某种级别的隔离。要为一个现有 ext2 或 ext3 文件系统显示或设置标签,使用 e2label 命令。标签的最大大小限制为 16 个字符。
最近的一个进展是使用 Universally Unique Identifier(或 UUID)而不是标签。UUID 是一个 128 位标识符,通常显示为 32 位 16 进制数字和 4 个连词号。大多数 Linux 文件系统在被格式化时自动生成一个 UUID。使用 blkid 命令(不需要根权限)来查看我们刚刚格式化的分区的 UUID,如清单 13 所示。与标签相比,UUID 更可能具备惟一性,对 USB 驱动器这样的热插拔设备尤其有用。
清单 13. 使用 blkid 命令显示一个 UUID
[ian@echidna ~]$ blkid /dev/sda8
/dev/sda8: UUID=&87040def-920e--c585ddc46384& SEC_TYPE=&ext2& TYPE=&ext3&
创建一个 XFS 文件系统
现在我们将刚才格式化为 ext3 的分区重新格式化为 XFS 文件系统。我们的 Fedora 12 系统使用 SELinux(Security Enhanced Linux),因此我们应该使用 -i 参数指定比默认值 256 更大的索引节点。推荐值是 512。注意,如果 XFS 格式化程序发现分区上已有一个公认的文件系统,那么它将会通知您。还要注意一点,XFS 格式重新指定了 UUID。
清单 14. 创建一个 XFS 文件系统
[root@echidna ~]# mkfs -t xfs -i size=512 /dev/sda8
mkfs.xfs: /dev/sda8 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@echidna ~]# mkfs -t xfs -f -i size=512 /dev/sda8
meta-data=/dev/sda8
agcount=4, agsize=2622108 blks
sectsz=512
bsize=4096
blocks=, imaxpct=25
swidth=0 blks
=version 2
bsize=4096
ascii-ci=0
=internal log
bsize=4096
blocks=5121, version=2
sectsz=512
sunit=0 blks, lazy-count=1
realtime =none
extsz=4096
blocks=0, rtextents=0
[root@echidna ~]# blkid /dev/sda8
/dev/sda8: UUID=&1bf-4d5e-af06-2470df37ddb3& TYPE=&xfs&
您可以使用带有一个名称的 -L 选项来设置 XFS 系统的标签。还可以使用 xfs_admin 命令和 -L 选项来为一个现有 XFS 文件系统添加一个标签。使用带 -l 选项的 xfs_admin 命令来显示一个标签。与 ext2、ext3 和 ReiserFS 不同,XFS 标签的最大长度为 12 个字符。
创建一个 ReiserFS 文件系统
可以使用带 -t reiserfs 选项的 mkfs 命令或 mkreiserfs 命令创建 ReiserFS 文件系统。ReiserFS 不支持 SELinux,正在被 Resier4 替代。
可以使用 -l 选项(或带有一个名称的 --label 选项)为一个 ReiserFS 系统设置标签。可以使用 reiserfstune 命令添加标签或显示现有 ReiserFS 文件系统上的标签。标签的最大长度限制为 16 个字符。
您可能需要在您的系统上安装 ReiserFS 包才能使用 ReiserFS ,因为它可能不包含在默认安装内。参见手册页或信息页了解更多细节。
创建一个 vfat 文件系统
现在,我们将在 /dev/sda9 上创建 FAT32(vfat)文件系统。
清单 15. 创建一个 vfat 文件系统
[root@echidna ~]# mkfs -t vfat /dev/sda9
mkfs.vfat 3.0.9 (31 Jan 2010)
[root@echidna ~]# blkid /dev/sda9
/dev/sda9: LABEL=&& UUID=&CF72-99A8& TYPE=&vfat&
vfat 文件系统的 UUIDs 比标准 UUIDs 短,因此不惟一的几率要大一些。如果想用一个标签代替,可以使用 dosfslabel 命令。DOS 分区的标签的最大长度限制为 11 个字符。
创建交换空间
现在我们使用 mkswap 命令在 /dev/sda4 分区上创建一些交换空间,如清单 16 所示。
清单 16. 创建交换空间
[root@echidna ~]# mkswap /dev/sda4
Setting up swapspace version 1, size = 4192960 KiB
no label, UUID=8f5a3a05-73ef-4c78-bc56-0e9b1bcc7fdb
注意,mkswap 的最近几个版本都显示生成的 UUID。
与常规文件系统不同,交换分区不能挂载。相反,它们使用 swapon 命令启用。您的 Linux 系统的启动脚本将负责自动启用您的交换分区。
其他工具和文件系统
以下工具和文件系统不是这个考试的 LPI 目标的内容。这个非常简略的概述仅触及您可能会遇到的一些工具和文件系统的皮毛。
许多 Linux 发行版都包含 cfdisk 或 sfdisk 命令。cfdisk 命令提供一个比 fdisk 更图形化的界面,使用 ncurses 库函数,如图 1 所示。sfdisk 命令面向程序员,可被脚本化。如果您对该命令了如指掌,尽管使用它。
图 1. 使用 cfdisk
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="屏幕截图展示用于处理分区的 cfdisk 工具的图形界面" width="333" height="232" src="/files/uploadimg/4430.gif" />
用于处理分区表的另一个流行工具是 parted,该命令能够对许多类型的分区执行大小重置、格式化、创建分区以及销毁分区等操作。尽管 parted 不能重置 NTFS 分区大小,但 ntfsresize 却可以。qtparted 工具使用 Qt 工具包来提供一个图形界面。它包含 parted 功能和 ntfsresize 功能。
gparted 是另一个图形分区工具,主要用于 GNOME 桌面。它使用 GTK+GUI 库,如图 2 所示。(参见 参考资料 获取到 qtparted 和 gparted 的链接。)
要使用上述工具,可能需要安装相应的包,因为它们可能不包含在您的默认安装中。
图 2. 使用 gparted
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="屏幕截图展示用于处理分区的 gparted 工具的图形界面" width="392" height="264" src="/files/uploadimg/4431.gif" />
许多发行版都允许在安装过程中对磁盘分区,有时还允许缩小现有的 Windows NTFS 或 FAT32 分区。请参阅您的发行版的安装文档。
逻辑卷管理程序
Linux 的逻辑卷管理程序(或 LVM)允许将多个物理存储设备合并为单个卷组。例如,您可能会将一个分区添加到一个现有卷组,而不是必须开辟出足够您想要的文件系统使用的连续空间。
RAID(Redundant Array of Independent Disks)技术使用比高端系统上的磁盘便宜得多的廉价磁盘来提供一个可靠的数据存储。RAID 有几种类型,可以在硬件或软件中实现。Linux 同时支持硬件和软件 RAID。
更多文件系统
除了上面介绍的文件系统之外,您可能还会遇到其他文件系统。
IBM 的 Journaled File System (JFS)(目前用于 IBM 企业服务器)旨在用于高吞吐量服务器环境。它可用于 Linux,包含在几个发行版中。要创建 JFS 文件系统,使用 mkfs.jfs 命令。
btrfs(B-Tree 文件系统)最初由 Oracle 开发,在 GPL 许可之下可用。它是一个用于 Linux 的新型写入时拷贝(copy-on-write)文件系统,旨在关注容错性、修复和轻松管理的同时实现高级特性。这个文件系统可能不会默认安装,因此您可能需要安装一个包(比如 btrfs-progs)来启用 btrfs 支持。
还有其他文件系统,比如通常在嵌入式设备上使用的 cramfs 文件系统。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
随着信息系统的快速发展,海量的信息需要可靠存储的同时,还能被
Linux是功能强大的常用操作系统之一,目前它在计算机
任何一位已经实施了灾难恢复解决方案的数据中心管理者
Fedora 19(代号“薛定谔的猫”)最终正式版已经出炉
本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站
51CTO旗下网站

我要回帖

更多关于 linux 重命名硬盘 的文章

 

随机推荐