linux下的磁盤和文件系統管理

一.硬盤分區知識node

 1.分區類型linux

 硬盤分區一共有3種:主分區、擴展分區和邏輯分區。擴展分區只不過是邏輯分區的「容器」,實際上只有主分區和邏輯分區進行數據存儲。在一塊硬盤上最多隻能有4個主分區,能夠另外創建一個擴展分區來代替4個主分區的其中一個,而後在擴展分區下能夠創建更多的邏輯分區。shell

2.分區和格式化異步

       不一樣的操做系統具備不一樣的硬盤分區工具,Windows系統下很是有名的分區工具是FDISK,在LINUX系統下進行分區可使用fdisk,或者使用相同功能的圖形界面程序。async

     在一塊硬盤上最多隻能有4個分區,編輯器

      經過分區固然不能產生任何文件系統。在分區以後只是對硬盤上的磁盤空間進行了保留,還不能直接使用。在此以後分區必需要進行格式化。在Windows系統下能夠經過資源管理器下的文件菜單或者format程序來執行,在Linux系統下大多使用mkfs命令來完成。Linux支持不一樣的文件系統,應用最普遍的是ext3。ide

注意:進行任何磁盤分區或大小改動工做,都會丟失之前的數據,所以在分區以前必定要對數據進行備份。工具

二.使用fdisk進行硬盤分區ui

     Linux系統使用fdisk命令能將磁盤劃分紅爲若干個區,同時也能爲每一個分區指定分區的文件系統,好比ext2,ext3,FAT32,SWAP,FAT16以及其餘類UNIX操做系統的文件系統等。this

1.fdisk的介紹

使用fdisk命令能夠對磁盤進行分區。

[root@redhat2 ~]# fdisk

Usage:

 fdisk [options] <disk>    change partition table

 fdisk [options] -l <disk> list partition table(s)

 fdisk -s <partition>      give partition size(s) in blocks

Options:

 -b <size>                 sector size (512, 1024, 2048 or 4096)

 -c                        switch off DOS-compatible mode

 -h                        print help

 -u <size>                 give sizes in sectors instead of cylinders

 -v                        print version

 -C <number>               specify the number of cylinders

 -H <number>               specify the number of heads

 -S <number>               specify the number of sectors per track

[root@redhat2 ~]#

 2.Linux系統下硬盤分區舉例

  下面以實例的方式講述Linux系統下建立、刪除、查看分區以及轉換分區的文件系統。

(1).進入fdisk界面,列出全部命令。

[root@redhat2 ~]# 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 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):

(2)顯示硬盤分區信息

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 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: 0x0003827d

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          39      307200   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              39         439     3211264   82  Linux swap / Solaris

Partition 2 does not end on cylinder boundary.

/dev/sda3             439        3917    27937792   83  Linux

Command (m for help):

(3).在非交互式界面下顯示當前硬盤的分區信息。

[root@redhat2 ~]# fdisk -l /dev/sda

Disk /dev/sda: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 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: 0x0003827d

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          39      307200   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              39         439     3211264   82  Linux swap / Solaris

Partition 2 does not end on cylinder boundary.

/dev/sda3             439        3917    27937792   83  Linux

[root@redhat2 ~]#

三.建立文件系統

   LINUX系統支持目前主流的文件系統,如VFAT,ext2,ext3,ReiserFS,ISO 9660和SWAP交換分區等。若是在計算機上新增長了一塊硬盤,須要格式化成Linux的文件系統,

最好選擇reiserfs或ext3文件系統。

  若是須要使用某個文件系統存放數據,通常要通過如下操做步驟。

(1)使用fdisk命令在硬盤上建立分區。

(2)使用mkfs命令在分區上建立文件系統。

(3)使用mount命令掛載文件系統,或是修改/etc/fstab文件使得開機自動掛載文件系統。

(4)使用umount卸載文件系統。

1.查看系統上的磁盤

[root@redhat2 ~]# ls -l /dev/sd*

brw-rw---- 1 root disk 8,  0 Jan 17 06:14 /dev/sda

brw-rw---- 1 root disk 8,  1 Jan 17 06:14 /dev/sda1

brw-rw---- 1 root disk 8,  2 Jan 17 06:14 /dev/sda2

brw-rw---- 1 root disk 8,  3 Jan 17 06:14 /dev/sda3

brw-rw---- 1 root disk 8, 16 Jan 17 06:14 /dev/sdb

[root@redhat2 ~]#

2.使用mkfs命令建立文件系統

  使用mkfs命令能夠在分區上創建各類文件系統。

[root@redhat2 ~]# mkfs

