42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Americký výrobce čipů Intel plánuje propustit více než 20 procent zaměstnanců. Cílem tohoto kroku je zjednodušit organizační strukturu ve firmě, která se potýká s problémy.
Byla vydána OpenMandriva Lx 6.0 s kódovým názvem Vanadium. Přehled novinek v poznámkách k vydání.
CSIRT.CZ, český národní CERT provozovaný na základě veřejnoprávní správní smlouvy společností CZ.NIC, shrnuje patnáct let svého fungování pod tímto sdružením: CSIRT.CZ – 15 let ve sdružení CZ.NIC.
Commodore OS Vision (Wikipedie) byl vydán v nové verzi 3.0. Jedná se o linuxovou distribuci určenou pro fanoušky značky Commodore. Předinstalována je na počítačích Commodore 64x.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 208. brněnský sraz, který proběhne v pátek 25. dubna od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1.
Ve svém článku Getting Forked by Microsoft popisuje autor programu Spegel svoji nepříjemnou zkušenost s firmou Microsoft. Firma ho kontaktovala a zpočátku to vypadalo, že by mohlo jít o oboustranně prospěšnou spolupráci, autor tedy ochotně odpovídal na jejich otázky ohledně architektury programu a pomáhal jim ho zprovoznit. Následně komunikace ze strany Microsoftu utichla. Autor předpokládal, že zřejmě došlo ke změně priorit a firma
… více »Společnost Notion Labs stojící za softwarovou platformou pro spolupráci Notion (Wikipedia) oficiálně představila (YouTube) poštovního klienta Notion Mail. Aktuálně funguje pouze nad Gmailem.
Byla vydána nová verze 9.12 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
sfdisk -d /dev/zdrojovy_disk | sfdisk /dev/cilovy_disk
. Da se takhle "okopirovat" rozdeleni disku?
pepino:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 259M 148M 98M 61% / tmpfs 189M 0 189M 0% /lib/init/rw udev 10M 52K 10M 1% /dev tmpfs 189M 0 189M 0% /dev/shm /dev/hda9 138G 320M 131G 1% /home /dev/hda8 373M 11M 343M 3% /tmp /dev/hda5 4,6G 1,8G 2,6G 41% /usr /dev/hda6 2,8G 451M 2,2G 17% /var
sfdisk -d /dev/hda | sfdisk /dev/hdb
, to uz jsem tu nahore zminil, tak to snad pujde a jedna prekazka mi odpadne..
mdamd
a ted se me to pta: "MD pole vyzadovana pro korenovy souborovy system" a je predvyplneno "all" - mam to potvrdit? Nejak totiz nechapu vetu v navodu "change the system types on partitions you want to mirror on the old drive to fd (raid autodetect) using [s]fdisk. Don't change the swap partition!".
mdadm
? Mam zalohovane /etc, /var/www, /var/lib a /home. Ale stejne bych nerad instaloval celej server znova přepínač missing znamená, že se raid vytvoří i na druhém disku a zpárujePřepínač missing znamená, že druhý disk (oddíl) při sestavování chybí a pole se má sestavit v degradovaném režimu. S druhým diskem se po tomto příkazu nic nestane.
change the system types on partitions you want to mirror on the old drive to fd (raid autodetect) using [s]fdisk. Don't change the swap partition! Your finished drive should resemble this output:a pak najednou maji hotovo
[root@firefoot root]# sfdisk -l /dev/sda Disk /dev/sda: 8942 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 * 0+ 242 243- 1951866 fd Linux raid autodetect /dev/sda2 243 485 243 1951897+ fd Linux raid autodetect /dev/sda3 486 607 122 979965 82 Linux swap / Solaris /dev/sda4 608 8923 8316 66798270 5 Extended /dev/sda5 608+ 1823 1216- 9767488+ fd Linux raid autodetect /dev/sda6 1824+ 4255 2432- 19535008+ fd Linux raid autodetect /dev/sda7 4256+ 4377 122- 979933+ fd Linux raid autodetect /dev/sda8 4378+ 8923 4546- 36515713+ fd Linux raid autodetectto teda udela az ten prikaz
mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1
atd..?
Dekuju
1. vypnu server 2. pripojim prazdy identicky disk bez partitions 3.Jen nevim, proc tam mam tyapt-get install mdadm
a pri instalaci vse potvrdim 4. zkontroluju rozlozeni sveho stavajiciho diskupepino:~# sfdisk -l /dev/hda Disk /dev/hda: 19457 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 * 0+ 33 34- 273073+ 83 Linux /dev/hda2 34 19456 19423 156015247+ 5 Extended /dev/hda3 0 - 0 0 0 Empty /dev/hda4 0 - 0 0 0 Empty /dev/hda5 34+ 641 608- 4883728+ 83 Linux /dev/hda6 642+ 1006 365- 2931831 83 Linux /dev/hda7 1007+ 1147 141- 1132551 82 Linux swap / Solaris /dev/hda8 1148+ 1196 49- 393561 83 Linux /dev/hda9 1197+ 19456 18260- 146673418+ 83 Linux
5. zkopiruju rozlozeni partitions na novy disksfdisk -d /dev/hda | sfdisk /dev/hdb
6. zacnu vytvaret raid nebo co tohle presne je..mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/hdb1 mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/hdb5 mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/hdb6 mdadm --create /dev/md3 --level 1 --raid-devices=2 missing /dev/hdb8 mdadm --create /dev/md4 --level 1 --raid-devices=2 missing /dev/hdb9
7. vypissfdisk -l /dev/hda
bude ted vypadat nejak takhle?pepino:~# sfdisk -l /dev/hda Disk /dev/hda: 19457 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 * 0+ 33 34- 273073+ 83 fd Linux raid autodetect /dev/hda2 34 19456 19423 156015247+ 5 Extended /dev/hda3 0 - 0 0 0 Empty /dev/hda4 0 - 0 0 0 Empty /dev/hda5 34+ 641 608- 4883728+ 83 fd Linux raid autodetect /dev/hda6 642+ 1006 365- 2931831 83 fd Linux raid autodetect /dev/hda7 1007+ 1147 141- 1132551 82 Linux swap / Solaris /dev/hda8 1148+ 1196 49- 393561 83 fd Linux raid autodetect /dev/hda9 1197+ 19456 18260- 146673418+ 83 fd Linux raid autodetect
8. pak budu pokracovat podle navodu na vsechny md takhle:mkfs.ext3 /dev/md0 mkfs.ext3 /dev/md1 mkfs.ext3 /dev/md2 mkfs.ext3 /dev/md3 mkfs.ext3 /dev/md4
9. ted prijde na radu mountovani atd.. to zatim neresim, chci si jen zatim overit tyhle kroky.
Empty
oddily a zda tucne udaje jsou spravne ocislovany nebo proste dobre nastaveny...
Dekuju za korekci 7. vypis sfdisk -l /dev/hda bude ted vypadat nejak takhle?Ne. Ten příkaz v bodě 5 zkopíruje nastavení z jednoho disku na druhý, na
/dev/hda
se nic nezmění
To, co potřebuješ udělat... no, ve skutečnosti si potřebuješ něco zjistit o tom, jak fungují oddíly a rozdělování disků, ale budiž. (Čti: tímto návodem se řídíš na vlastní odpovědnost a pokud něco zkazíš, protože nevíš, co děláš, tak si nestěžuj)
Potřebuješ udělat to, aby na disku /dev/hdb byly oddíly typu Linux RAID autodetect (kód fd) o stejné velikosti. To se udělá například tak, že začneš příkazem v bodě 5. Ten zkopíruje nastavení z hda na hdb.
Pak spustíš cfdisk /dev/hdb
, to je prográmek, kterej zobrazí oddíly na tom disku a umožní ti dělat změny - šipkami nahoru a dolů volíš oddíl, doleva a doprava volíš, co se má dělat. Takže postupně vyber všechny oddíly Linux a pomocí "Type" je měň na Linux RAID autodetect (kód fd).
Pak necháš zapsat změny a pak by sfdisk -l /dev/hdb
měl vypadat tak, jak píšeš v bodě 7. Změny se takhle provádějí na disku, který ještě neobsahuje data, takže bys neměl o nic přijít.
Pak pokračuješ bodem 6, kde vytváříš ta pole.
Bod 8 by v podstatě taky odpovídal. Pak se můžeš podívat do toho článku, který jsem uvedl o něco výš, kde najdeš postup, jak synchronizovat data ze starého disku na druhý.
Jo a detail: předpokládám, že hda je ten, který jsi tam už měl, a hdb ten, který je nový.
A druhý detail: výhodnější bude, pokud místo hdb ten nový bude hdc (tj. na druhém IDE řadiči)
md0-md4
nechat tak jak pisu nebo jim priradit stejna cisla jako stavajici oddily hdb
?
Doplneni: hda
je puvodni disk, hdc
je nyni DVD-RW. Prehodim saly a DVD teda bude hdb
a novy prazdny disk bude hdc
.
Ten bod 6 mam teda spravne? Mam vybrane spravne oddily?Na první pohled to vypadá, že jo.
A mam ty md0-md4 nechat tak jak pisu nebo jim priradit stejna cisla jako stavajici oddily hdb?To je fuk, je to jenom jméno.
sda
, ktery je podle popisu puvodni...??
http://www.debian-administration.org/articles/238
, viz. vyse...
Takze tu zmenu nastaveni na puvodnim disku mam udelat presne kdy?
(A změnu na starém udělat až poté, co na novém budou data)
Asi jo, ale klidne to muzes udelat rucne. To je ten nejmensi problem. Pro softwarovy raid1 nemusi byt odily uplne stejne, pouzije se velikost toho mensiho.To nemusi byt pravda (v danej situacii), pokial vytvori niektoru particiu vacsiu a na nej vytvori raid v degradovanom stave, tak ked potom bude pridavat ten druhy disk do raidu, bude musiet na nom urobit nanovo particie. (mdadm nedovoli do raid1 pridat particiu s mensou kapacitou ako je ta uz aktivna - aspon AFAIK)
mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1
udělám pro všech 8 oddílů vč. swapu atd.?
hda
, kde bezi system Debian. Pripojil jsem identicky disk na hdd
.
1. apt-get install mdadm (potvrdil jsem all pri instalaci) 2. sfdisk -l /dev/hda (nastavil jsem na fd vse krome swap a extended) 3. sfdisk -d /dev/hda | sfdisk /dev/hdd 4. v zavorkach za prikazem je muj oddil mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/hdd1 ( / ) mdadm --create /dev/md4 --level 1 --raid-devices=2 missing /dev/hdd5 ( /usr) mdadm --create /dev/md5 --level 1 --raid-devices=2 missing /dev/hdd6 ( /var) mdadm --create /dev/md6 --level 1 --raid-devices=2 missing /dev/hdd7 ( swap - nejsem si jist, zda jsem tady prikaz provedl) mdadm --create /dev/md7 --level 1 --raid-devices=2 missing /dev/hdd8 ( /home) 5. mkfs.ext3 /dev/md0 mkfs.ext3 /dev/md4 mkfs.ext3 /dev/md5 mkfs.ext3 /dev/md6 mkfs.ext3 /dev/md7 mkfs.ext3 /dev/md8 6. mount /dev/md0 /mnt cp -dpRx / /mnt 7. mount /dev/md4 /mnt/usr cp -dpRx /usr /mnt mount /dev/md5 /mnt/var cp -dpRx /var /mnt/ mount /dev/md7 /mnt/tmp cp -dpRx /tmp /mnt mount /dev/md8 /mnt/home cp -dpRx /home /mnt 8. mkswap -v1 /dev/hdd7 9. editoval jsem /mnt/etc/fstab proc /proc proc defaults 0 0 /dev/md0 / ext3 defaults,errors=remount-ro 0 1 /dev/md4 /usr ext3 defaults 0 2 /dev/md5 /var ext3 defaults 0 2 /dev/md7 /tmp ext3 defaults 0 2 /dev/md8 /home ext3 defaults,noexec 0 2 /dev/hda7 none swap sw,pri=1 0 0 /dev/hdd7 none swap sw,pri=1 0 0 10. edit /mnt/boot/grub/menu.lst (kernel jsem nechal samozrejme muj) title Custom Kernel 2.6.11.7 root (hd0,0) kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/hda1,/dev/hdd1 ro boot title Custom Kernel 2.6.11.7 (RAID Recovery) root (hd3,0) kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/hdd1 ro 11. grub-install /dev/hda grub grub: device (hd0) /dev/hdd grub: root (hd0,0) grub: setup (hd0) grub: quit 12. cp -dp /mnt/etc/fstab /etc/fstab cp -dp /mnt/boot/grub/menu.lst /boot/grubTohle jsem udelal, restartnul jsem server a uz nenajel... kde jsem udelal chybu? Prosim, potrebuju, aby to zase jelo..diky
This is an automatically generated mail message from mdadm running on server A DegradedArray event had been detected on md device /dev/md8. Faithfully yours, etc. P.S. The /proc/mdstat file currently contains the following: Personalities : [raid1] md8 : active raid1 hdd9[1] 146673344 blocks [2/1] [_U] md7 : active raid1 hdd8[1] 393472 blocks [2/1] [_U] md6 : active raid1 hdd7[1] 1132480 blocks [2/1] [_U] md5 : active raid1 hdd6[1] 2931712 blocks [2/1] [_U] md4 : active raid1 hdd5[1] 4883648 blocks [2/1] [_U] md0 : active raid1 hdd1[1] 272960 blocks [2/1] [_U] unused devices: <none>je to v poradku? prosim, poradte mi
md3 : active raid1 sda4[0] sdb4[1] 466648000 blocks [2/2] [UU] md2 : active raid1 sda3[0] sdb3[1] 1951808 blocks [2/2] [UU]Tohle block 2/1 a [_U] ukazuje, že raid v pořádku není, určitě osobní návštěva u serveru bude nevyhnutelná. Kdyby bylo možné systém nainstalovat úplně znovu, bylo by to asi nejlepší, ale to zřejmě možné není ...
VFS: Cannot open root device "md0" or unknown-block(0,0) Please append a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)Prosim Vas, co s tim mam delat? V pondeli to musi zase fungovat
df
tak mam vsude
/dev/md/1 1921100 206768 1616744 12% /varproc tam mam to lomitko v
/dev/md/1
? title Custom Kernel 2.6.11.7 root (hd0,0) kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 md=0,/dev/hda1,/dev/hdd1 ro boota to mi hlasi ten kernel panic (ano, propadam panice), kdyz jsem ale zrusil ten
boot
a vratil jsem radek s initrd
, ktery jsem tam mel pred valkou s raidem, tak to nabehlo... proc?
root (hd1,0)
Inak ja mam zvycajne servery na Ubuntu, tak neviem ako v Debiane (asi to bude podobne) ale tam staci len toto:
kernel /boot/vmlinuz-2.6.11.7 root=/dev/md0 ro
Dokazes overit, ci mas v initramfs podporu pre raid? (binarky ako mdadm a pod.) Ak nie, raid sa ti nezostavi a nenabootujes.. Initramfs sa myslim zgeneruje nanovo pri instalacii mdadm (ak si dobre spominam), by default tam myslim nie je.
hda
(druhy disk je hdd
). V menulst mam ten initrd
(bez nej to nejde,proc?). V /etc/fstab
jsem musel u /tmp
misto default, nastavit rw
, jinak se mi namountoval pouze pro cteni (nevim proc, ale zrejme to dobre neni). Omylem jsem dostal do degradovaneho raidu i swap na disku hda
, ale kdyz ho chci vyhodit, tak me to napise, ze zarizeni je pouzivano, nevim co s tim. Mam disky hda
a hdd
, ale kdyz jsem podle navodu zadal grub-install /dev/hda
, tak mi to mimo jine vypsalo disky /dev/hda
a /dev/sda
(nevim, zda to je dulezite). A jeste dulezita vec, proc mi vypis df
ukazuje, ze mam pole md/0
atd.?
I pres tyto nejasnosti mi to funguje takto:
Mam zapojeny oba disky, bootuju z hda
, server najede. Zapisu soubor napr. do /home/test
. Vypnu server. Odpojim disk hda
. Zapnu server, ktery nabootuje z hdd
. Podivam se do /home
, kde najdu soubor test. Vytvorim /home/test2
a vypnu server. Pripojim disk hda, ze ktereho se nabootuje. /home/test2
tam neni a disk neni podle /proc/mdstatv poli. Pridam ho teda do pole a po synchronizaci je vse OK. Je to tak dobre? PS: Dokazes overit, ci mas v initramfs podporu pre raid? nevim, jak to overit. Dekuju
mount
po starte?
Ten swap musis najskor oznacit ako faulty, az potom ti dovoli ho odstranit.
server:~# cat /etc/fstab # /etc/fstab: static file system information. # proc /proc proc defaults 0 0 /dev/md0 / ext3 defaults,errors=remount-ro 0 1 /dev/md8 /home ext3 rw,acl 0 2 /dev/md7 /tmp ext3 rw 0 2 #tady bylo taky default, ale mount byl najednou jen pro cteni /dev/md4 /usr ext3 defaults 0 2 /dev/md5 /var ext3 defaults 0 2 /dev/hda7 none swap sw,pri=1 0 0 /dev/hdd7 none swap sw,pri=1 0 0
server:~# mount /dev/md/0 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/md/8 on /home type ext3 (rw,acl) /dev/md/7 on /tmp type ext3 (rw) /dev/md/4 on /usr type ext3 (rw) /dev/md/5 on /var type ext3 (rw) nfsd on /proc/fs/nfsd type nfsd (rw) rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)Ten swap musis najskor oznacit ako faulty, az potom ti dovoli ho odstranit. jak, prosim? Diky
server:/proc# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 hda1[0] hdd1[1] 272960 blocks [2/2] [UU] md4 : active raid1 hda5[0] hdd5[1] 4883648 blocks [2/2] [UU] md5 : active raid1 hda6[0] hdd6[1] 2931712 blocks [2/2] [UU] md6 : active raid1 hdd7[1] 1132480 blocks [2/1] [_U] md7 : active raid1 hda8[0] hdd8[1] 393472 blocks [2/2] [UU] md8 : active raid1 hda9[0] hdd9[1] 146673344 blocks [2/2] [UU] unused devices: <none>tucne oznacene
md6
je ten nestastny swap
exit
a boot bude pokracovat. Iny sposob by bol rozbalit initramfs a pozriet sa ci tam je.. (ale to sa mi zda zbytocne zlozite, ak na jednom restarte nezalezi)
No a este ten swap:
hdd7 odoberies z raidu takto:
mdadm /dev/md/6 --fail /dev/hdd7 --remove /dev/hdd7
Oznaci to disk ako faulty a nasledne ho odoberie. (celkom jasne napisane v man mdadm
)
Inak vsetko pisem spamati, bo prave cestujem a mobilny internet nie je co by mal.. Takze je mozne ze niektore detaily nesedia, ale v principe ta snad neklamem.. /proc/mdstat
mam, nebo se mylim?
Inak k tomu initramfs.....
vyzkousim pozdeji..
No a este ten swap: hdd7 odoberies z raidu takto: mdadm /dev/md/6 --fail /dev/hdd7 --remove /dev/hdd7
ne a ne ho vyhodit server:~# mdadm /dev/md/6 --fail /dev/hdd7 --remove /dev/hdd7 mdadm: set /dev/hdd7 faulty in /dev/md/6 mdadm: hot remove failed for /dev/hdd7: Device or resource busya jeste mi prosim rekni, proc tam mam ty lomitka v tom md/0 .. diky moc
mdadm --zero-superblock /dev/hdd7
(pripadne este pridaj --force, keby nieco) Ak aj po tomto ostane v raid-e, budem sa velmi cudovat..
Initramfs nemusis ani skusat, pokial sa ti raid zostavil pri boote, na 99,9% je to ok server:~# mdadm --add /dev/md6 /dev/hda7 mdadm: Cannot open /dev/hda7: Device or resource busyTakze jsem zase tam, kde jsem byl.. nevim, jak prestat pouzivat swap, abych ho mohl nahodit do raidu1
swapoff
nejde?
swapoff -a
pridal jsem druhy disk do raidu (swap particii) mdadm --add /dev/md6 /dev/hda7
vypis mdstat vypada takto (md6 je swap - uz teda v raidu)
md0 : active raid1 hda1[0] hdd1[1] 272960 blocks [2/2] [UU] md4 : active raid1 hda5[0] hdd5[1] 4883648 blocks [2/2] [UU] md5 : active raid1 hda6[0] hdd6[1] 2931712 blocks [2/2] [UU] md6 : active raid1 hda7[0] hdd7[1] 1132480 blocks [2/2] [UU] md7 : active raid1 hda8[0] hdd8[1] 393472 blocks [2/2] [UU] md8 : active raid1 hda9[0] hdd9[1] 146673344 blocks [2/2] [UU]ted jsem chtel zapnout zase swap, ale:
swapon -a swapon: /dev/hda7: Nepřípustný argument swapon: /dev/hdd7: Nepřípustný argumenttakze nevim, jak ten swap zase zapnu a jestli ho mam v /etc/fstab nastaveny dobre (muj fstab je tady vyse)
/dev/hda7 none swap sw,pri=1 0 0
/dev/hdd7 none swap sw,pri=1 0 0
/dev/md6 none swap sw,pri=1 0 0
swapon -a swapon: /dev/hda7: Nepřípustný argument swapon: /dev/hdd7: Nepřípustný argument
swapon /dev/md6 swapon: /dev/md6: Nepřípustný argument
/etc/fstab
a vyresetoval server (raid zustal vsudeserver:~# mdadm /dev/md/6 --fail /dev/hdd7 --remove /dev/hdd7 --force mdadm: set /dev/hdd7 faulty in /dev/md/6 mdadm: hot remove failed for /dev/hdd7: Device or resource busy
Stopping MD array md0...failed (busy) md: stopping all md devices. md: md0 still in use. Shutdown: hdd Shutdown: hda System halted.to asi neni dobre, ne?
Assembling MD arrays...failed (no arrays found in config file or automatically)
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
. Myslite, ze je to reseni?
Tiskni
Sdílej: