Situacija sleduju6aja:freebsd53_2# uname -r
5.3-RELEASE
freebsd53_2# cat /etc/rc.conf | grep swap
swapfile="/tmp/swap" # Set to name of swapfile if aux swapfile desired.
swapoff="YES" # Remove swap partitions upon shutdownTak vot pri perehode iz multiuser v single user rezim swap particii, kotorije
bili dobavleni v sistemu ispolzuja swapfile zna4enije v /etc/rc.conf faile
ostajutca. Swap particii, kotorije registrirujutca v sisteme ispolzuja /etc/fstab
fail mozno ubrat pri prehode v single user rezim prisvoiv swapoff peremennoi
zna4enije YES v faile /etc/rc.conf.
Pri obratnom perehode iz single user rezima v miltiuser rezim i pri uslovii 4to
zna4enije swapfile ne ravno NO, v sisteme povtorno registrirjetca/dobavlajetca e6e
odna swap particija dla odnogo i togo-ze faila. V takom slu4aje summarnij razmer sveh
swap particij v sisteme neveren da i kadznij raz ispolzujetca novoje md(4) ustroistvo.Multiuser:
freebsd53_2# swapctl -l
Device: 1024-blocks Used:
/dev/ad0s1b 299848 0
/dev/md1 30720 0
Multiuser -> Single user:
# swapctl -l
Device: 512-blocks Used:
/dev/md1 61440 0Single user -> Multiuser:
freebsd53_2# swapctl -sl
Device: 1024-blocks Used:
/dev/md1 30720 0
/dev/md2 30720 0
/dev/ad0s1b 299848 0
Total: 361288 0Mne kazetca eto ne sovsem vernim povedenijem.Hotja vozmozno ja 4to-to nepravilno ponal
v nastroikah, odnako dobitca togo, 4tobi "uborka" swap particij proishodila s ispolzovanijem
originalnih sredstv mne ne udalos. Posemu ja vnes nebol6ije izmenenija v start/stop skripti.
Hotel bi usli6at mnenije nadora po etomu povodu.freebsd53_2# cat /root/addswap.patch
--- addswap Sat Nov 27 23:31:00 2004
***************
*** 14,20 ****
name="addswap"
start_cmd="addswap_start"
! stop_cmd=":"
addswap_start()
{
--- 14,20 ----
name="addswap"
start_cmd="addswap_start"
! stop_cmd="addswap_stop"
addswap_start()
{
*************** addswap_start()
*** 26,31 ****
--- 26,48 ----
echo "Adding ${swapfile} as additional swap"
mdev=`mdconfig -a -t vnode -f ${swapfile}` && swapon /dev/${mdev}
fi
+ ;;
+ esac
+ }
+
+
+ addswap_stop()
+ {
+ case ${swapfile} in
+ [Nn][Oo] | '')
+ ;;
+ *)
+ for i in `swapctl -l | grep '^/dev/md[0-9]*' | cut -d ' ' -f 1 -`; do
+ echo "Removing ${swapfile} as additional swap"
+ swapoff ${i}
+ unit=`echo ${i} | sed 's/\/dev\/md//'`
+ mdconfig -d -u ${unit}
+ done
;;
esac
}
freebsd53_2# cat /root/swap1.patch
--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
***************
*** 13,19 ****
name="swap1"
stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
start_cmd='swapon -a'
! stop_cmd='swapoff -a'
load_rc_config swap
run_rc_command "$1"
--- 13,27 ----
name="swap1"
stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
start_cmd='swapon -a'
! stop_cmd='swap1_stop'
!
! swap1_stop()
! {
!
! swapoff -a
! /etc/rc.d/addswap stop
!
! }
load_rc_config swap
run_rc_command "$1"
freebsd53_2# chmod 755 addswap swap1
freebsd53_2# patch < /root/addswap.patch
Hmm... Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|--- addswap Sat Nov 27 23:31:00 2004
--------------------------
Patching file addswap using Plan A...
Hunk #1 succeeded at 14.
Hunk #2 succeeded at 26.
done
freebsd53_2# patch < /root/swap1.patch
Hmm... Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
--------------------------
Patching file swap1 using Plan A...
Hunk #1 succeeded at 13.
done
freebsd53_2# chmod 555 addswap swap1
freebsd53_2# mv addswap.orig swap1.orig /root/
freebsd53_2# ls -l addswap swap1
-r-xr-xr-x 1 root wheel 862 Sep 3 00:13 addswap
-r-xr-xr-x 1 root wheel 432 Sep 3 00:13 swap1Multiuser:
freebsd53_2# swapctl -l
Device: 1024-blocks Used:
/dev/ad0s1b 299848 0
/dev/md1 30720 0
Multiuser -> Single user:
# swapctl -l
Device: 512-blocks Used:Single user -> Multiuser:
freebsd53_2# swapctl -sl
Device: 1024-blocks Used:
/dev/ad0s1b 299848 0
/dev/md0 30720 0
Total: 330568 0
P.S. Srazu izvinajus za translit.
>Situacija sleduju6aja:
>
>freebsd53_2# uname -r
>5.3-RELEASE
>freebsd53_2# cat /etc/rc.conf | grep swap
>swapfile="/tmp/swap"
># Set to name of swapfile if aux swapfile desired.
>swapoff="YES" #
>Remove swap partitions upon shutdown
>
>Tak vot pri perehode iz multiuser v single user rezim swap particii,
>kotorije
>bili dobavleni v sistemu ispolzuja swapfile zna4enije v /etc/rc.conf faile
>ostajutca. Swap particii, kotorije registrirujutca v sisteme ispolzuja /etc/fstab
>fail mozno ubrat pri prehode v single user rezim prisvoiv swapoff peremennoi
>
>zna4enije YES v faile /etc/rc.conf.
>Pri obratnom perehode iz single user rezima v miltiuser rezim i pri
>uslovii 4to
>zna4enije swapfile ne ravno NO, v sisteme povtorno registrirjetca/dobavlajetca e6e
>odna swap particija dla odnogo i togo-ze faila. V takom slu4aje summarnij
>razmer sveh
>swap particij v sisteme neveren da i kadznij raz ispolzujetca novoje md(4)
>ustroistvo.
>
>Multiuser:
>freebsd53_2# swapctl -l
>Device: 1024-blocks
>Used:
>/dev/ad0s1b 299848
> 0
>/dev/md1 30720
> 0
>
>Multiuser -> Single user:
># swapctl -l
>Device: 512-blocks
> Used:
>/dev/md1 61440
> 0
>
>Single user -> Multiuser:
>freebsd53_2# swapctl -sl
>Device: 1024-blocks
>Used:
>/dev/md1 30720
> 0
>/dev/md2 30720
> 0
>/dev/ad0s1b 299848
> 0
>Total: 361288
> 0
>
>Mne kazetca eto ne sovsem vernim povedenijem.Hotja vozmozno ja 4to-to nepravilno ponal
>
>v nastroikah, odnako dobitca togo, 4tobi "uborka" swap particij proishodila s ispolzovanijem
>
>originalnih sredstv mne ne udalos. Posemu ja vnes nebol6ije izmenenija v start/stop
>skripti.
>Hotel bi usli6at mnenije nadora po etomu povodu.
>
>freebsd53_2# cat /root/addswap.patch
>--- addswap Sat Nov 27 23:31:00 2004
>
>***************
>*** 14,20 ****
>
> name="addswap"
> start_cmd="addswap_start"
>! stop_cmd=":"
>
> addswap_start()
> {
>--- 14,20 ----
>
> name="addswap"
> start_cmd="addswap_start"
>! stop_cmd="addswap_stop"
>
> addswap_start()
> {
>*************** addswap_start()
>*** 26,31 ****
>--- 26,48 ----
>
>
> echo "Adding ${swapfile} as additional swap"
>
>
> mdev=`mdconfig -a -t vnode -f ${swapfile}` && swapon /dev/${mdev}
>
> fi
>+
> ;;
>+ esac
>+ }
>+
>+
>+ addswap_stop()
>+ {
>+ case ${swapfile} in
>+ [Nn][Oo] | '')
>+
> ;;
>+ *)
>+
> for i in `swapctl -l | grep '^/dev/md[0-9]*'
>| cut -d ' ' -f 1 -`; do
>+
>
>echo "Removing ${swapfile} as additional swap"
>+
>
>swapoff ${i}
>+
>
>unit=`echo ${i} | sed 's/\/dev\/md//'`
>+
>
>mdconfig -d -u ${unit}
>+
> done
>
> ;;
> esac
> }
>freebsd53_2# cat /root/swap1.patch
>--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
>***************
>*** 13,19 ****
> name="swap1"
> stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
> start_cmd='swapon -a'
>! stop_cmd='swapoff -a'
>
> load_rc_config swap
> run_rc_command "$1"
>--- 13,27 ----
> name="swap1"
> stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
> start_cmd='swapon -a'
>! stop_cmd='swap1_stop'
>!
>! swap1_stop()
>! {
>!
>! swapoff -a
>! /etc/rc.d/addswap stop
>!
>! }
>
> load_rc_config swap
> run_rc_command "$1"
>freebsd53_2# chmod 755 addswap swap1
>freebsd53_2# patch < /root/addswap.patch
>Hmm... Looks like a new-style context diff to me...
>The text leading up to this was:
>--------------------------
>|--- addswap Sat Nov 27 23:31:00 2004
>--------------------------
>Patching file addswap using Plan A...
>Hunk #1 succeeded at 14.
>Hunk #2 succeeded at 26.
>done
>freebsd53_2# patch < /root/swap1.patch
>Hmm... Looks like a new-style context diff to me...
>The text leading up to this was:
>--------------------------
>|--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
>--------------------------
>Patching file swap1 using Plan A...
>Hunk #1 succeeded at 13.
>done
>freebsd53_2# chmod 555 addswap swap1
>freebsd53_2# mv addswap.orig swap1.orig /root/
>freebsd53_2# ls -l addswap swap1
>-r-xr-xr-x 1 root wheel 862 Sep 3 00:13
>addswap
>-r-xr-xr-x 1 root wheel 432 Sep 3 00:13
>swap1
>
>Multiuser:
>freebsd53_2# swapctl -l
>Device: 1024-blocks
>Used:
>/dev/ad0s1b 299848
> 0
>/dev/md1 30720
> 0
>
>Multiuser -> Single user:
># swapctl -l
>Device: 512-blocks
> Used:
>
>Single user -> Multiuser:
>freebsd53_2# swapctl -sl
>Device: 1024-blocks
>Used:
>/dev/ad0s1b 299848
> 0
>/dev/md0 30720
> 0
>Total: 330568
> 0
>
>
>P.S. Srazu izvinajus za translit.
так все дело в том что это BSD а не SYSV, загрузка в single-user mode
и переход в single-user mode НЕ РАВНЫ!
Поэтому и скрипт честно отрабатывает, потому как swap удаляется при
shutdown'е, а не при переходе в single-user mode (если я правильно
понял). Посмотри как init в БСДЯХ отрабатывает, возможно лучше rc.local
и rc.conf.local задействовать для проверки наличия swap? Посмотри для
этого init.
>>Situacija sleduju6aja:
>>
>>freebsd53_2# uname -r
>>5.3-RELEASE
>>freebsd53_2# cat /etc/rc.conf | grep swap
>>swapfile="/tmp/swap"
>># Set to name of swapfile if aux swapfile desired.
>>swapoff="YES" #
>>Remove swap partitions upon shutdown
>>
>>Tak vot pri perehode iz multiuser v single user rezim swap particii,
>>kotorije
>>bili dobavleni v sistemu ispolzuja swapfile zna4enije v /etc/rc.conf faile
>>ostajutca. Swap particii, kotorije registrirujutca v sisteme ispolzuja /etc/fstab
>>fail mozno ubrat pri prehode v single user rezim prisvoiv swapoff peremennoi
>>
>>zna4enije YES v faile /etc/rc.conf.
>>Pri obratnom perehode iz single user rezima v miltiuser rezim i pri
>>uslovii 4to
>>zna4enije swapfile ne ravno NO, v sisteme povtorno registrirjetca/dobavlajetca e6e
>>odna swap particija dla odnogo i togo-ze faila. V takom slu4aje summarnij
>>razmer sveh
>>swap particij v sisteme neveren da i kadznij raz ispolzujetca novoje md(4)
>>ustroistvo.
>>
>>Multiuser:
>>freebsd53_2# swapctl -l
>>Device: 1024-blocks
>>Used:
>>/dev/ad0s1b 299848
>> 0
>>/dev/md1 30720
>> 0
>>
>>Multiuser -> Single user:
>># swapctl -l
>>Device: 512-blocks
>> Used:
>>/dev/md1 61440
>> 0
>>
>>Single user -> Multiuser:
>>freebsd53_2# swapctl -sl
>>Device: 1024-blocks
>>Used:
>>/dev/md1 30720
>> 0
>>/dev/md2 30720
>> 0
>>/dev/ad0s1b 299848
>> 0
>>Total: 361288
>> 0
>>
>>Mne kazetca eto ne sovsem vernim povedenijem.Hotja vozmozno ja 4to-to nepravilno ponal
>>
>>v nastroikah, odnako dobitca togo, 4tobi "uborka" swap particij proishodila s ispolzovanijem
>>
>>originalnih sredstv mne ne udalos. Posemu ja vnes nebol6ije izmenenija v start/stop
>>skripti.
>>Hotel bi usli6at mnenije nadora po etomu povodu.
>>
>>freebsd53_2# cat /root/addswap.patch
>>--- addswap Sat Nov 27 23:31:00 2004
>>
>>***************
>>*** 14,20 ****
>>
>> name="addswap"
>> start_cmd="addswap_start"
>>! stop_cmd=":"
>>
>> addswap_start()
>> {
>>--- 14,20 ----
>>
>> name="addswap"
>> start_cmd="addswap_start"
>>! stop_cmd="addswap_stop"
>>
>> addswap_start()
>> {
>>*************** addswap_start()
>>*** 26,31 ****
>>--- 26,48 ----
>>
>>
>> echo "Adding ${swapfile} as additional swap"
>>
>>
>> mdev=`mdconfig -a -t vnode -f ${swapfile}` && swapon /dev/${mdev}
>>
>> fi
>>+
>> ;;
>>+ esac
>>+ }
>>+
>>+
>>+ addswap_stop()
>>+ {
>>+ case ${swapfile} in
>>+ [Nn][Oo] | '')
>>+
>> ;;
>>+ *)
>>+
>> for i in `swapctl -l | grep '^/dev/md[0-9]*'
>>| cut -d ' ' -f 1 -`; do
>>+
>>
>>echo "Removing ${swapfile} as additional swap"
>>+
>>
>>swapoff ${i}
>>+
>>
>>unit=`echo ${i} | sed 's/\/dev\/md//'`
>>+
>>
>>mdconfig -d -u ${unit}
>>+
>> done
>>
>> ;;
>> esac
>> }
>>freebsd53_2# cat /root/swap1.patch
>>--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
>>***************
>>*** 13,19 ****
>> name="swap1"
>> stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
>> start_cmd='swapon -a'
>>! stop_cmd='swapoff -a'
>>
>> load_rc_config swap
>> run_rc_command "$1"
>>--- 13,27 ----
>> name="swap1"
>> stop_precmd='checkyesno swapoff || [ -n "$rc_force" ]'
>> start_cmd='swapon -a'
>>! stop_cmd='swap1_stop'
>>!
>>! swap1_stop()
>>! {
>>!
>>! swapoff -a
>>! /etc/rc.d/addswap stop
>>!
>>! }
>>
>> load_rc_config swap
>> run_rc_command "$1"
>>freebsd53_2# chmod 755 addswap swap1
>>freebsd53_2# patch < /root/addswap.patch
>>Hmm... Looks like a new-style context diff to me...
>>The text leading up to this was:
>>--------------------------
>>|--- addswap Sat Nov 27 23:31:00 2004
>>--------------------------
>>Patching file addswap using Plan A...
>>Hunk #1 succeeded at 14.
>>Hunk #2 succeeded at 26.
>>done
>>freebsd53_2# patch < /root/swap1.patch
>>Hmm... Looks like a new-style context diff to me...
>>The text leading up to this was:
>>--------------------------
>>|--- /etc/rc.d/swap1 Sat Nov 27 23:33:17 2004
>>--------------------------
>>Patching file swap1 using Plan A...
>>Hunk #1 succeeded at 13.
>>done
>>freebsd53_2# chmod 555 addswap swap1
>>freebsd53_2# mv addswap.orig swap1.orig /root/
>>freebsd53_2# ls -l addswap swap1
>>-r-xr-xr-x 1 root wheel 862 Sep 3 00:13
>>addswap
>>-r-xr-xr-x 1 root wheel 432 Sep 3 00:13
>>swap1
>>
>>Multiuser:
>>freebsd53_2# swapctl -l
>>Device: 1024-blocks
>>Used:
>>/dev/ad0s1b 299848
>> 0
>>/dev/md1 30720
>> 0
>>
>>Multiuser -> Single user:
>># swapctl -l
>>Device: 512-blocks
>> Used:
>>
>>Single user -> Multiuser:
>>freebsd53_2# swapctl -sl
>>Device: 1024-blocks
>>Used:
>>/dev/ad0s1b 299848
>> 0
>>/dev/md0 30720
>> 0
>>Total: 330568
>> 0
>>
>>
>>P.S. Srazu izvinajus za translit.
>
>
>так все дело в том что это BSD а не SYSV, загрузка
>в single-user mode
>и переход в single-user mode НЕ РАВНЫ!
> Поэтому и скрипт честно отрабатывает, потому как swap удаляется при
>shutdown'е, а не при переходе в single-user mode (если я правильно
>понял). Посмотри как init в БСДЯХ отрабатывает, возможно лучше rc.local
>и rc.conf.local задействовать для проверки наличия swap? Посмотри для
>этого init.Razli4ija BSD i SYSV eto ponatno. Onado neponatno drugoje:
1. Esli ispolzovat swapoff="YES" v /etc/rc.conf, togda pri perehode i single user swap particija 4estno "udalajetca", NO ostajutca swap
particii, kotorije bili dobalveni ispolzuja parametr swapfile="<file>"
v /etc/rc.conf ili ispolzuja dd->mdconfig->swapon podhod. Po mojemu
v slu4aje ispolzovanija swapoff="YES" dolzni udalatca vse swap particii
kotorije jest v sisteme
2. Pri obratnom perehode v multiuser i esli vistavle parametr swapfile
v sistemu vnov dobavlajetca mdx ustroistvo, kotoroje svazano s failom
i kotoroje registrirujetca kak swap file. V takom slu4aje jesli pri
perehode multiuser->Sinlgle user predidu6eje md ustroistvo ne ubirajetca
i pri perehode single->multiuser dobavlajetca e6e odno, pri4em oni oba
associirovani s odnim failom, to ob6ij razmer swap pamjati dostupnogo
sisteme neveren, ili po krainei mere on swapinfo pokavivajet ego neverno.