|
|
一台文件存储服务器单目录下子目录已经突破31998数限制,造成无法继续创建子目录,服务器系统环境为CentOS5.4 内核版本为2.6.18。解决方案只能是升级到ext4文件系统,首先到https://ext4.wiki.kernel.org/index.php/Ext4_Howto查了一下资料,文中的第一句便是“Ext4 was released as a functionally complete and stable filesystem in Linux 2.6.28”。难道只能升级内核一条路了吗?当然不是:)呵呵,下面总结本人实施/www分区从ext3升级至ext4步骤供大家参考。( A" w7 i0 W( F
# Y$ C* q/ c0 H0 g一、升级前状态
, V) @5 X' N D: |$ u Z引用
1 O. V: O8 o# K: e- r+ X/ B8 K& j) ~7 w9 y
[root@USER-SERVER ~]# df1 H- d: ~+ L( t/ h* l" R* H4 E
Filesystem 1K-blocks Used Available Use% Mounted on& A. l# w# d: j! i- N: z' {
/dev/sda2 20315844 2342008 16925196 13% /6 ~ `# |1 M% n5 A7 A* A1 Y/ e
/dev/sda5 129863460 192192 122968152 1% /www+ T$ _9 r- |1 Y; ~
/dev/sda1 194442 17798 166605 10% /boot
% T( v3 z! A9 b9 n! `$ }tmpfs 1029680 0 1029680 0% /dev/shm* j+ i6 [; q& e) i
- { M- q6 C( ]6 h2 n: e
& {( w. a5 n( k9 @. @8 U2 W
* C' ?" ?: b$ K- b7 p7 \无任何信息返回,说明/dev/sda5的ext4特征没有激活
. _$ D; J" h% g3 @引用 }6 Z1 P8 C( Q, M
# D; }( ^; ]* ]4 z! p$ t[root@USER-SERVER ~]# tune2fs -l /dev/sda5 | grep extent
2 P/ C* u$ u: V. R3 _* } ]* C! E% K[root@USER-SERVER ~]# - g9 v0 T* R$ ~% E/ g$ |
/ I! c' S% n# N p" h( h' I% e5 y9 U6 L
8 F8 x" j0 Q5 v) |
安装所需包
1 m( B! R( [# a0 |源码安装:/ j* k9 L$ Z: X" t, j% E
引用
& ?+ j9 Q+ Y/ r, e4 J* T
x( x( O+ g, J' ]4 l2 j! jwget http://ftp.kernel.org/pub/linux/ ... rogs-1.41.12.tar.gz
+ ]( |+ Y! ?+ p- xtar zxvf e2fsprogs-1.41.12.tar.gz; cd e2fsprogs-1.41.12
0 I7 e8 f% n3 g2 Q./configure
! h A1 @0 }3 d* o* @make;make install
, C" p" Z( G1 ?2 K
. z. G& H* V& A& W5 f2 N- b7 d& h; b2 |9 ]( N ?; j
$ V. ~/ M' `% y# ^RPM安装:
" H1 f) i Y- s5 i! ~引用0 {- s$ V; l6 j+ I- F# E
* G) e$ y9 a" ~) ]6 a' J) G
yum -y install e2fsprogs
5 Z+ W& n! l1 V1 L4 b9 }% B
: w- i W+ B _+ g9 Q( j9 w
6 T7 V: q6 h6 h; q. W# ]6 ]9 `* Z5 \ \3 m& w* e( B5 @7 a% A
, O, z( a( I& V a$ L二、制作引导镜像& `! h% z/ a' r4 t4 k
查找并加载相应的模块,如只需ext4支持,可将--with=ext3去掉
* b/ r* {8 N3 S# ^引用
, L0 E0 O( x$ w6 l- T9 y' u& f* z. j
[root@USER-SERVER boot]# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.old+ m9 @7 o% _( Z; h* m M# i! f
[root@USER-SERVER boot]# mkinitrd -v --with=ext4 --with=ext3 /boot/initrd-`uname -r`.img `uname -r`
* q2 x# h ~9 k. b3 BCreating initramfs
8 X$ O2 z6 O8 C4 \' {( `, ULooking for deps of module ehci-hcd
: N( K, N7 n, WLooking for deps of module ohci-hcd# ^; m7 {" `3 |3 D
Looking for deps of module uhci-hcd! P. Y' |( V9 V" h; c. I' k' A! m
Looking for deps of module ext3: jbd & A; O4 A# V" r' O( C7 f( g7 t& K
Looking for deps of module jbd
`2 f" R( W2 Y) O$ \, fFound root device sda2 for LABEL=/
r$ g8 F8 G6 {( U" H% \Looking for driver for device sda2
6 G s- R7 \8 iLooking for deps of module pci:v00008086d00002680sv000017AAsd00006B7Cbc01sc01i8f: scsi_mod libata ata_piix
& U: x, q h! D7 T; R$ F, P g9 BLooking for deps of module scsi_mod: w$ J' H* Y# m3 p! F: A! S( j
Looking for deps of module sd_mod: scsi_mod
+ B/ p2 H6 }+ i4 \! v: |/ NLooking for deps of module libata: scsi_mod 5 M7 \$ R& D8 G4 n- Z& ]
Looking for deps of module ata_piix: scsi_mod libata
3 K6 {. o; Q8 @: ~Looking for driver for device sda3+ Z+ \3 h/ t9 ]+ W' s* Z# V6 K
Looking for deps of module pci:v00008086d00002680sv000017AAsd00006B7Cbc01sc01i8f: scsi_mod libata ata_piix
/ p( [$ l3 J1 i* F! gLooking for deps of module usb-storage: scsi_mod 8 }( p4 B0 @! `5 ^+ U/ M* W5 J
Looking for deps of module ide-disk2 |- D+ R1 U+ E4 z% H
Looking for deps of module dm-mem-cache: \! g+ A& g( E; O7 Z
Looking for deps of module dm-region_hash: dm-mod dm-log
; ~' T9 f$ H& rLooking for deps of module dm-mod& V6 n. W" ?; F7 o5 j2 ?
Looking for deps of module dm-log: dm-mod # z& h4 _& Y+ L
Looking for deps of module dm-message, G$ p w h5 ]& F+ i
Looking for deps of module dm-raid45: dm-message dm-mod dm-mem-cache dm-log dm-region_hash R8 O& n* D3 |$ b- V! F+ p
Looking for deps of module ext4: crc16 jbd2 2 |+ H& ^+ K2 c7 `6 }6 y3 n1 `! t
Looking for deps of module crc169 c7 @! w9 m1 p" m# o" C- ^) M
Looking for deps of module jbd28 G# t R! b% }, K
Using modules: /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/ehci-hcd.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/ohci-hcd.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/uhci-hcd.ko /lib/modules/2.6.18-164.15.1.el5/kernel/fs/jbd/jbd.ko /lib/modules/2.6.18-164.15.1.el5/kernel/fs/ext3/ext3.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/scsi/scsi_mod.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/scsi/sd_mod.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/ata/libata.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/ata/ata_piix.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/storage/usb-storage.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-mem-cache.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-mod.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-log.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-region_hash.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-message.ko /lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-raid45.ko /lib/modules/2.6.18-164.15.1.el5/kernel/lib/crc16.ko /lib/modules/2.6.18-164.15.1.el5/kernel/fs/jbd2/jbd2.ko /lib/modules/2.6.18-164.15.1.el5/kernel/fs/ext4/ext4.ko
( m4 o1 b( `- O/sbin/nash -> /tmp/initrd.qO3680/bin/nash' o- ~* u/ E4 w; B$ [) | V1 \
/sbin/insmod.static -> /tmp/initrd.qO3680/bin/insmod
/ f, J9 _7 }( h8 ]copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/ehci-hcd.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/ehci-hcd.ko' [elf64-x86-64]& Y! u( `5 E3 m7 |
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/ohci-hcd.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/ohci-hcd.ko' [elf64-x86-64]+ J9 k( H3 g) Q( [
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/host/uhci-hcd.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/uhci-hcd.ko' [elf64-x86-64]% Y! R0 F4 R3 K& W5 E( R
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/fs/jbd/jbd.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/jbd.ko' [elf64-x86-64]
3 @) I; d& f$ P J ^copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/fs/ext3/ext3.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/ext3.ko' [elf64-x86-64]4 Q3 z0 |/ _. G m! E& k
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/scsi/scsi_mod.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/scsi_mod.ko' [elf64-x86-64] B1 T! _' g$ ?# e
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/scsi/sd_mod.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/sd_mod.ko' [elf64-x86-64]& [5 w! p, v" K/ E' j( G
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/ata/libata.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/libata.ko' [elf64-x86-64]
5 r3 j0 ~+ T0 h# Z* Y( m% ?) ~copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/ata/ata_piix.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/ata_piix.ko' [elf64-x86-64]6 U+ q/ }4 R7 m# j% W
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/usb/storage/usb-storage.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/usb-storage.ko' [elf64-x86-64] _* \6 K" Z: [6 Y
copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-mem-cache.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-mem-cache.ko' [elf64-x86-64]
# x9 @$ T! F2 p0 k g8 R' |copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-mod.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-mod.ko' [elf64-x86-64]
3 x$ f: h9 K7 u: X) Z) ncopy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-log.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-log.ko' [elf64-x86-64]
! Q3 E- c0 ^/ P. b% u) tcopy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-region_hash.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-region_hash.ko' [elf64-x86-64]
( [% w( g5 W8 O& X2 R( _copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-message.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-message.ko' [elf64-x86-64]
0 h/ j/ c! u' ^9 d0 ^* pcopy from `/lib/modules/2.6.18-164.15.1.el5/kernel/drivers/md/dm-raid45.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/dm-raid45.ko' [elf64-x86-64]
% q0 a4 T7 O3 ocopy from `/lib/modules/2.6.18-164.15.1.el5/kernel/lib/crc16.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/crc16.ko' [elf64-x86-64]
* q" Y" n# ^( g. Xcopy from `/lib/modules/2.6.18-164.15.1.el5/kernel/fs/jbd2/jbd2.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/jbd2.ko' [elf64-x86-64]
! }# S1 R ?3 G) {% H3 y' m. {copy from `/lib/modules/2.6.18-164.15.1.el5/kernel/fs/ext4/ext4.ko' [elf64-x86-64] to `/tmp/initrd.qO3680/lib/ext4.ko' [elf64-x86-64]7 O/ k; y2 A; ^/ q$ D# y
/sbin/dmraid.static -> /tmp/initrd.qO3680/bin/dmraid0 J( r I9 {! h& k( H
/sbin/kpartx.static -> /tmp/initrd.qO3680/bin/kpartx
4 u* _0 S! G, _& a6 v" @) eAdding module ehci-hcd7 t1 u7 i2 a6 Z, ` p+ \ ~
Adding module ohci-hcd- M2 s* x) j7 w
Adding module uhci-hcd" Q$ q& A5 O- v8 ?6 i
Adding module jbd
/ T" ?4 |3 ^. ^9 c* ?" _Adding module ext3* _1 m* \. W/ d' @: r! \
Adding module scsi_mod1 Q r( P" L6 X2 t
Adding module sd_mod
3 y: c* L; |' M+ bAdding module libata9 R# M, G! \3 y. a
Adding module ata_piix E* h _5 B1 ~: h5 O
Adding module usb-storage1 I. s4 m( [0 j* k- ^0 h* @
Adding module dm-mem-cache+ T; h. J: e- Z
Adding module dm-mod
8 {3 w5 m1 O5 z/ [1 cAdding module dm-log
) |+ G6 C$ t1 ^* V6 EAdding module dm-region_hash
# u" j$ U% I' ]% D7 aAdding module dm-message
1 K- w8 w( e- Q9 W4 {8 fAdding module dm-raid45. T. l( F- Q: q h6 Q7 V
Adding module crc16' } o: K6 {- t
Adding module jbd2) ]( o7 W6 ^. K* E% e/ Y+ o
Adding module ext4* B4 D# I0 ]( k! c7 {% |; X5 |8 q
6 [( O$ Y4 y- ]! u8 {
4 S v- {% q! z( b# @/ y* ~
& ]9 j, s7 ` m8 C$ c5 S& n
( r) J+ l6 J1 b* A# Q7 N重启; {9 G9 A$ `. A: D8 C. J6 Y
[root@USER-SERVER ~]# reboot
' _" S' _4 N( w: ]5 L7 d* ~& R+ \; V7 S+ i2 H& y+ F
三、格式转换6 h' z9 L- x1 t
[root@USER-SERVER ~]# umount /dev/sda5' r8 b) W I% B& c7 n% d
[root@USER-SERVER ~]# tune2fs -O has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize /dev/sda5
& [# }8 I, [7 |* l- D+ k引用6 {7 w) c! `3 r5 |
! o& [8 B( I" ?* c: Htune2fs 1.41.12 (17-May-2010)
/ s! N' L5 Q. S, N5 p8 \, aPlease run e2fsck on the filesystem.
7 M, g3 I" o5 `) n B* E* h# j1 V( j/ I8 m
% g: Y6 W' c* p* ?3 y
7 }( O9 i4 r, g
6 B3 g* v+ C U/ m
四、修改转换文件系统错误并挂载& ?0 S) n+ h( s- O
[root@USER-SERVER ~]# e2fsck -fDC0 /dev/sda5 -y/ j# u8 Y4 Y8 ]$ G, m; Z: |8 W
[root@USER-SERVER ~]# mount -t ext4 /dev/sda5 /www
0 y, O ?1 ?( O7 b% d" G1 |
' D+ S' r6 g+ i' A1 Z五、修改文件系统信息(重要!否则重启后会还原为ext3). m+ C8 O6 \, f
将
9 `! ~9 p+ v- @) g: a7 MLABEL=/www /www ext3 defaults 1 2+ x: m( C1 P0 U2 m! x% c2 f
修改为, Z9 k, x6 O) @. {
LABEL=/www /www ext4 defaults 1 2
+ I. v) n% W5 s[root@USER-SERVER ~]# vi /etc/fstab1 q" e6 H* r+ M6 k6 e5 m- m
引用5 ~+ ?/ g1 G. @0 {+ W
- O) V3 w7 Q" v( A; [* Z, hoot@USER-SERVER ~]# vi /etc/fstab Z. ?$ L8 x: `/ |1 ^
LABEL=/ / ext3 defaults 1 1
' C" t% O# n: gLABEL=/www /www ext4 defaults 1 29 J& m- A& O0 u0 o
LABEL=/boot /boot ext3 defaults 1 2 k: Q: `: L/ h) S X
tmpfs /dev/shm tmpfs defaults 0 0
- s) {7 i; g7 E5 ?+ F1 x% fdevpts /dev/pts devpts gid=5,mode=620 0 0( \$ n, U ^; {) J7 C1 w6 @8 W& f- g0 @
sysfs /sys sysfs defaults 0 0& {7 ?$ R. b" }2 G4 v1 L0 V) O
proc /proc proc defaults 0 0
( f3 x( `" q2 a! U! eLABEL=SWAP-sda3 swap swap defaults 0 0
& B( A2 l+ T: h. a, i- Q6 K0 F& V. D, R6 s) r) {
3 `4 \! s: R9 v4 p& `6 Q
" t. N, A/ ~: O; r$ q0 n- k2 [$ h" O3 T
六、升级后状态4 {. J5 G) P4 F' f
ext4的特征全激活了:)
' r% [' z- {; d; R" `2 Q3 M#[root@USER-SERVER ~]# tune2fs -l /dev/sda5 | grep extent
8 c7 [# t: n2 W& A0 s/ o% L引用' F8 z# k3 c+ s) b
- ~7 _; D/ n& P& c, m4 YFilesystem features: has_journal resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize% U. N7 f& Q' \$ t
. ?( C( f6 L+ s6 O+ _- K2 D4 e" T# W2 P0 @1 Y
) B1 `# I2 o+ Q w5 Q' G. j
[root@USER-SERVER ~]# df -T
0 W. W' U5 g0 _/ q引用
& G/ D9 F4 p, X* v5 W$ k$ _# D5 n4 t/ m+ L; L8 f; R, W! f
Filesystem Type 1K-blocks Used Available Use% Mounted on4 n. e3 g* K0 f: q$ g6 J# H; M
/dev/sda2 ext3 20315844 2310764 16956440 12% /
+ B* E4 D ]# W9 v/dev/sda1 ext3 194442 20563 163840 12% /boot( Q8 o9 N( D# [3 d. k, ?% O; D
tmpfs tmpfs 1029672 0 1029672 0% /dev/shm
( U/ W; i) q, x. ~2 y( b/dev/sda5 ext4 129863460 192192 122968152 1% /www2 u* U# m' x1 z, V
* j) C8 ~# E1 B9 ~
- `! p c% h5 B9 q+ A3 E( A
|
|