Usage: mkfs [-V] [-t fstype] [fs-options] device [size]

[root@redhat2 ~]#

例1:使用mkfs命令建立文件系統。

(1) 查看當前磁盤上的分區狀況,該分別是sda和sdb。

[root@redhat2 ~]# fdisk -l /dev/sda

Disk /dev/sda: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 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: 0x0003827d

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          39      307200   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              39         439     3211264   82  Linux swap / Solaris

Partition 2 does not end on cylinder boundary.

/dev/sda3             439        3917    27937792   83  Linux

[root@redhat2 ~]#

------------------------------------------------------------

[root@redhat2 ~]# fdisk -l /dev/sdb

[root@redhat2 ~]#

//能夠看出sdb盤沒有任何分區

(2). 格式化/dev/sdb分區,建立ext3文件系統

[root@redhat2 ~]# mkfs -t ext3 /dev/sdb

mke2fs 1.41.12 (17-May-2010)

/dev/sdb is entire device, not just one partition!

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

327680 inodes, 1310720 blocks

65536 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1342177280

40 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912, 819200, 884736

 

Writing inode tables: done                           

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 23 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

四.掛載和卸載文件系統

1.掛載文件系統

   使用mount命令能夠將某個分區、光盤、軟盤或是U盤掛載到Linux系統的目錄下。

2.掛載硬盤

例:掛載分區/dev/sda3到/mnt/kk目錄中。

root@redhat2 ~]# mount /dev/sda3 /mnt/kk

[root@redhat2 ~]# cd /mnt/kk

[root@redhat2 kk]# ls

bin   dev  home  lib64       lvm    mnt  ora_tbs  root  selinux  sys  usr  yum

boot  etc  lib   lost+found  media  opt  proc     sbin  srv      tmp  var

[root@redhat2 kk]#

//使用df命令查看掛載的/dev/sda3分區的信息。

[root@redhat2 kk]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda3             27499388   5909764  20192736  23% /

tmpfs                   796140        88    796052   1% /dev/shm

/dev/sda1               297485     33069    249056  12% /boot

/dev/sda3             27499388   5909764  20192736  23% /mnt/kk

例2:以只讀方式掛載/dev/sdb分區到/mnt/kk目錄中。

[root@redhat2 ~]# mount -o ro /dev/sdb /mnt/kk

[root@redhat2 ~]# mkdir /mnt/kk/yang

