- 1. Linux中的文件管理
- 2. Disk的partition磁盘分区
- 3. 文件系统
- 4. mount
- 5. 创建swap领域
- 6. 自动mount
- 7. i Node
- 8. hard link与symbolic link
- 9. 管理disk的command
1. Linux中的文件管理
要在Linux中使用harddisk,就需要了解文件系统和操作command。
1.1 什么是文件系统
文件系统是高效管理文件(文件日期,文件名,文件属性以及自身)的一种结构。 使用不同文件系统时,其访问效率和安全性也不同。
1.2 什么是partition
使用harddisk时,需要将harddisk分成几个单位,即partition,如Windows中的C盘。
1.3 Linux中的目录结构
Linux中的目录结构如下:
/
-- boot
-- bin
-- sbin
-- usr
-- bin
-- sbin
-- lib
-- local
-- etc
-- lib
-- var
-- log
-- lib
-- local
-- spool
-- etc
-- home
-- dev
-- proc
-- mnt
-- tmp
关于各个目录的作用,参考如下:
- boot・・・起動に必要な設定ファイルとプログラム
- bin・・・・一般ユーザ用プログラム
- sbin・・・システム管理用プログラム
- lib・・・・複数のプログラムで共通に使われるライブラリプログラム(library)
- var・・・・ログやメールやホームページなどの可変(Variable)なファイル
- etc・・・・設定ファイル
- home・・・ユーザの作業領域であるホームディレクトリ
- dev・・・デバイスファイル
- proc・・・カーネルやプロセスを参照するための仮想ファイルシステム
- mnt・・・ファイルシステムの一時マウントポインタ(ディレクトリ)≒/media
- tmp・・・一時(Temporary)ファイル
1.4 文件系统的创建方法
harddisk在使用之前,需要如下的操作:
- partition作成:fdisk command
- file system作成:mkfs command (在Windows中叫做format即格式化)
- mount:mount command
这些command大多是/sbin目录中的系统管理用command,大部分系统管理用command只能root用户执行。
一般user因为没有系统管理权限,要么是不能执行这些系统管理命令,要么因为无法访问所需要的自由导致执行失败。
一般用户的初始设定中,是无法访问/sbin目录的,执行命令时需要使用绝对路径/sbin/fdisk
,如果当前是user用户,需要使用su -
切换到root 用户执行。
2. Disk的partition磁盘分区
使用fdisk命令,能确认分区情况,作成分区和删除分区。
fdisk [オプション] [デバイスファイル]
1. -l 显示device的partition信息
2.1 创建分区
harddisk可以有三种类型接口,即IDE
/ SATA
/ SCSI
。
harddisk可以分成1-4个分区,三个基本分区和一个扩展分区,扩展分区最多只能一个,扩展分区内能继续划分逻辑分区。
下面是不同接口harddisk,最多允许的分区数:
- IDE:63(基本 3+論理 60)
- SATA:15(基本 3+論理 12)
- SCSI:15(基本 3+論理 12)
2.2 harddisk的追加流程
- 当前分区信息确认
- 创建分区
- 分区种类变更
- 分区信息保存
- 重启
- 创建文件系统
- mount
- swap分区的创建
- swap追加
- 设定自动mount
2.2.1 确认分区信息 fdisk /dev/sdc
与p
# fdisk /dev/sdc
コマンド (m でヘルプ): p ↵ 現在のパーティション情報を表示
Disk /dev/sdc: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
分割されていない状態で何も表示されない
- 先使用
fdisk /dev/sdc
,将/dev/sdc启动。 - 再使用
p
command将现在的分区情况显示出来。
2.2.2 创建分区 n
- 例,nコマンドで新しいパーティションを確保します。 pを指定して、基本パーティションを2つ作成します。
コマンド (m でヘルプ): n ↵ 新しいパーティションの確保
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p ↵ 基本パーティション
パーティション番号 (1-4): 1 ↵ 初めてパーティションを作成するので1
最初 シリンダ (1-783, default 1): ↵ 入力でデフォルトの先頭シリンダを指定
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-783, default 783): +1024M
↵ 確保するサイズ
コマンド (m でヘルプ): n ↵ 新しいパーティションの確保
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p ↵ 基本パーティション
パーティション番号 (1-4): 2 ↵ 2つ目のパーティションを取るので2
最初 シリンダ (126-783, default 126): 126 ↵ 先頭シリンダを指定
終点 シリンダ または +サイズ または +サイズM または +サイズK (126-783, default 783): +1024M ↵
確保するサイズ
コマンド (m でヘルプ): p ↵ 現在のパーティション情報を表示
Disk /dev/sdc: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System 確保したパー
/dev/sdc1 1 125 1004031 83 Linux ティションの
/dev/sdc2 126 250 1004062+ 83 Linux リスト表示
2.2.3 分区种类变更 t
与 L
上面创建的分区,其system
即文件系统为linux(83),现在将其修改为swap所需的82.
コマンド (m でヘルプ): t ↵ 確保したパーティションの情報を変更
パーティション番号 (1-4): 2 ↵
16進数コード (L コマンドでコードリスト表示): L ↵ パーティションの種類のリスト表示
0 空 1e Hidden W95 FAT1 80 古い Minix be Solaris boot
1 FAT12 24 NEC DOS 81 Minix / 古い bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
5 拡張パーティション 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
...
16進数コード (L コマンドでコードリスト表示): 82 ↵
スワップ領域を指定 Changed system type of partition 2 to 82 (Linux swap / Solaris)
2.2.4 保存分区信息 w
和q
コマンド (m でヘルプ): w ↵ ハードディスクにパーティション情報を書き込む
The partition table has been altered!
Calling ioctl() to re-read partition table.
...
コマンド (m でヘルプ): q ↵
- w・・・書き込み、保存(write)
- q・・・変更を書き込まない、破棄(quit)
3. 文件系统
Linux中有EXT2,EXT3,ReiserFS和XFS及JFS等文件系统,Windows中有FAT和NTFS文件系统,关于各个文件系统支持的最大size等信息,可以问google。
3.1 确认mount状态 df
df
可以显示出当前mount下的所有文件系统的list。
3.2 创建文件系统 mkfs
分区之后,需要使用mkfs
创建文件系统。
mkfs オプション
1. -t,作成文件系统时,指定其种类
2. -c,检测坏道不使用这一部分
- 实例
# mkfs -t ext3 -c /dev/sdc1 ↵
sdc1(3つ目(c)のインターフェースの1つ目の パーティション)にext3形式のファイルシステムを作成
3.4 标签 e2label
label是用来识别harddisk中分区时的标签。
e2label デバイス [ラベル]
- 实例:
# e2label /dev/sdc3 ↵ /dev/sdc3のラベルを表示
opt
# e2label /dev/sdc3 opt2 ↵ /dev/sdc3のラベルをopt2に変更
# e2label /dev/sdc3 ↵ /dev/sdc3のラベルを表示
opt2
4. mount
接入到Linux中的存储,比如harddisk/dvd等,要使用的话需要先mount,mount的方法可以参考: Linux中加载外部存储
4.1 mount
与umount
- 实例
# mount -t ext3 -o rw /dev/sdc3 /opt ↵ /dev/sdc3を/optディレクトリへext3形式でマウント
# df ↵ マウントされているファイルシステムの一覧表示
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 4567236 3444596 886888 80% /
tmpfs 517660 0 517660 0% /dev/shm
...
# ls /opt ↵ マウントされた/optディレクトリをリスト表示
lost+found
# umount /opt ↵ /opt(/dev/sdc3)をアンマウント
# df ↵ マウントされているファイルシステムの一覧表示
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 4567236 3444596 886888 80% /
tmpfs 517660 0 517660 0% /dev/shm
5. 创建swap领域
linux的kernel将数据和程序从硬盘读取到内存中执行,如果内存被消耗殆尽了,就会将数据和程序暂时存放到swap领域。
5.1 swap system的创建
mkswap デバイスファイル
1. -c 检测坏道不使用它
5.2 创建swap领域和使用
通过swapon
实现swap领域的使用开始和停止。
swapon -s [デバイスファイル]
- 实例:
# fdisk -l ↵ ハードディスクのパーティションを表示
Disk /dev/sda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 587 4715046 83 Linux
/dev/sda2 588 712 1004062+ 82 Linux swap / Solaris
/dev/sda3 713 783 570307+ 83 Linux
# mkswap -c /dev/sda2 ↵ /dev/sda2をスワップファイルに変更
Setting up swapspace version 1, size = 1036378 kB
# swapon -s ↵ 利用開始しているスワップ領域を表示
# swapon /dev/sda2 ↵ /dev/sda2をスワップファイルシステムとして利用開始
# swapon -s ↵ 利用開始しているスワップ領域を表示
Filename Type Size Used Priority
/dev/sda2 partition 1012084 0 -4
6. 自动mount
使用mount
命令手动mount disk的话,每次重启后都需要手动mount,需要修改/etc/fstab
文件。
- 实例:
# vi /etc/fstab ↵ /etc/fstabファイルを修正します
/dev/sda3 /opt ext3 defaults 1 2 # 新しいパーティションを追加
# mount -a ↵ マウント
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 4567236 3470024 861460 81% /
tmpfs 517660 0 517660 0%
/dev/shm /dev/sda3 553408 16840 508456 4% /opt # 新しいパーティション
- 使用CD或DVD
# mount -t iso9660 -o ro /dev/hdc /media/cdrom ↵ DVD-ROMをマウント
# ls /media/cdrom ↵ マウントポイントを確認
CentOS RELEASE-NOTES-es.html RELEASE-NOTES-pt_BR
EULA RELEASE-NOTES-fr RELEASE-NOTES-pt_BR.html
...
# umount /media/cdrom ↵ DVD-ROMをアンマウント
7. i Node
EXT3(EXT2)文件系统中,每个文件和目录都有一个唯一的i node编号。
创建文件系统的时候,会创建一个i node区域,用于存储文件在disk上的位置以及访问权限等。
- 显示文件系统的信息
df -i
1. -i 显示node信息
- 实例
$ ls -il /bin | sort ↵ iノード番号を表示
750812 -rwxr-xr-x 1 root root 18568 2月 22 2005 setserial 750812がiノード番号
750813 -rwxr-xr-x 1 root root 57488 5月 3 2007 cpio
750814 -rwxr-xr-x 3 root root 56080 7月 15 2007 gunzip
750814 -rwxr-xr-x 3 root root 56080 7月 15 2007 gzip
- ァイル名が別々でもiノード番号が同じファイルは、ファイル としての実体は同じなハードリンクという仕組みを表しています。
- 3番目に表示されている項目の 3と いう数字はリンク数で、1つのファイル実体を3つのファイル名でリンクしていることを表しています。
8. hard link与symbolic link
有时一个文件的路径过长,使用时每次输入路径会不方便,这时可以生成该文件的hard link或symbolic link,将link放在自己的home目录下方便访问。 link按类型分为hard link和symbolic link。
- hard link
hardlink直接指向原始文件,与原始文件有相同的i node编码,所以不能在不同的文件系统下生成hard link。
- symblic link
类似于windows的shortcut,生成一个保存了原始文件位置的文件,可以在不同的文件系统下生成。
ln 元ファイル名 リンク名
1. -s:シンボリックリンクを作成します。
默认生成hard link。
- 实例:hard link
$ cp -p /usr/bin/file . ↵
$ ln file file2 ↵ ハードリンクを作成
$ ls -il file* ↵
559793 -rwxr-xr-x 2 root root 12428 5月 31 2007 fileコピーされたファイル
559793 -rwxr-xr-x 2 root root 12428 5月 31 2007 file2 ハードリンクされたファイル
- 实例:symbolic link
$ cp -p /usr/bin/file . ↵ fileコマンドをカレントディレクトリへコピー
$ ln -s file file3 ↵ fileのシンボリックファイル(file3)を作成
$ ls -il file* ↵ *は任意の文字でfileで始まるfileやfile1やfile3などをリスト
559793 -rwxr-xr-x 2 root root 12428 5月 31 2007 file コピーされたファイル
360502 lrwxrwxrwx 1 root root 4 2月 9 04:55 file3 -> file-rwxr-xr-x 1
9. 管理disk的command
9.1 文件系统的修复和检测 fsck
fsck デバイス名
- 实例: check harddisk
# fsck /dev/sda3 ↵
9.2 确认文件夹的容量
du [ディレクトリ] [ファイル]
1. -s 显示总计