mkdir: cannot create directory `/mnt/kk/yang': Read-only file system

3.卸載文件系統

[root@redhat2 ~]# umount /dev/sdb

[root@redhat2 ~]#

[root@redhat2 ~]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda3             27499388   5909732  20192768  23% /

tmpfs                   796140        88    796052   1% /dev/shm

/dev/sda1               297485     33069    249056  12% /boot

[root@redhat2 ~]#

//由上面能夠看出/dev/sdb已經卸載

4.查看分區掛載狀況

  要查看Linux系統分區掛載狀況,除了使用df命令以外,還能夠經過mount -s 命令以及/查看etc/mtab文件獲取信息。

(1).使用mount -s 命令

例:使用mount命令查看分區掛載狀況。

[root@redhat2 ~]# mount -s

/dev/sda3 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

(2).查看/etc/mtab文件

例:經過/etc/mtab文件查看分區掛載狀況。

[root@redhat2 ~]# cat /etc/mtab

/dev/sda3 / ext4 rw 0 0

proc /proc proc rw 0 0

sysfs /sys sysfs rw 0 0

devpts /dev/pts devpts rw,gid=5,mode=620 0 0

tmpfs /dev/shm tmpfs rw 0 0

/dev/sda1 /boot ext4 rw 0 0

none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

vmware-vmblock /var/run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,default_permissions,allow_other 0 0

[root@redhat2 ~]#

五.設置開機自動掛載文件系統

      將某個分區或是設備掛載了之後才能使用,可是當計算機從新啓動之後,又須要從新掛載,這個時候能夠經過修改/etc/fstab文件實現開機自動掛載文件系統。

1./etc/fstab文件簡介

  /etc/fstab文件是一個配置文件,它包含了全部分區以及存儲設備的信息。其中包含了磁盤分區和存儲設備如何掛載,以及掛載什麼地方的信息。

若是在Linux系統中不能訪問Windows的分區,或者做爲一名普通用戶,不能掛載光驅和向軟盤中寫入數據,或者在管理CD-RW的過程當中遇到了問題,就有多是錯誤地配置了/etc/fstab文件,一般能夠經過編輯/etc/fstab這個文件來解決前面提到的問題。

/etc/fstab文件是一個簡單的文本文件,能夠用任何文本編輯器去編輯它,可是必需要以root用戶登陸才能夠編輯該文件。

2./etc/fstab文件詳解

 因爲每臺計算機系統的分區和設備屬性不一樣,因此/etc/fstab文件也不癢,可是基本的結構老是類似的。下面就是/etc/fstab文件北榮的一個示例。

[root@redhat2 ~]# cat /etc/fstab

# /etc/fstab

# Created by anaconda on Mon Jun  2 13:54:22 2014

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=e49f5ee2-2691-4d26-8359-f1f1624a01df /                       ext4    defaults        1 1

UUID=a717290f-db0b-403e-9649-2a26e4ab8e76 /boot                   ext4    defaults        1 2

UUID=ebe91f80-8f5b-4813-a622-f158a9a0874b swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

[root@redhat2 ~]#

每1行包含着1個設備或分區的信息,每1行又有多個列的信息。第一列是設備名,第2列是它的掛載點,第3列是它的文件系統格式,第4是掛載參數,第5列是轉存選項,第6列是文件系統檢查選項。

 下面詳細講解/etc/fstab文件的具體構成。

(1).設備和默認掛載目錄

  第1列和第2列的內容是設備和默認掛載點。Linux系統爲每一個設備或分區都設定了掛載目錄,通常選擇在/mnt目錄下建立掛載點。當Linux系統啓動時,這些分區和設備一樣會被自動地掛載。

(2).文件系統格式

   第3列指定了設備和分區的文件系統格式。

(3).掛載選項

  第4列列出了對於每個設備或者分區的全部掛載選項。

❶auto和noauto

  經過使用auto選項,設備會在系統啓動時自動掛載,auto是默認選項,若是不但願某些設備自動被掛載,在/etc/fstab的對應地方把auto選項改成noauto便可。經過使用noauto選項,能夠在須要的時候才掛載設備。

❷user和nouser

   user選項容許通常用戶掛載設備,然而noauto選項僅容許讓root用戶掛載設備。noauto是默認選項,主要是在於防止新用戶的越權行爲。若是通常用戶不能掛載本身的cdrom,floppy及Windows分區等,能夠在/etc/fstab裏邊加入user選項。

❸exec和noexec

  exec選項容許執行被設爲exec分區上的二進制文件,然而noexec選項卻不容許這樣作,exec是默認的選項。

❹ro

    ro選項是以可讀可寫方式掛載文件系統。

❺rw

   rw選項是以可讀可寫方式掛載文件系統。

❻sync和async

   這兩個選項指出了文件系統的I/O將以何種方式進行,sync表示I/O將會同步進行。例如,複製一個文件到軟盤時,那些改變將會在執行命令的同時物理性地寫入到軟盤中。

 當使用async選項時,I/O將會被異步執行,這時當複製一個文件到軟盤中時,用戶所作的改變會在命令執行後的較長時間後才被物理性地寫入軟盤中。

❼defaults

使用此選項與使用rw,suid,dev,exec,auto,nouser,async選項時同樣的功能。

六.使用交換空間

 1.添加交換空間

 有時,用戶須要在安裝Linux系統後添加更多的交換空間。用戶能夠添加一個交換分區或添加一個交換文件,推薦使用添加一個交換分區。交換空間能夠是一個專用的交換分區,也能夠是一個交換文件,或是二者的結合。交換空間總的大小至少爲計算機內存的1~2倍左右,可是它最好不要超過2GB容量。

2.添加交換分區

例1:添加交換分區

❶建立交換分區。

 使用fdisk命令已經建立好分區/dev/sdb,假設將分區/dev/sdb建立爲交換(SWAP)分區,在SHELL提示下以root用戶身份輸入如下命令。

[root@redhat2 ~]# mkswap /dev/sdb

mkswap: /dev/sdb: warning: don't erase bootbits sectors

        on whole disk. Use -f to force.

Setting up swapspace version 1, size = 5242876 KiB

no label, UUID=e71d426d-3e73-4db1-834b-7ebbe477bf20

//將/dev/sdb分區建立爲交換分區

[root@redhat2 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1592280     338744    1253536          0      25484     142940

-/+ buffers/cache:     170320    1421960

Swap:      3211256          0    3211256

[root@redhat2 ~]#

//由於當前尚未啓動交換分區,因此使用free命令沒法看到。

❷啓用交換分區。

 輸入如下命令啓用交換分區/dev/sdb。

[root@redhat2 ~]# swapon /dev/ssdb

[root@redhat2 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1592280     342712    1249568          0      25568     142956

-/+ buffers/cache:     174188    1418092

Swap:      8454128          0    8454128

[root@redhat2 ~]#

//由於當前已經啓動了交換分區/dev/sdb因此總的交換分區容量已經增長了

❸確認已經啓用交換分區。

    建立並啓用了交換分區以後,使用以下命令查看交換分區是否已啓用。

[root@redhat2 ~]# cat /proc/swaps

Filename                                Type            Size    Used    Priority

/dev/sda2                               partition       3211256 0       -1

/dev/sdb                                partition       5242872 0       -2

[root@redhat2 ~]#

//能夠看到當前計算機的SWAP分區由/dev/sda2和/dev/sdb這兩個分區構成

❹若是要在系統引導時啓用交換分區,編輯/etc/fstab文件添加以下內容。而後在系統下次引導時,就會啓用新建的交換分區。

/dev/sdb                                                           swap                     swap           defaults        0              0

 3.添加交換文件

❶建立文件/swapfile

     將大小乘以1024來斷定塊的大小。例如,大小爲68MB的交換文件的塊大小爲65536。

     在shell提示下以root用戶身份輸入如下命令,其中的count等於想要輸入的塊大小。

[root@redhat2 ~]# dd if=/dev/zero of=/swapfile bs=1024 count=66536

66536+0 records in

66536+0 records out

68132864 bytes (68 MB) copied, 0.816242 s, 83.5 MB/s

[root@redhat2 ~]# ls /

bin   etc   lib64       media  ora_tbs  sbin     swapfile  usr

boot  home  lost+found  mnt    proc     selinux  sys       var

dev   lib   lvm         opt    root     srv      tmp       yum

[root@redhat2 ~]#

//在「/」目錄下能夠看到文件swapfile

❷建立交換文件。

   使用如下命令建立交換文件。

[root@redhat2 ~]# mkswap /swapfile

mkswap: /swapfile: warning: don't erase bootbits sectors

        on whole disk. Use -f to force.

Setting up swapspace version 1, size = 66532 KiB

no label, UUID=d9ba8642-e1df-4e68-a2fe-b3a2a656cd0c

[root@redhat2 ~]#

❸啓用交換文件。

  使用以下命令啓用交換文件。

 [root@redhat2 ~]# swapon /swapfile

❹新添加了交換分區並啓用它以後,使用以下命令確保交換文件已被啓用了。

[root@redhat2 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1592280     612556     979724          0      55060     342040

-/+ buffers/cache:     215456    1376824

Swap:      8520656          0    8520656

[root@redhat2 ~]#

[root@redhat2 ~]# cat /proc/swaps

Filename                                Type            Size    Used    Priority

/dev/sda2                               partition       3211256 0       -1

/dev/sdb                                partition       5242872 0       -2

/swapfile                               file            66528   0       -3

[root@redhat2 ~]#

❺若是要在系統引導時啓用交換文件,編輯/etc/fstab文件添加以下內容。而後在系統下次引導時,就會啓用新建的交換文件。

          /swapfile                             swap                      swap  defaults               0             0

4.刪除交換空間

 當某個交換分區或交換文件再也不須要時,可使用以下步驟將其刪除。

❶刪除交換分區

例:在shell提示下以root用戶身份輸入如下命令禁用交換分區(這裏的/dev/sdb是交換分區)。

[root@redhat2 ~]# swapoff /dev/sdb

[root@redhat2 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1592280     608828     983452          0      55232     342056

-/+ buffers/cache:     211540    1380740

Swap:      3277784          0    3277784

[root@redhat2 ~]#

若是要在系統引導時不啓用交換分區,編輯/etc/fstab文件刪除以下內容。而後在系統下次引導時,就不會啓用交換分區。

/dev/sdb                              swap                             swap                  defaults                     0       0

❷刪除交換文件

1).在shell提示下以root用戶身份執行如下命令來禁用交換文件(這裏的/swapfile是交換文件)。

[root@redhat2 ~]# swapoff /swapfile

[root@redhat2 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1592280     626392     965888          0      55312     342060

-/+ buffers/cache:     229020    1363260

Swap:      3211256          0    3211256

[root@redhat2 ~]#

2).刪除/swapfile文件。

輸入如下命令來刪除/swapfile文件。

[root@redhat2 ~]# rm -rf /swapfile

3).若是要在系統引導時不啓用交換文件,編輯/etc/fstab文件刪除以下內容。而後在系統下次引導時,就不會啓用交換文件。

/swapfile                     swap                                 swap                             defualts                     0                   0

相關文章
相關標籤/搜索